Hi,

I'm creating a Google Web Toolkit application which uses a servlet to make
WPS requests using the GeoTools WPS, forwarding the results back to the
browser client.  However, I'm having trouble trying to create a
DescribeProcess request as the XML fails to parse correctly due to an
Integer/BigInteger cast problem.

The strange thing is, this works perfectly fine if I do it outside of my GWT
servlet - everything parses correctly and I get no errors.  When I do it
from my servlet however it just doesn't work.  Below is my stack trace and
servlet code snippet.

If anybody has any idea why this is happening I'd appreciate your input!

Thanks!

Jon

STACK TRACE:

   [WARN] Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public
abstract uk.ac.glam.wps.gwtwps.client.DetailedProcessDescriptor
uk.ac.glam.wps.gwtwps.client.OWSRequestService.wpsDescribeProcess(java.lang.String)'
threw an unexpected exception: java.lang.RuntimeException: Parsing failed
for Input: java.lang.RuntimeException: Unable to set property: minOccurs for
eobject: {http://www.opengis.net/wps/1.0.0}InputDescriptionType
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:378)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:581)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)
at
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at
org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Caused by: java.lang.RuntimeException: Parsing failed for Input:
java.lang.RuntimeException: Unable to set property: minOccurs for eobject: {
http://www.opengis.net/wps/1.0.0}InputDescriptionType
at org.geotools.xml.impl.ParseExecutor.visit(ParseExecutor.java:158)
at
org.geotools.xml.impl.BindingWalker$BindingExecutionChain.execute(BindingWalker.java:212)
at org.geotools.xml.impl.BindingWalker.walk(BindingWalker.java:178)
at
org.geotools.xml.impl.ElementHandlerImpl.endElement(ElementHandlerImpl.java:222)
at org.geotools.xml.impl.ParserHandler.endElement(ParserHandler.java:607)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.geotools.xml.Parser.parse(Parser.java:223)
at org.geotools.xml.Parser.parse(Parser.java:151)
at
org.geotools.data.wps.response.DescribeProcessResponse.<init>(DescribeProcessResponse.java:67)
at
org.geotools.data.wps.WPS1_0_0$InternalDescribeProcessRequest.createResponse(WPS1_0_0.java:135)
at
org.geotools.data.ows.AbstractWPS.internalIssueRequest(AbstractWPS.java:419)
at
org.geotools.data.wps.WebProcessingService.issueRequest(WebProcessingService.java:235)
at
uk.ac.glam.wps.gwtwps.server.OWSRequestServiceImpl.wpsDescribeProcess(OWSRequestServiceImpl.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
... 22 more
Caused by: java.lang.RuntimeException: Unable to set property: minOccurs for
eobject: {http://www.opengis.net/wps/1.0.0}InputDescriptionType
at
org.geotools.xml.AbstractComplexEMFBinding.setProperty(AbstractComplexEMFBinding.java:286)
at
org.geotools.xml.AbstractComplexEMFBinding.setProperties(AbstractComplexEMFBinding.java:211)
at
org.geotools.xml.AbstractComplexEMFBinding.parse(AbstractComplexEMFBinding.java:145)
at org.geotools.xml.impl.ParseExecutor.visit(ParseExecutor.java:149)
... 46 more
Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to
java.math.BigInteger
at
net.opengis.wps10.impl.InputDescriptionTypeImpl.eSet(InputDescriptionTypeImpl.java:360)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjectImpl.java:654)
at org.geotools.xml.EMFUtils.set(EMFUtils.java:61)
at
org.geotools.xml.AbstractComplexEMFBinding.setProperty(AbstractComplexEMFBinding.java:234)
... 49 more
[ERROR] 500 - POST /gwtwps/ows (127.0.0.1) 57 bytes
   Request headers
      Host: 127.0.0.1:8888
      Connection: keep-alive
      User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)
AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.8 Safari/533.2
      Referer: http://127.0.0.1:8888/gwtwps/hosted.html?gwtwps
      Accept: */*
      Accept-Encoding: gzip,deflate,sdch
      Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
      Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
      Content-Length: 323
      Origin: http://127.0.0.1:8888
      X-GWT-Module-Base: http://127.0.0.1:8888/gwtwps/
      Content-Type: text/x-gwt-rpc; charset=utf-8
      X-GWT-Permutation: HostedMode
   Response headers
      Content-Type: text/plain
com.google.gwt.user.client.rpc.StatusCodeException: The call failed on the
server; see server log for details
at
com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:192)
at
com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287)
at
com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:393)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at
com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at
com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1713)
at
com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165)
at
com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
at
com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264)
at
com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188)
at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at
com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at
com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1668)
at
com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401)
at
com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222)
at java.lang.Thread.run(Thread.java:619)


SERVLET CODE:

public DetailedProcessDescriptor wpsDescribeProcess(String url) {
System.out.println("In wpsDescribeProcess with url " + url);

DetailedProcessDescriptor dpd = null;
 WebProcessingService wps = getWebProcessingService(url);
 DescribeProcessRequest request = wps.createDescribeProcessRequest();
 String[] kvp = url.split("\\?")[1].split("&");
String identifier = null;
for (int i = 0; i < kvp.length; i++) {
System.out.println(kvp[i]);
if (kvp[i].toLowerCase().startsWith("identifier"))
identifier = kvp[i].split("=")[1];
}
 request.setIdentifier(identifier);
try {
DescribeProcessResponse response = wps.issueRequest(request);
// this is where I get my exception ^^^
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return dpd;
}
private WebProcessingService getWebProcessingService(String url) {
String source = url.split("\\?")[0];
WebProcessingService wps = null;
 for (Iterator<WebProcessingService> iterator = wpsList.iterator();
iterator.hasNext();) {
WebProcessingService wps1 = (WebProcessingService) iterator.next();
System.out.println("if " + wps1.getInfo().getSource() + " = " + source);
if (wps1.getInfo().getSource().toString().equals(source)) {
// We've already got this wps...
wps = wps1;
}
}
 // If we don't already have this wps, load it
if (wps == null) {
try {
wps = new WebProcessingService(new URL(url));
wpsList.add(wps);
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 return wps;
}
------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to