View Javadoc

    1   package org.codehaus.xfire.aegis.type;
    2
    3   import java.util.Set;
    4
    5   import javax.xml.namespace.QName;
    6
    7   import org.codehaus.xfire.MessageContext;
    8   import org.codehaus.xfire.aegis.MessageReader;
    9   import org.codehaus.xfire.aegis.MessageWriter;
    10  import org.codehaus.xfire.fault.XFireFault;
    11  import org.codehaus.xfire.wsdl.SchemaType;
    12  import org.codehaus.yom.Element;
    13
    14  /***
    15   * Type
    16   *
    17   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
    18   */
    19  public abstract class Type
    20      implements SchemaType
    21  {
    22      private QName schemaType;
    23      private TypeMapping typeMapping;
    24      private Class typeClass;
    25      private boolean abstrct = true;
    26      private boolean nillable = false;
    27
    28      public Type()
    29      {
    30      }
    31
    32      public abstract Object readObject( MessageReader reader, MessageContext context )
    33      	throws XFireFault;
    34
    35      public abstract void writeObject( Object object, MessageWriter writer, MessageContext context )
    36      	throws XFireFault;
    37
    38      public void writeSchema(Element root)
    39      {
    40      }
    41
    42  	/***
    43  	 * @return Returns the typeMapping.
    44  	 */
    45  	public TypeMapping getTypeMapping()
    46  	{
    47  		return typeMapping;
    48  	}
    49
    50  	/***
    51  	 * @param typeMapping The typeMapping to set.
    52  	 */
    53  	public void setTypeMapping( TypeMapping typeMapping )
    54  	{
    55  		this.typeMapping = typeMapping;
    56  	}
    57
    58  	/***
    59  	 * @return Returns the typeClass.
    60  	 */
    61  	public Class getTypeClass()
    62  	{
    63  		return typeClass;
    64  	}
    65
    66  	/***
    67  	 * @param typeClass The typeClass to set.
    68  	 */
    69  	public void setTypeClass( Class typeClass )
    70  	{
    71  		this.typeClass = typeClass;
    72  	}
    73
    74      /***
    75       * @return True if a complex type schema must be written.
    76       */
    77      public boolean isComplex()
    78      {
    79          return false;
    80      }
    81
    82      public boolean isAbstract()
    83      {
    84          return abstrct;
    85      }
    86
    87      public void setAbstract(boolean abstrct)
    88      {
    89          this.abstrct = abstrct;
    90      }
    91
    92      public boolean isNillable()
    93      {
    94          return nillable;
    95      }
    96
    97      public void setNillable(boolean nillable)
    98      {
    99          this.nillable = nillable;
    100     }
    101
    102     /***
    103      * Return a set of Type dependencies.  Returns null if this type
    104      * has no dependencies.
    105      *
    106      * @return
    107      */
    108     public Set getDependencies()
    109     {
    110         return null;
    111     }
    112
    113     /***
    114      * @see java.lang.Object#equals(java.lang.Object)
    115      */
    116     public boolean equals(Object obj)
    117     {
    118         if (obj == this)
    119             return true;
    120
    121         if ( obj instanceof Type )
    122         {
    123             Type type = (Type) obj;
    124
    125             if ( type.getSchemaType().equals( getSchemaType() )
    126                  &&
    127                  type.getTypeClass().equals( getTypeClass() ) )
    128             {
    129                 return true;
    130             }
    131         }
    132
    133         return false;
    134     }
    135
    136     public int hashCode()
    137     {
    138         int hashcode = 0;
    139
    140         if (getTypeClass() != null)
    141         {
    142             hashcode ^= getTypeClass().hashCode();
    143         }
    144
    145         if (getSchemaType() != null)
    146         {
    147             hashcode ^= getSchemaType().hashCode();
    148         }
    149
    150         return hashcode;
    151     }
    152
    153     /***
    154      * @return Get the schema type.
    155      */
    156     public QName getSchemaType()
    157     {
    158         return schemaType;
    159     }
    160
    161     /***
    162      * @param name The qName to set.
    163      */
    164     public void setSchemaType(QName name)
    165     {
    166         schemaType = name;
    167     }
    168
    169     public boolean isWriteOuter()
    170     {
    171         return true;
    172     }
    173 }