KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > util > xml > idefix > DefaultSerializerFactory


1 package org.sapia.util.xml.idefix;
2
3 import org.sapia.util.xml.idefix.serializer.ArraySerializer;
4 import org.sapia.util.xml.idefix.serializer.CollectionSerializer;
5 import org.sapia.util.xml.idefix.serializer.DynamicSerializer;
6 import org.sapia.util.xml.idefix.serializer.IteratorSerializer;
7 import org.sapia.util.xml.idefix.serializer.PrimitiveSerializer;
8
9 import java.util.Collection JavaDoc;
10 import java.util.Date JavaDoc;
11 import java.util.HashMap JavaDoc;
12 import java.util.Iterator JavaDoc;
13 import java.util.Map JavaDoc;
14
15
16 /**
17  * Class documentation
18  *
19  * @author <a HREF="mailto:jc@sapia-oss.org">Jean-Cedric Desrochers</a>
20  * <dl>
21  * <dt><b>Copyright:</b><dd>Copyright &#169; 2002-2003 <a HREF="http://www.sapia-oss.org">Sapia Open Source Software</a>. All Rights Reserved.</dd></dt>
22  * <dt><b>License:</b><dd>Read the license.txt file of the jar or visit the
23  * <a HREF="http://www.sapia-oss.org/license.html" target="sapia-license">license page</a> at the Sapia OSS web site</dd></dt>
24  * </dl>
25  */

26 public class DefaultSerializerFactory implements SerializerFactoryIF {
27   /** The map of serializaer by class. */
28   private Map JavaDoc _theSerializersByClass;
29
30   /**
31    * Creates a new DefaultSerializerFactory instance.
32    */

33   public DefaultSerializerFactory() {
34     _theSerializersByClass = new HashMap JavaDoc();
35
36     _theSerializersByClass.put(boolean.class, new PrimitiveSerializer());
37     _theSerializersByClass.put(Boolean JavaDoc.class, new PrimitiveSerializer());
38     _theSerializersByClass.put(byte.class, new PrimitiveSerializer());
39     _theSerializersByClass.put(Byte JavaDoc.class, new PrimitiveSerializer());
40     _theSerializersByClass.put(short.class, new PrimitiveSerializer());
41     _theSerializersByClass.put(Short JavaDoc.class, new PrimitiveSerializer());
42     _theSerializersByClass.put(int.class, new PrimitiveSerializer());
43     _theSerializersByClass.put(Integer JavaDoc.class, new PrimitiveSerializer());
44     _theSerializersByClass.put(long.class, new PrimitiveSerializer());
45     _theSerializersByClass.put(Long JavaDoc.class, new PrimitiveSerializer());
46     _theSerializersByClass.put(float.class, new PrimitiveSerializer());
47     _theSerializersByClass.put(Float JavaDoc.class, new PrimitiveSerializer());
48     _theSerializersByClass.put(double.class, new PrimitiveSerializer());
49     _theSerializersByClass.put(Double JavaDoc.class, new PrimitiveSerializer());
50     _theSerializersByClass.put(char.class, new PrimitiveSerializer());
51     _theSerializersByClass.put(Character JavaDoc.class, new PrimitiveSerializer());
52     _theSerializersByClass.put(String JavaDoc.class, new PrimitiveSerializer());
53     _theSerializersByClass.put(Date JavaDoc.class, new PrimitiveSerializer());
54   }
55
56   /**
57    * Register the new serializer mapping to the class.
58    *
59    * @param aClass The class for which to register the serializer.
60    * @param aSerializer The serializer to register.
61    */

62   public void registerSerializer(Class JavaDoc aClass, SerializerIF aSerializer) {
63     _theSerializersByClass.put(aClass, aSerializer);
64   }
65
66   /**
67    * Returns a serializer instance that knows how to convert an object of the type
68    * represented by the class argument into an XML format.
69    *
70    * @param aClass The type of the object for which to get a serializer
71    * @return The serializer instance.
72    * @exception SerializerNotFoundException If no serialier was found for the class.
73    */

74   public SerializerIF getSerializer(Class JavaDoc aClass)
75     throws SerializerNotFoundException {
76     SerializerIF aSerializer = (SerializerIF) _theSerializersByClass.get(aClass);
77
78     if (aSerializer == null) {
79       if (aClass.isArray()) {
80         aSerializer = new ArraySerializer();
81       } else if (Collection JavaDoc.class.isAssignableFrom(aClass)) {
82         aSerializer = new CollectionSerializer();
83       } else if (Iterator JavaDoc.class.isAssignableFrom(aClass)) {
84         aSerializer = new IteratorSerializer();
85       } else {
86         aSerializer = new DynamicSerializer();
87       }
88
89       _theSerializersByClass.put(aClass, aSerializer);
90     }
91
92     return aSerializer;
93   }
94 }
95
Popular Tags