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]


Reply via email to