[geotk] WFS Client and Relative Paths Issue

Cullen Rombach cullenr at imagemattersllc.com
Tue Jul 18 07:42:46 PDT 2017


Hello all,

I am attempting to use the Geotoolkit WFS Client API to access this WFS
<http://tb12.dev.52north.org/geoserver/ows?service=wfs&version=1.1.0&request=GetCapabilities>.
However,
I've run into an issue where the client is unable to resolve imported XML
schemas due to an issue with relative paths. I've attached a small test
class, as well as the error stack trace I get when I run the class in case
you need more detail, but the two offending paths seem to be as follows:

http://tb12.dev.52north.org:80/geoserver/schemas/gml/3.1.
1/base/../../../xlink/1.0.0/xlinks.xsd
<http://tb12.dev.52north.org/geoserver/schemas/xlink/1.0.0/xlinks.xsd>
http://tb12.dev.52north.org:80/geoserver/schemas/gml/3.1.
1/base/../smil/smil20.xsd
<http://tb12.dev.52north.org/geoserver/schemas/gml/3.1.1/smil/smil20.xsd>

I browsed the schemas uploaded on the server, but I wasn't actually able to
find specific references the expected relative paths anywhere. Maybe I just
missed something.

Note that the URLs resolve just fine once the relative paths have been
smoothed out. Geotoolkit just doesn't seem to do this.

http://tb12.dev.52north.org:80/geoserver/schemas/xlink/1.0.0/xlinks.xsd
<http://tb12.dev.52north.org/geoserver/schemas/xlink/1.0.0/xlinks.xsd>
http://tb12.dev.52north.org:80/geoserver/schemas/gml/3.1.1/smil/smil20.xsd
<http://tb12.dev.52north.org/geoserver/schemas/gml/3.1.1/smil/smil20.xsd>

Regards,
Cullen Rombach

-- 
Cullen Rombach
Image Matters LLC
www.imagemattersllc.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/geotoolkit/attachments/20170718/0e429c39/attachment-0001.html>
-------------- next part --------------
INFO: [WFS Client] request type : http://tb12.dev.52north.org/geoserver/ows?service=wfs&NAMESPACE=xmlns%28tiger%3Dhttp%3A%2F%2Fwww.census.gov%29&TYPENAME=tiger%3Apoly_landmarks&REQUEST=DescribeFeatureType&VERSION=1.1.0&SERVICE=WFS
Jul 18, 2017 10:23:04 AM org.geotoolkit.feature.xml.Utils getDistantSchema
WARNING: IO exception trying to retrieve imported schema:http://tb12.dev.52north.org:80/geoserver/schemas/gml/3.1.1/base/../../../xlink/1.0.0/xlinks.xsd
java.io.FileNotFoundException: http://tb12.dev.52north.org:80/geoserver/schemas/gml/3.1.1/base/../../../xlink/1.0.0/xlinks.xsd
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1872)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
	at java.net.URL.openStream(URL.java:1045)
	at org.geotoolkit.nio.IOUtilities.open(IOUtilities.java:626)
	at org.geotoolkit.nio.IOUtilities.open(IOUtilities.java:574)
	at org.geotoolkit.feature.xml.Utils.getDistantSchema(Utils.java:588)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader$1.call(JAXBFeatureTypeReader.java:432)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader$1.call(JAXBFeatureTypeReader.java:430)
	at org.apache.sis.util.collection.Cache.getOrCreate(Cache.java:356)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:430)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:445)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:445)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:445)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:445)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:445)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:445)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:445)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:445)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:445)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getAllFeatureTypeFromSchema(JAXBFeatureTypeReader.java:409)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.read(JAXBFeatureTypeReader.java:396)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.read(JAXBFeatureTypeReader.java:283)
	at org.geotoolkit.data.wfs.WFSFeatureStore.requestType(WFSFeatureStore.java:485)
	at org.geotoolkit.data.wfs.WFSFeatureStore.checkTypeExist(WFSFeatureStore.java:144)
	at org.geotoolkit.data.wfs.WFSFeatureStore.<init>(WFSFeatureStore.java:109)
	at org.geotoolkit.data.wfs.WebFeatureClient.getStore(WebFeatureClient.java:122)
	at org.geotoolkit.data.wfs.WebFeatureClient.createSession(WebFeatureClient.java:270)
	at org.geotoolkit.data.AbstractFeatureStore.createSession(AbstractFeatureStore.java:159)
	at com.imagemattersllc.ows12.portrayal.web.controller.WFSFeatureCollectionTest.openFromWFS(WFSFeatureCollectionTest.java:52)
	at com.imagemattersllc.ows12.portrayal.web.controller.WFSFeatureCollectionTest.testReadFeatureCollectionFromWFS(WFSFeatureCollectionTest.java:30)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

Jul 18, 2017 10:23:04 AM org.geotoolkit.feature.xml.Utils getDistantSchema
WARNING: Schema ressource not found:http://tb12.dev.52north.org:80/geoserver/schemas/gml/3.1.1/base/../../../xlink/1.0.0/xlinks.xsd
Jul 18, 2017 10:23:04 AM org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader listAllSchemas
WARNING: Unable to retrieve imported schema:http://tb12.dev.52north.org:80/geoserver/schemas/gml/3.1.1/base/../../../xlink/1.0.0/xlinks.xsd
Jul 18, 2017 10:23:07 AM org.geotoolkit.feature.xml.Utils getDistantSchema
WARNING: IO exception trying to retrieve imported schema:http://tb12.dev.52north.org:80/geoserver/schemas/gml/3.1.1/base/../smil/smil20.xsd
java.io.FileNotFoundException: http://tb12.dev.52north.org:80/geoserver/schemas/gml/3.1.1/base/../smil/smil20.xsd
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1872)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
	at java.net.URL.openStream(URL.java:1045)
	at org.geotoolkit.nio.IOUtilities.open(IOUtilities.java:626)
	at org.geotoolkit.nio.IOUtilities.open(IOUtilities.java:574)
	at org.geotoolkit.feature.xml.Utils.getDistantSchema(Utils.java:588)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader$1.call(JAXBFeatureTypeReader.java:432)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader$1.call(JAXBFeatureTypeReader.java:430)
	at org.apache.sis.util.collection.Cache.getOrCreate(Cache.java:356)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:430)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:445)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listAllSchemas(JAXBFeatureTypeReader.java:445)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getAllFeatureTypeFromSchema(JAXBFeatureTypeReader.java:409)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.read(JAXBFeatureTypeReader.java:396)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.read(JAXBFeatureTypeReader.java:283)
	at org.geotoolkit.data.wfs.WFSFeatureStore.requestType(WFSFeatureStore.java:485)
	at org.geotoolkit.data.wfs.WFSFeatureStore.checkTypeExist(WFSFeatureStore.java:144)
	at org.geotoolkit.data.wfs.WFSFeatureStore.<init>(WFSFeatureStore.java:109)
	at org.geotoolkit.data.wfs.WebFeatureClient.getStore(WebFeatureClient.java:122)
	at org.geotoolkit.data.wfs.WebFeatureClient.createSession(WebFeatureClient.java:270)
	at org.geotoolkit.data.AbstractFeatureStore.createSession(AbstractFeatureStore.java:159)
	at com.imagemattersllc.ows12.portrayal.web.controller.WFSFeatureCollectionTest.openFromWFS(WFSFeatureCollectionTest.java:52)
	at com.imagemattersllc.ows12.portrayal.web.controller.WFSFeatureCollectionTest.testReadFeatureCollectionFromWFS(WFSFeatureCollectionTest.java:30)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

Jul 18, 2017 10:23:07 AM org.geotoolkit.feature.xml.Utils getDistantSchema
WARNING: Schema ressource not found:http://tb12.dev.52north.org:80/geoserver/schemas/gml/3.1.1/base/../smil/smil20.xsd
Jul 18, 2017 10:23:07 AM org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader listAllSchemas
WARNING: Unable to retrieve imported schema:http://tb12.dev.52north.org:80/geoserver/schemas/gml/3.1.1/base/../smil/smil20.xsd

java.lang.NullPointerException
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getAnnotatedAttributes(JAXBFeatureTypeReader.java:963)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getAnnotatedAttributes(JAXBFeatureTypeReader.java:976)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getAnnotatedAttributes(JAXBFeatureTypeReader.java:969)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getAnnotatedAttributes(JAXBFeatureTypeReader.java:976)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.completeType(JAXBFeatureTypeReader.java:680)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getType(JAXBFeatureTypeReader.java:662)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getType(JAXBFeatureTypeReader.java:618)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getType(JAXBFeatureTypeReader.java:613)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.resolveSimpleType(JAXBFeatureTypeReader.java:1289)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.elementToAttribute(JAXBFeatureTypeReader.java:1058)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.elementToAttribute(JAXBFeatureTypeReader.java:982)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.elementToAttribute(JAXBFeatureTypeReader.java:1005)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.elementToAttribute(JAXBFeatureTypeReader.java:982)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getGroupAttributes(JAXBFeatureTypeReader.java:883)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getGroupAttributes(JAXBFeatureTypeReader.java:905)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getGroupAttributes(JAXBFeatureTypeReader.java:901)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.completeType(JAXBFeatureTypeReader.java:686)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getType(JAXBFeatureTypeReader.java:662)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getType(JAXBFeatureTypeReader.java:618)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getType(JAXBFeatureTypeReader.java:613)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.completeType(JAXBFeatureTypeReader.java:698)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getType(JAXBFeatureTypeReader.java:662)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getType(JAXBFeatureTypeReader.java:618)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getType(JAXBFeatureTypeReader.java:613)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.completeType(JAXBFeatureTypeReader.java:698)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getType(JAXBFeatureTypeReader.java:662)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getType(JAXBFeatureTypeReader.java:618)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.listFeatureTypes(JAXBFeatureTypeReader.java:495)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.getAllFeatureTypeFromSchema(JAXBFeatureTypeReader.java:412)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.read(JAXBFeatureTypeReader.java:396)
	at org.geotoolkit.feature.xml.jaxb.JAXBFeatureTypeReader.read(JAXBFeatureTypeReader.java:283)
	at org.geotoolkit.data.wfs.WFSFeatureStore.requestType(WFSFeatureStore.java:485)
	at org.geotoolkit.data.wfs.WFSFeatureStore.checkTypeExist(WFSFeatureStore.java:144)
	at org.geotoolkit.data.wfs.WFSFeatureStore.<init>(WFSFeatureStore.java:109)
	at org.geotoolkit.data.wfs.WebFeatureClient.getStore(WebFeatureClient.java:122)
	at org.geotoolkit.data.wfs.WebFeatureClient.createSession(WebFeatureClient.java:270)
	at org.geotoolkit.data.AbstractFeatureStore.createSession(AbstractFeatureStore.java:159)
	at com.imagemattersllc.ows12.portrayal.web.controller.WFSFeatureCollectionTest.openFromWFS(WFSFeatureCollectionTest.java:52)
	at com.imagemattersllc.ows12.portrayal.web.controller.WFSFeatureCollectionTest.testReadFeatureCollectionFromWFS(WFSFeatureCollectionTest.java:30)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: WFSFeatureCollectionTest.java
Type: text/x-java
Size: 2678 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/geotoolkit/attachments/20170718/0e429c39/attachment-0001.java>


More information about the Geotoolkit mailing list