18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.xml.internal.xsom; 27 28 /** 29 * Base interface for {@link XSComplexType} and {@link XSSimpleType}. 30 * 31 * @author 32 * Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com) 33 */ 34 public interface XSType extends XSDeclaration { 35 /** 36 * Returns the base type of this type. 37 * 38 * Note that if this type represents <tt>xs:anyType</tt>, this method returns itself. 39 * This is awkward as an API, but it follows the schema specification. 40 * 41 * @return always non-null. 42 */ 43 XSType getBaseType(); 44 45 final static int EXTENSION = 1; 46 final static int RESTRICTION = 2; 47 final static int SUBSTITUTION = 4; 48 49 int getDerivationMethod(); 50 51 /** Returns true if <code>this instanceof XSSimpleType</code>. */ 52 boolean isSimpleType(); 53 /** Returns true if <code>this instanceof XSComplexType</code>. */ 54 boolean isComplexType(); 55 56 /** 57 * Lists up types that can substitute this type by using xsi:type. 58 * Includes this type itself. 59 * <p> 60 * This method honors the block flag. 61 */ 62 XSType[] listSubstitutables(); 63 64 /** 65 * If this {@link XSType} is redefined by another type, 66 * return that component. 67 * 68 * @return null 69 * if this component has not been redefined. 70 */ 71 XSType getRedefinedBy(); 72 73 /** 74 * Returns the number of complex types that redefine this component. 75 * 76 * <p> 77 * For example, if A is redefined by B and B is redefined by C, 78 * A.getRedefinedCount()==2, B.getRedefinedCount()==1, and 79 * C.getRedefinedCount()==0. 80 */ 81 int getRedefinedCount(); 82 83 84 /** Casts this object to XSSimpleType if possible, otherwise returns null. */ 85 XSSimpleType asSimpleType(); 86 /** Casts this object to XSComplexType if possible, otherwise returns null. */ 87 XSComplexType asComplexType(); 88 89 /** 90 * Returns true if this type is derived from the specified type. 91 * 92 * <p> 93 * Note that <tt>t.isDerivedFrom(t)</tt> returns true. 94 */ 95 boolean isDerivedFrom( XSType t ); 96 } | 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.xml.internal.xsom; 27 28 /** 29 * Base interface for {@link XSComplexType} and {@link XSSimpleType}. 30 * 31 * @author 32 * Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com) 33 */ 34 public interface XSType extends XSDeclaration { 35 /** 36 * Returns the base type of this type. 37 * 38 * Note that if this type represents {@code xs:anyType}, this method returns itself. 39 * This is awkward as an API, but it follows the schema specification. 40 * 41 * @return always non-null. 42 */ 43 XSType getBaseType(); 44 45 final static int EXTENSION = 1; 46 final static int RESTRICTION = 2; 47 final static int SUBSTITUTION = 4; 48 49 int getDerivationMethod(); 50 51 /** Returns true if {@code this instanceof XSSimpleType}. */ 52 boolean isSimpleType(); 53 /** Returns true if {@code this instanceof XSComplexType}. */ 54 boolean isComplexType(); 55 56 /** 57 * Lists up types that can substitute this type by using xsi:type. 58 * Includes this type itself. 59 * <p> 60 * This method honors the block flag. 61 */ 62 XSType[] listSubstitutables(); 63 64 /** 65 * If this {@link XSType} is redefined by another type, 66 * return that component. 67 * 68 * @return null 69 * if this component has not been redefined. 70 */ 71 XSType getRedefinedBy(); 72 73 /** 74 * Returns the number of complex types that redefine this component. 75 * 76 * <p> 77 * For example, if A is redefined by B and B is redefined by C, 78 * A.getRedefinedCount()==2, B.getRedefinedCount()==1, and 79 * C.getRedefinedCount()==0. 80 */ 81 int getRedefinedCount(); 82 83 84 /** Casts this object to XSSimpleType if possible, otherwise returns null. */ 85 XSSimpleType asSimpleType(); 86 /** Casts this object to XSComplexType if possible, otherwise returns null. */ 87 XSComplexType asComplexType(); 88 89 /** 90 * Returns true if this type is derived from the specified type. 91 * 92 * <p> 93 * Note that {@code t.isDerivedFrom(t)} returns true. 94 */ 95 boolean isDerivedFrom( XSType t ); 96 } |