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

Reply via email to