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

-------------------------------------------------------

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