Hi Erich, I'm looking at this but currently I am getting an exception generated here ...
saveGraph(staticGraph); I'll investigate why this might be. Have you seen anything like this? I noticed I had to do some changes to your code to make it compile, which implies you are using some generator options. For completeness, can you let me know what generator options you are using. Regards, Kelvin. **************** static graph ********************** Exception in thread "main" java.lang.IllegalStateException: The containment feature could not be located at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eContainmentFeature( BasicEObjectImpl.java:475) at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eContainmentFeature( BasicEObjectImpl.java:439) at org.apache.tuscany.sdo.impl.DataObjectImpl.getContainmentProperty( DataObjectImpl.java:182) at org.apache.tuscany.sdo.util.resource.ChangeSummaryStreamSerializer.saveChangeSummary (ChangeSummaryStreamSerializer.java:609) at org.apache.tuscany.sdo.util.resource.SDOXMLResourceImpl$SDOXMLSaveImpl.saveChangeSummary (SDOXMLResourceImpl.java:806) at org.apache.tuscany.sdo.util.resource.SDOXMLResourceImpl$SDOXMLSaveImpl.saveDataTypeElementSingle (SDOXMLResourceImpl.java:816) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveFeatures( XMLSaveImpl.java:1370) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveElementID( XMLSaveImpl.java:2462) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveElement( XMLSaveImpl.java:1036) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveElement( XMLSaveImpl.java:922) at org.apache.tuscany.sdo.util.resource.SDOXMLResourceImpl$SDOXMLSaveImpl.saveElementFeatureMap (SDOXMLResourceImpl.java:844) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveFeatures( XMLSaveImpl.java:1355) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.writeTopObject( XMLSaveImpl.java:627) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.traverse(XMLSaveImpl.java :552) at org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.save(XMLSaveImpl.java:233) at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doSave( XMLResourceImpl.java:203) at org.eclipse.emf.ecore.resource.impl.ResourceImpl.save( ResourceImpl.java:993) at org.apache.tuscany.sdo.helper.XMLDocumentImpl.save( XMLDocumentImpl.java:205) at org.apache.tuscany.sdo.helper.XMLDocumentImpl.save( XMLDocumentImpl.java:159) at org.apache.tuscany.sdo.helper.XMLHelperImpl.save(XMLHelperImpl.java :139) at org.apache.tuscany.sdo.helper.XMLHelperImpl.save(XMLHelperImpl.java :134) at t_user.erich_rueede.DgExtended.saveGraph(DgExtended.java:69) at t_user.erich_rueede.DgExtended.main(DgExtended.java:42) On 07/07/07, Erich Rueede <[EMAIL PROTECTED]> wrote:
Hi Frank and Kelvin since I don't know how to make attachments work for the mailing list, here's a text copy of its content: The XSD: ======== <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://abc.com/services" xmlns:tns="http://abc.com/services" xmlns:sdo="commonj.sdo" xmlns:sdoJava="commonj.sdo/java" xmlns:sdoXml="commonj.sdo/xml" sdoJava:package="com.abc.services" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="commonj.sdo" schemaLocation="datagraph.xsd" /> <xsd:complexType name="NestedType"> <xsd:sequence> <xsd:element name="test1" type="xsd:string" /> <xsd:element name="test2" type="xsd:string" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="MyDataGraph"> <complexContent> <extension base="sdo:BaseDataGraphType"> <xsd:sequence> <xsd:element name="NestedType" type="tns:NestedType" /> </xsd:sequence> </extension> </complexContent> </xsd:complexType> <xsd:complexType name="Input"> <xsd:sequence> <xsd:element name="MyDataGraph" type="tns:MyDataGraph"/> </xsd:sequence> </xsd:complexType> </xsd:schema> The Java Test: ============== package com.abc.services; import java.io.ByteArrayOutputStream; import java.io.IOException; import org.apache.tuscany.sdo.util.SDOUtil; import com.abc.services.impl.TestFactoryImpl; import commonj.sdo.DataGraph; import commonj.sdo.DataObject; import commonj.sdo.Type; import commonj.sdo.helper.XMLHelper; import commonj.sdo.impl.HelperProvider; public class TestABC { public static void main(String[] args) { TestFactory.INSTANCE.register(HelperProvider.getDefaultContext()); NestedType nested; System.out.println("**************** static graph **********************\n"); Input input = TestFactory.INSTANCE.createInput(); MyDataGraph staticGraph = TestFactory.INSTANCE.createMyDataGraph(); nested = TestFactory.INSTANCE.createNestedType(); staticGraph.setNestedType(nested); ((DataObject)nested).set("test1", "test1"); ((DataObject)nested).set("test2", "test2"); staticGraph.getChangeSummary().beginLogging(); ((DataObject)nested).set("test2", "test2_modified"); nested.setTest1("test1_modified"); input.setMyDataGraph(staticGraph); saveGraph(staticGraph); System.out.println("\n\n"); System.out.println("**************** dynamic graph **********************\n"); DataGraph dynamicGraph = SDOUtil.createDataGraph(); Type type = ((TestFactoryImpl)TestFactory.INSTANCE).getNestedType(); nested = (NestedType)dynamicGraph.createRootObject(type); ((DataObject)nested).set("test1", "test1"); ((DataObject)nested).set("test2", "test2"); dynamicGraph.getChangeSummary().beginLogging(); ((DataObject)nested).set("test2", "test2_modified"); nested.setTest1("test1_modified"); saveGraph(dynamicGraph); } /** * @param dataobject */ private static void saveGraph(MyDataGraph dataobject) { ByteArrayOutputStream os = new ByteArrayOutputStream(); try { XMLHelper.INSTANCE.save((DataObject) dataobject, null, "datagraph", os); System.out.println(os.toString()); } catch (IOException e) { e.printStackTrace(); } } /** * @param datagraph */ private static void saveGraph(DataGraph datagraph) { try { ByteArrayOutputStream os = new ByteArrayOutputStream(); SDOUtil.saveDataGraph(datagraph, os, null); System.out.println(os.toString()); } catch (IOException e1) { e1.printStackTrace(); } } } Please note, it's the static graph approach which doesn't seem to record the summary. The dynamic approach using the commonj.sdo.DataGraph works fine. Thanks Erich --- Frank Budinsky <[EMAIL PROTECTED]> wrote: > Hi Erich, > > This sounds like a little fishy to me, since it > looks like you are > serializing your specialized DataGraph inside > another DataGraph. The SDO > spec says that you can't nest change summaries, > which could be the > problem. Note that in SDO 2.1, commonj.sdo.DataGraph > and a DataObject-type > DataGraph are two alternative ways of creating a > graph of dataobjects.This > is something that we'd like to clean up in SDO3. I > think tere may be a > Tuscany sample that explains the two approaches: is > that right Kelvin? > > For your specialized DataObject-type MyDataGraph > you should just > serialize it using XMLHelper.save(). You shouldn't > use a > commonj.sdo.DataGraph in this case. This may be the > problem, but then > again, there may also be a bug. You say below, that > you attached a test > case, but I don't see any attachments? > > Thanks, > Frank. > > Erich Rueede <[EMAIL PROTECTED]> wrote on 07/06/2007 > 10:21:26 AM: > > > Hi all > > > > I have created an XML Schema with a toplevel > > dataobject and a contained datagraph as specified > in > > the webservice sample part of the SDO 2.1 spec > (page > > 132). > > > > I then generated static SDO code from the XML > schema > > which resulted in implementations for the toplevel > > dataobject and the contained datagraph. > > > > The generated code for the static datagraph > somehow > > differs quite a lot from the dynamic programming > model > > using the commonj.sdo.DataGraph. > > > > When I turn on logging on the generated static > > datagraph, I notice that no changes are getting > > recorded. It contains a partial change summary > without > > any changes: > > > > <?xml version="1.0" encoding="ASCII"?> > > <datagraph > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xmlns:tns="http://abc.com/services" > > xsi:type="tns:MyDataGraph"> > > <changeSummary logging="true" /> > > <NestedType> > > <test1>test1_modified</test1> > > <test2>test2_modified</test2> > > </NestedType> > > </datagraph> > > > > Using the dynamic programming model, it contains a > > full change summary with recorded changes: > > > > <?xml version="1.0" encoding="ASCII"?> > > <sdo:datagraph > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xmlns:sdo="commonj.sdo" > > > > > xmlns:sdo_1="http://www.apache.org/tuscany/2005/SDO" > > xmlns:tns="http://abc.com/services"> > > <changeSummary xmlns="" > > logging="true"> > > <objectChanges key="#//@eRootObject"> > > <value xsi:type="sdo_1:ChangeSummarySetting" > > featureName="test2" dataValue="test2"/> > > <value xsi:type="sdo_1:ChangeSummarySetting" > > featureName="test1" dataValue="test1"/> > > </objectChanges> > > </changeSummary> > > <tns:NestedType> > > <test1>test1_modified</test1> > > <test2>test2_modified</test2> > > </tns:NestedType> > > </sdo:datagraph> > > > > Is the static approach of modelling a datagraph > within > > an XSD basically supported with the current > TUSCANY > > implementation? > > > > I attached a sample XSD and test implementation. > > > > Thanks > > Erich > > > > > > > > > > > ____________________________________________________________________________________ > > Choose the right car based on your needs. Check > out Yahoo! Autos > > new Car Finder tool. > > http://autos.yahoo.com/carfinder/ > > > --------------------------------------------------------------------- > > 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] > > ____________________________________________________________________________________ Looking for a deal? Find great prices on flights and hotels with Yahoo! FareChase. http://farechase.yahoo.com/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]