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 }