Justin, it's me again ... I found a workaround forcing the return type of wcs:spatialSubset from EList to List and manually modifying both the intrafece and the implementation, but I don't know if is the correct way to do that, what do you think about?
On Mon, Jul 14, 2008 at 10:04 AM, Alessio Fabiani <[EMAIL PROTECTED]> wrote: > Hi Justin, > > sorry to bother you again ... I tryied your solution, but I cannot > figure out how can be applied to this specific case. Let me better > describe the problem, the WCS 1.0.0 wcs:spatialSubset does not exactly > need just one gml:Envelope, but an unbounded set of gml:Envelopes ... > so the property of wcs:spatialSubset is an EList ... how this case can > be handled, and morover where is in GeoTools the source code of GML2 > and GML3 EMF model? I can see just the bindings! > > Thanks for any help, > Alessio. > > On Fri, Jul 11, 2008 at 7:01 PM, Alessio Fabiani > <[EMAIL PROTECTED]> wrote: >> Cool, that sounds better than the others, I will try that solution now. >> >> Thanks Justin. >> >> On Fri, Jul 11, 2008 at 6:58 PM, Justin Deoliveira <[EMAIL PROTECTED]> >> wrote: >>> >>> 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] >> >> >> >> -- >> ------------------------------------------------------- >> 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 > > ------------------------------------------------------- > -- ------------------------------------------------------- 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 ------------------------------------------------------- ------------------------------------------------------------------------- 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
