Hi Alessio, It sounds like you found a away around your problem. But a possible third solution:
3. Change the generated class SpatialSubsetType "manually" so that its Envelope property is actually of the type geotools type envelope. I call this "instrumenting" the model. Then the GML bindings should parse the Envelope, and the reflective EMF bindings should still be able to reflectivley set the property. -Justin Alessio Fabiani wrote: > Well, finally I got the solution .... just for knowledge I will briefly > share the solution with the community, soon I will update the tutorial > that I have written for the EMF model generation, adding the binding > implementation also. > > A bit of introduction first. > > The WCS 1.0.0 schema for the DomainSubset part requires a structure like > the following: > > <wcs:domainSubset> > <wcs:spatialSubset> > <gml:Envelope srsName="EPSG:32633"> > <gml:pos>347649.93086859107 5176214.082539256</gml:pos> > <gml:pos>370725.976428591 5196961.352859256</gml:pos> > </gml:Envelope> > <gml:Grid dimension="2" srsName="EPSG:4326"> > <gml:limits> > <gml:GridEnvelope> > <gml:low>0 0</gml:low> > <gml:high>545 490</gml:high> > </gml:GridEnvelope> > </gml:limits> > </gml:Grid> > </wcs:spatialSubset> > </wcs:domainSubset> > > As you can notice the domainSubset and the spatialSubset nodes belong to > the "wcs" namespace, while the Envelope and Grid to the "gml" one instead. > That means that the EnvelopeBinding and GridBinding have to be > implemented into some "gt-gml" (just a dummy name) module and the > spatialSubsetBinding and domainSubsetBinding have to be implemented into > some "gt-wcs" package instead. > > At this point we have several ways to do that, but particular attention > has to be put on how we implement the WCSConfiguration and > GMLConfiguration for both the WCS and GML binding packages (more details > later). > > Method 1: if you would like the Parser to automatically populate the > objects, than you must leave the EnvelopeBinding and the GridBinding > respectively return the EMF Objects (EObjects) EnvelopeType and GridType. > > Method 2: if you would like to allow the EnvelopeBinding returning for > instance a geotools GeneralEnvelope (or a JTS Envelope or whatelse), > than you MUST say to the WCS spatialSubsetBinding and to the > domainSubsetBinding how to handle such case. You have here several ways > too. One would be to write some specific geotools Converters from > EnvelopeType to whatelse; another one, easier, would be to manually > rewrite te "parse" methods of the spatialSubsetBinding and > domainSubsetBinding in order to handle the GeneralEnvelope parsing. The > latter is for sure the best path to follow ... but you have to pay > particular attention on how you write the WCSConfiguration binding file, > infact you have to explicitly register both the spatialSubsetBinding and > the domainSubsetBinding implementations as represented below. > > bindings.put(WCS.DomainSubsetType, new DomainSubsetTypeBinding()); > bindings.put(WCS.SpatialSubsetType, new SpatialSubsetTypeBinding()); > > Cheers, > Alessio. > > On Thu, Jul 10, 2008 at 4:18 PM, Alessio Fabiani > <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote: > > Hi Gabriel, > > thanks for the response ... I have already inspected this > possibility, but does not seem to solve the problem ... I also > tryied several WCSConfiguration and GMLConfiguration combinations > ... but I got no successful result. > The only thing I noticed is that the AbstractComplexEMFBinding > superclass fails on the setProperty method trying to instantiate a > geotools.util.Converter from the expected EnvelopeType class to > jts.Envelope (or ReferencedEnvelope) one, since no one exists ... > the only thing I cannot really figure out is why that works for > gt-GML3 module and not for mine since they are almost equal !!! > > On Thu, Jul 10, 2008 at 4:06 PM, Gabriel Roldán <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>> wrote: > > I guess if the binding declares it returns > ReferencedEnvelope.class in > getType() it should be respected... > > like in class EnvelopeTypeBinding extends > AbstractComplexTypeBinding{ > > public Class getType() { > return ReferencedEnvelope.class; > } > > } > > though not sure that is the solution actually... > > Gabriel > > On Thursday 10 July 2008 03:43:30 pm Alessio Fabiani wrote: > > Hi all, > > > > I'm trying to create a new binding for the GML EnvelopeType > as a JTS > > Envelope, since I couldn't use geotools gml2/3 EMF models due > to some > > specific Elements defined only for WCS 1.0.0. <http://1.0.0.> > > Nevertheless I followed the implementation of the existing > gt-GML3 module > > EvnelopeTypeBinding, returning a ReferencedEnvelope object as > result of the > > EnvelopeTypeBinding parsing. > > > > Now ... all seems working fine until I try to parse a WCS 1.0.0 > > SpatialSubsetType ... here I get an exception like the following: > > > > org.vfny.geoserver.wcs.WcsException: Parsing failed, the xml > request is > > most probably not compliant to the wcs schema > > at > org.geoserver.wcs.xml.v1_0_0.WcsXmlReader.read(WcsXmlReader.java:50) > > at > > > > org.geoserver.wcs.xml.GetCoverageXmlParserTest.testBasic(GetCoverageXmlPars > >erTest.java:86) 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 junit.framework.TestCase.runTest(TestCase.java:164) > > at junit.framework.TestCase.runBare(TestCase.java:130) > > at junit.framework.TestResult$1.protect(TestResult.java:106) > > at > junit.framework.TestResult.runProtected(TestResult.java:124) > > at junit.framework.TestResult.run(TestResult.java:109) > > at junit.framework.TestCase.run(TestCase.java:120) > > at junit.framework.TestSuite.runTest(TestSuite.java:230) > > at junit.framework.TestSuite.run(TestSuite.java:225) > > at > > > > org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3 > >TestReference.java:130) at > > > > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java: > >38) at > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestR > >unner.java:460) at > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestR > >unner.java:673) at > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner > >.java:386) at > > > > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunne > >r.java:196) Caused by: java.lang.RuntimeException: Parsing > failed for > > spatialSubset: java.lang.RuntimeException: Unable to set > property: Envelope > > for eobject: { http://www.opengis.net/wcs}SpatialSubsetType > <http://www.opengis.net/wcs%7DSpatialSubsetType> > > at > org.geotools.xml.impl.ParseExecutor.visit(ParseExecutor.java:152) > > at > > > > org.geotools.xml.impl.BindingWalker$BindingExecutionChain.execute(BindingWa > >lker.java:208) at > > > org.geotools.xml.impl.BindingWalker.walk(BindingWalker.java:174) at > > > > org.geotools.xml.impl.ElementHandlerImpl.endElement(ElementHandlerImpl.java > >:222) at > > > org.geotools.xml.impl.ParserHandler.endElement(ParserHandler.java:582) > > at > org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown > > Source) > > at > org.apache.xerces.impl.xs.XMLSchemaValidator.endElement(Unknown > > Source) > > at > > > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown > > Source) > > at > > > > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispat > >cher.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:180) > > at org.geotools.xml.Parser.parse(Parser.java:158) > > at > org.geoserver.wcs.xml.v1_0_0.WcsXmlReader.read(WcsXmlReader.java:48) > > ... 19 more > > Caused by: java.lang.RuntimeException: Unable to set > property: Envelope for > > eobject: {http://www.opengis.net/wcs}SpatialSubsetType > <http://www.opengis.net/wcs%7DSpatialSubsetType> > > at > > > > org.geotools.xml.AbstractComplexEMFBinding.setProperty(AbstractComplexEMFBi > >nding.java:271) at > > > > org.geotools.xml.AbstractComplexEMFBinding.setProperties(AbstractComplexEMF > >Binding.java:202) at > > > > org.geotools.xml.AbstractComplexEMFBinding.parse(AbstractComplexEMFBinding. > >java:143) at > > > org.geotools.xml.impl.ParseExecutor.visit(ParseExecutor.java:143) > ... 35 > > more > > Caused by: java.lang.ClassCastException: The feature > 'envelope's type > > 'EnvelopeType' does not permit a value of type > > 'org.geotools.geometry.jts.ReferencedEnvelope' > > at > > > > org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$BasicFeatureMapEntry.vali > >date(EStructuralFeatureImpl.java:2843) at > > > > org.eclipse.emf.ecore.util.FeatureMapUtil.createEntry(FeatureMapUtil.java:1 > >46) at > > > > org.eclipse.emf.ecore.util.BasicFeatureMap.createEntry(BasicFeatureMap.java > >:94) at > > > > org.eclipse.emf.ecore.util.BasicFeatureMap.addAll(BasicFeatureMap.java:1253 > >) at > > > > org.eclipse.emf.ecore.util.FeatureMapUtil$FeatureEList.addAll(FeatureMapUti > >l.java:656) at org.geotools.xml.EMFUtils.add(EMFUtils.java:93) > > at > > > > org.geotools.xml.AbstractComplexEMFBinding.setProperty(AbstractComplexEMFBi > >nding.java:230) ... 38 more > > > > And if I return an EvnelopeType all works well ... > > > > any ideas? am I missing something? Do I have to build a > geotools converter > > or something like that? > > > > Any help kindly appreciated. > > > > Cheers, > > Alessio. > > > > > ------------------------------------------------------------------------- > Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! > Studies have shown that voting for your favorite open source > project, > along with a healthy diet, reduces your potential for chronic > lameness > and boredom. Vote Now at http://www.sourceforge.net/community/cca08 > _______________________________________________ > Geoserver-devel mailing list > [email protected] > <mailto:[email protected]> > https://lists.sourceforge.net/lists/listinfo/geoserver-devel > > > > > -- > ------------------------------------------------------- > Eng. Alessio Fabiani > Vice-President /CTO GeoSolutions S.A.S. > Via Carignoni 51 > 55041 Camaiore (LU) > Italy > > phone: +39 0584983027 > fax: +39 0584983027 > mob: +39 349 8227000 > > > http://www.geo-solutions.it > > ------------------------------------------------------- > > > > > -- > ------------------------------------------------------- > Eng. Alessio Fabiani > Vice-President /CTO GeoSolutions S.A.S. > Via Carignoni 51 > 55041 Camaiore (LU) > Italy > > phone: +39 0584983027 > fax: +39 0584983027 > mob: +39 349 8227000 > > > http://www.geo-solutions.it > > ------------------------------------------------------- > !DSPAM:4007,487732ef278366491211187! > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! > Studies have shown that voting for your favorite open source project, > along with a healthy diet, reduces your potential for chronic lameness > and boredom. Vote Now at http://www.sourceforge.net/community/cca08 > > !DSPAM:4007,487732ef278366491211187! > > > ------------------------------------------------------------------------ > > _______________________________________________ > Geoserver-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/geoserver-devel > > > !DSPAM:4007,487732ef278366491211187! -- Justin Deoliveira The Open Planning Project [EMAIL PROTECTED] ------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 _______________________________________________ Geoserver-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geoserver-devel
