Hi Alessio,

So in this case the suggestion would then be to modify the list (via 
annotation) as to teh type of object inside of it. This could be done 
with something like this:

@model type="org.geotools.geometry.GeneralEnvelope"
EList getSpatialSubset()

So the deal is that there is actually no EMF model generated for GML. 
The reason being that geotools already has objects which represent many 
of the entities in gml like Feature, FeatureCollection, Envelope, etc...

So the strategy used for emf models which referenced GML (like WFS) was 
to just re-instrument the model in cases where GML elements and types 
are referenced.

Does that make sense?

We could go ahead and generate a EMF model for GML... It might save time 
in things like this. However for WFS it does not make sense since the 
reference was feature... and anything coming out of EMF would have to be 
adapted. For things like envelopes it might make more sense since its a 
much simpler data structure.

Alessio Fabiani 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
>>
>> -------------------------------------------------------
> 
> 
> 


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

Reply via email to