Ahh... right, you are correct. It seems to assume that the objects inside of the list are eobjects as well. I ran into this same issue with wps. However I know I have done this before in wfs so there must be some way to do it... but this works just as well for now.
Alessio Fabiani wrote: > Ok so, > > I removed the @generaed annotation ane modified the @model one, but I > still need to slitghtly modify methods allowing them to handle > java.util.List instead of EList, otherwise I get the following error: > > ... > at > org.geotools.xml.AbstractComplexEMFBinding.setProperties(AbstractComplexEMFBinding.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: > org.geotools.geometry.jts.ReferencedEnvelope cannot be cast to > org.eclipse.emf.ecore.InternalEObject > at > org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$BasicFeatureMapEntry.createEntry(EStructuralFeatureImpl.java:2851) > at > org.eclipse.emf.ecore.util.FeatureMapUtil.createEntry(FeatureMapUtil.java:147) > 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(FeatureMapUtil.java:656) > at org.geotools.xml.EMFUtils.add(EMFUtils.java:93) > at > org.geotools.xml.AbstractComplexEMFBinding.setProperty(AbstractComplexEMFBinding.java:230) > ... 38 more > > > > On Tue, Jul 15, 2008 at 6:46 AM, Justin Deoliveira > <[EMAIL PROTECTED]> wrote: >> Its definitely valid. To make it perminent however I think you might want to >> do the following: >> >> * remove the @model annotation from the interface method >> * remove all the @generated annoitation from the implementation method >> >> That way the code generator will ignore (and not kill) any of the changed >> methods. >> >> Did you try changing the "type" annotation as per my previous email? >> >> Alessio Fabiani wrote: >>> 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 >>>>>>> >>>>>>> ------------------------------------------------------- >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> ------------------------------------------------------------------------ >>>>>>> >>>>>>> >>>>>>> ------------------------------------------------------------------------- >>>>>>> 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 >>>>>>> >>>>>>> >>>>>>> !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 >>>> >>>> ------------------------------------------------------- >>>> >>> >>> >> >> -- >> Justin Deoliveira >> The Open Planning Project >> [EMAIL PROTECTED] >> > > > -- Justin Deoliveira The Open Planning Project [EMAIL PROTECTED] ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Geoserver-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geoserver-devel
