You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by Chris Mildebrandt <tu...@plasticfrog.info> on 2007/05/06 22:08:33 UTC
Re: xsd:any problem
Hi Frank (or anyone else that may be able to help),
I have a related question to Ashish's. I have the following two schemas:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Person"
xmlns:person="http://www.example.org/Person"
elementFormDefault="qualified">
<xsd:element name="Person" type="person:PersonType"></xsd:element>
<xsd:complexType name="PersonType">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"></xsd:element>
<xsd:element name="Age" type="xsd:string"></xsd:element>
<xsd:any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Address"
xmlns:address="http://www.example.org/Address"
elementFormDefault="qualified">
<xsd:element name="Address" type="address:AddressType"></xsd:element>
<xsd:complexType name="AddressType">
<xsd:sequence>
<xsd:element name="Street" type="xsd:string"></xsd:element>
<xsd:element name="City" type="xsd:string"></xsd:element>
<xsd:element name="Zip" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
I use the following code to generate my XML:
public static void main(String[] args) throws Exception
{
HelperContext context = SDOUtil.createHelperContext();
context.getXSDHelper().define(new
FileInputStream("./Person.xsd"), (new
File("./Base.xsd")).toURI().toString());
context.getXSDHelper().define(new
FileInputStream("./Address.xsd"), (new
File("./Additional.xsd")).toURI().toString());
DataObject person =
context.getDataFactory().create("http://www.example.org/Person",
"PersonType");
DataObject address =
context.getDataFactory().create("http://www.example.org/Address",
"AddressType");
person.set("Name", "Bart");
person.set("Age", "10");
address.set("Street", "123 Fake St.");
address.set("City", "Springfield");
address.set("Zip", "46392");
person.setDataObject("address:Address", address);
context.getXMLHelper().save(person,
"http://www.example.org/Person", "Person", System.out);
}
This gives the following XML:
<?xml version="1.0" encoding="ASCII"?>
<person:Person xmlns:PersonType="http://www.example.org/Person/PersonType"
xmlns:address="http://www.example.org/Address"
xmlns:person="http://www.example.org/Person">
<person:Name>Bart</person:Name>
<person:Age>10</person:Age>
<PersonType:Address>
<address:Street>123 Fake St.</address:Street>
<address:City>Springfield</address:City>
<address:Zip>46392</address:Zip>
</PersonType:Address>
</person:Person>
My concern is the "PersonType:Address" element. I'd like that to be
"address:Address" instead. Am I doing something wrong in my schema
definitions and/or code?
Thanks for any help you can provide,
-Chris
On 4/16/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> Ashish,
>
> I implemented the on-the-fly property creation support over the weekend
> (see https://issues.apache.org/jira/browse/TUSCANY-1211).
>
> You should now be able to do what you asked:
>
> body.setDataObject("anyType",DataObject);
>
> Let me know how it works.
>
> Thanks,
> Frank
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org
Re: xsd:any problem
Posted by Chris Mildebrandt <ch...@plasticfrog.info>.
Just to complete this thread, this is being tracked as issue 1254.
-Chris
On 5/8/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> Hi Chris,
>
> Can you confirm that the cross-package inheritance is the problem by
> creating a similar subtype in the same package and see if it works? It
> should be pretty simple to fix this generator problem, but it would be
> helpful if you could provide a simple test case for us.
>
> Adding open content to an object is an intrinsically dynamic task and
> should be done using the dynamic API, even if the type is static. In other
> words, ask you suggested, this is the way to do it and it should work if
> there are no bugs:
>
> ((DataObject) identity).getList(addressProperty).add(address);
>
> Thanks,
> Frank.
>
> eyeofthefrog@gmail.com wrote on 05/07/2007 04:44:01 PM:
>
> > Hi Frank,
> >
> > I think I've tracked this problem down to an issue with static class
> > generation. The common schema contains the any element in the identity
> > element. The packageIdentity element in the packageDescriptor schema
> > extends the identity element. Some things aren't quite right in the
> > class generation with respect to that. I wrote a note to the dev
> > mailing list explaining some of my issues. Seems this is a new issue
> > related to my other issue. I'll update my note with my new findings.
> >
> > On a side note, adding content to the any element works when accessing
> > the dynamic methods. Is there a way to take my instance of my
> > statically generated class and use the dynamic methods for this set,
> > and then go back to editing using the statically generated objects?
> > Casting to DataObject doesn't seem to work:
> >
> > ((DataObject) identity).getList(addressProperty).add(address);
> >
> > Thanks,
> >
> > -Chris
> >
> > On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > Assuming that the line numbers in your stack trace correspond to the
> EMF
> > > version (2.2.3) that I'm looking at, it looks to me like null is being
> > > passed into the getList() method. If so, I assume it's because this
> line
> > > returned null:
> > >
> > > Property addressProperty =
> > >
> context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> > > "Address", true);
> > >
> > > That is, it couldn't locate your global property.
> > >
> > > Frank
> > >
> > >
> > > eyeofthefrog@gmail.com wrote on 05/07/2007 12:13:35 PM:
> > >
> > > > Hi Frank,
> > > >
> > > > Thank you so much for your help so far, your example worked. I'm
> > > > learning quite a bit. I thought that would help me with my real
> work,
> > > > but I'm seeing a different error.
> > > >
> > > > My schema can be found here:
> > > >
> > > >
> http://www.oasis-open.org/committees/download.php/23876/CL1_Schema.zip
> > > >
> > > > and here:
> > > >
> > > > http://www.w3.org/2000/09/xmldsig
> > > >
> > > > I generate my classes using IBM's JDK 1.4.2 with the following
> commands:
> > > >
> > > > set javaExe=C:\ibmsdk1.4.2_sr4-1\bin\java
> > > > set output=.
> > > > set schemaLocation=..\schema\sdd-20070504_49
> > > >
> > > > set sdo_cp=lib\org.eclipse.emf.codegen_2.2.2.v200702131851.jar;
> > > > lib\org.eclipse.emf.codegen.ecore_2.2.2.v200702131851.jar;lib\org.
> > > > eclipse.emf.common_2.2.1.v200702131851.jar;lib\org.eclipse.emf.
> > > > ecore_2.2.2.v200702131851.jar;lib\org.eclipse.emf.ecore.change_2.2.
> > > > 1.v200702131851.jar;lib\org.eclipse.emf.ecore.xmi_2.2.2.
> > > > v200702131851.jar;lib\sdo-api-r2.1-1.0-incubating-SNAPSHOT.jar;
> > > > lib\tuscany-sdo-impl-1.0-incubating-SNAPSHOT.jar;lib\tuscany-sdo-
> > > >
> > > tools-1.0-incubating-SNAPSHOT.jar;lib\org.eclipse.xsd_2.2.2.
> > v200702131851.jar
> > > > set options=-cp %sdo_cp%
> > > > org.apache.tuscany.sdo.generate.XSD2JavaGenerator -arrayAccessors
> > > > -targetDirectory %output%
> > > >
> > > > %javaExe% %options% "%schemaLocation%\wd-sdd-common-1.0.xsd"
> > > > %javaExe% %options%
> > > "%schemaLocation%\wd-sdd-deploymentDescriptor-1.0.xsd"
> > > > %javaExe% %options%
> "%schemaLocation%\wd-sdd-packageDescriptor-1.0.xsd"
> > > > %javaExe% %options% "%schemaLocation%\xmldsig-core-schema.xsd"
> > > >
> > > > I've built the Tuscany SDO libraries from the 4/27 code in
> subversion
> > > > with IBM's 1.4.2 JDK.
> > > >
> > > > Ok, with that out of the way, here is the problem I'm seeing:
> > > >
> > > > I have the following code:
> > > >
> > > > HelperContext context = SDOUtil.createHelperContext();
> > > >
> > > > context.getXSDHelper().define(new
> > > > FileInputStream("./wd-sdd-common-1.0.xsd"), (new
> > > > File("./wd-sdd-common-1.0.xsd")).toURI().toString());
> > > > context.getXSDHelper().define(new
> > > > FileInputStream("./wd-sdd-deploymentDescriptor-1.0.xsd"), (new
> > > > File("./wd-sdd-deploymentDescriptor-1.0.xsd")).toURI().toString());
> > > > context.getXSDHelper().define(new
> > > > FileInputStream("./xmldsig-core-schema.xsd"), (new
> > > > File("./xmldsig-core-schema.xsd")).toURI().toString());
> > > >
> > > > PackageDescriptorType pd =
> > > > DescriptorFactory.INSTANCE.createPackageDescriptorType();
> > > >
> > > > PackageIdentityType identity =
> > > > DescriptorFactory.INSTANCE.createPackageIdentityType();
> > > >
> > > > context.getXSDHelper().define(new
> > > > FileInputStream("./Address.xsd"), (new
> > > > File("./Address.xsd")).toURI().toString());
> > > > DataObject address =
> > > > context.getDataFactory().create("http://www.example.org/Address",
> > > > "AddressType");
> > > >
> > > > address.set("Street", "123 Fake St.");
> > > > address.set("City", "Springfield");
> > > > address.set("Zip", "46392");
> > > >
> > > > Property addressProperty =
> > > >
> > >
> context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> > > > "Address", true);
> > > > ((DataObject)
> identity).getList(addressProperty).add(address);
> > > >
> > > > context.getXMLHelper().save((DataObject) pd,
> > > > "urn:oasis:names:tc:SDD:1:0:packageDescriptor", "PackageDescriptor",
> > > > System.out);
> > > >
> > > > Similar to the other example, though now I'm initializing it using
> the
> > > > statically generated classes. The call to getList() is throwing the
> > > > following exception:
> > > >
> > > > Exception in thread "main" java.lang.NullPointerException
> > > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > > eOpenGet(BasicEObjectImpl.java:645)
> > > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > > eGet(BasicEObjectImpl.java(Compiled
> > > > Code))
> > > > at
> > >
> org.apache.tuscany.sdo.impl.DataObjectImpl.get(DataObjectImpl.java:132)
> > > > at org.apache.tuscany.sdo.util.DataObjectUtil.
> > > > getList(DataObjectUtil.java:172)
> > > > at org.apache.tuscany.sdo.impl.DataObjectImpl.
> > > > getList(DataObjectImpl.java:995)
> > > > at com.ibm.isd.mapper.impl.Test.anyTest_Static_PD(Test.java:116)
> > > > at com.ibm.isd.mapper.impl.Test.main(Test.java:125)
> > > >
> > > > Thanks in advance for any pointers you can give,
> > > > -Chris
> > > >
> > > > On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > > Sorry, I didn't notice that your xsd:any had maxOccurs > 1:
> > > > >
> > > > > > > <xsd:any namespace="##other" processContents="lax"
> > > > > minOccurs="0" maxOccurs="unbounded"/>
> > > > >
> > > > > If it was maxOccurs="1" then you could do what I suggested.
> > > > >
> > > > > Because it is many valued, however, you need to do this:
> > > > >
> > > > > person.getList(addressProperty).add(address);
> > > > >
> > > > > Notice that the isMany value of a global property is not
> statically
> > > known,
> > > > > it depends on where it's being used.
> > > > >
> > > > > Frank.
> > > > >
> > > > >
> > > > > eyeofthefrog@gmail.com wrote on 05/07/2007 09:54:04 AM:
> > > > >
> > > > > > Hi Frank,
> > > > > >
> > > > > > I replaced my code with what you suggested:
> > > > > >
> > > > > > Property addressProperty =
> > > > > >
> > > > >
> > >
> context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> > > > > > "Address",
> > > > > > true);
> > > > > > person.setDataObject(addressProperty, address);
> > > > > >
> > > > > > The call to setDataObject() generates the following exception:
> > > > > >
> > > > > > Exception in thread "main" java.lang.ClassCastException:
> > > > > > org.apache.tuscany.sdo.impl.DynamicDataObjectImpl
> > > > > > at org.eclipse.emf.ecore.util.BasicFeatureMap.
> > > > > > set(BasicFeatureMap.java:1026)
> > > > > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > > > > eOpenSet(BasicEObjectImpl.java:723)
> > > > > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > > > > eSet(BasicEObjectImpl.java:658)
> > > > > > at
> > > > >
> > >
> org.apache.tuscany.sdo.impl.DataObjectImpl.set(DataObjectImpl.java:142)
> > > > > > at org.apache.tuscany.sdo.util.DataObjectUtil.
> > > > > > setDataObject(DataObjectUtil.java:122)
> > > > > > at org.apache.tuscany.sdo.impl.DataObjectImpl.
> > > > > > setDataObject(DataObjectImpl.java:1105)
> > > > > > at com.ibm.isd.mapper.impl.Test.main(Test.java:33)
> > > > > >
> > > > > >
> > > > > > Any Ideas? Thanks for your help this far,
> > > > > >
> > > > > > -Chris
> > > > > >
> > > > > > On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > > > > Hi Chris,
> > > > > > >
> > > > > > > The problem is this line of code:
> > > > > > >
> > > > > > > > person.setDataObject("address:Address", address);
> > > > > > >
> > > > > > > SDO doesn't support qualified names in string (path) get/set
> > > methods.
> > > > > > > That's why it ignores the "address:" prefix, and simply
> > > demand-creates
> > > > > > > another "Address" property ("PersonType:address").
> > > > > > >
> > > > > > > To accomplish what you want, you can explicitly locate the
> > > > > address:Address
> > > > > > > property like this:
> > > > > > >
> > > > > > > Property addressProperty =
> > > > > > > xsdHelper.getGlobalProperty("http://www.example.org/Address",
> > > > > "Address",
> > > > > > > true);
> > > > > > >
> > > > > > > Then you can set it like this:
> > > > > > >
> > > > > > > person.setDataObject(addressProperty, address);
> > > > > > >
> > > > > > > Frank.
> > > > > > >
> > > > > > >
> > > > > > > eyeofthefrog@gmail.com wrote on 05/06/2007 04:08:33 PM:
> > > > > > >
> > > > > > > > Hi Frank (or anyone else that may be able to help),
> > > > > > > >
> > > > > > > > I have a related question to Ashish's. I have the following
> two
> > > > > schemas:
> > > > > > > >
> > > > > > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > > > > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > > > > > targetNamespace="http://www.example.org/Person"
> > > > > > > > xmlns:person="http://www.example.org/Person"
> > > > > > > > elementFormDefault="qualified">
> > > > > > > > <xsd:element name="Person"
> > > > > type="person:PersonType"></xsd:element>
> > > > > > > >
> > > > > > > > <xsd:complexType name="PersonType">
> > > > > > > > <xsd:sequence>
> > > > > > > > <xsd:element name="Name"
> > > type="xsd:string"></xsd:element>
> > > > > > > > <xsd:element name="Age"
> > > type="xsd:string"></xsd:element>
> > > > > > > > <xsd:any namespace="##other" processContents="lax"
> > > > > > > minOccurs="0"
> > > > > > > > maxOccurs="unbounded"/>
> > > > > > > > </xsd:sequence>
> > > > > > > > </xsd:complexType>
> > > > > > > > </xsd:schema>
> > > > > > > >
> > > > > > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > > > > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > > > > > targetNamespace="http://www.example.org/Address"
> > > > > > > > xmlns:address="http://www.example.org/Address"
> > > > > > > > elementFormDefault="qualified">
> > > > > > > >
> > > > > > > > <xsd:element name="Address"
> > > > > > > type="address:AddressType"></xsd:element>
> > > > > > > >
> > > > > > > > <xsd:complexType name="AddressType">
> > > > > > > > <xsd:sequence>
> > > > > > > > <xsd:element name="Street"
> > > > > type="xsd:string"></xsd:element>
> > > > > > > > <xsd:element name="City"
> > > type="xsd:string"></xsd:element>
> > > > > > > > <xsd:element name="Zip"
> > > type="xsd:string"></xsd:element>
> > > > > > > > </xsd:sequence>
> > > > > > > > </xsd:complexType>
> > > > > > > > </xsd:schema>
> > > > > > > >
> > > > > > > >
> > > > > > > > I use the following code to generate my XML:
> > > > > > > >
> > > > > > > > public static void main(String[] args) throws Exception
> > > > > > > > {
> > > > > > > > HelperContext context =
> SDOUtil.createHelperContext();
> > > > > > > >
> > > > > > > > context.getXSDHelper().define(new
> > > > > > > > FileInputStream("./Person.xsd"), (new
> > > > > > > > File("./Base.xsd")).toURI().toString());
> > > > > > > > context.getXSDHelper().define(new
> > > > > > > > FileInputStream("./Address.xsd"), (new
> > > > > > > > File("./Additional.xsd")).toURI().toString());
> > > > > > > >
> > > > > > > > DataObject person =
> > > > > > > >
> context.getDataFactory().create("http://www.example.org/Person",
> > > > > > > > "PersonType");
> > > > > > > > DataObject address =
> > > > > > > >
> > > context.getDataFactory().create("http://www.example.org/Address",
> > > > > > > > "AddressType");
> > > > > > > >
> > > > > > > > person.set("Name", "Bart");
> > > > > > > > person.set("Age", "10");
> > > > > > > >
> > > > > > > > address.set("Street", "123 Fake St.");
> > > > > > > > address.set("City", "Springfield");
> > > > > > > > address.set("Zip", "46392");
> > > > > > > >
> > > > > > > > person.setDataObject("address:Address", address);
> > > > > > > >
> > > > > > > > context.getXMLHelper().save(person,
> > > > > > > > "http://www.example.org/Person", "Person", System.out);
> > > > > > > > }
> > > > > > > >
> > > > > > > > This gives the following XML:
> > > > > > > >
> > > > > > > > <?xml version="1.0" encoding="ASCII"?>
> > > > > > > > <person:Person
> > > > > > > xmlns:PersonType="http://www.example.org/Person/PersonType"
> > > > > > > > xmlns:address="http://www.example.org/Address"
> > > > > > > > xmlns:person="http://www.example.org/Person">
> > > > > > > > <person:Name>Bart</person:Name>
> > > > > > > > <person:Age>10</person:Age>
> > > > > > > > <PersonType:Address>
> > > > > > > > <address:Street>123 Fake St.</address:Street>
> > > > > > > > <address:City>Springfield</address:City>
> > > > > > > > <address:Zip>46392</address:Zip>
> > > > > > > > </PersonType:Address>
> > > > > > > > </person:Person>
> > > > > > > >
> > > > > > > > My concern is the "PersonType:Address" element. I'd like
> that to
> > > be
> > > > > > > > "address:Address" instead. Am I doing something wrong in my
> > > schema
> > > > > > > > definitions and/or code?
> > > > > > > >
> > > > > > > > Thanks for any help you can provide,
> > > > > > > > -Chris
> > > > > > > >
> > > > > > > > On 4/16/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > > > > > > Ashish,
> > > > > > > > >
> > > > > > > > > I implemented the on-the-fly property creation support
> over
> > > the
> > > > > > > weekend
> > > > > > > > > (see https://issues.apache.org/jira/browse/TUSCANY-1211).
> > > > > > > > >
> > > > > > > > > You should now be able to do what you asked:
> > > > > > > > >
> > > > > > > > > body.setDataObject("anyType",DataObject);
> > > > > > > > >
> > > > > > > > > Let me know how it works.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Frank
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > >
> ---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail:
> tuscany-user-unsubscribe@ws.apache.org
> > > > > > > > For additional commands, e-mail:
> tuscany-user-help@ws.apache.org
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > ---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > > > > For additional commands, e-mail:
> tuscany-user-help@ws.apache.org
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > > > > >
> > > > >
> > > > >
> > > > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > > > >
> > > > >
> > > >
> > > >
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org
Re: xsd:any problem
Posted by Frank Budinsky <fr...@ca.ibm.com>.
Hi Chris,
Can you confirm that the cross-package inheritance is the problem by
creating a similar subtype in the same package and see if it works? It
should be pretty simple to fix this generator problem, but it would be
helpful if you could provide a simple test case for us.
Adding open content to an object is an intrinsically dynamic task and
should be done using the dynamic API, even if the type is static. In other
words, ask you suggested, this is the way to do it and it should work if
there are no bugs:
((DataObject) identity).getList(addressProperty).add(address);
Thanks,
Frank.
eyeofthefrog@gmail.com wrote on 05/07/2007 04:44:01 PM:
> Hi Frank,
>
> I think I've tracked this problem down to an issue with static class
> generation. The common schema contains the any element in the identity
> element. The packageIdentity element in the packageDescriptor schema
> extends the identity element. Some things aren't quite right in the
> class generation with respect to that. I wrote a note to the dev
> mailing list explaining some of my issues. Seems this is a new issue
> related to my other issue. I'll update my note with my new findings.
>
> On a side note, adding content to the any element works when accessing
> the dynamic methods. Is there a way to take my instance of my
> statically generated class and use the dynamic methods for this set,
> and then go back to editing using the statically generated objects?
> Casting to DataObject doesn't seem to work:
>
> ((DataObject) identity).getList(addressProperty).add(address);
>
> Thanks,
>
> -Chris
>
> On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > Assuming that the line numbers in your stack trace correspond to the
EMF
> > version (2.2.3) that I'm looking at, it looks to me like null is being
> > passed into the getList() method. If so, I assume it's because this
line
> > returned null:
> >
> > Property addressProperty =
> >
context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> > "Address", true);
> >
> > That is, it couldn't locate your global property.
> >
> > Frank
> >
> >
> > eyeofthefrog@gmail.com wrote on 05/07/2007 12:13:35 PM:
> >
> > > Hi Frank,
> > >
> > > Thank you so much for your help so far, your example worked. I'm
> > > learning quite a bit. I thought that would help me with my real
work,
> > > but I'm seeing a different error.
> > >
> > > My schema can be found here:
> > >
> > >
http://www.oasis-open.org/committees/download.php/23876/CL1_Schema.zip
> > >
> > > and here:
> > >
> > > http://www.w3.org/2000/09/xmldsig
> > >
> > > I generate my classes using IBM's JDK 1.4.2 with the following
commands:
> > >
> > > set javaExe=C:\ibmsdk1.4.2_sr4-1\bin\java
> > > set output=.
> > > set schemaLocation=..\schema\sdd-20070504_49
> > >
> > > set sdo_cp=lib\org.eclipse.emf.codegen_2.2.2.v200702131851.jar;
> > > lib\org.eclipse.emf.codegen.ecore_2.2.2.v200702131851.jar;lib\org.
> > > eclipse.emf.common_2.2.1.v200702131851.jar;lib\org.eclipse.emf.
> > > ecore_2.2.2.v200702131851.jar;lib\org.eclipse.emf.ecore.change_2.2.
> > > 1.v200702131851.jar;lib\org.eclipse.emf.ecore.xmi_2.2.2.
> > > v200702131851.jar;lib\sdo-api-r2.1-1.0-incubating-SNAPSHOT.jar;
> > > lib\tuscany-sdo-impl-1.0-incubating-SNAPSHOT.jar;lib\tuscany-sdo-
> > >
> > tools-1.0-incubating-SNAPSHOT.jar;lib\org.eclipse.xsd_2.2.2.
> v200702131851.jar
> > > set options=-cp %sdo_cp%
> > > org.apache.tuscany.sdo.generate.XSD2JavaGenerator -arrayAccessors
> > > -targetDirectory %output%
> > >
> > > %javaExe% %options% "%schemaLocation%\wd-sdd-common-1.0.xsd"
> > > %javaExe% %options%
> > "%schemaLocation%\wd-sdd-deploymentDescriptor-1.0.xsd"
> > > %javaExe% %options%
"%schemaLocation%\wd-sdd-packageDescriptor-1.0.xsd"
> > > %javaExe% %options% "%schemaLocation%\xmldsig-core-schema.xsd"
> > >
> > > I've built the Tuscany SDO libraries from the 4/27 code in
subversion
> > > with IBM's 1.4.2 JDK.
> > >
> > > Ok, with that out of the way, here is the problem I'm seeing:
> > >
> > > I have the following code:
> > >
> > > HelperContext context = SDOUtil.createHelperContext();
> > >
> > > context.getXSDHelper().define(new
> > > FileInputStream("./wd-sdd-common-1.0.xsd"), (new
> > > File("./wd-sdd-common-1.0.xsd")).toURI().toString());
> > > context.getXSDHelper().define(new
> > > FileInputStream("./wd-sdd-deploymentDescriptor-1.0.xsd"), (new
> > > File("./wd-sdd-deploymentDescriptor-1.0.xsd")).toURI().toString());
> > > context.getXSDHelper().define(new
> > > FileInputStream("./xmldsig-core-schema.xsd"), (new
> > > File("./xmldsig-core-schema.xsd")).toURI().toString());
> > >
> > > PackageDescriptorType pd =
> > > DescriptorFactory.INSTANCE.createPackageDescriptorType();
> > >
> > > PackageIdentityType identity =
> > > DescriptorFactory.INSTANCE.createPackageIdentityType();
> > >
> > > context.getXSDHelper().define(new
> > > FileInputStream("./Address.xsd"), (new
> > > File("./Address.xsd")).toURI().toString());
> > > DataObject address =
> > > context.getDataFactory().create("http://www.example.org/Address",
> > > "AddressType");
> > >
> > > address.set("Street", "123 Fake St.");
> > > address.set("City", "Springfield");
> > > address.set("Zip", "46392");
> > >
> > > Property addressProperty =
> > >
> >
context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> > > "Address", true);
> > > ((DataObject)
identity).getList(addressProperty).add(address);
> > >
> > > context.getXMLHelper().save((DataObject) pd,
> > > "urn:oasis:names:tc:SDD:1:0:packageDescriptor", "PackageDescriptor",
> > > System.out);
> > >
> > > Similar to the other example, though now I'm initializing it using
the
> > > statically generated classes. The call to getList() is throwing the
> > > following exception:
> > >
> > > Exception in thread "main" java.lang.NullPointerException
> > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > eOpenGet(BasicEObjectImpl.java:645)
> > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > eGet(BasicEObjectImpl.java(Compiled
> > > Code))
> > > at
> >
org.apache.tuscany.sdo.impl.DataObjectImpl.get(DataObjectImpl.java:132)
> > > at org.apache.tuscany.sdo.util.DataObjectUtil.
> > > getList(DataObjectUtil.java:172)
> > > at org.apache.tuscany.sdo.impl.DataObjectImpl.
> > > getList(DataObjectImpl.java:995)
> > > at com.ibm.isd.mapper.impl.Test.anyTest_Static_PD(Test.java:116)
> > > at com.ibm.isd.mapper.impl.Test.main(Test.java:125)
> > >
> > > Thanks in advance for any pointers you can give,
> > > -Chris
> > >
> > > On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > Sorry, I didn't notice that your xsd:any had maxOccurs > 1:
> > > >
> > > > > > <xsd:any namespace="##other" processContents="lax"
> > > > minOccurs="0" maxOccurs="unbounded"/>
> > > >
> > > > If it was maxOccurs="1" then you could do what I suggested.
> > > >
> > > > Because it is many valued, however, you need to do this:
> > > >
> > > > person.getList(addressProperty).add(address);
> > > >
> > > > Notice that the isMany value of a global property is not
statically
> > known,
> > > > it depends on where it's being used.
> > > >
> > > > Frank.
> > > >
> > > >
> > > > eyeofthefrog@gmail.com wrote on 05/07/2007 09:54:04 AM:
> > > >
> > > > > Hi Frank,
> > > > >
> > > > > I replaced my code with what you suggested:
> > > > >
> > > > > Property addressProperty =
> > > > >
> > > >
> >
context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> > > > > "Address",
> > > > > true);
> > > > > person.setDataObject(addressProperty, address);
> > > > >
> > > > > The call to setDataObject() generates the following exception:
> > > > >
> > > > > Exception in thread "main" java.lang.ClassCastException:
> > > > > org.apache.tuscany.sdo.impl.DynamicDataObjectImpl
> > > > > at org.eclipse.emf.ecore.util.BasicFeatureMap.
> > > > > set(BasicFeatureMap.java:1026)
> > > > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > > > eOpenSet(BasicEObjectImpl.java:723)
> > > > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > > > eSet(BasicEObjectImpl.java:658)
> > > > > at
> > > >
> >
org.apache.tuscany.sdo.impl.DataObjectImpl.set(DataObjectImpl.java:142)
> > > > > at org.apache.tuscany.sdo.util.DataObjectUtil.
> > > > > setDataObject(DataObjectUtil.java:122)
> > > > > at org.apache.tuscany.sdo.impl.DataObjectImpl.
> > > > > setDataObject(DataObjectImpl.java:1105)
> > > > > at com.ibm.isd.mapper.impl.Test.main(Test.java:33)
> > > > >
> > > > >
> > > > > Any Ideas? Thanks for your help this far,
> > > > >
> > > > > -Chris
> > > > >
> > > > > On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > > > Hi Chris,
> > > > > >
> > > > > > The problem is this line of code:
> > > > > >
> > > > > > > person.setDataObject("address:Address", address);
> > > > > >
> > > > > > SDO doesn't support qualified names in string (path) get/set
> > methods.
> > > > > > That's why it ignores the "address:" prefix, and simply
> > demand-creates
> > > > > > another "Address" property ("PersonType:address").
> > > > > >
> > > > > > To accomplish what you want, you can explicitly locate the
> > > > address:Address
> > > > > > property like this:
> > > > > >
> > > > > > Property addressProperty =
> > > > > > xsdHelper.getGlobalProperty("http://www.example.org/Address",
> > > > "Address",
> > > > > > true);
> > > > > >
> > > > > > Then you can set it like this:
> > > > > >
> > > > > > person.setDataObject(addressProperty, address);
> > > > > >
> > > > > > Frank.
> > > > > >
> > > > > >
> > > > > > eyeofthefrog@gmail.com wrote on 05/06/2007 04:08:33 PM:
> > > > > >
> > > > > > > Hi Frank (or anyone else that may be able to help),
> > > > > > >
> > > > > > > I have a related question to Ashish's. I have the following
two
> > > > schemas:
> > > > > > >
> > > > > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > > > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > > > > targetNamespace="http://www.example.org/Person"
> > > > > > > xmlns:person="http://www.example.org/Person"
> > > > > > > elementFormDefault="qualified">
> > > > > > > <xsd:element name="Person"
> > > > type="person:PersonType"></xsd:element>
> > > > > > >
> > > > > > > <xsd:complexType name="PersonType">
> > > > > > > <xsd:sequence>
> > > > > > > <xsd:element name="Name"
> > type="xsd:string"></xsd:element>
> > > > > > > <xsd:element name="Age"
> > type="xsd:string"></xsd:element>
> > > > > > > <xsd:any namespace="##other" processContents="lax"
> > > > > > minOccurs="0"
> > > > > > > maxOccurs="unbounded"/>
> > > > > > > </xsd:sequence>
> > > > > > > </xsd:complexType>
> > > > > > > </xsd:schema>
> > > > > > >
> > > > > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > > > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > > > > targetNamespace="http://www.example.org/Address"
> > > > > > > xmlns:address="http://www.example.org/Address"
> > > > > > > elementFormDefault="qualified">
> > > > > > >
> > > > > > > <xsd:element name="Address"
> > > > > > type="address:AddressType"></xsd:element>
> > > > > > >
> > > > > > > <xsd:complexType name="AddressType">
> > > > > > > <xsd:sequence>
> > > > > > > <xsd:element name="Street"
> > > > type="xsd:string"></xsd:element>
> > > > > > > <xsd:element name="City"
> > type="xsd:string"></xsd:element>
> > > > > > > <xsd:element name="Zip"
> > type="xsd:string"></xsd:element>
> > > > > > > </xsd:sequence>
> > > > > > > </xsd:complexType>
> > > > > > > </xsd:schema>
> > > > > > >
> > > > > > >
> > > > > > > I use the following code to generate my XML:
> > > > > > >
> > > > > > > public static void main(String[] args) throws Exception
> > > > > > > {
> > > > > > > HelperContext context =
SDOUtil.createHelperContext();
> > > > > > >
> > > > > > > context.getXSDHelper().define(new
> > > > > > > FileInputStream("./Person.xsd"), (new
> > > > > > > File("./Base.xsd")).toURI().toString());
> > > > > > > context.getXSDHelper().define(new
> > > > > > > FileInputStream("./Address.xsd"), (new
> > > > > > > File("./Additional.xsd")).toURI().toString());
> > > > > > >
> > > > > > > DataObject person =
> > > > > > >
context.getDataFactory().create("http://www.example.org/Person",
> > > > > > > "PersonType");
> > > > > > > DataObject address =
> > > > > > >
> > context.getDataFactory().create("http://www.example.org/Address",
> > > > > > > "AddressType");
> > > > > > >
> > > > > > > person.set("Name", "Bart");
> > > > > > > person.set("Age", "10");
> > > > > > >
> > > > > > > address.set("Street", "123 Fake St.");
> > > > > > > address.set("City", "Springfield");
> > > > > > > address.set("Zip", "46392");
> > > > > > >
> > > > > > > person.setDataObject("address:Address", address);
> > > > > > >
> > > > > > > context.getXMLHelper().save(person,
> > > > > > > "http://www.example.org/Person", "Person", System.out);
> > > > > > > }
> > > > > > >
> > > > > > > This gives the following XML:
> > > > > > >
> > > > > > > <?xml version="1.0" encoding="ASCII"?>
> > > > > > > <person:Person
> > > > > > xmlns:PersonType="http://www.example.org/Person/PersonType"
> > > > > > > xmlns:address="http://www.example.org/Address"
> > > > > > > xmlns:person="http://www.example.org/Person">
> > > > > > > <person:Name>Bart</person:Name>
> > > > > > > <person:Age>10</person:Age>
> > > > > > > <PersonType:Address>
> > > > > > > <address:Street>123 Fake St.</address:Street>
> > > > > > > <address:City>Springfield</address:City>
> > > > > > > <address:Zip>46392</address:Zip>
> > > > > > > </PersonType:Address>
> > > > > > > </person:Person>
> > > > > > >
> > > > > > > My concern is the "PersonType:Address" element. I'd like
that to
> > be
> > > > > > > "address:Address" instead. Am I doing something wrong in my
> > schema
> > > > > > > definitions and/or code?
> > > > > > >
> > > > > > > Thanks for any help you can provide,
> > > > > > > -Chris
> > > > > > >
> > > > > > > On 4/16/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > > > > > Ashish,
> > > > > > > >
> > > > > > > > I implemented the on-the-fly property creation support
over
> > the
> > > > > > weekend
> > > > > > > > (see https://issues.apache.org/jira/browse/TUSCANY-1211).
> > > > > > > >
> > > > > > > > You should now be able to do what you asked:
> > > > > > > >
> > > > > > > > body.setDataObject("anyType",DataObject);
> > > > > > > >
> > > > > > > > Let me know how it works.
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Frank
> > > > > > > >
> > > > > > >
> > > > > > >
> > > >
---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail:
tuscany-user-unsubscribe@ws.apache.org
> > > > > > > For additional commands, e-mail:
tuscany-user-help@ws.apache.org
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > > > For additional commands, e-mail:
tuscany-user-help@ws.apache.org
> > > > > >
> > > > > >
> > > > >
> > > > >
> > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > > > >
> > > >
> > > >
> > > >
---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > > >
> > > >
> > >
> > >
---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org
Re: xsd:any problem
Posted by Chris Mildebrandt <ch...@plasticfrog.info>.
Hi Frank,
I think I've tracked this problem down to an issue with static class
generation. The common schema contains the any element in the identity
element. The packageIdentity element in the packageDescriptor schema
extends the identity element. Some things aren't quite right in the
class generation with respect to that. I wrote a note to the dev
mailing list explaining some of my issues. Seems this is a new issue
related to my other issue. I'll update my note with my new findings.
On a side note, adding content to the any element works when accessing
the dynamic methods. Is there a way to take my instance of my
statically generated class and use the dynamic methods for this set,
and then go back to editing using the statically generated objects?
Casting to DataObject doesn't seem to work:
((DataObject) identity).getList(addressProperty).add(address);
Thanks,
-Chris
On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> Assuming that the line numbers in your stack trace correspond to the EMF
> version (2.2.3) that I'm looking at, it looks to me like null is being
> passed into the getList() method. If so, I assume it's because this line
> returned null:
>
> Property addressProperty =
> context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> "Address", true);
>
> That is, it couldn't locate your global property.
>
> Frank
>
>
> eyeofthefrog@gmail.com wrote on 05/07/2007 12:13:35 PM:
>
> > Hi Frank,
> >
> > Thank you so much for your help so far, your example worked. I'm
> > learning quite a bit. I thought that would help me with my real work,
> > but I'm seeing a different error.
> >
> > My schema can be found here:
> >
> > http://www.oasis-open.org/committees/download.php/23876/CL1_Schema.zip
> >
> > and here:
> >
> > http://www.w3.org/2000/09/xmldsig
> >
> > I generate my classes using IBM's JDK 1.4.2 with the following commands:
> >
> > set javaExe=C:\ibmsdk1.4.2_sr4-1\bin\java
> > set output=.
> > set schemaLocation=..\schema\sdd-20070504_49
> >
> > set sdo_cp=lib\org.eclipse.emf.codegen_2.2.2.v200702131851.jar;
> > lib\org.eclipse.emf.codegen.ecore_2.2.2.v200702131851.jar;lib\org.
> > eclipse.emf.common_2.2.1.v200702131851.jar;lib\org.eclipse.emf.
> > ecore_2.2.2.v200702131851.jar;lib\org.eclipse.emf.ecore.change_2.2.
> > 1.v200702131851.jar;lib\org.eclipse.emf.ecore.xmi_2.2.2.
> > v200702131851.jar;lib\sdo-api-r2.1-1.0-incubating-SNAPSHOT.jar;
> > lib\tuscany-sdo-impl-1.0-incubating-SNAPSHOT.jar;lib\tuscany-sdo-
> >
> tools-1.0-incubating-SNAPSHOT.jar;lib\org.eclipse.xsd_2.2.2.v200702131851.jar
> > set options=-cp %sdo_cp%
> > org.apache.tuscany.sdo.generate.XSD2JavaGenerator -arrayAccessors
> > -targetDirectory %output%
> >
> > %javaExe% %options% "%schemaLocation%\wd-sdd-common-1.0.xsd"
> > %javaExe% %options%
> "%schemaLocation%\wd-sdd-deploymentDescriptor-1.0.xsd"
> > %javaExe% %options% "%schemaLocation%\wd-sdd-packageDescriptor-1.0.xsd"
> > %javaExe% %options% "%schemaLocation%\xmldsig-core-schema.xsd"
> >
> > I've built the Tuscany SDO libraries from the 4/27 code in subversion
> > with IBM's 1.4.2 JDK.
> >
> > Ok, with that out of the way, here is the problem I'm seeing:
> >
> > I have the following code:
> >
> > HelperContext context = SDOUtil.createHelperContext();
> >
> > context.getXSDHelper().define(new
> > FileInputStream("./wd-sdd-common-1.0.xsd"), (new
> > File("./wd-sdd-common-1.0.xsd")).toURI().toString());
> > context.getXSDHelper().define(new
> > FileInputStream("./wd-sdd-deploymentDescriptor-1.0.xsd"), (new
> > File("./wd-sdd-deploymentDescriptor-1.0.xsd")).toURI().toString());
> > context.getXSDHelper().define(new
> > FileInputStream("./xmldsig-core-schema.xsd"), (new
> > File("./xmldsig-core-schema.xsd")).toURI().toString());
> >
> > PackageDescriptorType pd =
> > DescriptorFactory.INSTANCE.createPackageDescriptorType();
> >
> > PackageIdentityType identity =
> > DescriptorFactory.INSTANCE.createPackageIdentityType();
> >
> > context.getXSDHelper().define(new
> > FileInputStream("./Address.xsd"), (new
> > File("./Address.xsd")).toURI().toString());
> > DataObject address =
> > context.getDataFactory().create("http://www.example.org/Address",
> > "AddressType");
> >
> > address.set("Street", "123 Fake St.");
> > address.set("City", "Springfield");
> > address.set("Zip", "46392");
> >
> > Property addressProperty =
> >
> context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> > "Address", true);
> > ((DataObject) identity).getList(addressProperty).add(address);
> >
> > context.getXMLHelper().save((DataObject) pd,
> > "urn:oasis:names:tc:SDD:1:0:packageDescriptor", "PackageDescriptor",
> > System.out);
> >
> > Similar to the other example, though now I'm initializing it using the
> > statically generated classes. The call to getList() is throwing the
> > following exception:
> >
> > Exception in thread "main" java.lang.NullPointerException
> > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > eOpenGet(BasicEObjectImpl.java:645)
> > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > eGet(BasicEObjectImpl.java(Compiled
> > Code))
> > at
> org.apache.tuscany.sdo.impl.DataObjectImpl.get(DataObjectImpl.java:132)
> > at org.apache.tuscany.sdo.util.DataObjectUtil.
> > getList(DataObjectUtil.java:172)
> > at org.apache.tuscany.sdo.impl.DataObjectImpl.
> > getList(DataObjectImpl.java:995)
> > at com.ibm.isd.mapper.impl.Test.anyTest_Static_PD(Test.java:116)
> > at com.ibm.isd.mapper.impl.Test.main(Test.java:125)
> >
> > Thanks in advance for any pointers you can give,
> > -Chris
> >
> > On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > Sorry, I didn't notice that your xsd:any had maxOccurs > 1:
> > >
> > > > > <xsd:any namespace="##other" processContents="lax"
> > > minOccurs="0" maxOccurs="unbounded"/>
> > >
> > > If it was maxOccurs="1" then you could do what I suggested.
> > >
> > > Because it is many valued, however, you need to do this:
> > >
> > > person.getList(addressProperty).add(address);
> > >
> > > Notice that the isMany value of a global property is not statically
> known,
> > > it depends on where it's being used.
> > >
> > > Frank.
> > >
> > >
> > > eyeofthefrog@gmail.com wrote on 05/07/2007 09:54:04 AM:
> > >
> > > > Hi Frank,
> > > >
> > > > I replaced my code with what you suggested:
> > > >
> > > > Property addressProperty =
> > > >
> > >
> context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> > > > "Address",
> > > > true);
> > > > person.setDataObject(addressProperty, address);
> > > >
> > > > The call to setDataObject() generates the following exception:
> > > >
> > > > Exception in thread "main" java.lang.ClassCastException:
> > > > org.apache.tuscany.sdo.impl.DynamicDataObjectImpl
> > > > at org.eclipse.emf.ecore.util.BasicFeatureMap.
> > > > set(BasicFeatureMap.java:1026)
> > > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > > eOpenSet(BasicEObjectImpl.java:723)
> > > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > > eSet(BasicEObjectImpl.java:658)
> > > > at
> > >
> org.apache.tuscany.sdo.impl.DataObjectImpl.set(DataObjectImpl.java:142)
> > > > at org.apache.tuscany.sdo.util.DataObjectUtil.
> > > > setDataObject(DataObjectUtil.java:122)
> > > > at org.apache.tuscany.sdo.impl.DataObjectImpl.
> > > > setDataObject(DataObjectImpl.java:1105)
> > > > at com.ibm.isd.mapper.impl.Test.main(Test.java:33)
> > > >
> > > >
> > > > Any Ideas? Thanks for your help this far,
> > > >
> > > > -Chris
> > > >
> > > > On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > > Hi Chris,
> > > > >
> > > > > The problem is this line of code:
> > > > >
> > > > > > person.setDataObject("address:Address", address);
> > > > >
> > > > > SDO doesn't support qualified names in string (path) get/set
> methods.
> > > > > That's why it ignores the "address:" prefix, and simply
> demand-creates
> > > > > another "Address" property ("PersonType:address").
> > > > >
> > > > > To accomplish what you want, you can explicitly locate the
> > > address:Address
> > > > > property like this:
> > > > >
> > > > > Property addressProperty =
> > > > > xsdHelper.getGlobalProperty("http://www.example.org/Address",
> > > "Address",
> > > > > true);
> > > > >
> > > > > Then you can set it like this:
> > > > >
> > > > > person.setDataObject(addressProperty, address);
> > > > >
> > > > > Frank.
> > > > >
> > > > >
> > > > > eyeofthefrog@gmail.com wrote on 05/06/2007 04:08:33 PM:
> > > > >
> > > > > > Hi Frank (or anyone else that may be able to help),
> > > > > >
> > > > > > I have a related question to Ashish's. I have the following two
> > > schemas:
> > > > > >
> > > > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > > > targetNamespace="http://www.example.org/Person"
> > > > > > xmlns:person="http://www.example.org/Person"
> > > > > > elementFormDefault="qualified">
> > > > > > <xsd:element name="Person"
> > > type="person:PersonType"></xsd:element>
> > > > > >
> > > > > > <xsd:complexType name="PersonType">
> > > > > > <xsd:sequence>
> > > > > > <xsd:element name="Name"
> type="xsd:string"></xsd:element>
> > > > > > <xsd:element name="Age"
> type="xsd:string"></xsd:element>
> > > > > > <xsd:any namespace="##other" processContents="lax"
> > > > > minOccurs="0"
> > > > > > maxOccurs="unbounded"/>
> > > > > > </xsd:sequence>
> > > > > > </xsd:complexType>
> > > > > > </xsd:schema>
> > > > > >
> > > > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > > > targetNamespace="http://www.example.org/Address"
> > > > > > xmlns:address="http://www.example.org/Address"
> > > > > > elementFormDefault="qualified">
> > > > > >
> > > > > > <xsd:element name="Address"
> > > > > type="address:AddressType"></xsd:element>
> > > > > >
> > > > > > <xsd:complexType name="AddressType">
> > > > > > <xsd:sequence>
> > > > > > <xsd:element name="Street"
> > > type="xsd:string"></xsd:element>
> > > > > > <xsd:element name="City"
> type="xsd:string"></xsd:element>
> > > > > > <xsd:element name="Zip"
> type="xsd:string"></xsd:element>
> > > > > > </xsd:sequence>
> > > > > > </xsd:complexType>
> > > > > > </xsd:schema>
> > > > > >
> > > > > >
> > > > > > I use the following code to generate my XML:
> > > > > >
> > > > > > public static void main(String[] args) throws Exception
> > > > > > {
> > > > > > HelperContext context = SDOUtil.createHelperContext();
> > > > > >
> > > > > > context.getXSDHelper().define(new
> > > > > > FileInputStream("./Person.xsd"), (new
> > > > > > File("./Base.xsd")).toURI().toString());
> > > > > > context.getXSDHelper().define(new
> > > > > > FileInputStream("./Address.xsd"), (new
> > > > > > File("./Additional.xsd")).toURI().toString());
> > > > > >
> > > > > > DataObject person =
> > > > > > context.getDataFactory().create("http://www.example.org/Person",
> > > > > > "PersonType");
> > > > > > DataObject address =
> > > > > >
> context.getDataFactory().create("http://www.example.org/Address",
> > > > > > "AddressType");
> > > > > >
> > > > > > person.set("Name", "Bart");
> > > > > > person.set("Age", "10");
> > > > > >
> > > > > > address.set("Street", "123 Fake St.");
> > > > > > address.set("City", "Springfield");
> > > > > > address.set("Zip", "46392");
> > > > > >
> > > > > > person.setDataObject("address:Address", address);
> > > > > >
> > > > > > context.getXMLHelper().save(person,
> > > > > > "http://www.example.org/Person", "Person", System.out);
> > > > > > }
> > > > > >
> > > > > > This gives the following XML:
> > > > > >
> > > > > > <?xml version="1.0" encoding="ASCII"?>
> > > > > > <person:Person
> > > > > xmlns:PersonType="http://www.example.org/Person/PersonType"
> > > > > > xmlns:address="http://www.example.org/Address"
> > > > > > xmlns:person="http://www.example.org/Person">
> > > > > > <person:Name>Bart</person:Name>
> > > > > > <person:Age>10</person:Age>
> > > > > > <PersonType:Address>
> > > > > > <address:Street>123 Fake St.</address:Street>
> > > > > > <address:City>Springfield</address:City>
> > > > > > <address:Zip>46392</address:Zip>
> > > > > > </PersonType:Address>
> > > > > > </person:Person>
> > > > > >
> > > > > > My concern is the "PersonType:Address" element. I'd like that to
> be
> > > > > > "address:Address" instead. Am I doing something wrong in my
> schema
> > > > > > definitions and/or code?
> > > > > >
> > > > > > Thanks for any help you can provide,
> > > > > > -Chris
> > > > > >
> > > > > > On 4/16/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > > > > Ashish,
> > > > > > >
> > > > > > > I implemented the on-the-fly property creation support over
> the
> > > > > weekend
> > > > > > > (see https://issues.apache.org/jira/browse/TUSCANY-1211).
> > > > > > >
> > > > > > > You should now be able to do what you asked:
> > > > > > >
> > > > > > > body.setDataObject("anyType",DataObject);
> > > > > > >
> > > > > > > Let me know how it works.
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Frank
> > > > > > >
> > > > > >
> > > > > >
> > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > > > > >
> > > > >
> > > > >
> > > > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > > > >
> > > > >
> > > >
> > > >
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org
Re: xsd:any problem
Posted by Frank Budinsky <fr...@ca.ibm.com>.
Assuming that the line numbers in your stack trace correspond to the EMF
version (2.2.3) that I'm looking at, it looks to me like null is being
passed into the getList() method. If so, I assume it's because this line
returned null:
Property addressProperty =
context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
"Address", true);
That is, it couldn't locate your global property.
Frank
eyeofthefrog@gmail.com wrote on 05/07/2007 12:13:35 PM:
> Hi Frank,
>
> Thank you so much for your help so far, your example worked. I'm
> learning quite a bit. I thought that would help me with my real work,
> but I'm seeing a different error.
>
> My schema can be found here:
>
> http://www.oasis-open.org/committees/download.php/23876/CL1_Schema.zip
>
> and here:
>
> http://www.w3.org/2000/09/xmldsig
>
> I generate my classes using IBM's JDK 1.4.2 with the following commands:
>
> set javaExe=C:\ibmsdk1.4.2_sr4-1\bin\java
> set output=.
> set schemaLocation=..\schema\sdd-20070504_49
>
> set sdo_cp=lib\org.eclipse.emf.codegen_2.2.2.v200702131851.jar;
> lib\org.eclipse.emf.codegen.ecore_2.2.2.v200702131851.jar;lib\org.
> eclipse.emf.common_2.2.1.v200702131851.jar;lib\org.eclipse.emf.
> ecore_2.2.2.v200702131851.jar;lib\org.eclipse.emf.ecore.change_2.2.
> 1.v200702131851.jar;lib\org.eclipse.emf.ecore.xmi_2.2.2.
> v200702131851.jar;lib\sdo-api-r2.1-1.0-incubating-SNAPSHOT.jar;
> lib\tuscany-sdo-impl-1.0-incubating-SNAPSHOT.jar;lib\tuscany-sdo-
>
tools-1.0-incubating-SNAPSHOT.jar;lib\org.eclipse.xsd_2.2.2.v200702131851.jar
> set options=-cp %sdo_cp%
> org.apache.tuscany.sdo.generate.XSD2JavaGenerator -arrayAccessors
> -targetDirectory %output%
>
> %javaExe% %options% "%schemaLocation%\wd-sdd-common-1.0.xsd"
> %javaExe% %options%
"%schemaLocation%\wd-sdd-deploymentDescriptor-1.0.xsd"
> %javaExe% %options% "%schemaLocation%\wd-sdd-packageDescriptor-1.0.xsd"
> %javaExe% %options% "%schemaLocation%\xmldsig-core-schema.xsd"
>
> I've built the Tuscany SDO libraries from the 4/27 code in subversion
> with IBM's 1.4.2 JDK.
>
> Ok, with that out of the way, here is the problem I'm seeing:
>
> I have the following code:
>
> HelperContext context = SDOUtil.createHelperContext();
>
> context.getXSDHelper().define(new
> FileInputStream("./wd-sdd-common-1.0.xsd"), (new
> File("./wd-sdd-common-1.0.xsd")).toURI().toString());
> context.getXSDHelper().define(new
> FileInputStream("./wd-sdd-deploymentDescriptor-1.0.xsd"), (new
> File("./wd-sdd-deploymentDescriptor-1.0.xsd")).toURI().toString());
> context.getXSDHelper().define(new
> FileInputStream("./xmldsig-core-schema.xsd"), (new
> File("./xmldsig-core-schema.xsd")).toURI().toString());
>
> PackageDescriptorType pd =
> DescriptorFactory.INSTANCE.createPackageDescriptorType();
>
> PackageIdentityType identity =
> DescriptorFactory.INSTANCE.createPackageIdentityType();
>
> context.getXSDHelper().define(new
> FileInputStream("./Address.xsd"), (new
> File("./Address.xsd")).toURI().toString());
> DataObject address =
> context.getDataFactory().create("http://www.example.org/Address",
> "AddressType");
>
> address.set("Street", "123 Fake St.");
> address.set("City", "Springfield");
> address.set("Zip", "46392");
>
> Property addressProperty =
>
context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> "Address", true);
> ((DataObject) identity).getList(addressProperty).add(address);
>
> context.getXMLHelper().save((DataObject) pd,
> "urn:oasis:names:tc:SDD:1:0:packageDescriptor", "PackageDescriptor",
> System.out);
>
> Similar to the other example, though now I'm initializing it using the
> statically generated classes. The call to getList() is throwing the
> following exception:
>
> Exception in thread "main" java.lang.NullPointerException
> at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> eOpenGet(BasicEObjectImpl.java:645)
> at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> eGet(BasicEObjectImpl.java(Compiled
> Code))
> at
org.apache.tuscany.sdo.impl.DataObjectImpl.get(DataObjectImpl.java:132)
> at org.apache.tuscany.sdo.util.DataObjectUtil.
> getList(DataObjectUtil.java:172)
> at org.apache.tuscany.sdo.impl.DataObjectImpl.
> getList(DataObjectImpl.java:995)
> at com.ibm.isd.mapper.impl.Test.anyTest_Static_PD(Test.java:116)
> at com.ibm.isd.mapper.impl.Test.main(Test.java:125)
>
> Thanks in advance for any pointers you can give,
> -Chris
>
> On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > Sorry, I didn't notice that your xsd:any had maxOccurs > 1:
> >
> > > > <xsd:any namespace="##other" processContents="lax"
> > minOccurs="0" maxOccurs="unbounded"/>
> >
> > If it was maxOccurs="1" then you could do what I suggested.
> >
> > Because it is many valued, however, you need to do this:
> >
> > person.getList(addressProperty).add(address);
> >
> > Notice that the isMany value of a global property is not statically
known,
> > it depends on where it's being used.
> >
> > Frank.
> >
> >
> > eyeofthefrog@gmail.com wrote on 05/07/2007 09:54:04 AM:
> >
> > > Hi Frank,
> > >
> > > I replaced my code with what you suggested:
> > >
> > > Property addressProperty =
> > >
> >
context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> > > "Address",
> > > true);
> > > person.setDataObject(addressProperty, address);
> > >
> > > The call to setDataObject() generates the following exception:
> > >
> > > Exception in thread "main" java.lang.ClassCastException:
> > > org.apache.tuscany.sdo.impl.DynamicDataObjectImpl
> > > at org.eclipse.emf.ecore.util.BasicFeatureMap.
> > > set(BasicFeatureMap.java:1026)
> > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > eOpenSet(BasicEObjectImpl.java:723)
> > > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > > eSet(BasicEObjectImpl.java:658)
> > > at
> >
org.apache.tuscany.sdo.impl.DataObjectImpl.set(DataObjectImpl.java:142)
> > > at org.apache.tuscany.sdo.util.DataObjectUtil.
> > > setDataObject(DataObjectUtil.java:122)
> > > at org.apache.tuscany.sdo.impl.DataObjectImpl.
> > > setDataObject(DataObjectImpl.java:1105)
> > > at com.ibm.isd.mapper.impl.Test.main(Test.java:33)
> > >
> > >
> > > Any Ideas? Thanks for your help this far,
> > >
> > > -Chris
> > >
> > > On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > Hi Chris,
> > > >
> > > > The problem is this line of code:
> > > >
> > > > > person.setDataObject("address:Address", address);
> > > >
> > > > SDO doesn't support qualified names in string (path) get/set
methods.
> > > > That's why it ignores the "address:" prefix, and simply
demand-creates
> > > > another "Address" property ("PersonType:address").
> > > >
> > > > To accomplish what you want, you can explicitly locate the
> > address:Address
> > > > property like this:
> > > >
> > > > Property addressProperty =
> > > > xsdHelper.getGlobalProperty("http://www.example.org/Address",
> > "Address",
> > > > true);
> > > >
> > > > Then you can set it like this:
> > > >
> > > > person.setDataObject(addressProperty, address);
> > > >
> > > > Frank.
> > > >
> > > >
> > > > eyeofthefrog@gmail.com wrote on 05/06/2007 04:08:33 PM:
> > > >
> > > > > Hi Frank (or anyone else that may be able to help),
> > > > >
> > > > > I have a related question to Ashish's. I have the following two
> > schemas:
> > > > >
> > > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > > targetNamespace="http://www.example.org/Person"
> > > > > xmlns:person="http://www.example.org/Person"
> > > > > elementFormDefault="qualified">
> > > > > <xsd:element name="Person"
> > type="person:PersonType"></xsd:element>
> > > > >
> > > > > <xsd:complexType name="PersonType">
> > > > > <xsd:sequence>
> > > > > <xsd:element name="Name"
type="xsd:string"></xsd:element>
> > > > > <xsd:element name="Age"
type="xsd:string"></xsd:element>
> > > > > <xsd:any namespace="##other" processContents="lax"
> > > > minOccurs="0"
> > > > > maxOccurs="unbounded"/>
> > > > > </xsd:sequence>
> > > > > </xsd:complexType>
> > > > > </xsd:schema>
> > > > >
> > > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > > targetNamespace="http://www.example.org/Address"
> > > > > xmlns:address="http://www.example.org/Address"
> > > > > elementFormDefault="qualified">
> > > > >
> > > > > <xsd:element name="Address"
> > > > type="address:AddressType"></xsd:element>
> > > > >
> > > > > <xsd:complexType name="AddressType">
> > > > > <xsd:sequence>
> > > > > <xsd:element name="Street"
> > type="xsd:string"></xsd:element>
> > > > > <xsd:element name="City"
type="xsd:string"></xsd:element>
> > > > > <xsd:element name="Zip"
type="xsd:string"></xsd:element>
> > > > > </xsd:sequence>
> > > > > </xsd:complexType>
> > > > > </xsd:schema>
> > > > >
> > > > >
> > > > > I use the following code to generate my XML:
> > > > >
> > > > > public static void main(String[] args) throws Exception
> > > > > {
> > > > > HelperContext context = SDOUtil.createHelperContext();
> > > > >
> > > > > context.getXSDHelper().define(new
> > > > > FileInputStream("./Person.xsd"), (new
> > > > > File("./Base.xsd")).toURI().toString());
> > > > > context.getXSDHelper().define(new
> > > > > FileInputStream("./Address.xsd"), (new
> > > > > File("./Additional.xsd")).toURI().toString());
> > > > >
> > > > > DataObject person =
> > > > > context.getDataFactory().create("http://www.example.org/Person",
> > > > > "PersonType");
> > > > > DataObject address =
> > > > >
context.getDataFactory().create("http://www.example.org/Address",
> > > > > "AddressType");
> > > > >
> > > > > person.set("Name", "Bart");
> > > > > person.set("Age", "10");
> > > > >
> > > > > address.set("Street", "123 Fake St.");
> > > > > address.set("City", "Springfield");
> > > > > address.set("Zip", "46392");
> > > > >
> > > > > person.setDataObject("address:Address", address);
> > > > >
> > > > > context.getXMLHelper().save(person,
> > > > > "http://www.example.org/Person", "Person", System.out);
> > > > > }
> > > > >
> > > > > This gives the following XML:
> > > > >
> > > > > <?xml version="1.0" encoding="ASCII"?>
> > > > > <person:Person
> > > > xmlns:PersonType="http://www.example.org/Person/PersonType"
> > > > > xmlns:address="http://www.example.org/Address"
> > > > > xmlns:person="http://www.example.org/Person">
> > > > > <person:Name>Bart</person:Name>
> > > > > <person:Age>10</person:Age>
> > > > > <PersonType:Address>
> > > > > <address:Street>123 Fake St.</address:Street>
> > > > > <address:City>Springfield</address:City>
> > > > > <address:Zip>46392</address:Zip>
> > > > > </PersonType:Address>
> > > > > </person:Person>
> > > > >
> > > > > My concern is the "PersonType:Address" element. I'd like that to
be
> > > > > "address:Address" instead. Am I doing something wrong in my
schema
> > > > > definitions and/or code?
> > > > >
> > > > > Thanks for any help you can provide,
> > > > > -Chris
> > > > >
> > > > > On 4/16/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > > > Ashish,
> > > > > >
> > > > > > I implemented the on-the-fly property creation support over
the
> > > > weekend
> > > > > > (see https://issues.apache.org/jira/browse/TUSCANY-1211).
> > > > > >
> > > > > > You should now be able to do what you asked:
> > > > > >
> > > > > > body.setDataObject("anyType",DataObject);
> > > > > >
> > > > > > Let me know how it works.
> > > > > >
> > > > > > Thanks,
> > > > > > Frank
> > > > > >
> > > > >
> > > > >
> > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > > > >
> > > >
> > > >
> > > >
---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > > >
> > > >
> > >
> > >
---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org
Re: xsd:any problem
Posted by Chris Mildebrandt <ch...@plasticfrog.info>.
Hi Frank,
Thank you so much for your help so far, your example worked. I'm
learning quite a bit. I thought that would help me with my real work,
but I'm seeing a different error.
My schema can be found here:
http://www.oasis-open.org/committees/download.php/23876/CL1_Schema.zip
and here:
http://www.w3.org/2000/09/xmldsig
I generate my classes using IBM's JDK 1.4.2 with the following commands:
set javaExe=C:\ibmsdk1.4.2_sr4-1\bin\java
set output=.
set schemaLocation=..\schema\sdd-20070504_49
set sdo_cp=lib\org.eclipse.emf.codegen_2.2.2.v200702131851.jar;lib\org.eclipse.emf.codegen.ecore_2.2.2.v200702131851.jar;lib\org.eclipse.emf.common_2.2.1.v200702131851.jar;lib\org.eclipse.emf.ecore_2.2.2.v200702131851.jar;lib\org.eclipse.emf.ecore.change_2.2.1.v200702131851.jar;lib\org.eclipse.emf.ecore.xmi_2.2.2.v200702131851.jar;lib\sdo-api-r2.1-1.0-incubating-SNAPSHOT.jar;lib\tuscany-sdo-impl-1.0-incubating-SNAPSHOT.jar;lib\tuscany-sdo-tools-1.0-incubating-SNAPSHOT.jar;lib\org.eclipse.xsd_2.2.2.v200702131851.jar
set options=-cp %sdo_cp%
org.apache.tuscany.sdo.generate.XSD2JavaGenerator -arrayAccessors
-targetDirectory %output%
%javaExe% %options% "%schemaLocation%\wd-sdd-common-1.0.xsd"
%javaExe% %options% "%schemaLocation%\wd-sdd-deploymentDescriptor-1.0.xsd"
%javaExe% %options% "%schemaLocation%\wd-sdd-packageDescriptor-1.0.xsd"
%javaExe% %options% "%schemaLocation%\xmldsig-core-schema.xsd"
I've built the Tuscany SDO libraries from the 4/27 code in subversion
with IBM's 1.4.2 JDK.
Ok, with that out of the way, here is the problem I'm seeing:
I have the following code:
HelperContext context = SDOUtil.createHelperContext();
context.getXSDHelper().define(new
FileInputStream("./wd-sdd-common-1.0.xsd"), (new
File("./wd-sdd-common-1.0.xsd")).toURI().toString());
context.getXSDHelper().define(new
FileInputStream("./wd-sdd-deploymentDescriptor-1.0.xsd"), (new
File("./wd-sdd-deploymentDescriptor-1.0.xsd")).toURI().toString());
context.getXSDHelper().define(new
FileInputStream("./xmldsig-core-schema.xsd"), (new
File("./xmldsig-core-schema.xsd")).toURI().toString());
PackageDescriptorType pd =
DescriptorFactory.INSTANCE.createPackageDescriptorType();
PackageIdentityType identity =
DescriptorFactory.INSTANCE.createPackageIdentityType();
context.getXSDHelper().define(new
FileInputStream("./Address.xsd"), (new
File("./Address.xsd")).toURI().toString());
DataObject address =
context.getDataFactory().create("http://www.example.org/Address",
"AddressType");
address.set("Street", "123 Fake St.");
address.set("City", "Springfield");
address.set("Zip", "46392");
Property addressProperty =
context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
"Address", true);
((DataObject) identity).getList(addressProperty).add(address);
context.getXMLHelper().save((DataObject) pd,
"urn:oasis:names:tc:SDD:1:0:packageDescriptor", "PackageDescriptor",
System.out);
Similar to the other example, though now I'm initializing it using the
statically generated classes. The call to getList() is throwing the
following exception:
Exception in thread "main" java.lang.NullPointerException
at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eOpenGet(BasicEObjectImpl.java:645)
at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java(Compiled
Code))
at org.apache.tuscany.sdo.impl.DataObjectImpl.get(DataObjectImpl.java:132)
at org.apache.tuscany.sdo.util.DataObjectUtil.getList(DataObjectUtil.java:172)
at org.apache.tuscany.sdo.impl.DataObjectImpl.getList(DataObjectImpl.java:995)
at com.ibm.isd.mapper.impl.Test.anyTest_Static_PD(Test.java:116)
at com.ibm.isd.mapper.impl.Test.main(Test.java:125)
Thanks in advance for any pointers you can give,
-Chris
On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> Sorry, I didn't notice that your xsd:any had maxOccurs > 1:
>
> > > <xsd:any namespace="##other" processContents="lax"
> minOccurs="0" maxOccurs="unbounded"/>
>
> If it was maxOccurs="1" then you could do what I suggested.
>
> Because it is many valued, however, you need to do this:
>
> person.getList(addressProperty).add(address);
>
> Notice that the isMany value of a global property is not statically known,
> it depends on where it's being used.
>
> Frank.
>
>
> eyeofthefrog@gmail.com wrote on 05/07/2007 09:54:04 AM:
>
> > Hi Frank,
> >
> > I replaced my code with what you suggested:
> >
> > Property addressProperty =
> >
> context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> > "Address",
> > true);
> > person.setDataObject(addressProperty, address);
> >
> > The call to setDataObject() generates the following exception:
> >
> > Exception in thread "main" java.lang.ClassCastException:
> > org.apache.tuscany.sdo.impl.DynamicDataObjectImpl
> > at org.eclipse.emf.ecore.util.BasicFeatureMap.
> > set(BasicFeatureMap.java:1026)
> > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > eOpenSet(BasicEObjectImpl.java:723)
> > at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> > eSet(BasicEObjectImpl.java:658)
> > at
> org.apache.tuscany.sdo.impl.DataObjectImpl.set(DataObjectImpl.java:142)
> > at org.apache.tuscany.sdo.util.DataObjectUtil.
> > setDataObject(DataObjectUtil.java:122)
> > at org.apache.tuscany.sdo.impl.DataObjectImpl.
> > setDataObject(DataObjectImpl.java:1105)
> > at com.ibm.isd.mapper.impl.Test.main(Test.java:33)
> >
> >
> > Any Ideas? Thanks for your help this far,
> >
> > -Chris
> >
> > On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > Hi Chris,
> > >
> > > The problem is this line of code:
> > >
> > > > person.setDataObject("address:Address", address);
> > >
> > > SDO doesn't support qualified names in string (path) get/set methods.
> > > That's why it ignores the "address:" prefix, and simply demand-creates
> > > another "Address" property ("PersonType:address").
> > >
> > > To accomplish what you want, you can explicitly locate the
> address:Address
> > > property like this:
> > >
> > > Property addressProperty =
> > > xsdHelper.getGlobalProperty("http://www.example.org/Address",
> "Address",
> > > true);
> > >
> > > Then you can set it like this:
> > >
> > > person.setDataObject(addressProperty, address);
> > >
> > > Frank.
> > >
> > >
> > > eyeofthefrog@gmail.com wrote on 05/06/2007 04:08:33 PM:
> > >
> > > > Hi Frank (or anyone else that may be able to help),
> > > >
> > > > I have a related question to Ashish's. I have the following two
> schemas:
> > > >
> > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > targetNamespace="http://www.example.org/Person"
> > > > xmlns:person="http://www.example.org/Person"
> > > > elementFormDefault="qualified">
> > > > <xsd:element name="Person"
> type="person:PersonType"></xsd:element>
> > > >
> > > > <xsd:complexType name="PersonType">
> > > > <xsd:sequence>
> > > > <xsd:element name="Name" type="xsd:string"></xsd:element>
> > > > <xsd:element name="Age" type="xsd:string"></xsd:element>
> > > > <xsd:any namespace="##other" processContents="lax"
> > > minOccurs="0"
> > > > maxOccurs="unbounded"/>
> > > > </xsd:sequence>
> > > > </xsd:complexType>
> > > > </xsd:schema>
> > > >
> > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > > targetNamespace="http://www.example.org/Address"
> > > > xmlns:address="http://www.example.org/Address"
> > > > elementFormDefault="qualified">
> > > >
> > > > <xsd:element name="Address"
> > > type="address:AddressType"></xsd:element>
> > > >
> > > > <xsd:complexType name="AddressType">
> > > > <xsd:sequence>
> > > > <xsd:element name="Street"
> type="xsd:string"></xsd:element>
> > > > <xsd:element name="City" type="xsd:string"></xsd:element>
> > > > <xsd:element name="Zip" type="xsd:string"></xsd:element>
> > > > </xsd:sequence>
> > > > </xsd:complexType>
> > > > </xsd:schema>
> > > >
> > > >
> > > > I use the following code to generate my XML:
> > > >
> > > > public static void main(String[] args) throws Exception
> > > > {
> > > > HelperContext context = SDOUtil.createHelperContext();
> > > >
> > > > context.getXSDHelper().define(new
> > > > FileInputStream("./Person.xsd"), (new
> > > > File("./Base.xsd")).toURI().toString());
> > > > context.getXSDHelper().define(new
> > > > FileInputStream("./Address.xsd"), (new
> > > > File("./Additional.xsd")).toURI().toString());
> > > >
> > > > DataObject person =
> > > > context.getDataFactory().create("http://www.example.org/Person",
> > > > "PersonType");
> > > > DataObject address =
> > > > context.getDataFactory().create("http://www.example.org/Address",
> > > > "AddressType");
> > > >
> > > > person.set("Name", "Bart");
> > > > person.set("Age", "10");
> > > >
> > > > address.set("Street", "123 Fake St.");
> > > > address.set("City", "Springfield");
> > > > address.set("Zip", "46392");
> > > >
> > > > person.setDataObject("address:Address", address);
> > > >
> > > > context.getXMLHelper().save(person,
> > > > "http://www.example.org/Person", "Person", System.out);
> > > > }
> > > >
> > > > This gives the following XML:
> > > >
> > > > <?xml version="1.0" encoding="ASCII"?>
> > > > <person:Person
> > > xmlns:PersonType="http://www.example.org/Person/PersonType"
> > > > xmlns:address="http://www.example.org/Address"
> > > > xmlns:person="http://www.example.org/Person">
> > > > <person:Name>Bart</person:Name>
> > > > <person:Age>10</person:Age>
> > > > <PersonType:Address>
> > > > <address:Street>123 Fake St.</address:Street>
> > > > <address:City>Springfield</address:City>
> > > > <address:Zip>46392</address:Zip>
> > > > </PersonType:Address>
> > > > </person:Person>
> > > >
> > > > My concern is the "PersonType:Address" element. I'd like that to be
> > > > "address:Address" instead. Am I doing something wrong in my schema
> > > > definitions and/or code?
> > > >
> > > > Thanks for any help you can provide,
> > > > -Chris
> > > >
> > > > On 4/16/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > > Ashish,
> > > > >
> > > > > I implemented the on-the-fly property creation support over the
> > > weekend
> > > > > (see https://issues.apache.org/jira/browse/TUSCANY-1211).
> > > > >
> > > > > You should now be able to do what you asked:
> > > > >
> > > > > body.setDataObject("anyType",DataObject);
> > > > >
> > > > > Let me know how it works.
> > > > >
> > > > > Thanks,
> > > > > Frank
> > > > >
> > > >
> > > >
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org
Re: xsd:any problem
Posted by Frank Budinsky <fr...@ca.ibm.com>.
Sorry, I didn't notice that your xsd:any had maxOccurs > 1:
> > <xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
If it was maxOccurs="1" then you could do what I suggested.
Because it is many valued, however, you need to do this:
person.getList(addressProperty).add(address);
Notice that the isMany value of a global property is not statically known,
it depends on where it's being used.
Frank.
eyeofthefrog@gmail.com wrote on 05/07/2007 09:54:04 AM:
> Hi Frank,
>
> I replaced my code with what you suggested:
>
> Property addressProperty =
>
context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
> "Address",
> true);
> person.setDataObject(addressProperty, address);
>
> The call to setDataObject() generates the following exception:
>
> Exception in thread "main" java.lang.ClassCastException:
> org.apache.tuscany.sdo.impl.DynamicDataObjectImpl
> at org.eclipse.emf.ecore.util.BasicFeatureMap.
> set(BasicFeatureMap.java:1026)
> at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> eOpenSet(BasicEObjectImpl.java:723)
> at org.eclipse.emf.ecore.impl.BasicEObjectImpl.
> eSet(BasicEObjectImpl.java:658)
> at
org.apache.tuscany.sdo.impl.DataObjectImpl.set(DataObjectImpl.java:142)
> at org.apache.tuscany.sdo.util.DataObjectUtil.
> setDataObject(DataObjectUtil.java:122)
> at org.apache.tuscany.sdo.impl.DataObjectImpl.
> setDataObject(DataObjectImpl.java:1105)
> at com.ibm.isd.mapper.impl.Test.main(Test.java:33)
>
>
> Any Ideas? Thanks for your help this far,
>
> -Chris
>
> On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > Hi Chris,
> >
> > The problem is this line of code:
> >
> > > person.setDataObject("address:Address", address);
> >
> > SDO doesn't support qualified names in string (path) get/set methods.
> > That's why it ignores the "address:" prefix, and simply demand-creates
> > another "Address" property ("PersonType:address").
> >
> > To accomplish what you want, you can explicitly locate the
address:Address
> > property like this:
> >
> > Property addressProperty =
> > xsdHelper.getGlobalProperty("http://www.example.org/Address",
"Address",
> > true);
> >
> > Then you can set it like this:
> >
> > person.setDataObject(addressProperty, address);
> >
> > Frank.
> >
> >
> > eyeofthefrog@gmail.com wrote on 05/06/2007 04:08:33 PM:
> >
> > > Hi Frank (or anyone else that may be able to help),
> > >
> > > I have a related question to Ashish's. I have the following two
schemas:
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > targetNamespace="http://www.example.org/Person"
> > > xmlns:person="http://www.example.org/Person"
> > > elementFormDefault="qualified">
> > > <xsd:element name="Person"
type="person:PersonType"></xsd:element>
> > >
> > > <xsd:complexType name="PersonType">
> > > <xsd:sequence>
> > > <xsd:element name="Name" type="xsd:string"></xsd:element>
> > > <xsd:element name="Age" type="xsd:string"></xsd:element>
> > > <xsd:any namespace="##other" processContents="lax"
> > minOccurs="0"
> > > maxOccurs="unbounded"/>
> > > </xsd:sequence>
> > > </xsd:complexType>
> > > </xsd:schema>
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > > targetNamespace="http://www.example.org/Address"
> > > xmlns:address="http://www.example.org/Address"
> > > elementFormDefault="qualified">
> > >
> > > <xsd:element name="Address"
> > type="address:AddressType"></xsd:element>
> > >
> > > <xsd:complexType name="AddressType">
> > > <xsd:sequence>
> > > <xsd:element name="Street"
type="xsd:string"></xsd:element>
> > > <xsd:element name="City" type="xsd:string"></xsd:element>
> > > <xsd:element name="Zip" type="xsd:string"></xsd:element>
> > > </xsd:sequence>
> > > </xsd:complexType>
> > > </xsd:schema>
> > >
> > >
> > > I use the following code to generate my XML:
> > >
> > > public static void main(String[] args) throws Exception
> > > {
> > > HelperContext context = SDOUtil.createHelperContext();
> > >
> > > context.getXSDHelper().define(new
> > > FileInputStream("./Person.xsd"), (new
> > > File("./Base.xsd")).toURI().toString());
> > > context.getXSDHelper().define(new
> > > FileInputStream("./Address.xsd"), (new
> > > File("./Additional.xsd")).toURI().toString());
> > >
> > > DataObject person =
> > > context.getDataFactory().create("http://www.example.org/Person",
> > > "PersonType");
> > > DataObject address =
> > > context.getDataFactory().create("http://www.example.org/Address",
> > > "AddressType");
> > >
> > > person.set("Name", "Bart");
> > > person.set("Age", "10");
> > >
> > > address.set("Street", "123 Fake St.");
> > > address.set("City", "Springfield");
> > > address.set("Zip", "46392");
> > >
> > > person.setDataObject("address:Address", address);
> > >
> > > context.getXMLHelper().save(person,
> > > "http://www.example.org/Person", "Person", System.out);
> > > }
> > >
> > > This gives the following XML:
> > >
> > > <?xml version="1.0" encoding="ASCII"?>
> > > <person:Person
> > xmlns:PersonType="http://www.example.org/Person/PersonType"
> > > xmlns:address="http://www.example.org/Address"
> > > xmlns:person="http://www.example.org/Person">
> > > <person:Name>Bart</person:Name>
> > > <person:Age>10</person:Age>
> > > <PersonType:Address>
> > > <address:Street>123 Fake St.</address:Street>
> > > <address:City>Springfield</address:City>
> > > <address:Zip>46392</address:Zip>
> > > </PersonType:Address>
> > > </person:Person>
> > >
> > > My concern is the "PersonType:Address" element. I'd like that to be
> > > "address:Address" instead. Am I doing something wrong in my schema
> > > definitions and/or code?
> > >
> > > Thanks for any help you can provide,
> > > -Chris
> > >
> > > On 4/16/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > > Ashish,
> > > >
> > > > I implemented the on-the-fly property creation support over the
> > weekend
> > > > (see https://issues.apache.org/jira/browse/TUSCANY-1211).
> > > >
> > > > You should now be able to do what you asked:
> > > >
> > > > body.setDataObject("anyType",DataObject);
> > > >
> > > > Let me know how it works.
> > > >
> > > > Thanks,
> > > > Frank
> > > >
> > >
> > >
---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org
Re: xsd:any problem
Posted by Chris Mildebrandt <ch...@plasticfrog.info>.
Hi Frank,
I replaced my code with what you suggested:
Property addressProperty =
context.getXSDHelper().getGlobalProperty("http://www.example.org/Address",
"Address",
true);
person.setDataObject(addressProperty, address);
The call to setDataObject() generates the following exception:
Exception in thread "main" java.lang.ClassCastException:
org.apache.tuscany.sdo.impl.DynamicDataObjectImpl
at org.eclipse.emf.ecore.util.BasicFeatureMap.set(BasicFeatureMap.java:1026)
at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eOpenSet(BasicEObjectImpl.java:723)
at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjectImpl.java:658)
at org.apache.tuscany.sdo.impl.DataObjectImpl.set(DataObjectImpl.java:142)
at org.apache.tuscany.sdo.util.DataObjectUtil.setDataObject(DataObjectUtil.java:122)
at org.apache.tuscany.sdo.impl.DataObjectImpl.setDataObject(DataObjectImpl.java:1105)
at com.ibm.isd.mapper.impl.Test.main(Test.java:33)
Any Ideas? Thanks for your help this far,
-Chris
On 5/7/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> Hi Chris,
>
> The problem is this line of code:
>
> > person.setDataObject("address:Address", address);
>
> SDO doesn't support qualified names in string (path) get/set methods.
> That's why it ignores the "address:" prefix, and simply demand-creates
> another "Address" property ("PersonType:address").
>
> To accomplish what you want, you can explicitly locate the address:Address
> property like this:
>
> Property addressProperty =
> xsdHelper.getGlobalProperty("http://www.example.org/Address", "Address",
> true);
>
> Then you can set it like this:
>
> person.setDataObject(addressProperty, address);
>
> Frank.
>
>
> eyeofthefrog@gmail.com wrote on 05/06/2007 04:08:33 PM:
>
> > Hi Frank (or anyone else that may be able to help),
> >
> > I have a related question to Ashish's. I have the following two schemas:
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > targetNamespace="http://www.example.org/Person"
> > xmlns:person="http://www.example.org/Person"
> > elementFormDefault="qualified">
> > <xsd:element name="Person" type="person:PersonType"></xsd:element>
> >
> > <xsd:complexType name="PersonType">
> > <xsd:sequence>
> > <xsd:element name="Name" type="xsd:string"></xsd:element>
> > <xsd:element name="Age" type="xsd:string"></xsd:element>
> > <xsd:any namespace="##other" processContents="lax"
> minOccurs="0"
> > maxOccurs="unbounded"/>
> > </xsd:sequence>
> > </xsd:complexType>
> > </xsd:schema>
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > targetNamespace="http://www.example.org/Address"
> > xmlns:address="http://www.example.org/Address"
> > elementFormDefault="qualified">
> >
> > <xsd:element name="Address"
> type="address:AddressType"></xsd:element>
> >
> > <xsd:complexType name="AddressType">
> > <xsd:sequence>
> > <xsd:element name="Street" type="xsd:string"></xsd:element>
> > <xsd:element name="City" type="xsd:string"></xsd:element>
> > <xsd:element name="Zip" type="xsd:string"></xsd:element>
> > </xsd:sequence>
> > </xsd:complexType>
> > </xsd:schema>
> >
> >
> > I use the following code to generate my XML:
> >
> > public static void main(String[] args) throws Exception
> > {
> > HelperContext context = SDOUtil.createHelperContext();
> >
> > context.getXSDHelper().define(new
> > FileInputStream("./Person.xsd"), (new
> > File("./Base.xsd")).toURI().toString());
> > context.getXSDHelper().define(new
> > FileInputStream("./Address.xsd"), (new
> > File("./Additional.xsd")).toURI().toString());
> >
> > DataObject person =
> > context.getDataFactory().create("http://www.example.org/Person",
> > "PersonType");
> > DataObject address =
> > context.getDataFactory().create("http://www.example.org/Address",
> > "AddressType");
> >
> > person.set("Name", "Bart");
> > person.set("Age", "10");
> >
> > address.set("Street", "123 Fake St.");
> > address.set("City", "Springfield");
> > address.set("Zip", "46392");
> >
> > person.setDataObject("address:Address", address);
> >
> > context.getXMLHelper().save(person,
> > "http://www.example.org/Person", "Person", System.out);
> > }
> >
> > This gives the following XML:
> >
> > <?xml version="1.0" encoding="ASCII"?>
> > <person:Person
> xmlns:PersonType="http://www.example.org/Person/PersonType"
> > xmlns:address="http://www.example.org/Address"
> > xmlns:person="http://www.example.org/Person">
> > <person:Name>Bart</person:Name>
> > <person:Age>10</person:Age>
> > <PersonType:Address>
> > <address:Street>123 Fake St.</address:Street>
> > <address:City>Springfield</address:City>
> > <address:Zip>46392</address:Zip>
> > </PersonType:Address>
> > </person:Person>
> >
> > My concern is the "PersonType:Address" element. I'd like that to be
> > "address:Address" instead. Am I doing something wrong in my schema
> > definitions and/or code?
> >
> > Thanks for any help you can provide,
> > -Chris
> >
> > On 4/16/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > > Ashish,
> > >
> > > I implemented the on-the-fly property creation support over the
> weekend
> > > (see https://issues.apache.org/jira/browse/TUSCANY-1211).
> > >
> > > You should now be able to do what you asked:
> > >
> > > body.setDataObject("anyType",DataObject);
> > >
> > > Let me know how it works.
> > >
> > > Thanks,
> > > Frank
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: tuscany-user-help@ws.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org
Re: xsd:any problem
Posted by Frank Budinsky <fr...@ca.ibm.com>.
Hi Chris,
The problem is this line of code:
> person.setDataObject("address:Address", address);
SDO doesn't support qualified names in string (path) get/set methods.
That's why it ignores the "address:" prefix, and simply demand-creates
another "Address" property ("PersonType:address").
To accomplish what you want, you can explicitly locate the address:Address
property like this:
Property addressProperty =
xsdHelper.getGlobalProperty("http://www.example.org/Address", "Address",
true);
Then you can set it like this:
person.setDataObject(addressProperty, address);
Frank.
eyeofthefrog@gmail.com wrote on 05/06/2007 04:08:33 PM:
> Hi Frank (or anyone else that may be able to help),
>
> I have a related question to Ashish's. I have the following two schemas:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> targetNamespace="http://www.example.org/Person"
> xmlns:person="http://www.example.org/Person"
> elementFormDefault="qualified">
> <xsd:element name="Person" type="person:PersonType"></xsd:element>
>
> <xsd:complexType name="PersonType">
> <xsd:sequence>
> <xsd:element name="Name" type="xsd:string"></xsd:element>
> <xsd:element name="Age" type="xsd:string"></xsd:element>
> <xsd:any namespace="##other" processContents="lax"
minOccurs="0"
> maxOccurs="unbounded"/>
> </xsd:sequence>
> </xsd:complexType>
> </xsd:schema>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> targetNamespace="http://www.example.org/Address"
> xmlns:address="http://www.example.org/Address"
> elementFormDefault="qualified">
>
> <xsd:element name="Address"
type="address:AddressType"></xsd:element>
>
> <xsd:complexType name="AddressType">
> <xsd:sequence>
> <xsd:element name="Street" type="xsd:string"></xsd:element>
> <xsd:element name="City" type="xsd:string"></xsd:element>
> <xsd:element name="Zip" type="xsd:string"></xsd:element>
> </xsd:sequence>
> </xsd:complexType>
> </xsd:schema>
>
>
> I use the following code to generate my XML:
>
> public static void main(String[] args) throws Exception
> {
> HelperContext context = SDOUtil.createHelperContext();
>
> context.getXSDHelper().define(new
> FileInputStream("./Person.xsd"), (new
> File("./Base.xsd")).toURI().toString());
> context.getXSDHelper().define(new
> FileInputStream("./Address.xsd"), (new
> File("./Additional.xsd")).toURI().toString());
>
> DataObject person =
> context.getDataFactory().create("http://www.example.org/Person",
> "PersonType");
> DataObject address =
> context.getDataFactory().create("http://www.example.org/Address",
> "AddressType");
>
> person.set("Name", "Bart");
> person.set("Age", "10");
>
> address.set("Street", "123 Fake St.");
> address.set("City", "Springfield");
> address.set("Zip", "46392");
>
> person.setDataObject("address:Address", address);
>
> context.getXMLHelper().save(person,
> "http://www.example.org/Person", "Person", System.out);
> }
>
> This gives the following XML:
>
> <?xml version="1.0" encoding="ASCII"?>
> <person:Person
xmlns:PersonType="http://www.example.org/Person/PersonType"
> xmlns:address="http://www.example.org/Address"
> xmlns:person="http://www.example.org/Person">
> <person:Name>Bart</person:Name>
> <person:Age>10</person:Age>
> <PersonType:Address>
> <address:Street>123 Fake St.</address:Street>
> <address:City>Springfield</address:City>
> <address:Zip>46392</address:Zip>
> </PersonType:Address>
> </person:Person>
>
> My concern is the "PersonType:Address" element. I'd like that to be
> "address:Address" instead. Am I doing something wrong in my schema
> definitions and/or code?
>
> Thanks for any help you can provide,
> -Chris
>
> On 4/16/07, Frank Budinsky <fr...@ca.ibm.com> wrote:
> > Ashish,
> >
> > I implemented the on-the-fly property creation support over the
weekend
> > (see https://issues.apache.org/jira/browse/TUSCANY-1211).
> >
> > You should now be able to do what you asked:
> >
> > body.setDataObject("anyType",DataObject);
> >
> > Let me know how it works.
> >
> > Thanks,
> > Frank
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org