Re: xsd:any problem

2007-05-07 Thread Frank Budinsky
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.


[EMAIL PROTECTED] 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:NameBart/person:Name
   person:Age10/person:Age
   PersonType:Address
 address:Street123 Fake St./address:Street
 address:CitySpringfield/address:City
 address:Zip46392/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 [EMAIL PROTECTED] 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: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: xsd:any problem

2007-05-07 Thread Chris Mildebrandt

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 [EMAIL PROTECTED] 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.


[EMAIL PROTECTED] 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:NameBart/person:Name
   person:Age10/person:Age
   PersonType:Address
 address:Street123 Fake St./address:Street
 address:CitySpringfield/address:City
 address:Zip46392/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 [EMAIL PROTECTED] 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 

Re: xsd:any problem

2007-05-07 Thread Frank Budinsky
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.


[EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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.
 
 
  [EMAIL PROTECTED] 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;
   

Re: xsd:any problem

2007-05-07 Thread Chris Mildebrandt

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 [EMAIL PROTECTED] 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.


[EMAIL PROTECTED] 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 

Re: xsd:any problem

2007-05-07 Thread Frank Budinsky
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


[EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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.
 
 
  [EMAIL PROTECTED] wrote on 05/07/2007 09:54:04 AM:
 
   Hi Frank,
  
   I replaced 

Re: xsd:any problem

2007-05-07 Thread Chris Mildebrandt

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 [EMAIL PROTECTED] 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


[EMAIL PROTECTED] 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.
 

Re: xsd:any problem

2007-05-07 Thread Frank Budinsky
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.

[EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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
 
 
  [EMAIL PROTECTED] 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);
  
   

Re: xsd:any problem

2007-04-12 Thread Ashish Panchal
Thanks for reply Frank,

I tried, but Iam not able to find any method 'getOpenContentProperty' in
commonj.sdo.helper.TypeHelper. It seems that this method will return a
property. What Iam trying to do is something  like -

body.setDataObject(anyType,DataObject);

where anyType is defined in schema as  -
xsd:complexType
xsd:sequence
xsd:any maxOccurs=1 minOccurs=1 /
/xsd:sequence
 /xsd:complexType

and DataObject is the object created by arbitrary input xml.

Ashish


- Original Message - 
From: Frank Budinsky [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, April 11, 2007 11:12 PM
Subject: Re: xsd:any problem


 Hi Ashish,

 I'm not sure what you tried, but something like this should work:

   body.setDataObject(typeHelper.getOpenContentProperty(the target
 namespace???, ServiceInput), value);

 Frank.

 Ashish Panchal [EMAIL PROTECTED] wrote on 04/11/2007 12:00:50 PM:

  Hi,
 
  Iam trying to create a dataobject of xsd which has one of the
  element as xsd:any type. Sample is -
 
  xsd:element name=ServiceInput type=ServiceInputType/
 
   xsd:complexType name=ServiceInputType
xsd:sequence
 xsd:element minOccurs=0 ref=header/
 xsd:element minOccurs=0 ref=body/
/xsd:sequence
   /xsd:complexType
 
  xsd:element name=body
xsd:complexType
 xsd:sequence
  xsd:any maxOccurs=1 minOccurs=1 processContents=lax/
 /xsd:sequence
/xsd:complexType
   /xsd:element
 
 
  The xsd:any is used to allow different xml under the 'body'
  element, as the incoming xml structure is not fixed.
  Data object for this xsd is created, but Iam not able to set the
  dataobject of the variable xml structure under the 'body' element.
 
  I would appreciate any help.
 
  Thanks
  Ashish

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]






-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: xsd:any problem

2007-04-11 Thread Frank Budinsky
Hi Ashish,

I'm not sure what you tried, but something like this should work:

  body.setDataObject(typeHelper.getOpenContentProperty(the target 
namespace???, ServiceInput), value);

Frank.

Ashish Panchal [EMAIL PROTECTED] wrote on 04/11/2007 12:00:50 PM:

 Hi,
 
 Iam trying to create a dataobject of xsd which has one of the 
 element as xsd:any type. Sample is -
 
 xsd:element name=ServiceInput type=ServiceInputType/
 
  xsd:complexType name=ServiceInputType
   xsd:sequence
xsd:element minOccurs=0 ref=header/
xsd:element minOccurs=0 ref=body/
   /xsd:sequence
  /xsd:complexType
 
 xsd:element name=body 
   xsd:complexType 
xsd:sequence 
 xsd:any maxOccurs=1 minOccurs=1 processContents=lax/ 
/xsd:sequence 
   /xsd:complexType 
  /xsd:element
 
 
 The xsd:any is used to allow different xml under the 'body' 
 element, as the incoming xml structure is not fixed.
 Data object for this xsd is created, but Iam not able to set the 
 dataobject of the variable xml structure under the 'body' element.
 
 I would appreciate any help.
 
 Thanks
 Ashish

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]