summaryrefslogtreecommitdiffstats
path: root/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api
diff options
context:
space:
mode:
Diffstat (limited to 'sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api')
-rw-r--r--sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/Event.java63
-rw-r--r--sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/EventListener.java33
-rw-r--r--sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java452
-rw-r--r--sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/SDOUtil.java445
-rw-r--r--sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/XMLStreamHelper.java125
-rw-r--r--sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/overview.html38
6 files changed, 1156 insertions, 0 deletions
diff --git a/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/Event.java b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/Event.java
new file mode 100644
index 0000000000..4b4d0c4050
--- /dev/null
+++ b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/Event.java
@@ -0,0 +1,63 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sdo.api;
+
+import commonj.sdo.Property;
+
+/**
+ * An experimental Tuscany API interface, subject to possible change,
+ * to permit notification of change events on a DataObject instance
+ */
+public interface Event {
+
+ Object getNotifier();
+
+ /**
+ * constants returned from getEventType()
+ */
+ int SET = 1;
+ int UNSET = 2;
+ int ADD = 3;
+ int REMOVE = 4;
+ int ADD_MANY = 5;
+ int REMOVE_MANY = 6;
+ int MOVE = 7;
+ int REMOVE_LISTENER = 8;
+
+ int getEventType();
+
+ /**
+ * get the Property for which the value changed
+ */
+ Property getProperty();
+ Object getOldValue();
+ Object getNewValue();
+
+ /*
+ * returns true if the Property value was in state "set" before this change occurred.
+ */
+ boolean wasSet();
+ boolean isTouch();
+
+ int NO_INDEX = -1;
+ int getPosition();
+
+ }
+
diff --git a/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/EventListener.java b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/EventListener.java
new file mode 100644
index 0000000000..cfb534eaf0
--- /dev/null
+++ b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/EventListener.java
@@ -0,0 +1,33 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sdo.api;
+
+/**
+ * An experimental Tuscany API interface, subject to possible change.
+ * Can be registered with a DataObject instance to permit change
+ * notifications for Property values of the DataObject.
+ * @see SDOHelper#addChangeListener(commonj.sdo.DataObject, EventListener)
+ *
+ */
+public interface EventListener {
+
+ public void eventNotification(Event e);
+
+}
diff --git a/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java
new file mode 100644
index 0000000000..17d9a08a87
--- /dev/null
+++ b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java
@@ -0,0 +1,452 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sdo.api;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.util.List;
+import java.util.Map;
+
+import commonj.sdo.helper.XSDHelper;
+
+import commonj.sdo.DataGraph;
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+import commonj.sdo.helper.CopyHelper;
+import commonj.sdo.helper.HelperContext;
+import commonj.sdo.helper.TypeHelper;
+
+/**
+ * This interface provides helper functions which are not included in the SDO specification itself.
+ * Use of the functions in this interface is recommended, instead of resorting to low-level
+ * implementation-specific APIs.
+ */
+public interface SDOHelper
+{
+ final int UNBOUNDED = -1; //return value from getUpperBound() when maxOccurs="unbounded"
+ final int UNSPECIFIED = -2; //return value from getUpperBound() for global property
+
+ /**
+ * Create a non-extensible HelperContext to provide access to a consistent set of Helpers which make use
+ * of a new TypeHelper instance to provide scope for type definitions.
+ * @return the new HelperContext
+ * @see #createHelperContext(boolean)
+ */
+ public HelperContext createHelperContext();
+
+ /**
+ * Create a non-extensible HelperContext to provide access to a consistent set of Helpers which make use
+ * of a new TypeHelper instance to provide scope for type definitions.
+ * @param options Map of default XMLOptions
+ * @return the new HelperContext
+ * @see #createHelperContext(boolean)
+ */
+ public HelperContext createHelperContext(boolean extensibleNamespaces, Map options);
+
+ /**
+ * Create a HelperContext to provide access to a consistent set of Helpers which make use of a new
+ * TypeHelper instance to provide scope for type definitions.
+ * @param extensibleNamespaces true if the contents of a namespaces should be incrementally modifiable over time
+ * @return the new HelperContext
+ */
+ public HelperContext createHelperContext(boolean extensibleNamespaces);
+
+ /**
+ * create a non-extensible HelperContext with default load/save options
+ * @param options default load/save options from XMLOptions
+ * @return the new HelperContext
+ */
+ public HelperContext createHelperContext(Map options);
+
+ /**
+ * Creates an instance of a data type from the specified string.
+ * @param dataType a Type, for which isDataType() returns true, to instantiate.
+ * @param literal the string value of the dataType.
+ * @return an instance of the dataType.
+ * @see #convertToString(Type, Object)
+ */
+ public Object createFromString(Type dataType, String literal);
+
+ /**
+ * Converts an instance of a data type to a string literal representation.
+ * @param dataType the Type, for which isDataType() returns true, of the value to convert.
+ * @param value a value of the dataType.
+ * @return the string literal representation of the value.
+ * @see #createFromString(Type, String)
+ */
+ public String convertToString(Type dataType, Object value);
+
+ /**
+ * Create a DataObject wrapper for an instance of the specified dataType.
+ * This method is typically used to create a root object that can be passed to the XMLHelper.save()
+ * method when the root element to be serialized is an XMLSchema simpleType.
+ * @param dataType a Type for which isDataType() returns true.
+ * @param value the instance value.
+ * @return a DataObject wrapper for the specified value.
+ */
+ public DataObject createDataTypeWrapper(Type dataType, Object value);
+
+ /**
+ * Get the SDO built-in type corresponding to the specified XSD type in the XML Schema
+ * namespace ("http://www.w3.org/2001/XMLSchema").
+ * @param xsdType a type name in the XML Schema namespace.
+ * @return the SDO built-in Type corresponding to the specified XSD type.
+ */
+ public Type getXSDSDOType(String xsdType);
+
+ /**
+ * Gets the Sequence corresponding to the specified substitutable Property of the specified DataObject.
+ * @param dataObject the data object.
+ * @param head a substitution group head property.
+ * @return the Sequence corresponding to the specified substitutable Property of the specified DataObject or
+ * null if the specified Property isn't a substitution head.
+ */
+ public Sequence getSubstitutionValues(DataObject dataObject, Property head);
+
+ /**
+ * Get the SDO built-in type corresponding to the specified Java instanceClass.
+ * @param javaClass the Java instanceClass of the type.
+ * @return the SDO built-in Type corresponding to the specified instanceClass.
+ */
+ public Type getJavaSDOType(Class javaClass);
+
+ /**
+ * Return whether at least one value is required for a valid instance of the specified property.
+ * @param the property in question.
+ * @return true if the property is required.
+ */
+ public boolean isRequired(Property property);
+
+ /**
+ * Return the upper bound of the specified property or -1 if unbounded.
+ * @param the property in question.
+ * @return the upper bound.
+ */
+ public int getUpperBound(Property property);
+
+ /**
+ * Return the lower bound of the specified property or 1 by default
+ * @param the property in question.
+ * @return the lower bound.
+ */
+ public int getLowerBound(Property property);
+
+ /**
+ * Return Enumeration facet
+ * @param type
+ * @return List of enum facets in a Type
+ *///Amita
+ public List getEnumerationFacet(Type type);
+
+ /**
+ * Return Pattern facet
+ * @param type
+ * @return List of pattern facets in a Type
+ *///Amita
+ public List getPatternFacet(Type type);
+
+ /**
+ * Returns whether the Property is many-valued given the specified context.
+ * @param property The Property in question
+ * @param context The context to check whether the specified Property is many-valued
+ * @return true if the Property is many-valued given the specified context.
+ */
+ public boolean isMany(Property property, DataObject context);
+
+ /**
+ * Create an empty data graph.
+ * @return the new data graph instance.
+ */
+ public DataGraph createDataGraph();
+
+ /**
+ * Set the root object of a data graph.
+ * @param dataGraph the data graph in which to set the root object.
+ * @param rootObject the root object.
+ */
+ public void setRootObject(DataGraph dataGraph, DataObject rootObject);
+
+ /**
+ * Load a serialized data graph from the specified insputStream.
+ *
+ * @param inputStream the inputStream of the data graph.
+ * @param options loader control options, or null.
+ * @param hc the HelperContext in which to register deserialized Types and to find Types when
+ * creating DataObject instances, or null for default HelperContext.
+ * @return the de-serialized data graph.
+ * @throws IOException
+ */
+ public DataGraph loadDataGraph(InputStream inputStream, Map options, HelperContext hc) throws IOException;
+
+ /**
+ * Serialize the specified data graph to the specified outputStream.
+ * @param dataGraph the data graph to save.
+ * @param outputStream the outputStream for the data graph.
+ * @param options serializer control options, or null.
+ * @throws IOException
+ */
+ public void saveDataGraph(DataGraph dataGraph, OutputStream outputStream, Map options) throws IOException;
+
+ /**
+ * Registers the specified {@link Type type}(s) to be serialized along with
+ * the {@link DataObject data object}(s) in the graph. For example, the list of types returned from
+ * {@link TypeHelper#define} can be registered with this method, allowing deserialization of
+ * instances of a dynamically defined model.
+ * @param dataGraph the DataGraph in which to register the specified type(s).
+ * @param types a list containing the type(s) to be registered (TBD or null to automatically register all
+ * types used by the objects in the DataGraph).
+ */
+ public void registerDataGraphTypes(DataGraph dataGraph, List/*Type*/types);
+
+ /**
+ * Create a new cross scope CopyHelper.
+ * @param hc the HelperContext containing the Types to use to create the copy objects.
+ * @return the new CopyHelper.
+ */
+ public CopyHelper createCrossScopeCopyHelper(HelperContext targetScope);
+
+
+ /**
+ * Create a new XMLStreamHelper, with visibility to types in the specified HelperContext scope.
+ * @param hc the HelperContext to use for locating types.
+ * @return the new XMLStreamHelper.
+ */
+ public XMLStreamHelper createXMLStreamHelper(HelperContext hc);
+
+ /**
+ * Create a new ObjectInputStream in the specifice HelperContext scope.
+ * @param inputStream the inputStream with which to create the ObjectInputStream.
+ * @param helperContext the HelperContext scope.
+ * @return the new ObjectInputStream.
+ */
+ public ObjectInputStream createObjectInputStream(InputStream inputStream, HelperContext helperContext) throws IOException;
+
+ /**
+ * Create a new ObjectOutputStream in the specifice HelperContext scope.
+ * @param outputStream the outputStream with which to create the ObjectOutputStream.
+ * @param helperContext the HelperContext scope.
+ * @return the new ObjectOutputStream.
+ */
+ public ObjectOutputStream createObjectOutputStream(OutputStream outputStream, HelperContext helperContext) throws IOException;
+
+ /**
+ * Gets all of the types associated with a uri.
+ * @param hc the HelperContext to use for locating types.
+ * @param uri the URI of the Types
+ * @return a List containing instances of Type, null if uri is not found.
+ */
+ public List getTypes(HelperContext hc, String uri);
+
+ /**
+ * Gets the open content subset of the specified DataObject's instance properties.
+ * @param dataObject the DataObject instance
+ * @return a List containing any open content properties of the DataObject
+ */
+ public List getOpenContentProperties(DataObject dataObject);
+
+ /**
+ * Return true if the specified type is a special DocumentRoot Type.
+ * @param type the Type in question
+ * @return true if type is a DocumentRoot
+ */
+ public boolean isDocumentRoot(Type type);
+
+ /**
+ * Return an XPath from the containment root to the specified DataObject.
+ * @param dataObject a DataObject
+ * @return the XPath from the containment root.
+ */
+ public String getXPath(DataObject dataObject);
+
+ /**
+ * Gets a MetaDataBuilder which can be used to programatically create SDO Types and Properties.
+ * @return a MetaDataBuilder instance
+ */
+ public MetaDataBuilder getMetaDataBuilder();
+
+ /**
+ * An experimental interface, subject to possible change that permits
+ * registration of an event listener with a DataObject instance
+ * @param dob DataObject
+ * @param listener EventListener
+ */
+ public void addChangeListener(DataObject dob, EventListener listener);
+
+ /**
+ * An experimental interface, subject to possible change that permits
+ * deregistration of an event listener with a DataObject instance
+ * @param dob DataObject
+ * @param listener EventListener
+ */
+ public void removeChangeListener(DataObject dob, EventListener listener);
+
+ /**
+ * This interface provides methods which can be used to programatically create SDO Types and Properties.
+ * It provides a lower level and more efficient API then the DataObject-based one of TypeHelper.define().
+ */
+
+ public interface MetaDataBuilder
+ {
+
+ /**
+ * Create a Type in the specified TypeHelper scope.
+ * @return the new Type.
+ */
+ public Type createType(HelperContext hc, String uri, String name, boolean isDataType);
+
+ /**
+ * Add a baseType to the specified type.
+ */
+ public void addBaseType(Type type, Type baseType);
+
+ /**
+ * Add an aliasName to the specified type.
+ */
+ public void addAliasName(Type type, String aliasName);
+
+ /**
+ * Set the isOpen value of the specified type.
+ */
+ public void setOpen(Type type, boolean isOpen);
+
+ /**
+ * Set the isSequenced value of the specified type.
+ */
+ public void setSequenced(Type type, boolean isSequenced);
+
+ /**
+ * Set the isAbstract value of the specified type.
+ */
+ public void setAbstract(Type type, boolean isAbstract);
+
+ /**
+ * Set the isAbstract value of the specified type.
+ */
+ public void setJavaClassName(Type type, String javaClassName);
+
+ /**
+ * Create a new property in the specified containingType.
+ */
+ public Property createProperty(Type containingType, String name, Type propertyType);
+
+ /**
+ * Set a SDO property to become an XSD element or attribute
+ */
+ public void setPropertyXMLKind(Property property, boolean isXmlElement);
+
+ /**
+ * Create a new open content property in the specified TypeHelper scope.
+ */
+ public Property createOpenContentProperty(HelperContext hc, String uri, String name, Type type);
+
+ /**
+ * Add an aliasName to the specified property.
+ */
+ public void addAliasName(Property property, String aliasName);
+
+ /**
+ * Set the isMany value of the specified property.
+ */
+ public void setMany(Property property, boolean isMany);
+
+ /**
+ * Set the isContainment value of the specified property.
+ */
+ public void setContainment(Property property, boolean isContainment);
+
+ /**
+ * Set the default value of the specified property.
+ */
+ public void setDefault(Property property, String defaultValue);
+
+ /**
+ * Set the isReadOnly value of the specified property.
+ */
+ public void setReadOnly(Property property, boolean isReadOnly);
+
+ /**
+ * Set the opposite value of the specified property.
+ */
+ public void setOpposite(Property property, Property opposite);
+
+ /**
+ * Add an instance property to the specified type.
+ */
+ public void addTypeInstanceProperty(Type definedType, Property instanceProperty, Object value);
+
+ /**
+ * Add anf instance property to the specified property.
+ */
+ public void addPropertyInstanceProperty(Property definedProperty, Property instanceProperty, Object value);
+ }
+
+ /**
+ * This interface contains options that can be passed to the XMLHelper load() and save() methods.
+ */
+ public interface XMLOptions
+ {
+ /**
+ * Line Break String such as "\n", "\r\n", "\r" and "", absence/null is the default (line.separator System Property)
+ */
+ final String XML_SAVE_LINE_BREAK = "LineBreak";
+
+ /**
+ * Indent String such as "\t", "", etc. absence/null is the default (" ")
+ */
+ final String XML_SAVE_INDENT = "indent";
+
+ /**
+ * Margin String such as " ", "\t\t", etc. Absence/null/"" is the default (no margin)
+ */
+ final String XML_SAVE_MARGIN = "margin";
+
+ /**
+ * Attribute formatting that exceeds the specified width as Integer will cause a line break so that formatting will continue indented on the next line
+ */
+ final String XML_SAVE_LINE_WIDTH = "LINE_WIDTH";
+
+ /**
+ * Boolean to save a doctype declaration
+ */
+ final String XML_SAVE_DOCTYPE = "SAVE_DOCTYPE";
+
+ /**
+ * Boolean to process the schemaLocation/noNamespaceSchemaLocation attributes occurring in the instance document to {@link XSDHelper#define convert XSD(s) to Types}
+ */
+ final String XML_LOAD_SCHEMA = "ProcessSchemaLocations";
+
+ /**
+ * To tolerate malformed elements and attributes (default unless set by System property XML.load.form.lax). 0 not to.
+ */
+ final String XML_LOAD_LAX_FORM = "load malform";
+
+ /**
+ * Allows you to record unknown features during deserialization/loading.
+ * The default is Boolean.FALSE unless set to Boolean.TRUE explicitly.
+ */
+ final String XML_LOAD_UNKNOWN_PROPERTIES = "load unknown properties";
+ }
+
+}
diff --git a/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/SDOUtil.java b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/SDOUtil.java
new file mode 100644
index 0000000000..54f86aafbd
--- /dev/null
+++ b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/SDOUtil.java
@@ -0,0 +1,445 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sdo.api;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.sdo.api.EventListener;
+import org.apache.tuscany.sdo.spi.HelperProviderBase;
+
+import commonj.sdo.DataGraph;
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+import commonj.sdo.helper.CopyHelper;
+import commonj.sdo.helper.HelperContext;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.impl.HelperProvider;
+
+/**
+ * This class provides convenient static utility functions for calling the default SDOHelper.
+ */
+public final class SDOUtil
+{
+ protected static SDOHelper defaultSDOHelper = ((HelperProviderBase)HelperProvider.INSTANCE).sdoHelper();
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createDataTypeWrapper(Type, Object)}.
+ */
+ public static DataObject createDataTypeWrapper(Type dataType, Object value)
+ {
+ return defaultSDOHelper.createDataTypeWrapper(dataType, value);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createFromString(Type, String)}.
+ */
+ public static Object createFromString(Type dataType, String literal)
+ {
+ return defaultSDOHelper.createFromString(dataType, literal);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#convertToString(Type, Object)}.
+ */
+ public static String convertToString(Type dataType, Object value)
+ {
+ return defaultSDOHelper.convertToString(dataType, value);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getXSDSDOType(String)}.
+ */
+ public static Type getXSDSDOType(String xsdType)
+ {
+ return defaultSDOHelper.getXSDSDOType(xsdType);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getSubstitutionValues(DataObject, Property)}.
+ */
+ public static Sequence getSubstitutionValues(DataObject dataObject, Property head)
+ {
+ return defaultSDOHelper.getSubstitutionValues(dataObject, head);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getJavaSDOType(Class)}.
+ */
+ public static Type getJavaSDOType(Class javaClass)
+ {
+ return defaultSDOHelper.getJavaSDOType(javaClass);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#isRequired(Property)}.
+ */
+ public static boolean isRequired(Property property)
+ {
+ return defaultSDOHelper.isRequired(property);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getUpperBound(Property)}.
+ */
+ public static int getUpperBound(Property property)
+ {
+ return defaultSDOHelper.getUpperBound(property);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getLowerBound(Property)}.
+ */
+ public static int getLowerBound(Property property)
+ {
+ return defaultSDOHelper.getLowerBound(property);
+ }
+
+ public static List getEnumerationFacet(Type type) {
+ return defaultSDOHelper.getEnumerationFacet(type);
+ }
+
+ public static List getPatternFacet(Type type) {
+ return defaultSDOHelper.getPatternFacet(type);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#isMany(Property, DataObject)}.
+ */
+ public static boolean isMany(Property property, DataObject context)
+ {
+ return defaultSDOHelper.isMany(property, context);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createDataGraph}.
+ */
+ public static DataGraph createDataGraph()
+ {
+ return defaultSDOHelper.createDataGraph();
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#setRootObject(DataGraph, DataObject)}.
+ */
+ public static void setRootObject(DataGraph dataGraph, DataObject rootObject)
+ {
+ defaultSDOHelper.setRootObject(dataGraph, rootObject);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#loadDataGraph(InputStream, Map, TypeHelper)}.
+ */
+ public static DataGraph loadDataGraph(InputStream inputStream, Map options) throws IOException
+ {
+ return defaultSDOHelper.loadDataGraph(inputStream, options, (HelperContext)null);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#loadDataGraph(InputStream, Map, HelperContext)}.
+ */
+ public static DataGraph loadDataGraph(InputStream inputStream, Map options, HelperContext hc) throws IOException
+ {
+ return defaultSDOHelper.loadDataGraph(inputStream, options, hc);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#saveDataGraph(DataGraph, OutputStream, Map)}.
+ */
+ public static void saveDataGraph(DataGraph dataGraph, OutputStream outputStream, Map options) throws IOException
+ {
+ defaultSDOHelper.saveDataGraph(dataGraph, outputStream, options);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#registerDataGraphTypes(DataGraph, List)}.
+ */
+ public static void registerDataGraphTypes(DataGraph dataGraph, List/*Type*/ types)
+ {
+ defaultSDOHelper.registerDataGraphTypes(dataGraph, types);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createHelperContext(boolean,Map)}.
+ */
+ public static HelperContext createHelperContext(boolean extensibleNamespaces,Map options){
+ return defaultSDOHelper.createHelperContext(extensibleNamespaces, options);
+ }
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createHelperContext(boolean)}.
+ */
+ public static HelperContext createHelperContext(boolean extensibleNamespaces)
+ {
+ return defaultSDOHelper.createHelperContext(extensibleNamespaces);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createHelperContext}.
+ */
+ public static HelperContext createHelperContext(Map options)
+ {
+ return defaultSDOHelper.createHelperContext(options);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createHelperContext}.
+ */
+ public static HelperContext createHelperContext()
+ {
+ return defaultSDOHelper.createHelperContext();
+ }
+
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createCrossScopeCopyHelper(HelperContext)}.
+ */
+ public static CopyHelper createCrossScopeCopyHelper(HelperContext hc)
+ {
+ return defaultSDOHelper.createCrossScopeCopyHelper(hc);
+ }
+
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createXMLStreamHelper(HelperContext)}.
+ */
+ public static XMLStreamHelper createXMLStreamHelper(HelperContext hc)
+ {
+ return defaultSDOHelper.createXMLStreamHelper(hc);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createObjectInputStream(InputStream, HelperContext)}.
+ */
+ public static ObjectInputStream createObjectInputStream(InputStream inputStream, HelperContext helperContext) throws IOException
+ {
+ return defaultSDOHelper.createObjectInputStream(inputStream, helperContext);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createObjectOutputStream(OutputStream, HelperContext)}.
+ */
+ public static ObjectOutputStream createObjectOutputStream(OutputStream outputStream, HelperContext helperContext) throws IOException
+ {
+ return defaultSDOHelper.createObjectOutputStream(outputStream, helperContext);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getTypes(HelperContext, String)}.
+ */
+ public static List getTypes(HelperContext hc, String uri) {
+
+ return defaultSDOHelper.getTypes(hc, uri);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getOpenContentProperties(DataObject)}.
+ */
+ public static List getOpenContentProperties(DataObject dataObject)
+ {
+ return defaultSDOHelper.getOpenContentProperties(dataObject);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#isDocumentRoot(Type)}.
+ */
+ public static boolean isDocumentRoot(Type type)
+ {
+ return defaultSDOHelper.isDocumentRoot(type);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getXPath(DataObject)}.
+ */
+ public static String getXPath(DataObject dataObject)
+ {
+ return defaultSDOHelper.getXPath(dataObject);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#createType(HelperContext, String, String, boolean)}.
+ */
+ public static Type createType(HelperContext hc, String uri, String name, boolean isDataType)
+ {
+ return defaultSDOHelper.getMetaDataBuilder().createType(hc, uri, name, isDataType);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#addBaseType(Type, Type)}.
+ */
+ public static void addBaseType(Type type, Type baseType)
+ {
+ defaultSDOHelper.getMetaDataBuilder().addBaseType(type, baseType);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#addAliasName(Type, String)}.
+ */
+ public static void addAliasName(Type type, String aliasName)
+ {
+ defaultSDOHelper.getMetaDataBuilder().addAliasName(type, aliasName);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setOpen(Type, boolean)}.
+ */
+ public static void setOpen(Type type, boolean isOpen)
+ {
+ defaultSDOHelper.getMetaDataBuilder().setOpen(type, isOpen);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setSequenced(Type, boolean)}.
+ */
+ public static void setSequenced(Type type, boolean isSequenced)
+ {
+ defaultSDOHelper.getMetaDataBuilder().setSequenced(type, isSequenced);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setAbstract(Type, boolean)}.
+ */
+ public static void setAbstract(Type type, boolean isAbstract)
+ {
+ defaultSDOHelper.getMetaDataBuilder().setAbstract(type, isAbstract);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setJavaClassName(Type, String)}.
+ */
+ public static void setJavaClassName(Type type, String javaClassName)
+ {
+ defaultSDOHelper.getMetaDataBuilder().setJavaClassName(type, javaClassName);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#createProperty(Type, String, Type)}.
+ */
+ public static Property createProperty(Type containingType, String name, Type propertyType)
+ {
+ return defaultSDOHelper.getMetaDataBuilder().createProperty(containingType, name, propertyType);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setPropertyXMLKind(Property, boolean)}.
+ */
+ public static void setPropertyXMLKind(Property property, boolean isXmlElement) {
+ defaultSDOHelper.getMetaDataBuilder().setPropertyXMLKind(property, isXmlElement);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#createOpenContentProperty(TypeHelper, String, String, Type)}.
+ */
+ public static Property createOpenContentProperty(HelperContext hc, String uri, String name, Type type)
+ {
+ return defaultSDOHelper.getMetaDataBuilder().createOpenContentProperty(hc, uri, name, type);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#addAliasName(Property, String)}.
+ */
+ public static void addAliasName(Property property, String aliasName)
+ {
+ defaultSDOHelper.getMetaDataBuilder().addAliasName(property, aliasName);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setMany(Property, boolean)}.
+ */
+ public static void setMany(Property property, boolean isMany)
+ {
+ defaultSDOHelper.getMetaDataBuilder().setMany(property, isMany);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setContainment(Property, boolean)}.
+ */
+ public static void setContainment(Property property, boolean isContainment)
+ {
+ defaultSDOHelper.getMetaDataBuilder().setContainment(property, isContainment);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setDefault(Property, String)}.
+ */
+ public static void setDefault(Property property, String defaultValue)
+ {
+ defaultSDOHelper.getMetaDataBuilder().setDefault(property, defaultValue);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setReadOnly(Property, boolean)}.
+ */
+ public static void setReadOnly(Property property, boolean isReadOnly)
+ {
+ defaultSDOHelper.getMetaDataBuilder().setReadOnly(property, isReadOnly);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setOpposite(Property, Property)}.
+ */
+ public static void setOpposite(Property property, Property opposite)
+ {
+ defaultSDOHelper.getMetaDataBuilder().setOpposite(property, opposite);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#addTypeInstanceProperty(Type, Property, Object)}.
+ */
+ public static void addTypeInstanceProperty(Type definedType, Property property, Object value)
+ {
+ defaultSDOHelper.getMetaDataBuilder().addTypeInstanceProperty(definedType, property, value);
+ }
+
+ /**
+ * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#addPropertyInstanceProperty(Property, Property, Object)}.
+ */
+ public static void addPropertyInstanceProperty(Property definedProperty, Property property, Object value)
+ {
+ defaultSDOHelper.getMetaDataBuilder().addPropertyInstanceProperty(definedProperty, property, value);
+ }
+
+
+ /**
+ * @see SDOHelper#addChangeListener(DataObject, EventListener)
+ * @param dob
+ * @param l
+ */
+ public static void addChangeListener(DataObject dob, EventListener l) {
+ defaultSDOHelper.addChangeListener(dob, l);
+ }
+
+ /**
+ * @see SDOHelper#addChangeListener(DataObject, EventListener)
+ * @param dob
+ * @param l
+ */
+ public static void removeChangeListener(DataObject dob, EventListener l) {
+ defaultSDOHelper.removeChangeListener(dob, l);
+ }
+
+
+}
diff --git a/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/XMLStreamHelper.java b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/XMLStreamHelper.java
new file mode 100644
index 0000000000..bf283256fe
--- /dev/null
+++ b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/XMLStreamHelper.java
@@ -0,0 +1,125 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sdo.api;
+
+import java.util.Map;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.HelperContext;
+import commonj.sdo.helper.XMLDocument;
+
+/**
+ * Helper interface for reading and writing SDO DataObjects from XML streams
+ * (StAX).
+ *
+ * @version $Rev: 503913 $ $Date: 2007-02-05 17:53:34 -0500 (Mon, 05 Feb 2007) $
+ */
+public interface XMLStreamHelper {
+ /**
+ * Creates and returns an XMLDocument from an XML input stream. The reader
+ * must be positioned on a START_DOCUMENT event.
+ *
+ * @param reader the stream to read
+ * @return an XMLDocument created from the stream
+ * @throws XMLStreamException if there was a problem reading the stream
+ * @throws IllegalStateException if the reader is not positioned on a
+ * START_DOCUMENT event
+ */
+ XMLDocument load(XMLStreamReader reader) throws XMLStreamException, IllegalStateException;
+
+ /**
+ * Save a XMLDocument to an XML stream.
+ *
+ * @param document the document to be written
+ * @param writer the stream to write to
+ * @throws XMLStreamException if there was a problem writing to the stream
+ */
+ void save(XMLDocument document, XMLStreamWriter writer) throws XMLStreamException;
+
+ void save(XMLDocument document, XMLStreamWriter writer, Map options) throws XMLStreamException;
+
+ /**
+ * Creates and returns a XMLStreamReader that can be used to read an
+ * XMLDocument as a XML event stream. The reader will be positioned on a
+ * START_DOCUMENT event.
+ *
+ * @param document the XMLDocument to be read
+ * @return an XMLStreamReader that can be used to read the document
+ */
+ XMLStreamReader createXMLStreamReader(XMLDocument document) throws XMLStreamException;
+
+ /**
+ * Create a DataObject from an element in a XML stream. The reader must be
+ * positioned on a START_ELEMENT event.
+ *
+ * @param reader the stream to read
+ * @return a DataObject created from the element in the stream
+ * @throws XMLStreamException if there was a problem reading the stream
+ * @throws IllegalStateException if the reader is not positioned on a
+ * START_ELEMENT event
+ */
+ DataObject loadObject(XMLStreamReader reader) throws XMLStreamException, IllegalStateException;
+
+ /**
+ * Default Type to load DataObject if the element is unqualified/local
+ * without xsi:type or the qualified/global element or xsi:type fail to
+ * resolve. Can be null.
+ */
+ String OPTION_DEFAULT_ROOT_TYPE = "default root type";
+
+ /**
+ * Create a DataObject from an element in a XML stream. The reader must be
+ * positioned on a START_ELEMENT event.
+ *
+ * @param reader the stream to read
+ * @param options {@link OPTION_DEFAULT_ROOT_TYPE}; can be null or empty
+ * @return a DataObject created from the element in the stream
+ * @throws XMLStreamException if there was a problem reading the stream
+ * @throws IllegalStateException if the reader is not positioned on a
+ * START_ELEMENT event
+ */
+ DataObject loadObject(XMLStreamReader reader, Map options) throws XMLStreamException, IllegalStateException;
+
+ /**
+ * Save a DataObject to an XML stream.
+ *
+ * @param sdo the DataObject to be written
+ * @param writer the stream to write to
+ * @throws XMLStreamException if there was a problem writing to the stream
+ */
+ void saveObject(DataObject sdo, XMLStreamWriter writer) throws XMLStreamException;
+
+ void saveObject(DataObject sdo, XMLStreamWriter writer, Map options) throws XMLStreamException;
+
+ /**
+ * Creates and returns a XMLStreamReader that can be used to read a
+ * DataObject as a XML event stream. The reader will be positioned on a
+ * START_ELEMENT event.
+ *
+ * @param sdo the DataObject to be read
+ * @return an XMLStreamReader that can be used to read the DataObject
+ */
+ XMLStreamReader createXMLStreamReader(DataObject sdo);
+
+ HelperContext getHelperContext();
+}
diff --git a/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/overview.html b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/overview.html
new file mode 100644
index 0000000000..c6bd255b8f
--- /dev/null
+++ b/sdo-java/branches/sdo-1.1-incubating/lib/src/main/java/org/apache/tuscany/sdo/api/overview.html
@@ -0,0 +1,38 @@
+<html>
+<!--
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * -->
+<head>
+ <title>Tuscany API extensions to Service Data Objects (SDO)</title>
+</head>
+<BODY>
+<h1>Tuscany API extensions to Service Data Objects (SDO)</h1>
+ <h2>Overview</h2>
+<p>
+The "org.apache.tuscany.sdo.api" package represents Tuscany API for SDO Java
+above and beyond what is offered by the SDO API itself. The contents of this
+project provide a means to achieve operations that are not currently addressed
+by the SDO API.
+</p>
+<p>
+The SDOUtil class simply provides a set of static convenince methods for
+exercising the methods of a default instance of the SDOHelper interface.
+</p>
+</BODY>
+</html>