diff options
Diffstat (limited to 'sca-java-1.x/tags/java-M1-final/java/spec/sdo/src/main/java/commonj/sdo/Type.java')
-rw-r--r-- | sca-java-1.x/tags/java-M1-final/java/spec/sdo/src/main/java/commonj/sdo/Type.java | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/sca-java-1.x/tags/java-M1-final/java/spec/sdo/src/main/java/commonj/sdo/Type.java b/sca-java-1.x/tags/java-M1-final/java/spec/sdo/src/main/java/commonj/sdo/Type.java new file mode 100644 index 0000000000..85d43aad60 --- /dev/null +++ b/sca-java-1.x/tags/java-M1-final/java/spec/sdo/src/main/java/commonj/sdo/Type.java @@ -0,0 +1,143 @@ +/** + * <copyright> + * + * Service Data Objects + * Version 2.0 + * Licensed Materials - Property of BEA and IBM + * + * (c) Copyright BEA Systems, Inc. and International Business Machines Corp 2005. All rights reserved. + * + * </copyright> + * + */ + +package commonj.sdo; + +import java.util.List; + +/** + * A representation of the type of a {@link Property property} of a {@link DataObject data object}. + */ +public interface Type +{ + /** + * Returns the name of the type. + * @return the type name. + */ + String getName(); + + /** + * Returns the namespace URI of the type. + * @return the namespace URI. + */ + String getURI(); + + /** + * Returns the Java class that this type represents. + * @return the Java class. + */ + Class getInstanceClass(); + + /** + * Returns whether the specified object is an instance of this type. + * @param object the object in question. + * @return <code>true</code> if the object is an instance. + * @see Class#isInstance + */ + boolean isInstance(Object object); + + /** + * Returns the List of the {@link Property Properties} of this type. + * <p> + * The expression + *<pre> + * type.getProperties().indexOf(property) + *</pre> + * yields the property's index relative to this type. + * As such, these expressions are equivalent: + *<pre> + * dataObject.{@link DataObject#get(int) get}(i) + * dataObject.{@link DataObject#get(Property) get}((Property)dataObject.getType().getProperties().get(i)); + *</pre> + * </p> + * @return the Properties of the type. + * @see Property#getContainingType + */ + List /*Property*/ getProperties(); + + /** + * Returns from {@link #getProperties all the Properties} of this type, the one with the specified name. + * As such, these expressions are equivalent: + *<pre> + * dataObject.{@link DataObject#get(String) get}("name") + * dataObject.{@link DataObject#get(Property) get}(dataObject.getType().getProperty("name")) + *</pre> + * </p> + * @return the Property with the specified name. + * @see #getProperties + */ + Property getProperty(String propertyName); + + /** + * Indicates if this Type specifies DataTypes (true) or DataObjects (false). + * When false, any object that is an instance of this type + * also implements the DataObject interface. + * True for simple types such as Strings and numbers. + * For any object: + * <pre> + * isInstance(object) && !isDataType() implies + * DataObject.class.isInstance(object) returns true. + * </pre> + * @return true if Type specifies DataTypes, false for DataObjects. + */ + boolean isDataType(); + + /** + * Indicates if this Type allows any form of open content. If false, + * dataObject.getInstanceProperties() must be the same as + * dataObject.getType().getProperties() for any DataObject dataObject of this Type. + * @return true if this Type allows open content. + */ + boolean isOpen(); + + /** + * Indicates if this Type specifies Sequenced DataObjects. + * Sequenced DataObjects are used when the order of values + * between Properties must be preserved. + * When true, a DataObject will return a Sequence. For example, + * <pre> + * Sequence elements = dataObject.{@link DataObject#getSequence() getSequence}(); + * </pre> + * @return true if this Type specifies Sequenced DataObjects. + */ + boolean isSequenced(); + + /** + * Indicates if this Type is abstract. If true, this Type cannot be + * instantiated. Abstract types cannot be used in DataObject or + * DataFactory create methods. + * @return true if this Type is abstract. + */ + boolean isAbstract(); + + /** + * Returns the List of base Types for this Type. The List is empty + * if there are no base Types. XSD <extension>, <restriction>, and + * Java extends keyword are mapped to this list. + * @return the List of base Types for this Type. + */ + List /*Type*/ getBaseTypes(); + + /** + * Returns the Properties declared in this Type as opposed to + * those declared in base Types. + * @return the Properties declared in this Type. + */ + List /*Property*/ getDeclaredProperties(); + + /** + * Return a list of alias names for this Type. + * @return a list of alias names for this Type. + */ + List /*String*/ getAliasNames(); +} |