[Geoserver-devel] Problems with implementing REST service

I am a newbie and have been working with GeoServer for about 2 weeks now. I
have been asked to look into implementing a REST service to change the SLD
for the WMS images.

I am running geoserver from the source code through eclipse. I am not sure
how to check the build date but the branch file in the source code has the
following content:
afabiani * r10114 /branches/1.7.x_WCS10EMF_ND: - Preparing for branching
afabiani * r10115 /branches/1.7.x_WCS10EMF_ND/geoserver:

The geoserver build already had a rest-1.7.5-SNAPSHOT.jar file under
WEB-INF/lib folder but I also installed the REST extension from
http://downloads.sourceforge.net/geoserver/geoserver-1.7.5-restconfig-plugin.zip
here and added the restconfig-1.7.5.jar under the same folder

I followed the instructions for the REST services available
http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html
here . The only changes I had to make was in the pom.xml file where i
changed the org.geoserver versions to "1.7.5-SNAPSHOT" from "1.7.3-SNAPSHOT"
(i compared it with the other pom.xml files). The hello_rest module compiled
successfully. I then tried testing the rest service by going to the URL:

http://localhost:8080/geoserver/rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

I was not sure which one is correct so I tried all in the browser. And all I
see is this:

Geoserver Configuration API

    * exception

What am I doing wrong here?

--
View this message in context: http://n2.nabble.com/Problems-with-implementing-REST-service-tp3129997p3129997.html
Sent from the GeoServer developers mailing list archive at Nabble.com.

sabman ha scritto:
  > I followed the instructions for the REST services available

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html
here . The only changes I had to make was in the pom.xml file where i
changed the org.geoserver versions to "1.7.5-SNAPSHOT" from "1.7.3-SNAPSHOT"
(i compared it with the other pom.xml files). The hello_rest module compiled
successfully. I then tried testing the rest service by going to the URL:

http://localhost:8080/geoserver/rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

I was not sure which one is correct so I tried all in the browser. And all I
see is this:

Geoserver Configuration API

    * exception

What am I doing wrong here?

Did you actually include your jar/project in the GeoServer application
classpath? E.g, took the hello_rest jar and drop it into geoserver/WEB-INF/lib?

Can you look in $GEOSERVER_DATA_DIR/logs/geoserver.log and see what exception (with full strack trace) is thrown when you try to access those URL's?

Cheers
Andrea

I did not copy the jar file in the WEB-INF/lib folder. I did that now but its
still the same.

There is no information related to the exception in the log file. There are
some errors messages in eclipse which I am listing below:

1) In the HelloResource.java file,
For this piece of code:
  protected Map<String, DataFormat> createSupportedFormats(Request request,
Response response) {

     HashMap formats = new HashMap();
     formats.put( "txt", new StringFormat( MediaType.TEXT_PLAIN ));

     return formats;
  }

These are the errors:
@ Map<String, DataFormat> Multiple markers at this line
  - The return type is incompatible with
AbstractResource.createSupportedFormats(Request,
   Response)
  - implements org.geoserver.rest.AbstractResource.createSupportedFormats

@HashMap Multiple markers at this line
  - HashMap cannot be resolved
   to a type
  - HashMap cannot be resolved
   to a type

@StringFormat and @MediaType Multiple markers at this line
  - StringFormat cannot be resolved
   to a type
  - MediaType cannot be resolved

2) When i start geoserver from eclipse by running the Start.java file I see
the following warning messages in the console:

Jun 22, 2009 11:14:11 AM it.geosolutions.imageio.gdalframework.GDALUtilities
loadGDAL
WARNING: Native library load failed.java.lang.UnsatisfiedLinkError: no
gdaljni in java.library.path
..
..
log4j:WARN File option not set for appender [geoserverlogfile].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?

aaime wrote:

sabman ha scritto:
  > I followed the instructions for the REST services available

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html
here . The only changes I had to make was in the pom.xml file where i
changed the org.geoserver versions to "1.7.5-SNAPSHOT" from
"1.7.3-SNAPSHOT"
(i compared it with the other pom.xml files). The hello_rest module
compiled
successfully. I then tried testing the rest service by going to the URL:

http://localhost:8080/geoserver/rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

I was not sure which one is correct so I tried all in the browser. And
all I
see is this:

Geoserver Configuration API

    * exception

What am I doing wrong here?

Did you actually include your jar/project in the GeoServer application
classpath? E.g, took the hello_rest jar and drop it into
geoserver/WEB-INF/lib?

Can you look in $GEOSERVER_DATA_DIR/logs/geoserver.log and see what
exception (with full strack trace) is thrown when you try to access
those URL's?

Cheers
Andrea

------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

--
View this message in context: http://n2.nabble.com/Problems-with-implementing-REST-service-tp3129997p3136913.html
Sent from the GeoServer developers mailing list archive at Nabble.com.

Hi Andrea,

Are the above errors normal? Any particular reason why I am not able to see
the full stack exception in the log file ?
--
View this message in context: http://n2.nabble.com/Problems-with-implementing-REST-service-tp3129997p3138732.html
Sent from the GeoServer developers mailing list archive at Nabble.com.

sabman wrote:

I did not copy the jar file in the WEB-INF/lib folder. I did that now but its
still the same.

Did you restart geoserver after you did?

There is no information related to the exception in the log file. There are
some errors messages in eclipse which I am listing below:

Yeah, there probably won't be an exception, just nothing in the log file. It could also be that your applicationContext.xml file is in the wrong place. Is it under src/main/java in the root of your plugin source?

Can you do a "jar tvf hello_rest.jar" to give us a listing of the files. Thanks.

1) In the HelloResource.java file, For this piece of code: protected Map<String, DataFormat> createSupportedFormats(Request request,
Response response) {

     HashMap formats = new HashMap();
     formats.put( "txt", new StringFormat( MediaType.TEXT_PLAIN ));

     return formats;
  }

These are the errors:
@ Map<String, DataFormat> Multiple markers at this line
  - The return type is incompatible with
AbstractResource.createSupportedFormats(Request, Response)
  - implements org.geoserver.rest.AbstractResource.createSupportedFormats

@HashMap Multiple markers at this line
  - HashMap cannot be resolved to a type
  - HashMap cannot be resolved to a type

@StringFormat and @MediaType Multiple markers at this line
  - StringFormat cannot be resolved to a type
  - MediaType cannot be resolved

These are because the rest module is not on the classpath of your module. Can you run a mvn eclipse:eclipse in the root of your module and then refresh the project in eclipse. I think the tutorial is lackign that step.

2) When i start geoserver from eclipse by running the Start.java file I see
the following warning messages in the console:

Jun 22, 2009 11:14:11 AM it.geosolutions.imageio.gdalframework.GDALUtilities
loadGDAL
WARNING: Native library load failed.java.lang.UnsatisfiedLinkError: no
gdaljni in java.library.path
..
log4j:WARN File option not set for appender [geoserverlogfile].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?

That is normal, you can ignore that.

aaime wrote:

sabman ha scritto:
  > I followed the instructions for the REST services available

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html
here . The only changes I had to make was in the pom.xml file where i
changed the org.geoserver versions to "1.7.5-SNAPSHOT" from
"1.7.3-SNAPSHOT"
(i compared it with the other pom.xml files). The hello_rest module
compiled
successfully. I then tried testing the rest service by going to the URL:

http://localhost:8080/geoserver/rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

I was not sure which one is correct so I tried all in the browser. And
all I
see is this:

Geoserver Configuration API

    * exception

What am I doing wrong here?

Did you actually include your jar/project in the GeoServer application
classpath? E.g, took the hello_rest jar and drop it into geoserver/WEB-INF/lib?

Can you look in $GEOSERVER_DATA_DIR/logs/geoserver.log and see what exception (with full strack trace) is thrown when you try to access those URL's?

Cheers
Andrea

------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

Thanks Justin.

Here is what I was doing wrong. I created the folders src/main/java and
src/test/java under rest/hello_rest. When I created the class files, eclipse
was creating the files under the rest/src/java folder instead of
rest/hello_rest/src/java.

So now I made sure that the HelloResource.java file is located under the
correct folder and there were no errors. (But I could see that the
StringFormat and MediaType objects were not being recognized correctly.)
Also I moved the applicationContext.xml file from the resources folder(as
mentioned in the tutorial) to the src/main/java folder (as you mentioned.).
Also made sure the HelloResourceTest.java file is under the correct folder.

Now when I run mvn install under the root module I get the following
compilation error:

[INFO] Compiling 1 source file to
/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/target/classes
[INFO]
------------------------------------------------------------------------
[ERROR] BUILD FAILURE [INFO]
------------------------------------------------------------------------
[INFO] Compilation failure
/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[9,7]
org.geoserver.hellorest.HelloResource is not abstract and does not override
abstract method
createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
in org.geoserver.rest.AbstractResource
/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[12,38]
createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
in org.geoserver.hellorest.HelloResource cannot override
createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
in org.geoserver.rest.AbstractResource; attempting to use incompatible
return type found :
java.util.Map<java.lang.String,org.geoserver.rest.format.DataFormat>
required: java.util.List<org.geoserver.rest.format.DataFormat>
/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,7]
cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource
/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,29]
cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource
/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,31]
cannot find symbol symbol : class StringFormat location: class
org.geoserver.hellorest.HelloResource
/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,45]
cannot find symbol symbol : variable MediaType location: class
org.geoserver.hellorest.HelloResource
/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[11,4]
method does not override or implement a method from a supertype

Justin Deoliveira wrote:

sabman wrote:

I did not copy the jar file in the WEB-INF/lib folder. I did that now but
its
still the same.

Did you restart geoserver after you did?

There is no information related to the exception in the log file. There
are
some errors messages in eclipse which I am listing below:

Yeah, there probably won't be an exception, just nothing in the log
file. It could also be that your applicationContext.xml file is in the
wrong place. Is it under src/main/java in the root of your plugin source?

Can you do a "jar tvf hello_rest.jar" to give us a listing of the files.
Thanks.

1) In the HelloResource.java file,
For this piece of code:
  protected Map<String, DataFormat> createSupportedFormats(Request
request,
Response response) {

     HashMap formats = new HashMap();
     formats.put( "txt", new StringFormat( MediaType.TEXT_PLAIN ));

     return formats;
  }

These are the errors:
@ Map<String, DataFormat> Multiple markers at this line
  - The return type is incompatible with
AbstractResource.createSupportedFormats(Request,
   Response)
  - implements org.geoserver.rest.AbstractResource.createSupportedFormats

@HashMap Multiple markers at this line
  - HashMap cannot be resolved
   to a type
  - HashMap cannot be resolved
   to a type

@StringFormat and @MediaType Multiple markers at this line
  - StringFormat cannot be resolved
   to a type
  - MediaType cannot be resolved

These are because the rest module is not on the classpath of your
module. Can you run a mvn eclipse:eclipse in the root of your module and
  then refresh the project in eclipse. I think the tutorial is lackign
that step.

2) When i start geoserver from eclipse by running the Start.java file I
see
the following warning messages in the console:

Jun 22, 2009 11:14:11 AM
it.geosolutions.imageio.gdalframework.GDALUtilities
loadGDAL
WARNING: Native library load failed.java.lang.UnsatisfiedLinkError: no
gdaljni in java.library.path
..
..
log4j:WARN File option not set for appender [geoserverlogfile].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?

That is normal, you can ignore that.

aaime wrote:

sabman ha scritto:
  > I followed the instructions for the REST services available

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html
here . The only changes I had to make was in the pom.xml file where i
changed the org.geoserver versions to "1.7.5-SNAPSHOT" from
"1.7.3-SNAPSHOT"
(i compared it with the other pom.xml files). The hello_rest module
compiled
successfully. I then tried testing the rest service by going to the
URL:

http://localhost:8080/geoserver/rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

I was not sure which one is correct so I tried all in the browser. And
all I
see is this:

Geoserver Configuration API

    * exception

What am I doing wrong here?

Did you actually include your jar/project in the GeoServer application
classpath? E.g, took the hello_rest jar and drop it into
geoserver/WEB-INF/lib?

Can you look in $GEOSERVER_DATA_DIR/logs/geoserver.log and see what
exception (with full strack trace) is thrown when you try to access
those URL's?

Cheers
Andrea

------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

--
View this message in context: http://n2.nabble.com/Problems-with-implementing-REST-service-tp3129997p3139965.html
Sent from the GeoServer developers mailing list archive at Nabble.com.

Hmmm... can you zip up your project and send it to me in a private email? It looks like the classpath is somehow off, and it would be nice to look at the eclipse .classpath file, along with the sources.

-Justin

sabman wrote:

Thanks Justin.

Here is what I was doing wrong. I created the folders src/main/java and
src/test/java under rest/hello_rest. When I created the class files, eclipse
was creating the files under the rest/src/java folder instead of
rest/hello_rest/src/java.

So now I made sure that the HelloResource.java file is located under the
correct folder and there were no errors. (But I could see that the
StringFormat and MediaType objects were not being recognized correctly.)
Also I moved the applicationContext.xml file from the resources folder(as
mentioned in the tutorial) to the src/main/java folder (as you mentioned.).
Also made sure the HelloResourceTest.java file is under the correct folder.

Now when I run mvn install under the root module I get the following
compilation error:

[INFO] Compiling 1 source file to
/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/target/classes
[INFO]
------------------------------------------------------------------------
[ERROR] BUILD FAILURE [INFO]
------------------------------------------------------------------------
[INFO] Compilation failure /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[9,7]
org.geoserver.hellorest.HelloResource is not abstract and does not override
abstract method
createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
in org.geoserver.rest.AbstractResource /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[12,38]
createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
in org.geoserver.hellorest.HelloResource cannot override
createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
in org.geoserver.rest.AbstractResource; attempting to use incompatible
return type found :
java.util.Map<java.lang.String,org.geoserver.rest.format.DataFormat>
required: java.util.List<org.geoserver.rest.format.DataFormat> /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,7]
cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,29]
cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,31]
cannot find symbol symbol : class StringFormat location: class
org.geoserver.hellorest.HelloResource /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,45]
cannot find symbol symbol : variable MediaType location: class
org.geoserver.hellorest.HelloResource /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[11,4]
method does not override or implement a method from a supertype

Justin Deoliveira wrote:

sabman wrote:

I did not copy the jar file in the WEB-INF/lib folder. I did that now but
its
still the same.

Did you restart geoserver after you did?

There is no information related to the exception in the log file. There
are
some errors messages in eclipse which I am listing below:

Yeah, there probably won't be an exception, just nothing in the log file. It could also be that your applicationContext.xml file is in the wrong place. Is it under src/main/java in the root of your plugin source?

Can you do a "jar tvf hello_rest.jar" to give us a listing of the files. Thanks.

1) In the HelloResource.java file, For this piece of code: protected Map<String, DataFormat> createSupportedFormats(Request
request,
Response response) {

     HashMap formats = new HashMap();
     formats.put( "txt", new StringFormat( MediaType.TEXT_PLAIN ));

     return formats;
  }

These are the errors:
@ Map<String, DataFormat> Multiple markers at this line
  - The return type is incompatible with
AbstractResource.createSupportedFormats(Request, Response)
  - implements org.geoserver.rest.AbstractResource.createSupportedFormats

@HashMap Multiple markers at this line
  - HashMap cannot be resolved to a type
  - HashMap cannot be resolved to a type

@StringFormat and @MediaType Multiple markers at this line
  - StringFormat cannot be resolved to a type
  - MediaType cannot be resolved

These are because the rest module is not on the classpath of your module. Can you run a mvn eclipse:eclipse in the root of your module and then refresh the project in eclipse. I think the tutorial is lackign that step.

2) When i start geoserver from eclipse by running the Start.java file I
see
the following warning messages in the console:

Jun 22, 2009 11:14:11 AM
it.geosolutions.imageio.gdalframework.GDALUtilities
loadGDAL
WARNING: Native library load failed.java.lang.UnsatisfiedLinkError: no
gdaljni in java.library.path
..
log4j:WARN File option not set for appender [geoserverlogfile].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?

That is normal, you can ignore that.

aaime wrote:

sabman ha scritto:
  > I followed the instructions for the REST services available

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html
here . The only changes I had to make was in the pom.xml file where i
changed the org.geoserver versions to "1.7.5-SNAPSHOT" from
"1.7.3-SNAPSHOT"
(i compared it with the other pom.xml files). The hello_rest module
compiled
successfully. I then tried testing the rest service by going to the
URL:

http://localhost:8080/geoserver/rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

I was not sure which one is correct so I tried all in the browser. And
all I
see is this:

Geoserver Configuration API

    * exception

What am I doing wrong here?

Did you actually include your jar/project in the GeoServer application
classpath? E.g, took the hello_rest jar and drop it into geoserver/WEB-INF/lib?

Can you look in $GEOSERVER_DATA_DIR/logs/geoserver.log and see what exception (with full strack trace) is thrown when you try to access those URL's?

Cheers
Andrea

------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

Hi Sebastin,

Thanks for sending me over your code. I took at a look at it and here is
what I found.

First off, there was a problem with the documentation, it was out of date.
Apologies I should have seen that right away. The createSupportedFormats()
method should return a list, rather than a map. I have updated the
documentation here:

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

There were also a few other issues with teh code:

* The sources and test files are not in the proper location with regard to
packaging. You need to move src/main/java/HelloResource.java to
src/main/java/org/geoserver/hellorest/HelloResource.java. And similarly for
the the HelloResourceTest.java file.

* A few imports were missing from HelloResource:

import org.geoserver.rest.format.StringFormat;
import org.restlet.data.MediaType;

You also now will need:

import java.util.ArrayList;
import java.util.List;

Let me know if that works. After making those changes I was able to
successfully run HelloResourceTest.

-Justin

On Wed, 24 Jun 2009 11:43:05 -0400, Sebastin Kolman <saby83@anonymised.com>
wrote:

Thanks Justin. Did you mean just the hello_rest module? I have attached

it

with this mail.

I am also just learning Java so yeah I could be doing a simple thing

really

wrong.

On Tue, Jun 23, 2009 at 9:51 PM, Justin Deoliveira
<jdeolive@anonymised.com>wrote:

Hmmm... can you zip up your project and send it to me in a private

email?

It looks like the classpath is somehow off, and it would be nice to look
at
the eclipse .classpath file, along with the sources.

-Justin

sabman wrote:

Thanks Justin.

Here is what I was doing wrong. I created the folders src/main/java and
src/test/java under rest/hello_rest. When I created the class files,
eclipse
was creating the files under the rest/src/java folder instead of
rest/hello_rest/src/java.

So now I made sure that the HelloResource.java file is located under

the

correct folder and there were no errors. (But I could see that the
StringFormat and MediaType objects were not being recognized

correctly.)

Also I moved the applicationContext.xml file from the resources
folder(as
mentioned in the tutorial) to the src/main/java folder (as you
mentioned.).
Also made sure the HelloResourceTest.java file is under the correct
folder.
Now when I run mvn install under the root module I get the following
compilation error:

[INFO] Compiling 1 source file to

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/target/classes

[INFO]

------------------------------------------------------------------------

[ERROR] BUILD FAILURE [INFO]

------------------------------------------------------------------------

[INFO] Compilation failure

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[9,7]

org.geoserver.hellorest.HelloResource is not abstract and does not
override
abstract method

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.rest.AbstractResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[12,38]

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.hellorest.HelloResource cannot override

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.rest.AbstractResource; attempting to use incompatible
return type found :
java.util.Map<java.lang.String,org.geoserver.rest.format.DataFormat>
required: java.util.List<org.geoserver.rest.format.DataFormat>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,7]

cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,29]

cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,31]

cannot find symbol symbol : class StringFormat location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,45]

cannot find symbol symbol : variable MediaType location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[11,4]

method does not override or implement a method from a supertype

Justin Deoliveira wrote:

sabman wrote:

I did not copy the jar file in the WEB-INF/lib folder. I did that now
but
its
still the same.

Did you restart geoserver after you did?

There is no information related to the exception in the log file.
There
are
some errors messages in eclipse which I am listing below:

Yeah, there probably won't be an exception, just nothing in the log
file.
It could also be that your applicationContext.xml file is in the wrong
place. Is it under src/main/java in the root of your plugin source?

Can you do a "jar tvf hello_rest.jar" to give us a listing of the
files.
Thanks.

1) In the HelloResource.java file, For this piece of code:
protected Map<String, DataFormat> createSupportedFormats(Request
request,
Response response) {

          HashMap formats = new HashMap();
          formats.put( "txt", new StringFormat( MediaType.TEXT_PLAIN
          ));

          return formats;
       }

These are the errors:
@ Map<String, DataFormat> Multiple markers at this line
       - The return type is incompatible with
AbstractResource.createSupportedFormats(Request, Response)
       - implements
org.geoserver.rest.AbstractResource.createSupportedFormats
@HashMap Multiple markers at this line
       - HashMap cannot be resolved to a type
       - HashMap cannot be resolved to a type

@StringFormat and @MediaType Multiple markers at this line
       - StringFormat cannot be resolved to a type
       - MediaType cannot be resolved

These are because the rest module is not on the classpath of your
module.
Can you run a mvn eclipse:eclipse in the root of your module and then
refresh the project in eclipse. I think the tutorial is lackign that
step.

2) When i start geoserver from eclipse by running the Start.java

file

I
see
the following warning messages in the console:

Jun 22, 2009 11:14:11 AM
it.geosolutions.imageio.gdalframework.GDALUtilities
loadGDAL
WARNING: Native library load failed.java.lang.UnsatisfiedLinkError:

no

gdaljni in java.library.path
..
..
log4j:WARN File option not set for appender [geoserverlogfile].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?

That is normal, you can ignore that.

aaime wrote:

sabman ha scritto:
> I followed the instructions for the REST services available

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

here . The only changes I had to make was in the pom.xml file where
i
changed the org.geoserver versions to "1.7.5-SNAPSHOT" from
"1.7.3-SNAPSHOT"
(i compared it with the other pom.xml files). The hello_rest module
compiled
successfully. I then tried testing the rest service by going to the
URL:

http://localhost:8080/geoserver/rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

I was not sure which one is correct so I tried all in the browser.
And
all I
see is this:

Geoserver Configuration API

   * exception

What am I doing wrong here?

Did you actually include your jar/project in the GeoServer
application
classpath? E.g, took the hello_rest jar and drop it into
geoserver/WEB-INF/lib?

Can you look in $GEOSERVER_DATA_DIR/logs/geoserver.log and see what
exception (with full strack trace) is thrown when you try to access
those
URL's?

Cheers
Andrea

------------------------------------------------------------------------------

Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of
unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!

http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org

_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

------------------------------------------------------------------------------

Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of
unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!

http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org

_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

Hi Justin,

I followed your instructions and the module installed just fine. As I mentioned earlier I am running geoserver from the source code through eclipse. I start geoserver by running the Start.java file under web/src/test/java/org/vfny/
geoserver/jetty/.

After doing the mvn install will it work if i simple stop and start the servert? Or do I need to do a mvn install on the whole geoserver project again ?

How do I test this module? I assume it is by going to this url:

http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

On Thu, Jun 25, 2009 at 4:25 AM, Justin Deoliveira <jdeolive@anonymised.com1501…> wrote:

Hi Sebastin,

Thanks for sending me over your code. I took at a look at it and here is
what I found.

First off, there was a problem with the documentation, it was out of date.
Apologies I should have seen that right away. The createSupportedFormats()
method should return a list, rather than a map. I have updated the
documentation here:

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

There were also a few other issues with teh code:

  • The sources and test files are not in the proper location with regard to
    packaging. You need to move src/main/java/HelloResource.java to
    src/main/java/org/geoserver/hellorest/HelloResource.java. And similarly for
    the the HelloResourceTest.java file.

  • A few imports were missing from HelloResource:

import org.geoserver.rest.format.StringFormat;
import org.restlet.data.MediaType;

You also now will need:

import java.util.ArrayList;
import java.util.List;

Let me know if that works. After making those changes I was able to
successfully run HelloResourceTest.

-Justin

On Wed, 24 Jun 2009 11:43:05 -0400, Sebastin Kolman <saby83@anonymised.com>
wrote:

Thanks Justin. Did you mean just the hello_rest module? I have attached
it
with this mail.

I am also just learning Java so yeah I could be doing a simple thing
really
wrong.

On Tue, Jun 23, 2009 at 9:51 PM, Justin Deoliveira
<jdeolive@anonymised.com>wrote:

Hmmm… can you zip up your project and send it to me in a private
email?
It looks like the classpath is somehow off, and it would be nice to look
at
the eclipse .classpath file, along with the sources.

-Justin

sabman wrote:

Thanks Justin.

Here is what I was doing wrong. I created the folders src/main/java and
src/test/java under rest/hello_rest. When I created the class files,
eclipse
was creating the files under the rest/src/java folder instead of
rest/hello_rest/src/java.

So now I made sure that the HelloResource.java file is located under
the
correct folder and there were no errors. (But I could see that the
StringFormat and MediaType objects were not being recognized
correctly.)
Also I moved the applicationContext.xml file from the resources
folder(as
mentioned in the tutorial) to the src/main/java folder (as you
mentioned.).
Also made sure the HelloResourceTest.java file is under the correct
folder.
Now when I run mvn install under the root module I get the following
compilation error:

[INFO] Compiling 1 source file to

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/target/classes

[INFO]


[ERROR] BUILD FAILURE [INFO]


[INFO] Compilation failure

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[9,7]

org.geoserver.hellorest.HelloResource is not abstract and does not
override
abstract method

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.rest.AbstractResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[12,38]

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.hellorest.HelloResource cannot override

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.rest.AbstractResource; attempting to use incompatible
return type found :
java.util.Map<java.lang.String,org.geoserver.rest.format.DataFormat>
required: java.util.List<org.geoserver.rest.format.DataFormat>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,7]

cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,29]

cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,31]

cannot find symbol symbol : class StringFormat location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,45]

cannot find symbol symbol : variable MediaType location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[11,4]

method does not override or implement a method from a supertype

Justin Deoliveira wrote:

sabman wrote:

I did not copy the jar file in the WEB-INF/lib folder. I did that now
but
its
still the same.

Did you restart geoserver after you did?

There is no information related to the exception in the log file.
There
are
some errors messages in eclipse which I am listing below:

Yeah, there probably won’t be an exception, just nothing in the log
file.
It could also be that your applicationContext.xml file is in the wrong
place. Is it under src/main/java in the root of your plugin source?

Can you do a “jar tvf hello_rest.jar” to give us a listing of the
files.
Thanks.

  1. In the HelloResource.java file, For this piece of code:
    protected Map<String, DataFormat> createSupportedFormats(Request
    request,
    Response response) {

HashMap formats = new HashMap();
formats.put( “txt”, new StringFormat( MediaType.TEXT_PLAIN
));

return formats;
}

These are the errors:
@ Map<String, DataFormat> Multiple markers at this line

  • The return type is incompatible with
    AbstractResource.createSupportedFormats(Request, Response)
  • implements
    org.geoserver.rest.AbstractResource.createSupportedFormats
    @HashMap Multiple markers at this line
  • HashMap cannot be resolved to a type
  • HashMap cannot be resolved to a type

@StringFormat and @MediaType Multiple markers at this line

  • StringFormat cannot be resolved to a type
  • MediaType cannot be resolved

These are because the rest module is not on the classpath of your
module.
Can you run a mvn eclipse:eclipse in the root of your module and then
refresh the project in eclipse. I think the tutorial is lackign that
step.

  1. When i start geoserver from eclipse by running the Start.java
    file
    I
    see
    the following warning messages in the console:

Jun 22, 2009 11:14:11 AM
it.geosolutions.imageio.gdalframework.GDALUtilities
loadGDAL
WARNING: Native library load failed.java.lang.UnsatisfiedLinkError:
no
gdaljni in java.library.path


log4j:WARN File option not set for appender [geoserverlogfile].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?

That is normal, you can ignore that.

aaime wrote:

sabman ha scritto:

I followed the instructions for the REST services available

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

here . The only changes I had to make was in the pom.xml file where
i
changed the org.geoserver versions to “1.7.5-SNAPSHOT” from
“1.7.3-SNAPSHOT”
(i compared it with the other pom.xml files). The hello_rest module
compiled
successfully. I then tried testing the rest service by going to the
URL:

http://localhost:8080/geoserver/rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

I was not sure which one is correct so I tried all in the browser.
And
all I
see is this:

Geoserver Configuration API

  • exception

What am I doing wrong here?

Did you actually include your jar/project in the GeoServer
application
classpath? E.g, took the hello_rest jar and drop it into
geoserver/WEB-INF/lib?

Can you look in $GEOSERVER_DATA_DIR/logs/geoserver.log and see what
exception (with full strack trace) is thrown when you try to access
those
URL’s?

Cheers
Andrea


Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of
unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!

http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of
unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!

http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


Regards,
Sebastin

You have a few options for getting the extension running as part of geoserver.

The first is to manually modify the classpath of the web module, and add the hello_rest module. (Right click on module in package explorer, click Properties, go to Java Build Path -> Projects)

The second is to set up a profile for the module, and run eclipse:eclipse with the profile engaged, which will set up the dependency from the web module. This is quite a bit more work, see:

http://docs.geoserver.org/1.7.x/en/developer/policies/community-modules.html#id3

(Just steps 1 - 3)

The last would be if you have a local geoserver that you use you can drop the file hello_rest/target/hello_rest-1.0-SNAPSHOT.jar into the WEB-INF/lib directory of your geoserver installation, and restart it.

Hope that helps.

-Justin

Sebastin Kolman wrote:

Hi Justin,

I followed your instructions and the module installed just fine. As I mentioned earlier I am running geoserver from the source code through eclipse. I start geoserver by running the Start.java file under web/src/test/java/org/vfny/
geoserver/jetty/.

After doing the mvn install will it work if i simple stop and start the servert? Or do I need to do a mvn install on the whole geoserver project again ?

How do I test this module? I assume it is by going to this url:

http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

On Thu, Jun 25, 2009 at 4:25 AM, Justin Deoliveira <jdeolive@anonymised.com <mailto:jdeolive@anonymised.com>> wrote:

    Hi Sebastin,

    Thanks for sending me over your code. I took at a look at it and here is
    what I found.

    First off, there was a problem with the documentation, it was out of
    date.
    Apologies I should have seen that right away. The
    createSupportedFormats()
    method should return a list, rather than a map. I have updated the
    documentation here:

    http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

    There were also a few other issues with teh code:

    * The sources and test files are not in the proper location with
    regard to
    packaging. You need to move src/main/java/HelloResource.java to
    src/main/java/org/geoserver/hellorest/HelloResource.java. And
    similarly for
    the the HelloResourceTest.java file.

    * A few imports were missing from HelloResource:

    import org.geoserver.rest.format.StringFormat;
    import org.restlet.data.MediaType;

    You also now will need:

    import java.util.ArrayList;
    import java.util.List;

    Let me know if that works. After making those changes I was able to
    successfully run HelloResourceTest.

    -Justin

    On Wed, 24 Jun 2009 11:43:05 -0400, Sebastin Kolman
    <saby83@anonymised.com <mailto:saby83@anonymised.com>>
    wrote:
     > Thanks Justin. Did you mean just the hello_rest module? I have
    attached
    it
     > with this mail.
     >
     > I am also just learning Java so yeah I could be doing a simple thing
    really
     > wrong.
     >
     > On Tue, Jun 23, 2009 at 9:51 PM, Justin Deoliveira
     > <jdeolive@anonymised.com <mailto:jdeolive@anonymised.com>>wrote:
     >
     >> Hmmm... can you zip up your project and send it to me in a private
    email?
     >> It looks like the classpath is somehow off, and it would be nice
    to look
     >> at
     >> the eclipse .classpath file, along with the sources.
     >>
     >> -Justin
     >>
     >> sabman wrote:
     >>
     >>> Thanks Justin.
     >>>
     >>> Here is what I was doing wrong. I created the folders
    src/main/java and
     >>> src/test/java under rest/hello_rest. When I created the class
    files,
     >>> eclipse
     >>> was creating the files under the rest/src/java folder instead of
     >>> rest/hello_rest/src/java.
     >>>
     >>> So now I made sure that the HelloResource.java file is located
    under
    the
     >>> correct folder and there were no errors. (But I could see that the
     >>> StringFormat and MediaType objects were not being recognized
    correctly.)
     >>> Also I moved the applicationContext.xml file from the resources
     >>> folder(as
     >>> mentioned in the tutorial) to the src/main/java folder (as you
     >>> mentioned.).
     >>> Also made sure the HelloResourceTest.java file is under the correct
     >>> folder.
     >>> Now when I run mvn install under the root module I get the
    following
     >>> compilation error:
     >>>
     >>> [INFO] Compiling 1 source file to
     >>>
    /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/target/classes
     >>> [INFO]
     >>>
    ------------------------------------------------------------------------
     >>> [ERROR] BUILD FAILURE [INFO]
     >>>
    ------------------------------------------------------------------------
     >>> [INFO] Compilation failure
     >>>
    /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[9,7]
     >>> org.geoserver.hellorest.HelloResource is not abstract and does not
     >>> override
     >>> abstract method
     >>>
    createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
     >>> in org.geoserver.rest.AbstractResource
     >>>
    /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[12,38]
     >>>
    createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
     >>> in org.geoserver.hellorest.HelloResource cannot override
     >>>
    createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
     >>> in org.geoserver.rest.AbstractResource; attempting to use
    incompatible
     >>> return type found :
     >>>
    java.util.Map<java.lang.String,org.geoserver.rest.format.DataFormat>
     >>> required: java.util.List<org.geoserver.rest.format.DataFormat>
     >>>
    /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,7]
     >>> cannot find symbol symbol : class HashMap location: class
     >>> org.geoserver.hellorest.HelloResource
     >>>
    /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,29]
     >>> cannot find symbol symbol : class HashMap location: class
     >>> org.geoserver.hellorest.HelloResource
     >>>
    /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,31]
     >>> cannot find symbol symbol : class StringFormat location: class
     >>> org.geoserver.hellorest.HelloResource
     >>>
    /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,45]
     >>> cannot find symbol symbol : variable MediaType location: class
     >>> org.geoserver.hellorest.HelloResource
     >>>
    /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[11,4]
     >>> method does not override or implement a method from a supertype
     >>>
     >>> Justin Deoliveira wrote:
     >>>
     >>>> sabman wrote:
     >>>>
     >>>>> I did not copy the jar file in the WEB-INF/lib folder. I did
    that now
     >>>>> but
     >>>>> its
     >>>>> still the same.
     >>>>>
     >>>> Did you restart geoserver after you did?
     >>>>
     >>>>> There is no information related to the exception in the log file.
     >>>>> There
     >>>>> are
     >>>>> some errors messages in eclipse which I am listing below:
     >>>>>
     >>>> Yeah, there probably won't be an exception, just nothing in
    the log
     >>>> file.
     >>>> It could also be that your applicationContext.xml file is in
    the wrong
     >>>> place. Is it under src/main/java in the root of your plugin
    source?
     >>>>
     >>>> Can you do a "jar tvf hello_rest.jar" to give us a listing of the
     >>>> files.
     >>>> Thanks.
     >>>>
     >>>>> 1) In the HelloResource.java file, For this piece of code:
     >>>>> protected Map<String, DataFormat> createSupportedFormats(Request
     >>>>> request,
     >>>>> Response response) {
     >>>>>
     >>>>> HashMap formats = new HashMap();
     >>>>> formats.put( "txt", new StringFormat(
    MediaType.TEXT_PLAIN
     >>>>> ));
     >>>>>
     >>>>> return formats;
     >>>>> }
     >>>>>
     >>>>> These are the errors:
     >>>>> @ Map<String, DataFormat> Multiple markers at this line
     >>>>> - The return type is incompatible with
     >>>>> AbstractResource.createSupportedFormats(Request, Response)
     >>>>> - implements
     >>>>> org.geoserver.rest.AbstractResource.createSupportedFormats
     >>>>> @HashMap Multiple markers at this line
     >>>>> - HashMap cannot be resolved to a type
     >>>>>
     >>>>> @StringFormat and @MediaType Multiple markers at this line
     >>>>> - StringFormat cannot be resolved to a type
     >>>>> - MediaType cannot be resolved
     >>>>>
     >>>> These are because the rest module is not on the classpath of your
     >>>> module.
     >>>> Can you run a mvn eclipse:eclipse in the root of your module
    and then
     >>>> refresh the project in eclipse. I think the tutorial is
    lackign that
     >>>> step.
     >>>>
     >>>>> 2) When i start geoserver from eclipse by running the Start.java
    file
     >>>>> I
     >>>>> see
     >>>>> the following warning messages in the console:
     >>>>>
     >>>>> Jun 22, 2009 11:14:11 AM
     >>>>> it.geosolutions.imageio.gdalframework.GDALUtilities
     >>>>> loadGDAL
     >>>>> WARNING: Native library load
    failed.java.lang.UnsatisfiedLinkError:
    no
     >>>>> gdaljni in java.library.path
     >>>>> ..
     >>>>> log4j:WARN File option not set for appender [geoserverlogfile].
     >>>>> log4j:WARN Are you using FileAppender instead of ConsoleAppender?
     >>>>>
     >>>> That is normal, you can ignore that.
     >>>>
     >>>>>
     >>>>> aaime wrote:
     >>>>>
     >>>>>> sabman ha scritto:
     >>>>>> > I followed the instructions for the REST services available
     >>>>>>
     >>>>>>>
    http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html
     >>>>>>> here . The only changes I had to make was in the pom.xml
    file where
     >>>>>>> i
     >>>>>>> changed the org.geoserver versions to "1.7.5-SNAPSHOT" from
     >>>>>>> "1.7.3-SNAPSHOT"
     >>>>>>> (i compared it with the other pom.xml files). The
    hello_rest module
     >>>>>>> compiled
     >>>>>>> successfully. I then tried testing the rest service by
    going to the
     >>>>>>> URL:
     >>>>>>>
     >>>>>>> http://localhost:8080/geoserver/rest/hello.txt
     >>>>>>> http://localhost:8080/geoserver/rest/hello_rest/hello.txt
     >>>>>>> http://localhost:8080/geoserver/rest/hello_rest
     >>>>>>>
     >>>>>>> I was not sure which one is correct so I tried all in the
    browser.
     >>>>>>> And
     >>>>>>> all I
     >>>>>>> see is this:
     >>>>>>>
     >>>>>>> Geoserver Configuration API
     >>>>>>>
     >>>>>>> * exception
     >>>>>>>
     >>>>>>> What am I doing wrong here?
     >>>>>>>
     >>>>>> Did you actually include your jar/project in the GeoServer
     >>>>>> application
     >>>>>> classpath? E.g, took the hello_rest jar and drop it into
     >>>>>> geoserver/WEB-INF/lib?
     >>>>>>
     >>>>>> Can you look in $GEOSERVER_DATA_DIR/logs/geoserver.log and
    see what
     >>>>>> exception (with full strack trace) is thrown when you try to
    access
     >>>>>> those
     >>>>>> URL's?
     >>>>>>
     >>>>>> Cheers
     >>>>>> Andrea
     >>>>>>
    ------------------------------------------------------------------------------
     >>>>>> Are you an open source citizen? Join us for the Open Source
    Bridge
     >>>>>> conference!
     >>>>>> Portland, OR, June 17-19. Two days of sessions, one day of
     >>>>>> unconference:
     >>>>>> $250.
     >>>>>> Need another reason to go? 24-hour hacker lounge. Register
    today!
     >>>>>>
    http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
     >>>>>> _______________________________________________
     >>>>>> Geoserver-devel mailing list
     >>>>>> Geoserver-devel@lists.sourceforge.net
    <mailto:Geoserver-devel@lists.sourceforge.net>
     >>>>>> https://lists.sourceforge.net/lists/listinfo/geoserver-devel
     >>>>>>
     >>>> --
     >>>> Justin Deoliveira
     >>>> OpenGeo - http://opengeo.org
     >>>> Enterprise support for open source geospatial.
     >>>>
    ------------------------------------------------------------------------------
     >>>> Are you an open source citizen? Join us for the Open Source Bridge
     >>>> conference!
     >>>> Portland, OR, June 17-19. Two days of sessions, one day of
     >>>> unconference:
     >>>> $250.
     >>>> Need another reason to go? 24-hour hacker lounge. Register today!
     >>>>
    http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
     >>>> _______________________________________________
     >>>> Geoserver-devel mailing list
     >>>> Geoserver-devel@lists.sourceforge.net
    <mailto:Geoserver-devel@lists.sourceforge.net>
     >>>> https://lists.sourceforge.net/lists/listinfo/geoserver-devel
     >>>>
     >>>
     >>
     >> --
     >> Justin Deoliveira
     >> OpenGeo - http://opengeo.org
     >> Enterprise support for open source geospatial.
     >>

    --
    Justin Deoliveira
    OpenGeo - http://opengeo.org
    Enterprise support for open source geospatial.

--
Regards,
Sebastin

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

hmm…so here is what happened.

I tried to follow your first solution of modifying the class path of the web module. But eclipse did not recognize the hello_rest module because I had not set it as a java project. So I deleted the project and started a new java project and followed the instructions again provided at
http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

There were some errors like:

The declared package “org.geoserver.hellorest” does not match the expected package “src.main.java.org.geoserver.hellorest” HelloResource.java hello_rest/src/main/java/org/geoserver/hellorest line 1 Java Problem

The import org.geoserver cannot be resolved HelloResource.java hello_rest/src/main/java/org/geoserver/hellorest line 4 Java Problem

The import org.restlet cannot be resolved HelloResource.java hello_rest/src/main/java/org/geoserver/hellorest line 6 Java Problem

But I did the mvn install and the build was successful. I added the module to the web module’s classpath and restarted the geoserver by running the Start.java file under web/src/test/java/org/vfny/geoserver/jetty/. But the http requests,

http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

still return the exception.

I also tried running a separate local geoserver. So I installed geoserver 1.7.6 and then added the hello_rest-1.7.5-SNAPSHOT.jar file in the WEB-INF/lib folder. I sensed it would not work becasue the versions are different. When I sent the http requests it returned no exceptions. All that the page returned was “Geoserver Configuration API”. I checked the log and it seems that the request was successful:

0:0:0:0:0:0:0:1 - - [17/Aug/2009:14:49:20 +0000] “GET /geoserver/rest/hello_rest/hello.txt HTTP/1.1” 200 138
0:0:0:0:0:0:0:1 - - [17/Aug/2009:15:01:38 +0000] “GET /geoserver/rest/hello_rest HTTP/1.1” 200 138

Does this mean the module was integreated successfully? I thought the request was supposed to return the test “Hello World”

On Fri, Aug 14, 2009 at 12:00 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

You have a few options for getting the extension running as part of geoserver.

The first is to manually modify the classpath of the web module, and add the hello_rest module. (Right click on module in package explorer, click Properties, go to Java Build Path → Projects)

The second is to set up a profile for the module, and run eclipse:eclipse with the profile engaged, which will set up the dependency from the web module. This is quite a bit more work, see:

http://docs.geoserver.org/1.7.x/en/developer/policies/community-modules.html#id3

(Just steps 1 - 3)

The last would be if you have a local geoserver that you use you can drop the file hello_rest/target/hello_rest-1.0-SNAPSHOT.jar into the WEB-INF/lib directory of your geoserver installation, and restart it.

Hope that helps.

-Justin

Sebastin Kolman wrote:

Hi Justin,

I followed your instructions and the module installed just fine. As I mentioned earlier I am running geoserver from the source code through eclipse. I start geoserver by running the Start.java file under web/src/test/java/org/vfny/
geoserver/jetty/.

After doing the mvn install will it work if i simple stop and start the servert? Or do I need to do a mvn install on the whole geoserver project again ?

How do I test this module? I assume it is by going to this url:

http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

On Thu, Jun 25, 2009 at 4:25 AM, Justin Deoliveira <jdeolive@anonymised.com mailto:[jdeolive@anonymised.com](mailto:jdeolive@anonymised.com)> wrote:

Hi Sebastin,

Thanks for sending me over your code. I took at a look at it and here is
what I found.

First off, there was a problem with the documentation, it was out of
date.
Apologies I should have seen that right away. The
createSupportedFormats()
method should return a list, rather than a map. I have updated the
documentation here:

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

There were also a few other issues with teh code:

  • The sources and test files are not in the proper location with
    regard to
    packaging. You need to move src/main/java/HelloResource.java to
    src/main/java/org/geoserver/hellorest/HelloResource.java. And
    similarly for
    the the HelloResourceTest.java file.

  • A few imports were missing from HelloResource:

import org.geoserver.rest.format.StringFormat;
import org.restlet.data.MediaType;

You also now will need:

import java.util.ArrayList;
import java.util.List;

Let me know if that works. After making those changes I was able to
successfully run HelloResourceTest.

-Justin

On Wed, 24 Jun 2009 11:43:05 -0400, Sebastin Kolman

<saby83@anonymised.com.403… mailto:[saby83@anonymised.com](mailto:saby83@anonymised.com)>

wrote:

Thanks Justin. Did you mean just the hello_rest module? I have
attached
it
with this mail.

I am also just learning Java so yeah I could be doing a simple thing
really
wrong.

On Tue, Jun 23, 2009 at 9:51 PM, Justin Deoliveira

<jdeolive@anonymised.com mailto:[jdeolive@anonymised.com](mailto:jdeolive@anonymised.com)>wrote:

Hmmm… can you zip up your project and send it to me in a private
email?
It looks like the classpath is somehow off, and it would be nice
to look
at
the eclipse .classpath file, along with the sources.

-Justin

sabman wrote:

Thanks Justin.

Here is what I was doing wrong. I created the folders
src/main/java and
src/test/java under rest/hello_rest. When I created the class
files,
eclipse
was creating the files under the rest/src/java folder instead of
rest/hello_rest/src/java.

So now I made sure that the HelloResource.java file is located
under
the
correct folder and there were no errors. (But I could see that the
StringFormat and MediaType objects were not being recognized
correctly.)
Also I moved the applicationContext.xml file from the resources
folder(as
mentioned in the tutorial) to the src/main/java folder (as you
mentioned.).
Also made sure the HelloResourceTest.java file is under the correct
folder.
Now when I run mvn install under the root module I get the
following
compilation error:

[INFO] Compiling 1 source file to

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/target/classes

[INFO]


[ERROR] BUILD FAILURE [INFO]


[INFO] Compilation failure

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[9,7]

org.geoserver.hellorest.HelloResource is not abstract and does not
override
abstract method

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.rest.AbstractResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[12,38]

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.hellorest.HelloResource cannot override

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.rest.AbstractResource; attempting to use
incompatible
return type found :

java.util.Map<java.lang.String,org.geoserver.rest.format.DataFormat>

required: java.util.List<org.geoserver.rest.format.DataFormat>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,7]

cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,29]

cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,31]

cannot find symbol symbol : class StringFormat location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,45]

cannot find symbol symbol : variable MediaType location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[11,4]

method does not override or implement a method from a supertype

Justin Deoliveira wrote:

sabman wrote:

I did not copy the jar file in the WEB-INF/lib folder. I did
that now
but
its
still the same.

Did you restart geoserver after you did?

There is no information related to the exception in the log file.
There
are
some errors messages in eclipse which I am listing below:

Yeah, there probably won’t be an exception, just nothing in
the log
file.
It could also be that your applicationContext.xml file is in
the wrong
place. Is it under src/main/java in the root of your plugin
source?

Can you do a “jar tvf hello_rest.jar” to give us a listing of the
files.
Thanks.

  1. In the HelloResource.java file, For this piece of code:
    protected Map<String, DataFormat> createSupportedFormats(Request
    request,
    Response response) {

HashMap formats = new HashMap();
formats.put( “txt”, new StringFormat(
MediaType.TEXT_PLAIN
));

return formats;
}

These are the errors:
@ Map<String, DataFormat> Multiple markers at this line

  • The return type is incompatible with
    AbstractResource.createSupportedFormats(Request, Response)
  • implements
    org.geoserver.rest.AbstractResource.createSupportedFormats
    @HashMap Multiple markers at this line
  • HashMap cannot be resolved to a type
  • HashMap cannot be resolved to a type

@StringFormat and @MediaType Multiple markers at this line

  • StringFormat cannot be resolved to a type
  • MediaType cannot be resolved

These are because the rest module is not on the classpath of your
module.
Can you run a mvn eclipse:eclipse in the root of your module
and then
refresh the project in eclipse. I think the tutorial is
lackign that
step.

  1. When i start geoserver from eclipse by running the Start.java
    file
    I
    see
    the following warning messages in the console:

Jun 22, 2009 11:14:11 AM
it.geosolutions.imageio.gdalframework.GDALUtilities
loadGDAL
WARNING: Native library load
failed.java.lang.UnsatisfiedLinkError:
no
gdaljni in java.library.path


log4j:WARN File option not set for appender [geoserverlogfile].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?

That is normal, you can ignore that.

aaime wrote:

sabman ha scritto:

I followed the instructions for the REST services available

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

here . The only changes I had to make was in the pom.xml
file where
i
changed the org.geoserver versions to “1.7.5-SNAPSHOT” from
“1.7.3-SNAPSHOT”
(i compared it with the other pom.xml files). The
hello_rest module
compiled
successfully. I then tried testing the rest service by
going to the
URL:

http://localhost:8080/geoserver/rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

I was not sure which one is correct so I tried all in the
browser.
And
all I
see is this:

Geoserver Configuration API

  • exception

What am I doing wrong here?

Did you actually include your jar/project in the GeoServer
application
classpath? E.g, took the hello_rest jar and drop it into
geoserver/WEB-INF/lib?

Can you look in $GEOSERVER_DATA_DIR/logs/geoserver.log and
see what
exception (with full strack trace) is thrown when you try to
access
those
URL’s?

Cheers
Andrea


Are you an open source citizen? Join us for the Open Source
Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of
unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register
today!

http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net

mailto:[Geoserver-devel@lists.sourceforge.net](mailto:Geoserver-devel@lists.sourceforge.net)

https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of
unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!

http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net

mailto:[Geoserver-devel@lists.sourceforge.net](mailto:Geoserver-devel@lists.sourceforge.net)

https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


Regards,
Sebastin

Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


Regards,
Sebastin

Its confusing and annoying and I don’t really understand whats happening. Like I mentioned earlier that the module installed successfully. I went through the code (instead of just blindly running the commands) to understand whats really happening. So the test checks to see if “Hello World” is returned. It creates the build only if the tests run successful.

I did an mvn install again and it installed successfully. Now this folder was located outside of geoserver/src (I am running geoserver from source code).

So i created a copy of the folder inside of geoserver/src and I also did an mvn eclipse:eclipse so that the module has the rest classpath. I then did a mvn install but it gave a build failure because the tests failed. The surefire test report said it was getting “Geoserver Configuration API” whereas it was expecting “Hello World”.

I went back to the original folder and did a mvn install and it installed succesfully. So I deleted the copy, imported this original folder to eclipse, did the "mvn eclipse:eclipse" and then did the mvn install but the tests failed. :frowning:

I re-build the module from scratch and skipped the mvn eclipse:eclipse part (because I felt it was probably the cause of the error) But all I get now is the test failure. I do not understand how it was installing successfully earlier (I did not look at the surefire report then). It obviously was getting “Hello World” in return…how is it that it was working then and not now.

On Mon, Aug 17, 2009 at 12:44 PM, Sebastin Kolman <saby83@anonymised.com03…> wrote:

hmm…so here is what happened.

I tried to follow your first solution of modifying the class path of the web module. But eclipse did not recognize the hello_rest module because I had not set it as a java project. So I deleted the project and started a new java project and followed the instructions again provided at

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

There were some errors like:

The declared package “org.geoserver.hellorest” does not match the expected package “src.main.java.org.geoserver.hellorest” HelloResource.java hello_rest/src/main/java/org/geoserver/hellorest line 1 Java Problem

The import org.geoserver cannot be resolved HelloResource.java hello_rest/src/main/java/org/geoserver/hellorest line 4 Java Problem

The import org.restlet cannot be resolved HelloResource.java hello_rest/src/main/java/org/geoserver/hellorest line 6 Java Problem

But I did the mvn install and the build was successful. I added the module to the web module’s classpath and restarted the geoserver by running the Start.java file under web/src/test/java/org/vfny/geoserver/jetty/. But the http requests,

http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

still return the exception.

I also tried running a separate local geoserver. So I installed geoserver 1.7.6 and then added the hello_rest-1.7.5-SNAPSHOT.jar file in the WEB-INF/lib folder. I sensed it would not work becasue the versions are different. When I sent the http requests it returned no exceptions. All that the page returned was “Geoserver Configuration API”. I checked the log and it seems that the request was successful:

0:0:0:0:0:0:0:1 - - [17/Aug/2009:14:49:20 +0000] “GET /geoserver/rest/hello_rest/hello.txt HTTP/1.1” 200 138
0:0:0:0:0:0:0:1 - - [17/Aug/2009:15:01:38 +0000] “GET /geoserver/rest/hello_rest HTTP/1.1” 200 138

Does this mean the module was integreated successfully? I thought the request was supposed to return the test “Hello World”

On Fri, Aug 14, 2009 at 12:00 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

You have a few options for getting the extension running as part of geoserver.

The first is to manually modify the classpath of the web module, and add the hello_rest module. (Right click on module in package explorer, click Properties, go to Java Build Path → Projects)

The second is to set up a profile for the module, and run eclipse:eclipse with the profile engaged, which will set up the dependency from the web module. This is quite a bit more work, see:

http://docs.geoserver.org/1.7.x/en/developer/policies/community-modules.html#id3

(Just steps 1 - 3)

The last would be if you have a local geoserver that you use you can drop the file hello_rest/target/hello_rest-1.0-SNAPSHOT.jar into the WEB-INF/lib directory of your geoserver installation, and restart it.

Hope that helps.

-Justin

Sebastin Kolman wrote:

Hi Justin,

I followed your instructions and the module installed just fine. As I mentioned earlier I am running geoserver from the source code through eclipse. I start geoserver by running the Start.java file under web/src/test/java/org/vfny/
geoserver/jetty/.

After doing the mvn install will it work if i simple stop and start the servert? Or do I need to do a mvn install on the whole geoserver project again ?

How do I test this module? I assume it is by going to this url:

http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

On Thu, Jun 25, 2009 at 4:25 AM, Justin Deoliveira <jdeolive@anonymised.com mailto:[jdeolive@anonymised.com](mailto:jdeolive@anonymised.com)> wrote:

Hi Sebastin,

Thanks for sending me over your code. I took at a look at it and here is
what I found.

First off, there was a problem with the documentation, it was out of
date.
Apologies I should have seen that right away. The
createSupportedFormats()
method should return a list, rather than a map. I have updated the
documentation here:

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

There were also a few other issues with teh code:

  • The sources and test files are not in the proper location with
    regard to
    packaging. You need to move src/main/java/HelloResource.java to
    src/main/java/org/geoserver/hellorest/HelloResource.java. And
    similarly for
    the the HelloResourceTest.java file.

  • A few imports were missing from HelloResource:

import org.geoserver.rest.format.StringFormat;
import org.restlet.data.MediaType;

You also now will need:

import java.util.ArrayList;
import java.util.List;

Let me know if that works. After making those changes I was able to
successfully run HelloResourceTest.

-Justin

On Wed, 24 Jun 2009 11:43:05 -0400, Sebastin Kolman

<saby83@anonymised.com.403… mailto:[saby83@anonymised.com](mailto:saby83@anonymised.com)>

wrote:

Thanks Justin. Did you mean just the hello_rest module? I have
attached
it
with this mail.

I am also just learning Java so yeah I could be doing a simple thing
really
wrong.

On Tue, Jun 23, 2009 at 9:51 PM, Justin Deoliveira

<jdeolive@anonymised.com mailto:[jdeolive@anonymised.com](mailto:jdeolive@anonymised.com)>wrote:

Hmmm… can you zip up your project and send it to me in a private
email?
It looks like the classpath is somehow off, and it would be nice
to look
at
the eclipse .classpath file, along with the sources.

-Justin

sabman wrote:

Thanks Justin.

Here is what I was doing wrong. I created the folders
src/main/java and
src/test/java under rest/hello_rest. When I created the class
files,
eclipse
was creating the files under the rest/src/java folder instead of
rest/hello_rest/src/java.

So now I made sure that the HelloResource.java file is located
under
the
correct folder and there were no errors. (But I could see that the
StringFormat and MediaType objects were not being recognized
correctly.)
Also I moved the applicationContext.xml file from the resources
folder(as
mentioned in the tutorial) to the src/main/java folder (as you
mentioned.).
Also made sure the HelloResourceTest.java file is under the correct
folder.
Now when I run mvn install under the root module I get the
following
compilation error:

[INFO] Compiling 1 source file to

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/target/classes

[INFO]


[ERROR] BUILD FAILURE [INFO]


[INFO] Compilation failure

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[9,7]

org.geoserver.hellorest.HelloResource is not abstract and does not
override
abstract method

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.rest.AbstractResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[12,38]

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.hellorest.HelloResource cannot override

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)

in org.geoserver.rest.AbstractResource; attempting to use
incompatible
return type found :

java.util.Map<java.lang.String,org.geoserver.rest.format.DataFormat>

required: java.util.List<org.geoserver.rest.format.DataFormat>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,7]

cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,29]

cannot find symbol symbol : class HashMap location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,31]

cannot find symbol symbol : class StringFormat location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,45]

cannot find symbol symbol : variable MediaType location: class
org.geoserver.hellorest.HelloResource

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[11,4]

method does not override or implement a method from a supertype

Justin Deoliveira wrote:

sabman wrote:

I did not copy the jar file in the WEB-INF/lib folder. I did
that now
but
its
still the same.

Did you restart geoserver after you did?

There is no information related to the exception in the log file.
There
are
some errors messages in eclipse which I am listing below:

Yeah, there probably won’t be an exception, just nothing in
the log
file.
It could also be that your applicationContext.xml file is in
the wrong
place. Is it under src/main/java in the root of your plugin
source?

Can you do a “jar tvf hello_rest.jar” to give us a listing of the
files.
Thanks.

  1. In the HelloResource.java file, For this piece of code:
    protected Map<String, DataFormat> createSupportedFormats(Request
    request,
    Response response) {

HashMap formats = new HashMap();
formats.put( “txt”, new StringFormat(
MediaType.TEXT_PLAIN
));

return formats;
}

These are the errors:
@ Map<String, DataFormat> Multiple markers at this line

  • The return type is incompatible with
    AbstractResource.createSupportedFormats(Request, Response)
  • implements
    org.geoserver.rest.AbstractResource.createSupportedFormats
    @HashMap Multiple markers at this line
  • HashMap cannot be resolved to a type
  • HashMap cannot be resolved to a type

@StringFormat and @MediaType Multiple markers at this line

  • StringFormat cannot be resolved to a type
  • MediaType cannot be resolved

These are because the rest module is not on the classpath of your
module.
Can you run a mvn eclipse:eclipse in the root of your module
and then
refresh the project in eclipse. I think the tutorial is
lackign that
step.

  1. When i start geoserver from eclipse by running the Start.java
    file
    I
    see
    the following warning messages in the console:

Jun 22, 2009 11:14:11 AM
it.geosolutions.imageio.gdalframework.GDALUtilities
loadGDAL
WARNING: Native library load
failed.java.lang.UnsatisfiedLinkError:
no
gdaljni in java.library.path


log4j:WARN File option not set for appender [geoserverlogfile].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?

That is normal, you can ignore that.

aaime wrote:

sabman ha scritto:

I followed the instructions for the REST services available

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

here . The only changes I had to make was in the pom.xml
file where
i
changed the org.geoserver versions to “1.7.5-SNAPSHOT” from
“1.7.3-SNAPSHOT”
(i compared it with the other pom.xml files). The
hello_rest module
compiled
successfully. I then tried testing the rest service by
going to the
URL:

http://localhost:8080/geoserver/rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

I was not sure which one is correct so I tried all in the
browser.
And
all I
see is this:

Geoserver Configuration API

  • exception

What am I doing wrong here?

Did you actually include your jar/project in the GeoServer
application
classpath? E.g, took the hello_rest jar and drop it into
geoserver/WEB-INF/lib?

Can you look in $GEOSERVER_DATA_DIR/logs/geoserver.log and
see what
exception (with full strack trace) is thrown when you try to
access
those
URL’s?

Cheers
Andrea


Are you an open source citizen? Join us for the Open Source
Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of
unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register
today!

http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net

mailto:[Geoserver-devel@lists.sourceforge.net](mailto:Geoserver-devel@lists.sourceforge.net)

https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


Are you an open source citizen? Join us for the Open Source Bridge
conference!
Portland, OR, June 17-19. Two days of sessions, one day of
unconference:
$250.
Need another reason to go? 24-hour hacker lounge. Register today!

http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net

mailto:[Geoserver-devel@lists.sourceforge.net](mailto:Geoserver-devel@lists.sourceforge.net)

https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


Regards,
Sebastin

Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


Regards,
Sebastin


Regards,
Sebastin

Its confusing and annoying and I don't really understand whats happening.
Like I mentioned earlier that the module installed successfully. I went
through the code (instead of just blindly running the commands) to
understand whats really happening. So the test checks to see if "Hello
World" is returned. It creates the build only if the tests run successful.

I did an mvn install again and it installed successfully. Now this folder
was located outside of geoserver/src (I am running geoserver from source
code).

So i created a copy of the folder inside of geoserver/src and I also did an
mvn eclipse:eclipse so that the module has the rest classpath. I then did a
mvn install but it gave a build failure because the tests failed. The
surefire test report said it was getting "Geoserver Configuration API"
whereas it was expecting "Hello World".

I went back to the original folder and did a mvn install and it installed
succesfully. So I deleted the copy, imported this original folder to
eclipse, did the "mvn eclipse:eclipse" and then did the mvn install but
the tests failed. :frowning:

I re-build the module from scratch and skipped the mvn eclipse:eclipse part
(because I felt it was probably the cause of the error) But all I get now is
the test failure. I do not understand how it was installing successfully
earlier (I did not look at the surefire report then). It obviously was
getting "Hello World" in return...how is it that it was working then and not
now.

sabman wrote:

hmm....so here is what happened.

I tried to follow your first solution of modifying the class path of the
web
module. But eclipse did not recognize the hello_rest module because I had
not set it as a java project. So I deleted the project and started a new
java project and followed the instructions again provided at

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

There were some errors like:
*
*

*The declared package "org.geoserver.hellorest" does not match the
expected package "src.main.java.org.geoserver.hellorest"
HelloResource.java hello_rest/src/main/java/org/geoserver/hellorest
line 1 Java Problem
*

*The import org.geoserver cannot be resolved HelloResource.java

hello_rest/src/main/java/org/geoserver/hellorest line 4 Java
Problem
*

*The import org.restlet cannot be resolved HelloResource.java

hello_rest/src/main/java/org/geoserver/hellorest line 6 Java
Problem
*

But I did the mvn install and the build was successful. I added the module
to the web module's classpath and restarted the geoserver by running the
Start.java file under web/src/test/java/org/vfny/geoserver/jetty/. But the
http requests,

http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

still return the exception.

I also tried running a separate local geoserver. So I installed geoserver
1.7.6 and then added the hello_rest-1.7.5-SNAPSHOT.jar file in the
WEB-INF/lib folder. I sensed it would not work becasue the versions are
different. When I sent the http requests it returned no exceptions. All
that
the page returned was "Geoserver Configuration API". I checked the log and
it seems that the request was successful:

*0:0:0:0:0:0:0:1 - - [17/Aug/2009:14:49:20 +0000] "GET
/geoserver/rest/hello_rest/hello.txt HTTP/1.1" 200 138
0:0:0:0:0:0:0:1 - - [17/Aug/2009:15:01:38 +0000] "GET
/geoserver/rest/hello_rest HTTP/1.1" 200 138*

Does this mean the module was integreated successfully? I thought the
request was supposed to return the test "Hello World"

On Fri, Aug 14, 2009 at 12:00 PM, Justin Deoliveira
<jdeolive@anonymised.com>wrote:

You have a few options for getting the extension running as part of
geoserver.

The first is to manually modify the classpath of the web module, and add
the hello_rest module. (Right click on module in package explorer, click
Properties, go to Java Build Path -> Projects)

The second is to set up a profile for the module, and run eclipse:eclipse
with the profile engaged, which will set up the dependency from the web
module. This is quite a bit more work, see:

http://docs.geoserver.org/1.7.x/en/developer/policies/community-modules.html#id3

(Just steps 1 - 3)

The last would be if you have a local geoserver that you use you can drop
the file hello_rest/target/hello_rest-1.0-SNAPSHOT.jar into the
WEB-INF/lib
directory of your geoserver installation, and restart it.

Hope that helps.

-Justin

Sebastin Kolman wrote:

Hi Justin,

I followed your instructions and the module installed just fine. As I
mentioned earlier I am running geoserver from the source code through
eclipse. I start geoserver by running the Start.java file under
web/src/test/java/org/vfny/
geoserver/jetty/.

After doing the mvn install will it work if i simple stop and start the
servert? Or do I need to do a mvn install on the whole geoserver
project
again ?

How do I test this module? I assume it is by going to this url:

http://localhost:8080/geoserver/rest/hello_rest/hello.txt
http://localhost:8080/geoserver/rest/hello_rest

On Thu, Jun 25, 2009 at 4:25 AM, Justin Deoliveira
<jdeolive@anonymised.com<mailto:
jdeolive@anonymised.com>> wrote:

   Hi Sebastin,

   Thanks for sending me over your code. I took at a look at it and here
is
   what I found.

   First off, there was a problem with the documentation, it was out of
   date.
   Apologies I should have seen that right away. The
   createSupportedFormats()
   method should return a list, rather than a map. I have updated the
   documentation here:

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

   There were also a few other issues with teh code:

   * The sources and test files are not in the proper location with
   regard to
   packaging. You need to move src/main/java/HelloResource.java to
   src/main/java/org/geoserver/hellorest/HelloResource.java. And
   similarly for
   the the HelloResourceTest.java file.

   * A few imports were missing from HelloResource:

   import org.geoserver.rest.format.StringFormat;
   import org.restlet.data.MediaType;

   You also now will need:

   import java.util.ArrayList;
   import java.util.List;

   Let me know if that works. After making those changes I was able to
   successfully run HelloResourceTest.

   -Justin

   On Wed, 24 Jun 2009 11:43:05 -0400, Sebastin Kolman
   <saby83@anonymised.com <mailto:saby83@anonymised.com>>
   wrote:
    > Thanks Justin. Did you mean just the hello_rest module? I have
   attached
   it
    > with this mail.
    >
    > I am also just learning Java so yeah I could be doing a simple
thing
   really
    > wrong.
    >
    > On Tue, Jun 23, 2009 at 9:51 PM, Justin Deoliveira
    > <jdeolive@anonymised.com <mailto:jdeolive@anonymised.com>>wrote:

    >
    >> Hmmm... can you zip up your project and send it to me in a
private
   email?
    >> It looks like the classpath is somehow off, and it would be nice
   to look
    >> at
    >> the eclipse .classpath file, along with the sources.
    >>
    >> -Justin
    >>
    >>
    >> sabman wrote:
    >>
    >>> Thanks Justin.
    >>>
    >>> Here is what I was doing wrong. I created the folders
   src/main/java and
    >>> src/test/java under rest/hello_rest. When I created the class
   files,
    >>> eclipse
    >>> was creating the files under the rest/src/java folder instead of
    >>> rest/hello_rest/src/java.
    >>>
    >>> So now I made sure that the HelloResource.java file is located
   under
   the
    >>> correct folder and there were no errors. (But I could see that
the
    >>> StringFormat and MediaType objects were not being recognized
   correctly.)
    >>> Also I moved the applicationContext.xml file from the resources
    >>> folder(as
    >>> mentioned in the tutorial) to the src/main/java folder (as you
    >>> mentioned.).
    >>> Also made sure the HelloResourceTest.java file is under the
correct
    >>> folder.
    >>> Now when I run mvn install under the root module I get the
   following
    >>> compilation error:
    >>>
    >>> [INFO] Compiling 1 source file to
    >>>
    >>>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/target/classes
    >>> [INFO]
    >>>

------------------------------------------------------------------------
    >>> [ERROR] BUILD FAILURE [INFO]
    >>>

------------------------------------------------------------------------
    >>> [INFO] Compilation failure
    >>>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[9,7]
    >>> org.geoserver.hellorest.HelloResource is not abstract and does
not
    >>> override
    >>> abstract method
    >>>

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
    >>> in org.geoserver.rest.AbstractResource
    >>>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[12,38]
    >>>

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
    >>> in org.geoserver.hellorest.HelloResource cannot override
    >>>

createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
    >>> in org.geoserver.rest.AbstractResource; attempting to use
   incompatible
    >>> return type found :
    >>>
   java.util.Map<java.lang.String,org.geoserver.rest.format.DataFormat>
    >>> required: java.util.List<org.geoserver.rest.format.DataFormat>
    >>>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,7]
    >>> cannot find symbol symbol : class HashMap location: class
    >>> org.geoserver.hellorest.HelloResource
    >>>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,29]
    >>> cannot find symbol symbol : class HashMap location: class
    >>> org.geoserver.hellorest.HelloResource
    >>>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,31]
    >>> cannot find symbol symbol : class StringFormat location: class
    >>> org.geoserver.hellorest.HelloResource
    >>>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,45]
    >>> cannot find symbol symbol : variable MediaType location: class
    >>> org.geoserver.hellorest.HelloResource
    >>>

/home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[11,4]
    >>> method does not override or implement a method from a supertype
    >>>
    >>>
    >>>
    >>>
    >>>
    >>>
    >>> Justin Deoliveira wrote:
    >>>
    >>>> sabman wrote:
    >>>>
    >>>>> I did not copy the jar file in the WEB-INF/lib folder. I did
   that now
    >>>>> but
    >>>>> its
    >>>>> still the same.
    >>>>>
    >>>> Did you restart geoserver after you did?
    >>>>
    >>>>> There is no information related to the exception in the log
file.
    >>>>> There
    >>>>> are
    >>>>> some errors messages in eclipse which I am listing below:
    >>>>>
    >>>> Yeah, there probably won't be an exception, just nothing in
   the log
    >>>> file.
    >>>> It could also be that your applicationContext.xml file is in
   the wrong
    >>>> place. Is it under src/main/java in the root of your plugin
   source?
    >>>>
    >>>> Can you do a "jar tvf hello_rest.jar" to give us a listing of
the
    >>>> files.
    >>>> Thanks.
    >>>>
    >>>>> 1) In the HelloResource.java file, For this piece of code:
    >>>>> protected Map<String, DataFormat>
createSupportedFormats(Request
    >>>>> request,
    >>>>> Response response) {
    >>>>>
    >>>>> HashMap formats = new HashMap();
    >>>>> formats.put( "txt", new StringFormat(
   MediaType.TEXT_PLAIN
    >>>>> ));
    >>>>>
    >>>>> return formats;
    >>>>> }
    >>>>>
    >>>>> These are the errors:
    >>>>> @ Map<String, DataFormat> Multiple markers at this line
    >>>>> - The return type is incompatible with
    >>>>> AbstractResource.createSupportedFormats(Request,
Response)
    >>>>> - implements
    >>>>> org.geoserver.rest.AbstractResource.createSupportedFormats
    >>>>> @HashMap Multiple markers at this line
    >>>>> - HashMap cannot be resolved to a type
    >>>>> - HashMap cannot be resolved to a type
    >>>>>
    >>>>> @StringFormat and @MediaType Multiple markers at this line
    >>>>> - StringFormat cannot be resolved to a type
    >>>>> - MediaType cannot be resolved
    >>>>>
    >>>> These are because the rest module is not on the classpath of
your
    >>>> module.
    >>>> Can you run a mvn eclipse:eclipse in the root of your module
   and then
    >>>> refresh the project in eclipse. I think the tutorial is
   lackign that
    >>>> step.
    >>>>
    >>>>> 2) When i start geoserver from eclipse by running the
Start.java
   file
    >>>>> I
    >>>>> see
    >>>>> the following warning messages in the console:
    >>>>>
    >>>>> Jun 22, 2009 11:14:11 AM
    >>>>> it.geosolutions.imageio.gdalframework.GDALUtilities
    >>>>> loadGDAL
    >>>>> WARNING: Native library load
   failed.java.lang.UnsatisfiedLinkError:
   no
    >>>>> gdaljni in java.library.path
    >>>>> ..
    >>>>> ..
    >>>>> log4j:WARN File option not set for appender
[geoserverlogfile].
    >>>>> log4j:WARN Are you using FileAppender instead of
ConsoleAppender?
    >>>>>
    >>>> That is normal, you can ignore that.
    >>>>
    >>>>>
    >>>>>
    >>>>>
    >>>>>
    >>>>> aaime wrote:
    >>>>>
    >>>>>> sabman ha scritto:
    >>>>>> > I followed the instructions for the REST services
available
    >>>>>>
    >>>>>>>
    >>>>>>>

http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html
    >>>>>>> here . The only changes I had to make was in the pom.xml
   file where
    >>>>>>> i
    >>>>>>> changed the org.geoserver versions to "1.7.5-SNAPSHOT" from
    >>>>>>> "1.7.3-SNAPSHOT"
    >>>>>>> (i compared it with the other pom.xml files). The
   hello_rest module
    >>>>>>> compiled
    >>>>>>> successfully. I then tried testing the rest service by
   going to the
    >>>>>>> URL:
    >>>>>>>
    >>>>>>> http://localhost:8080/geoserver/rest/hello.txt
    >>>>>>> http://localhost:8080/geoserver/rest/hello_rest/hello.txt
    >>>>>>> http://localhost:8080/geoserver/rest/hello_rest
    >>>>>>>
    >>>>>>> I was not sure which one is correct so I tried all in the
   browser.
    >>>>>>> And
    >>>>>>> all I
    >>>>>>> see is this:
    >>>>>>>
    >>>>>>> Geoserver Configuration API
    >>>>>>>
    >>>>>>> * exception
    >>>>>>>
    >>>>>>> What am I doing wrong here?
    >>>>>>>
    >>>>>> Did you actually include your jar/project in the GeoServer
    >>>>>> application
    >>>>>> classpath? E.g, took the hello_rest jar and drop it into
    >>>>>> geoserver/WEB-INF/lib?
    >>>>>>
    >>>>>> Can you look in $GEOSERVER_DATA_DIR/logs/geoserver.log and
   see what
    >>>>>> exception (with full strack trace) is thrown when you try to
   access
    >>>>>> those
    >>>>>> URL's?
    >>>>>>
    >>>>>> Cheers
    >>>>>> Andrea
    >>>>>>
    >>>>>>
    >>>>>>
    >>>>>>
    >>>>>>

------------------------------------------------------------------------------
    >>>>>> Are you an open source citizen? Join us for the Open Source
   Bridge
    >>>>>> conference!
    >>>>>> Portland, OR, June 17-19. Two days of sessions, one day of
    >>>>>> unconference:
    >>>>>> $250.
    >>>>>> Need another reason to go? 24-hour hacker lounge. Register
   today!
    >>>>>>
    >>>>>>

http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
    >>>>>> _______________________________________________
    >>>>>> Geoserver-devel mailing list
    >>>>>> Geoserver-devel@lists.sourceforge.net
   <mailto:Geoserver-devel@lists.sourceforge.net>
    >>>>>> https://lists.sourceforge.net/lists/listinfo/geoserver-devel
    >>>>>>
    >>>>>>
    >>>>>>
    >>>> --
    >>>> Justin Deoliveira
    >>>> OpenGeo - http://opengeo.org
    >>>> Enterprise support for open source geospatial.
    >>>>
    >>>>
    >>>>

------------------------------------------------------------------------------
    >>>> Are you an open source citizen? Join us for the Open Source
Bridge
    >>>> conference!
    >>>> Portland, OR, June 17-19. Two days of sessions, one day of
    >>>> unconference:
    >>>> $250.
    >>>> Need another reason to go? 24-hour hacker lounge. Register
today!
    >>>>
    >>>>

http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
    >>>> _______________________________________________
    >>>> Geoserver-devel mailing list
    >>>> Geoserver-devel@lists.sourceforge.net
   <mailto:Geoserver-devel@lists.sourceforge.net>
    >>>> https://lists.sourceforge.net/lists/listinfo/geoserver-devel
    >>>>
    >>>>
    >>>>
    >>>
    >>
    >> --
    >> Justin Deoliveira
    >> OpenGeo - http://opengeo.org
    >> Enterprise support for open source geospatial.
    >>

   --
   Justin Deoliveira
   OpenGeo - http://opengeo.org
   Enterprise support for open source geospatial.

--
Regards,
Sebastin

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

--
Regards,
Sebastin

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008
30-Day
trial. Simplify your report design, integration and deployment - and focus
on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

--
View this message in context: http://www.nabble.com/Problems-with-implementing-REST-service-tp24138984p25051711.html
Sent from the GeoServer - Dev mailing list archive at Nabble.com.

Hi Sebastin,

Not exactly sure what the problem is. If you want to send me over the module you did, i can take a look at it, and send you back a patch of any changes needed to get it to run.

-Justin

Sebastin Kolman wrote:

Its confusing and annoying and I don't really understand whats happening. Like I mentioned earlier that the module installed successfully. I went through the code (instead of just blindly running the commands) to understand whats really happening. So the test checks to see if "Hello World" is returned. It creates the build only if the tests run successful.

I did an /mvn install/ again and it installed successfully. Now this folder was located outside of geoserver/src (I am running geoserver from source code).

So i created a copy of the folder inside of geoserver/src and I also did an mvn eclipse:eclipse so that the module has the rest classpath. I then did a /mvn install/ but it gave a build failure because the tests failed. The surefire test report said it was getting "Geoserver Configuration API" whereas it was expecting "Hello World".

I went back to the original folder and did a mvn install and it installed succesfully. So I deleted the copy, imported this original folder to eclipse, did the /"mvn eclipse:eclipse/" and then did the mvn install but the tests failed. :frowning:

I re-build the module from scratch and skipped the /mvn eclipse:eclipse/ part (because I felt it was probably the cause of the error) But all I get now is the test failure. I do not understand how it was installing successfully earlier (I did not look at the surefire report then). It obviously was getting "Hello World" in return...how is it that it was working then and not now.

On Mon, Aug 17, 2009 at 12:44 PM, Sebastin Kolman <saby83@anonymised.com <mailto:saby83@anonymised.com>> wrote:

    hmm....so here is what happened.

    I tried to follow your first solution of modifying the class path of
    the web module. But eclipse did not recognize the hello_rest module
    because I had not set it as a java project. So I deleted the project
    and started a new java project and followed the instructions again
    provided at
     http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

    There were some errors like:
    /

        /The declared package "org.geoserver.hellorest" does not match
        the expected package "src.main.java.org.geoserver.hellorest" HelloResource.java hello_rest/src/main/java/org/geoserver/hellorest line 1 Java Problem
        /

        /The import org.geoserver cannot be resolved HelloResource.java hello_rest/src/main/java/org/geoserver/hellorest line 4 Java Problem/

        /The import org.restlet cannot be resolved HelloResource.java hello_rest/src/main/java/org/geoserver/hellorest line 6 Java Problem/

         But I did the mvn install and the build was successful. I added the
    module to the web module's classpath and restarted the geoserver by
    running the Start.java file under
    web/src/test/java/org/vfny/geoserver/jetty/. But the http requests,

    http://localhost:8080/geoserver/rest/hello_rest/hello.txt
    http://localhost:8080/geoserver/rest/hello_rest

    still return the exception.

    I also tried running a separate local geoserver. So I installed
    geoserver 1.7.6 and then added the hello_rest-1.7.5-SNAPSHOT.jar
    file in the WEB-INF/lib folder. I sensed it would not work becasue
    the versions are different. When I sent the http requests it
    returned no exceptions. All that the page returned was "Geoserver
    Configuration API". I checked the log and it seems that the request
    was successful:

        /0:0:0:0:0:0:0:1 - - [17/Aug/2009:14:49:20 +0000] "GET
        /geoserver/rest/hello_rest/hello.txt HTTP/1.1" 200 138
        0:0:0:0:0:0:0:1 - - [17/Aug/2009:15:01:38 +0000] "GET
        /geoserver/rest/hello_rest HTTP/1.1" 200 138/

     Does this mean the module was integreated successfully? I thought
    the request was supposed to return the test "Hello World"

    On Fri, Aug 14, 2009 at 12:00 PM, Justin Deoliveira
    <jdeolive@anonymised.com <mailto:jdeolive@anonymised.com>> wrote:

        You have a few options for getting the extension running as part
        of geoserver.

        The first is to manually modify the classpath of the web module,
        and add the hello_rest module. (Right click on module in package
        explorer, click Properties, go to Java Build Path -> Projects)

        The second is to set up a profile for the module, and run
        eclipse:eclipse with the profile engaged, which will set up the
        dependency from the web module. This is quite a bit more work, see:

        http://docs.geoserver.org/1.7.x/en/developer/policies/community-modules.html#id3

        (Just steps 1 - 3)

        The last would be if you have a local geoserver that you use you
        can drop the file hello_rest/target/hello_rest-1.0-SNAPSHOT.jar
        into the WEB-INF/lib directory of your geoserver installation,
        and restart it.

        Hope that helps.

        -Justin

        Sebastin Kolman wrote:

            Hi Justin,

            I followed your instructions and the module installed just
            fine. As I mentioned earlier I am running geoserver from the
            source code through eclipse. I start geoserver by running
            the Start.java file under web/src/test/java/org/vfny/
            geoserver/jetty/.

            After doing the mvn install will it work if i simple stop
            and start the servert? Or do I need to do a mvn install on
            the whole geoserver project again ?

            How do I test this module? I assume it is by going to this url:

            http://localhost:8080/geoserver/rest/hello_rest/hello.txt
            http://localhost:8080/geoserver/rest/hello_rest

            On Thu, Jun 25, 2009 at 4:25 AM, Justin Deoliveira
            <jdeolive@anonymised.com <mailto:jdeolive@anonymised.com>
            <mailto:jdeolive@anonymised.com>>
            wrote:

               Hi Sebastin,

               Thanks for sending me over your code. I took at a look at
            it and here is
               what I found.

               First off, there was a problem with the documentation, it
            was out of
               date.
               Apologies I should have seen that right away. The
               createSupportedFormats()
               method should return a list, rather than a map. I have
            updated the
               documentation here:

                          http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html

               There were also a few other issues with teh code:

               * The sources and test files are not in the proper
            location with
               regard to
               packaging. You need to move
            src/main/java/HelloResource.java to
               src/main/java/org/geoserver/hellorest/HelloResource.java. And
               similarly for
               the the HelloResourceTest.java file.

               * A few imports were missing from HelloResource:

               import org.geoserver.rest.format.StringFormat;
               import org.restlet.data.MediaType;

               You also now will need:

               import java.util.ArrayList;
               import java.util.List;

               Let me know if that works. After making those changes I
            was able to
               successfully run HelloResourceTest.

               -Justin

               On Wed, 24 Jun 2009 11:43:05 -0400, Sebastin Kolman
               <saby83@anonymised.com <mailto:saby83@anonymised.com>
            <mailto:saby83@anonymised.com>>

               wrote:
                > Thanks Justin. Did you mean just the hello_rest
            module? I have
               attached
               it
                > with this mail.
                >
                > I am also just learning Java so yeah I could be doing
            a simple thing
               really
                > wrong.
                >
                > On Tue, Jun 23, 2009 at 9:51 PM, Justin Deoliveira
                > <jdeolive@anonymised.com <mailto:jdeolive@anonymised.com>
            <mailto:jdeolive@anonymised.com
            <mailto:jdeolive@anonymised.com>>>wrote:

                >
                >> Hmmm... can you zip up your project and send it to me
            in a private
               email?
                >> It looks like the classpath is somehow off, and it
            would be nice
               to look
                >> at
                >> the eclipse .classpath file, along with the sources.
                >>
                >> -Justin
                >>
                >> sabman wrote:
                >>
                >>> Thanks Justin.
                >>>
                >>> Here is what I was doing wrong. I created the folders
               src/main/java and
                >>> src/test/java under rest/hello_rest. When I created
            the class
               files,
                >>> eclipse
                >>> was creating the files under the rest/src/java
            folder instead of
                >>> rest/hello_rest/src/java.
                >>>
                >>> So now I made sure that the HelloResource.java file
            is located
               under
               the
                >>> correct folder and there were no errors. (But I
            could see that the
                >>> StringFormat and MediaType objects were not being
            recognized
               correctly.)
                >>> Also I moved the applicationContext.xml file from
            the resources
                >>> folder(as
                >>> mentioned in the tutorial) to the src/main/java
            folder (as you
                >>> mentioned.).
                >>> Also made sure the HelloResourceTest.java file is
            under the correct
                >>> folder.
                >>> Now when I run mvn install under the root module I
            get the
               following
                >>> compilation error:
                >>>
                >>> [INFO] Compiling 1 source file to
                >>>
                          /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/target/classes
                >>> [INFO]
                >>>
                          ------------------------------------------------------------------------
                >>> [ERROR] BUILD FAILURE [INFO]
                >>>
                          ------------------------------------------------------------------------
                >>> [INFO] Compilation failure
                >>>
                          /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[9,7]
                >>> org.geoserver.hellorest.HelloResource is not
            abstract and does not
                >>> override
                >>> abstract method
                >>>
                          createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
                >>> in org.geoserver.rest.AbstractResource
                >>>
                          /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[12,38]
                >>>
                          createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
                >>> in org.geoserver.hellorest.HelloResource cannot override
                >>>
                          createSupportedFormats(org.restlet.data.Request,org.restlet.data.Response)
                >>> in org.geoserver.rest.AbstractResource; attempting
            to use
               incompatible
                >>> return type found :
                >>>
                          java.util.Map<java.lang.String,org.geoserver.rest.format.DataFormat>
                >>> required:
            java.util.List<org.geoserver.rest.format.DataFormat>
                >>>
                          /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,7]
                >>> cannot find symbol symbol : class HashMap location:
            class
                >>> org.geoserver.hellorest.HelloResource
                >>>
                          /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[14,29]
                >>> cannot find symbol symbol : class HashMap location:
            class
                >>> org.geoserver.hellorest.HelloResource
                >>>
                          /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,31]
                >>> cannot find symbol symbol : class StringFormat
            location: class
                >>> org.geoserver.hellorest.HelloResource
                >>>
                          /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[15,45]
                >>> cannot find symbol symbol : variable MediaType
            location: class
                >>> org.geoserver.hellorest.HelloResource
                >>>
                          /home/sabman/Documents/Projects/geoserver/src/rest/hello_rest/src/main/java/HelloResource.java:[11,4]
                >>> method does not override or implement a method from
            a supertype
                >>>
                >>> Justin Deoliveira wrote:
                >>>
                >>>> sabman wrote:
                >>>>
                >>>>> I did not copy the jar file in the WEB-INF/lib
            folder. I did
               that now
                >>>>> but
                >>>>> its
                >>>>> still the same.
                >>>>>
                >>>> Did you restart geoserver after you did?
                >>>>
                >>>>> There is no information related to the exception
            in the log file.
                >>>>> There
                >>>>> are
                >>>>> some errors messages in eclipse which I am listing
            below:
                >>>>>
                >>>> Yeah, there probably won't be an exception, just
            nothing in
               the log
                >>>> file.
                >>>> It could also be that your applicationContext.xml
            file is in
               the wrong
                >>>> place. Is it under src/main/java in the root of
            your plugin
               source?
                >>>>
                >>>> Can you do a "jar tvf hello_rest.jar" to give us a
            listing of the
                >>>> files.
                >>>> Thanks.
                >>>>
                >>>>> 1) In the HelloResource.java file, For this piece
            of code:
                >>>>> protected Map<String, DataFormat>
            createSupportedFormats(Request
                >>>>> request,
                >>>>> Response response) {
                >>>>>
                >>>>> HashMap formats = new HashMap();
                >>>>> formats.put( "txt", new StringFormat(
               MediaType.TEXT_PLAIN
                >>>>> ));
                >>>>>
                >>>>> return formats;
                >>>>> }
                >>>>>
                >>>>> These are the errors:
                >>>>> @ Map<String, DataFormat> Multiple markers at this
            line
                >>>>> - The return type is incompatible with
                >>>>> AbstractResource.createSupportedFormats(Request, Response)
                >>>>> - implements
                >>>>>
            org.geoserver.rest.AbstractResource.createSupportedFormats
                >>>>> @HashMap Multiple markers at this line
                >>>>> - HashMap cannot be resolved to a type
                >>>>>
                >>>>> @StringFormat and @MediaType Multiple markers at
            this line
                >>>>> - StringFormat cannot be resolved to a type
                >>>>> - MediaType cannot be resolved
                >>>>>
                >>>> These are because the rest module is not on the
            classpath of your
                >>>> module.
                >>>> Can you run a mvn eclipse:eclipse in the root of
            your module
               and then
                >>>> refresh the project in eclipse. I think the tutorial is
               lackign that
                >>>> step.
                >>>>
                >>>>> 2) When i start geoserver from eclipse by running
            the Start.java
               file
                >>>>> I
                >>>>> see
                >>>>> the following warning messages in the console:
                >>>>>
                >>>>> Jun 22, 2009 11:14:11 AM
                >>>>> it.geosolutions.imageio.gdalframework.GDALUtilities
                >>>>> loadGDAL
                >>>>> WARNING: Native library load
               failed.java.lang.UnsatisfiedLinkError:
               no
                >>>>> gdaljni in java.library.path
                >>>>> ..
                >>>>> log4j:WARN File option not set for appender
            [geoserverlogfile].
                >>>>> log4j:WARN Are you using FileAppender instead of
            ConsoleAppender?
                >>>>>
                >>>> That is normal, you can ignore that.
                >>>>
                >>>>>
                >>>>> aaime wrote:
                >>>>>
                >>>>>> sabman ha scritto:
                >>>>>> > I followed the instructions for the REST
            services available
                >>>>>>
                >>>>>>>
                          http://docs.geoserver.org/1.7.x/developer/programming-guide/rest-services/implementing.html
                >>>>>>> here . The only changes I had to make was in the
            pom.xml
               file where
                >>>>>>> i
                >>>>>>> changed the org.geoserver versions to
            "1.7.5-SNAPSHOT" from
                >>>>>>> "1.7.3-SNAPSHOT"
                >>>>>>> (i compared it with the other pom.xml files). The
               hello_rest module
                >>>>>>> compiled
                >>>>>>> successfully. I then tried testing the rest
            service by
               going to the
                >>>>>>> URL:
                >>>>>>>
                >>>>>>> http://localhost:8080/geoserver/rest/hello.txt
                >>>>>>>
            http://localhost:8080/geoserver/rest/hello_rest/hello.txt
                >>>>>>> http://localhost:8080/geoserver/rest/hello_rest
                >>>>>>>
                >>>>>>> I was not sure which one is correct so I tried
            all in the
               browser.
                >>>>>>> And
                >>>>>>> all I
                >>>>>>> see is this:
                >>>>>>>
                >>>>>>> Geoserver Configuration API
                >>>>>>>
                >>>>>>> * exception
                >>>>>>>
                >>>>>>> What am I doing wrong here?
                >>>>>>>
                >>>>>> Did you actually include your jar/project in the
            GeoServer
                >>>>>> application
                >>>>>> classpath? E.g, took the hello_rest jar and drop
            it into
                >>>>>> geoserver/WEB-INF/lib?
                >>>>>>
                >>>>>> Can you look in
            $GEOSERVER_DATA_DIR/logs/geoserver.log and
               see what
                >>>>>> exception (with full strack trace) is thrown when
            you try to
               access
                >>>>>> those
                >>>>>> URL's?
                >>>>>>
                >>>>>> Cheers
                >>>>>> Andrea
                >>>>>>
                          ------------------------------------------------------------------------------
                >>>>>> Are you an open source citizen? Join us for the
            Open Source
               Bridge
                >>>>>> conference!
                >>>>>> Portland, OR, June 17-19. Two days of sessions,
            one day of
                >>>>>> unconference:
                >>>>>> $250.
                >>>>>> Need another reason to go? 24-hour hacker lounge.
            Register
               today!
                >>>>>>
                          http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
                >>>>>> _______________________________________________
                >>>>>> Geoserver-devel mailing list
                >>>>>> Geoserver-devel@lists.sourceforge.net
            <mailto:Geoserver-devel@lists.sourceforge.net>
               <mailto:Geoserver-devel@lists.sourceforge.net
            <mailto:Geoserver-devel@lists.sourceforge.net>>

                >>>>>>
            https://lists.sourceforge.net/lists/listinfo/geoserver-devel
                >>>>>>
                >>>> --
                >>>> Justin Deoliveira
                >>>> OpenGeo - http://opengeo.org
                >>>> Enterprise support for open source geospatial.
                >>>>
                          ------------------------------------------------------------------------------
                >>>> Are you an open source citizen? Join us for the
            Open Source Bridge
                >>>> conference!
                >>>> Portland, OR, June 17-19. Two days of sessions, one
            day of
                >>>> unconference:
                >>>> $250.
                >>>> Need another reason to go? 24-hour hacker lounge.
            Register today!
                >>>>
                          http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
                >>>> _______________________________________________
                >>>> Geoserver-devel mailing list
                >>>> Geoserver-devel@lists.sourceforge.net
            <mailto:Geoserver-devel@lists.sourceforge.net>
               <mailto:Geoserver-devel@lists.sourceforge.net
            <mailto:Geoserver-devel@lists.sourceforge.net>>

                >>>>
            https://lists.sourceforge.net/lists/listinfo/geoserver-devel
                >>>>
                >>>
                >>
                >> --
                >> Justin Deoliveira
                >> OpenGeo - http://opengeo.org
                >> Enterprise support for open source geospatial.
                >>

               --
               Justin Deoliveira
               OpenGeo - http://opengeo.org
               Enterprise support for open source geospatial.

            -- Regards,
            Sebastin

        -- Justin Deoliveira
        OpenGeo - http://opengeo.org
        Enterprise support for open source geospatial.

    -- Regards,
    Sebastin

--
Regards,
Sebastin

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.