[Geoserver-users] app-schema error with schemas in class path

I'm testing some new versions of GeoSciML schemas that have not yet been published yet and so am using the technique described at http://docs.geoserver.org/stable/en/user/data/app-schema/app-schema-resolution.html to put them in the WEB-INF\classes\org\geosciml\schemas directory in my web app.

I'm using nightly build 2013-07-05 of geoserver and app-schema plugin.

The schemas I am using are available at https://www.seegrid.csiro.au/subversion/GeoSciML/branches/3.2.0/schemas/ .

I'm using the configuration at https://www.seegrid.csiro.au/subversion/GeoSciML/cgi-reference-dataset/tags/2013-05-15/services/geoserver/postgis/data/workspaces/ with some edits to change to the v3.2 schemas. I've replaced all 3.1 occurrences in namespace and schemaUri 's with 3.2, added Namespace elements for gsmlu and http://xmlns.geosciml.org/Utilities/3.2 and changed the cgu directory in workspaces to gsmlu and changed cgu to gsmlu in the contained files.

The above works and I can retrieve features. However, if I try to use one of the new elements introduced in the change from v3.1 to v3.2
by changing the configuration file https://www.seegrid.csiro.au/subversion/GeoSciML/cgi-reference-dataset/tags/2013-05-15/services/geoserver/postgis/data/workspaces/gsmlgu/gsmlgu_GeologicUnit/gsmlgu_CompositionPart.xml to the version attached which uses gsmlu:GSML_QuantityRange (which is declared in https://www.seegrid.csiro.au/subversion/GeoSciML/branches/3.2.0/schemas/cgiutilities/3.2/cgiUtilities.xsd) instead of swe:QuantityRange then the geoserver.log file shows the following error on start up:

---
2013-07-25 11:05:38,541 INFO [org.geoserver] - Loaded store 'gsmlgu_GeologicUnit', enabled
2013-07-25 11:05:38,541 INFO [org.geoserver] - Loaded data store 'gsmlgu_GeologicUnit'
2013-07-25 11:05:38,681 WARN [geotools.jdbc] - No primary key or unique index found for gsmlem_color.
2013-07-25 11:05:38,697 WARN [data.complex] - http://www.opengis.net/gml/3.2:MeasureType has no super type
2013-07-25 11:05:38,697 WARN [data.complex] - http://www.opengis.net/gml/3.2:LengthType has no super type
2013-07-25 11:05:38,697 WARN [data.complex] - http://www.opengis.net/gml/3.2:AngleType has no super type
2013-07-25 11:05:38,697 WARN [data.complex] - http://www.opengis.net/gml/3.2:ScaleType has no super type
2013-07-25 11:05:38,931 WARN [geotools.jdbc] - No primary key or unique index found for gsmlem_lithology.
2013-07-25 11:05:38,947 WARN [data.complex] - http://www.opengis.net/gml/3.2:MeasureType has no super type
2013-07-25 11:05:38,947 WARN [data.complex] - http://www.opengis.net/gml/3.2:LengthType has no super type
2013-07-25 11:05:38,947 WARN [data.complex] - http://www.opengis.net/gml/3.2:AngleType has no super type
2013-07-25 11:05:38,947 WARN [data.complex] - http://www.opengis.net/gml/3.2:ScaleType has no super type
2013-07-25 11:05:39,181 WARN [data.complex] - http://www.opengis.net/gml/3.2:MeasureType has no super type
2013-07-25 11:05:39,181 WARN [data.complex] - http://www.opengis.net/gml/3.2:LengthType has no super type
2013-07-25 11:05:39,181 WARN [data.complex] - http://www.opengis.net/gml/3.2:AngleType has no super type
2013-07-25 11:05:39,181 WARN [data.complex] - http://www.opengis.net/gml/3.2:ScaleType has no super type
2013-07-25 11:05:39,416 WARN [data.complex] - No top level element found in schemas: {http://xmlns.geosciml.org/Utilities/3.2\}GSML_QuantityRange
2013-07-25 11:05:39,416 WARN [complex.config] - Error creating app-schema data store for '_gsmlgu_proportion', caused by: No top level element found in schemas: {http://xmlns.geosciml.org/Utilities/3.2\}GSML_QuantityRange
2013-07-25 11:05:39,416 WARN [org.geoserver] - Error connecting to 'gsmlgu_GeologicUnit'. Disabling.
2013-07-25 11:05:39,431 INFO [org.geoserver] -
java.io.IOException: java.util.NoSuchElementException: No top level element found in schemas: {http://xmlns.geosciml.org/Utilities/3.2\}GSML_QuantityRange
        at org.geotools.data.complex.config.AppSchemaDataAccessConfigurator.createFeatureTypeMappings(AppSchemaDataAccessConfigurator.java:290)
        at org.geotools.data.complex.config.AppSchemaDataAccessConfigurator.buildMappings(AppSchemaDataAccessConfigurator.java:203)
        at org.geotools.data.complex.config.AppSchemaDataAccessConfigurator.buildMappings(AppSchemaDataAccessConfigurator.java:175)
        at org.geotools.data.complex.AppSchemaDataAccessFactory.createDataStore(AppSchemaDataAccessFactory.java:96)
        at org.geotools.data.complex.AppSchemaDataAccessFactory.createDataStore(AppSchemaDataAccessFactory.java:93)
        at org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:107)
        at org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:546)
        at org.geoserver.catalog.impl.DataStoreInfoImpl.getDataStore(DataStoreInfoImpl.java:37)
        at org.geoserver.config.GeoServerLoader.readCatalog(GeoServerLoader.java:355)
        at org.geoserver.config.GeoServerLoader.readCatalog(GeoServerLoader.java:226)
        at org.geoserver.config.DefaultGeoServerLoader.loadCatalog(DefaultGeoServerLoader.java:46)
        at org.geoserver.config.GeoServerLoader.postProcessBeforeInitialization(GeoServerLoader.java:114)
        at org.geoserver.config.GeoServerLoaderProxy.postProcessBeforeInitialization(GeoServerLoaderProxy.java:58)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1448)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
        at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:630)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
        at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:630)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
        at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:630)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
        at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:630)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
        at org.geoserver.platform.GeoServerContextLoaderListener.contextInitialized(GeoServerContextLoaderListener.java:22)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
        at org.apache.catalina.core.StandardService.start(StandardService.java:525)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.util.NoSuchElementException: No top level element found in schemas: {http://xmlns.geosciml.org/Utilities/3.2\}GSML_QuantityRange
        at org.geotools.data.complex.config.FeatureTypeRegistry.getElementDeclaration(FeatureTypeRegistry.java:166)
        at org.geotools.data.complex.config.FeatureTypeRegistry.getDescriptor(FeatureTypeRegistry.java:144)
        at org.geotools.data.complex.config.AppSchemaDataAccessConfigurator.getTargetDescriptor(AppSchemaDataAccessConfigurator.java:301)
        at org.geotools.data.complex.config.AppSchemaDataAccessConfigurator.createFeatureTypeMappings(AppSchemaDataAccessConfigurator.java:265)
        ... 101 more
2013-07-25 11:05:39,431 INFO [org.geoserver] - Loaded feature type 'GeologicUnit', enabled
2013-07-25 11:05:39,431 INFO [org.geoserver] - Loaded feature type 'gsmlgu_GeologicUnit'
---

and a request like http://localhost/geoserver20130705_gsml32/ows?service=WFS&version=2.0.0&request=GetFeature&typename=gsml:MappedFeature&

gives the error message:

---
<ows:ExceptionReport version="2.0.0" xsi:schemaLocation="http://www.opengis.net/ows/1.1 http://xxxx.geosciml.org/xxxxxxxx/schemas/ows/1.1.0/owsAll.xsd&quot;&gt;&lt;ows:Exception exceptionCode="NoApplicableCode"><ows:ExceptionText>java.lang.RuntimeException: Failed to get property: {http://www.opengis.net/wfs/2.0\}boundedBy
Failed to get property: {http://www.opengis.net/wfs/2.0\}boundedBy
Exception occurred while computing bounds
Error applying mapping with targetAttribute gsml:specification
Feature type http://xmlns.geosciml.org/GeologicUnit/3.2:GeologicUnit not found. Has the data access been registered in DataAccessRegistry? Available: [_gsml_observationMethod, http://xmlns.geosciml.org/GeoSciML-Core/3.2:MappedFeature, _gsml_mf_positionalAccuracy, gsmlga_eventProcess, http://xmlns.geosciml.org/GeologicAge/3.2:GeologicEvent, _gsmlga_eventEnvironment, http://xmlns.geosciml.org/GeologicAge/3.2:GeologicHistory, http://xmlns.geosciml.org/GeologicStructure/3.2:Contact, http://xmlns.geosciml.org/GeologicStructure/3.2:ShearDisplacementStructure, gsmlem_color, gsmlem_lithology, http://xmlns.geosciml.org/EarthMaterial/3.2:RockMaterial\]</ows:ExceptionText></ows:Exception></ows:ExceptionReport>
---

Any ideas?

Marcus Sen

This message (and any attachments) is for the recipient only. NERC is subject to the Freedom of Information Act 2000 and the contents of this email and any reply you make may be disclosed by NERC unless it is exempt from release under the Act. Any material supplied to NERC may be stored in an electronic records management system.

gsmlgu_CompositionPart.xml (4.98 KB)

Hi Marcus,

I've had similar problem when an imported schema is missing.
I wonder which schemaURI you're using?
If you're using
"https://www.seegrid.csiro.au/subversion/GeoSciML/branches/3.2.0/schemas/geologicunit/3.2/geologicUnit.xsd&quot;
in the schemaURI, you need to also specify a second schemaURI for gsmlu
(it's not imported in geologicUnit.xsd).

If you're using
"https://www.seegrid.csiro.au/subversion/GeoSciML/branches/3.2.0/schemas/geosciml/3.2/geosciml.xsd&quot;,
it imports gsmlu from the location that doesn't exist yet, i.e.
"http://schemas.geosciml.org/cgiutilities/3.2/cgiUtilities.xsd&quot;\. This can be
solved by manipulating the app-schema cache. You do this by copying the
cgiUtilities.xsd in the cache, such that it looks like it comes from the
location that doesn't exist.

More info on the cache structure:
http://docs.geoserver.org/stable/en/user/data/app-schema/app-schema-resolution.html#cache

Hope that helps.

Cheers
Rini

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/app-schema-error-with-schemas-in-class-path-tp5068649p5068845.html
Sent from the GeoServer - User mailing list archive at Nabble.com.

-----Original Message-----
From: Rini Angreani [mailto:Rini.Angreani@…367…]
Sent: 26 July 2013 03:59
To: geoserver-users@lists.sourceforge.net

I've had similar problem when an imported schema is missing.
I wonder which schemaURI you're using?
If you're using
"https://www.seegrid.csiro.au/subversion/GeoSciML/branches/3.2.0/schema
s/geologicunit/3.2/geologicUnit.xsd"
in the schemaURI, you need to also specify a second schemaURI for gsmlu
(it's not imported in geologicUnit.xsd).

It is imported at line 34 of geologicUnit.xsd (unless there is some typo I'm just not seeing). However I added the line

<FeatureType><schemaUri>http://schemas.geosciml.org/cgiutilities/3.2/cgiUtilities.xsd&lt;/schemaUri&gt;&lt;/FeatureType&gt;

to

data\workspaces\gsmlgu\gsmlgu_GeologicUnit\gsmlgu_CompositionPart.xml

and the error has gone away and I can successfully execute GetFeature requests. So your fix is working although I don't really understand the reason.

Thanks,

Marcus

it imports gsmlu from the location that doesn't exist yet, i.e.
"http://schemas.geosciml.org/cgiutilities/3.2/cgiUtilities.xsd&quot;\. This
can be solved by manipulating the app-schema cache. You do this by
copying the cgiUtilities.xsd in the cache, such that it looks like it
comes from the location that doesn't exist.

I was putting all the schemas in the class path in WEB-INF/classes in the directory structure described at http://docs.geoserver.org/stable/en/user/data/app-schema/app-schema-resolution.html#classpath and that seems to work now I have added the extra schemaURI above.

This message (and any attachments) is for the recipient only. NERC is subject to the Freedom of Information Act 2000 and the contents of this email and any reply you make may be disclosed by NERC unless it is exempt from release under the Act. Any material supplied to NERC may be stored in an electronic records management system.

Hi Marcus,

I missed the import but you're right, it's there. My theory is that the imported location (http://schemas.geosciml.org/cgiutilities/3.2/cgiUtilities.xsd) didn't exist at the time (as mentioned in my last reply), but it must've been added recently because the link now works. If you look in the parent folder (http://schemas.geosciml.org/cgiutilities/3.2/), the schema was last modified 15/08/2013.
So you should be able to get things working without the workarounds now.

Cheers
Rini

-----Original Message-----
From: Sen, Marcus A. [mailto:mase@…388…]
Sent: Tuesday, 13 August 2013 7:06 PM
To: Angreani, Rini (CESRE, Kensington); geoserver-users@lists.sourceforge.net
Subject: RE: [Geoserver-users] app-schema error with schemas in class path

-----Original Message-----
From: Rini Angreani [mailto:Rini.Angreani@…367…]
Sent: 26 July 2013 03:59
To: geoserver-users@lists.sourceforge.net

I've had similar problem when an imported schema is missing.
I wonder which schemaURI you're using?
If you're using
"https://www.seegrid.csiro.au/subversion/GeoSciML/branches/3.2.0/schem
a
s/geologicunit/3.2/geologicUnit.xsd"
in the schemaURI, you need to also specify a second schemaURI for
gsmlu (it's not imported in geologicUnit.xsd).

It is imported at line 34 of geologicUnit.xsd (unless there is some typo I'm just not seeing). However I added the line

<FeatureType><schemaUri>http://schemas.geosciml.org/cgiutilities/3.2/cgiUtilities.xsd&lt;/schemaUri&gt;&lt;/FeatureType&gt;

to

data\workspaces\gsmlgu\gsmlgu_GeologicUnit\gsmlgu_CompositionPart.xml

and the error has gone away and I can successfully execute GetFeature requests. So your fix is working although I don't really understand the reason.

Thanks,

Marcus

it imports gsmlu from the location that doesn't exist yet, i.e.
"http://schemas.geosciml.org/cgiutilities/3.2/cgiUtilities.xsd&quot;\. This
can be solved by manipulating the app-schema cache. You do this by
copying the cgiUtilities.xsd in the cache, such that it looks like it
comes from the location that doesn't exist.

I was putting all the schemas in the class path in WEB-INF/classes in the directory structure described at http://docs.geoserver.org/stable/en/user/data/app-schema/app-schema-resolution.html#classpath and that seems to work now I have added the extra schemaURI above.

This message (and any attachments) is for the recipient only. NERC is subject to the Freedom of Information Act 2000 and the contents of this email and any reply you make may be disclosed by NERC unless it is exempt from release under the Act. Any material supplied to NERC may be stored in an electronic records management system.

Rini, I think your are right: this comment suggests that Ollie has been busy fixing things:

<!-- Version 3.2 change: Added import of the CGI_Utilities package to gain access to the new GSML_QuantityRange property - Ollie Raymond 26 June 2013 -->
<import namespace="http://xmlns.geosciml.org/Utilities/3.2&quot; schemaLocation="http://schemas.geosciml.org/cgiutilities/3.2/cgiUtilities.xsd&quot;/&gt;

In:

https://www.seegrid.csiro.au/subversion/GeoSciML/branches/3.2.0/schemas/geologicunit/3.2/geologicUnit.xsd

Kind regards,
Ben.

On 15/08/13 11:45, Rini.Angreani@anonymised.com wrote:

Hi Marcus,

I missed the import but you're right, it's there. My theory is that the imported location (http://schemas.geosciml.org/cgiutilities/3.2/cgiUtilities.xsd) didn't exist at the time (as mentioned in my last reply), but it must've been added recently because the link now works. If you look in the parent folder (http://schemas.geosciml.org/cgiutilities/3.2/), the schema was last modified 15/08/2013.
So you should be able to get things working without the workarounds now.

Cheers
Rini

--
Ben Caradoc-Davies <Ben.Caradoc-Davies@anonymised.com>
Software Engineer
CSIRO Earth Science and Resource Engineering
Australian Resources Research Centre

-----Original Message-----
From: Rini.Angreani@...367... [mailto:Rini.Angreani@…367…]
Sent: 15 August 2013 04:46
To: Sen, Marcus A.; geoserver-users@lists.sourceforge.net
Subject: RE: [Geoserver-users] app-schema error with schemas in class
path

Hi Marcus,

I missed the import but you're right, it's there. My theory is that the
imported location
(http://schemas.geosciml.org/cgiutilities/3.2/cgiUtilities.xsd) didn't
exist at the time (as mentioned in my last reply), but it must've been
added recently because the link now works.

It was added after I tested it working with local versions (they were waiting for me to test a service with the new version before publishing the schemas) so this isn't the reason the fix mentioned in my previous email worked.

So you should be able to get things working without the workarounds now.

Yes, as I don't need the workarounds now I'm not too bothered about tracing exactly what had happened...

Marcus

This message (and any attachments) is for the recipient only. NERC is subject to the Freedom of Information Act 2000 and the contents of this email and any reply you make may be disclosed by NERC unless it is exempt from release under the Act. Any material supplied to NERC may be stored in an electronic records management system.