thanks, it was what I was looking for.> To: tuscany-user@ws.apache.org>
Subject: RE: Convert HelperContext to XSD> From: [EMAIL PROTECTED]> Date: Mon,
31 Mar 2008 12:15:43 -0400> > There's a simple example in XSDHelperTestCase.>
testXSDGeneration_DynamicSDOType().> > Frank.> > Gerardo Corro <[EMAIL
PROTECTED]> wrote on 03/31/2008 11:50:16 AM:> > > > > Or even better, if you
have a working example of:> > > > XSDHelper.INSTANCE.generate> > > > It will be
very appreciated.> > > > Thanks in advanced.> > > > ///RG> > > > > > From:
[EMAIL PROTECTED]: [EMAIL PROTECTED]: > > RE: Convert HelperContext to XSDDate:
Mon, 31 Mar 2008 09:13:52 -0600> > > > > > Hi, I made an slight adaptation to
an existing example of the > > distribution, however I get exceptions at
runtime. Please assist: > > package
org.apache.tuscany.samples.sdo.advanced;import java.util.> > ArrayList;import
java.util.List;import org.apache.tuscany.samples.> > sdo.SampleBase;import
org.apache.tuscany.sdo.api.SDOUtil;import > > commonj.sdo.DataObject;import
commonj.sdo.Property;import commonj.> > sdo.Type;import
commonj.sdo.helper.DataFactory;import commonj.sdo.> >
helper.HelperContext;import commonj.sdo.helper.TypeHelper;import > >
commonj.sdo.helper.XSDHelper;public class MedicalScenario1 extends > >
SampleBase { private static final String sdoApiUri = "commonj.> > sdo"; private
static final String peopleURI = "www.example.> > org/people"; private static
final String medicalURI = "www.> > example.org/MedicalTest"; boolean
typesViaAPI = false; public > > MedicalScenario1(String[] args, Integer
userLevel) { > > super(userLevel, SAMPLE_LEVEL_ADVANCED); typesViaAPI = true; >
> } public MedicalScenario1(Integer userLevel) { > > super(userLevel,
SAMPLE_LEVEL_ADVANCED); } /** * @param > > args * @throws Exception */ public
static void > > main(String[] args) throws Exception { MedicalScenario1 s = > >
new MedicalScenario1(args, COMMENTARY_FOR_NOVICE); s.run(); > > } /* * metadata
for the sample documenting the areas of SDO > > that are explored */ public
static int[] CORE_FUNCTION = { > > SDOFacets.CONTAINMENT, SDOFacets.> >
CREATE_TYPES_USING_THE_SDO_API, SDOFacets.> > CREATE_TYPES_USING_XML_SCHEMA,
SDOFacets.OPEN_CONTENT, > > SDOFacets.NON_CONTAINMENT }; public static int[] >
> SIGNIFICANT_FUNCTION = { SDOFacets.> > CREATE_DATAOBJECTS_BY_NAME,
SDOFacets.ISMANY_PROPERTIES, > > SDOFacets.GENERIC_DATA_GRAPH_TRAVERSAL,
SDOFacets.> > SAVING_DATA_TO_XML }; public void runSample() throws Exception> >
{ HelperContext scope = SDOUtil.createHelperContext(); > > commentary("In this
execution of the sample we use Types created\n" > > + "using the SDO API");
createTypesViaAPI(scope); > > commentary( COMMENTARY_FOR_NOVICE, > > "The
DataFactory associated with the scope that the types were > > created within\n"
+ "can be used to create an instance of the Person> > Type\n\n" + "DataFactory
dataFactory = scope.getDataFactory();\n" + > > "DataObject person1 =
dataFactory.create(\"www.example.org/people\",> > \"Person\");"); DataFactory
dataFactory = scope.> > getDataFactory(); DataObject person1 = dataFactory.> >
create("www.example.org/people", "Person"); commentary("The > > setString() of
dataObject method is used to set the properties of > > the\n" + "new Person
DataObject, including a unique identifier > > reference value\n" + "for the
Person instance.\n\n" + "person1.> > setString(\"id\", \"1\");\n" +
"person1.setString(\"name\", \"Joe > > Johnson Snr.\");\n" +
"person1.setString(\"gender\", \"male\"););");> > person1.setString("id", "1");
person1.setString("name", "Joe > > Johnson Snr."); person1.setString("gender",
"male"); > > commentary("An alternative approach to using the DataFactory > >
directly to create\n" + "all DataObjects is to use a top-down > > approach,
where we create the\n" + "root object for a data graph, > > and then use the
createDataObject(String propertyName)\n" + "method > > to create the contained
DataObjects. Here we create the overall\n" > > + "medical test DataObject, and
then create the contained > > \"referrals\" DataObject\n\n" + "DataObject test
= dataFactory.> > create(\"www.example.org/MedicalTest\", \"Test\");\n" +
"DataObject > > referrals = test.createDataObject(\"referrals\");"); > >
DataObject test = dataFactory.create("www.example.org/MedicalTest", > >
"Test"); DataObject referrals = test.> > createDataObject("referrals");
commentary("Now we can add the> > person we created earlier into the set of
people who have\n" + "been> > referred for this medical test.\n\n" +
"test.set(\"referrals\", > > referrals);\n" +
"referrals.getList(\"person\").add(person1);"); > > test.set("referrals",
referrals); referrals.> > getList("person").add(person1); commentary("Let's
take a look> > at how the current state of the data" + "graph is rendered in
XML > > ..."); System.out.println(scope.getXMLHelper().save(test, > >
"www.example.org/MedicalTest", "test")); commentary("The > > scenario unfolds
and the Joe Johnson Snr. becomes a patient\n\n" + > > "DataObject patients =
test.createDataObject(\"patients\");\n" + > >
"patients.getList(\"person\").add(person1);"); DataObject > > patients =
test.createDataObject("patients"); patients.> > getList("person").add(person1);
commentary("Having added Joe > > Johnson Snr. to the set of patients we can
see\n" + "the way that > > SDO preserves a single containment hierarchy within
a\n" + > > "datagraph. If we look at the XML rendering of the graph again, we >
> will\n" + "see that by adding him to the set of patients he has been> >
removed from the\n" + "containment property associated with the > > referrals
set ..."); System.out.println(scope.getXMLHelper().> > save(test,
"www.example.org/MedicalTest", "test")); > > commentary("The 'Person' Type we
are making use of here has been > > designed to be\n" + "multi-purpose, in that
the type has been > > declared to be 'Open'.\n" + "That means that we can make
use of > > 'Open Content' Properties\n" + "(If the type system has been
defined> > using an XML schema\n" + "then these properties will derive from > >
global elements)\n" + "We can look up open content Properties using > > the
TypeHelper\n\n" + "Property conditionProperty = scope.> >
getTypeHelper().getOpenContentProperty(\n" + " \"www.example.> >
org/MedicalTest\", \"condition\");"); Property > > conditionProperty =
scope.getTypeHelper().getOpenContentProperty( > >
"www.example.org/MedicalTest", "condition"); commentary("We > > can create a
value of the appropriate Type for this open\n" + > > "content Property\n\n" +
"DataObject condition = dataFactory.> > create(conditionProperty.getType());\n"
+ "condition.> > setString(\"name\", \"Panar Syndrome\");"); DataObject > >
condition = dataFactory.create(conditionProperty.getType()); > >
condition.setString("name", "Panar Syndrome"); commentary("If> > you ask a
DataObject that has an 'Open' Type for its list of\n" + > > "values associated
with an open content Property, and the > > DataObject\n" + "doesn't currently
have any values for the Property,> > it will return\n" + "an empty list. We can
use the list to add > > values for the Property\n\n" + "List conditions =
person1.> > getList(conditionProperty);\n" + "conditions.add(condition);"); > >
List conditions = person1.getList(conditionProperty); > >
conditions.add(condition); commentary("A further look at the > > data graph in
XML form shows\n" + "the presence of the new condition> > Property's value
..."); System.out.println(scope.> > getXMLHelper().save(test, "www.example.> >
org/MedicalTest", "test")); commentary("Having looked at the > > way SDO
handles Open content\n" + "We now turn our attention to > > 'non-containment'
relationships.\n" + "To do this we first create > > the set of people in the
test that\n" + "constitute the blood > > relatives of patients --
'relatives'\n" + "and define a new person > > to be Joe Johnson Snr's
child.\n\n" + "DataObject relatives = test.> >
createDataObject(\"relatives\");\n" + "DataObject person2 = > >
relatives.createDataObject(\"person\");\n" + "person2.> > setString(\"id\",
\"2\");\n" + "person2.setString(\"name\", \"Joe > > Johnson Jnr.\");\n" +
"person2.setString(\"gender\", \"male\");"); > > DataObject relatives =
test.createDataObject("relatives"); > > DataObject person2 =
relatives.createDataObject("person"); > > person2.setString("id", "2");
person2.setString("name", "Joe > > Johnson Jnr."); person2.setString("gender",
"male"); > > commentary("Another quick look at the XML rendering of the graph >
> confirms that\n" + "the set of relatives now includes Joe Johnson > > Jnr,
but we haven't yet\n" + "defined who he is related to, or > > how.");
System.out.println(scope.getXMLHelper().save(test, > >
"www.example.org/MedicalTest", "test")); commentary("The > > Person type has a
Property 'relative'\n" + "so we create a relative > > for Joe Johnson Snr.\n\n"
+ "DataObject relation = person1.> > createDataObject(\"relative\");\n" +
"relation.set(\"target\", > > person2);\n" + "relation.set(\"relationship\",
\"child\");"); > > DataObject relation = person1.createDataObject("relative");
> > relation.set("target", person2); relation.set("relationship",> > "child");
commentary("Now when we look at the XML rendering > > of the data graph\n" +
"we can see that the action of setting the > > 'target' of the\n" +
"relationship to Joe Johnson Jnr didn't > > displace him from the\n" + "set of
'relatives', because the > > 'target' Property is a\n" + "non-containment
Property. This non-> > containment relationship\n" + "is reflected in the XML
by a > > reference to the Person DataObject\n" + "describing Joe Johnson Jnr,>
> \"2\" ...\n" + "If the Type system has been created from an XML > > schema
then the\n" + "unique ID of the target can be used in the > > serialization.\n"
+ "If however the type system was defined > > dynamically, then the
reference\n" + "will be represented as an > > XPath from the root of the data
graph."); System.out.> > println(scope.getXMLHelper().save(test, "www.example.>
> org/MedicalTest", "test")); commentary("Now that the graph is> > complete we
can use the PrintDataGraph sample utility\n" + > > "to reveal the full SDO
nature of the final data graph\n\n" + > > ""); PrintDataGraph printer = new > >
PrintDataGraph(COMMENTARY_FOR_ADVANCED); printer.> > printDataObject(test);
System.out.println(printer.getBuf()); > > } /** * @throws Exception * @throws
FileNotFoundException> > */ private void createTypesViaAPI(HelperContext scope)
throws > > Exception { List typeDeclarations = new ArrayList(); > > TypeHelper
typeHelper = scope.getTypeHelper(); Type > > stringType =
typeHelper.getType(sdoApiUri, "String"); Type > > dateType =
typeHelper.getType(sdoApiUri, "Date"); Type > > booleanType =
typeHelper.getType(sdoApiUri, "Boolean"); // > > <complexType name="Person"> //
<sequence> // <element > > name="dob" type="date"/> // <element name="relative"
> > maxOccurs="unbounded" type="tns:Relative"/> // <any > > namespace="##other"
processContents="lax" maxOccurs="unbounded"/> > > // </sequence> // <attribute
name="id" type="ID"/> // > > <attribute name="name" type="string"/> //
<attribute > > name="gender" type = "tns:Gender"/> // </complexType> > >
DataObject personTypeDesc = createTypeDescription(scope, peopleURI, > >
"Person"); typeDeclarations.add(personTypeDesc); > >
addPropertyDescription(personTypeDesc, stringType, "name"); > >
addPropertyDescription(personTypeDesc, dateType, "dob"); > >
addPropertyDescription(personTypeDesc, stringType, "id"); // set to > > unique
// identifier? > > addPropertyDescription(personTypeDesc, stringType,
"gender"); // > > restrict? DataObject relativeType = > >
createTypeDescription(scope, peopleURI, "Relative"); > > // forward declare the
Relative type typeDeclarations.> > add(relativeType); DataObject rp = > >
addPropertyDescription(personTypeDesc, relativeType, > > "relative");
rp.setBoolean("many", true); > > personTypeDesc.set("open", Boolean.TRUE); //
<complexType > > name="Relative"> // <attribute name="target" type="IDREF" > >
sdoxml:propertyType="tns:Person" // use="required"/> > > // <attribute
name="relationship" type="string" /> // > > <attribute name="genetic"
use="optional" type="boolean"/> // > > </complexType>
addPropertyDescription(relativeType, > > stringType, "relationship"); > >
addPropertyDescription(relativeType, booleanType, "genetic"); > > DataObject
targetPersonProp = addPropertyDescription(relativeType, > > personTypeDesc,
"target"); targetPersonProp.> > setBoolean("containment", false); //
<complexType > > name="PersonSet"> // <sequence> // <element > > name="person"
type="tns:Person" maxOccurs="unbounded"/> // > > </sequence> // </complexType>
DataObject pSet = > > createTypeDescription(scope, peopleURI, "PersonSet"); > >
typeDeclarations.add(pSet); DataObject pSetProperty = > >
addPropertyDescription(pSet, personTypeDesc, > > "person");
pSetProperty.setBoolean("many", true); // > > <complexType name="Condition"> //
<sequence> // > > <element name="diagnosed" type="date" /> // </sequence> > >
// <attribute name="name" type="tns:ConditionName" /> // > > </complexType>
DataObject condition = > > createTypeDescription(scope, medicalURI,
"Condition"); > > typeDeclarations.add(condition); > >
addPropertyDescription(condition, booleanType, "diagnosed"); > >
addPropertyDescription(condition, stringType, "name"); // constrain?> > //
<complexType name="Test"> // <sequence> // <element> > name="referrals"
type="people:PersonSet" /> // <element > > name="patients"
type="people:PersonSet" /> // <element > > name="relatives"
type="people:PersonSet" /> // </sequence> > > // </complexType> DataObject
testType = > > createTypeDescription(scope, medicalURI, "Test"); > >
typeDeclarations.add(testType); > > addPropertyDescription(testType, pSet,
"referrals"); > > addPropertyDescription(testType, pSet, "patients"); > >
addPropertyDescription(testType, pSet, "relatives"); List > > types =
typeHelper.define(typeDeclarations); DataObject p = > >
scope.getDataFactory().create("commonj.sdo", "Property"); p.> > set("type",
typeHelper.getType(medicalURI, "Condition")); p.> > set("name", "condition");
p.setBoolean("many", true); > > p.setBoolean("containment", true); // why is
this not the default? > > typeHelper.defineOpenContentProperty(medicalURI, p);
System.> > out.print("XSD create is: " + XSDHelper.INSTANCE.generate(types)); >
> } /** * @param uri * @param name * @return */ > > private DataObject
createTypeDescription(HelperContext scope, String> > uri, String name) {
DataObject typeDesc = scope.> > getDataFactory().create(sdoApiUri, "Type");
typeDesc.> > set("name", name); typeDesc.set("uri", uri); return > > typeDesc;
} private DataObject addPropertyDescription( > > DataObject
containerTypeDescription, Object propertyType, > > String propertyName) {
DataObject property = > >
containerTypeDescription.createDataObject("property"); > > property.set("type",
propertyType); property.> > setString("name", propertyName); property.> >
setBoolean("containment", true); return property; }} > > > To:
tuscany-user@ws.apache.org> Subject: Re: Convert HelperContext > > to XSD>
From: [EMAIL PROTECTED]> Date: Mon, 31 Mar 2008 10:27:13 > > -0400> > Take a
look at XSDHelper.generate().> > Frank.> > Gerardo > > Corro <[EMAIL
PROTECTED]> wrote on 03/31/2008 10:16:06 AM:> > > > > > > Hi, > > > > I wonder
if theres a way to create a XSD DSO > > definition from a > HelperContext.> > >
> I mean, the normal process> > is to setup a HelperContext from an XSD, > >
from there read an XML > > file that contains the actual DSOs.> > > > I want to
go the create > > Types through the API, and then persist them> > as an XSD. I
wonder > > if there's a way to do that.> > > > Thanks!!!!> > > >
_________________________________________________________________> >> > Connect
to the next generation of MSN Messenger > > http://imagine-> >
msn.com/messenger/launch80/default.aspx?locale=en-> > > >
us&source=wlmailtagline> > > >
--------------------------------------------------------------------->> > To
unsubscribe, e-mail: [EMAIL PROTECTED]> For > > additional commands, e-mail:
[EMAIL PROTECTED]> > > > > Discover the new Windows Vista Learn more! > >
_________________________________________________________________> > Invite
your mail contacts to join your friends list with Windows > > Live Spaces. It's
easy!> > http://spaces.live.com/spacesapi.aspx?> >
wx_action=create&wx_url=/friends.aspx&mkt=en-us> >
---------------------------------------------------------------------> To
unsubscribe, e-mail: [EMAIL PROTECTED]> For additional commands, e-mail: [EMAIL
PROTECTED]>
_________________________________________________________________
Discover the new Windows Vista
http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE