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