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
>>>>>>
>>>>>> !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
>>>
>>> -------------------------------------------------------
>>>
>>
>>
>>
>
>
> --
> 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
-------------------------------------------------------
-------------------------------------------------------------------------
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