KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jfun > yan > util > deserializer > PropertyEditorDeserializer


1 package jfun.yan.util.deserializer;
2
3 import java.beans.PropertyEditor JavaDoc;
4 import java.lang.reflect.Constructor JavaDoc;
5
6 /**
7  * The adapter to convert a PropertyEditor class
8  * to a Deserializer.
9  * <p>
10  * @author Ben Yu
11  * Feb 1, 2006 1:08:20 AM
12  */

13 public class PropertyEditorDeserializer implements Deserializer, java.io.Serializable JavaDoc {
14   private final DefaultConstructedThreadLocalSerializable editor;
15   private final Class JavaDoc editor_class;
16   public Class JavaDoc getEditorClass(){
17     return editor_class;
18   }
19   public PropertyEditorDeserializer(final Class JavaDoc type) {
20     if(!PropertyEditor JavaDoc.class.isAssignableFrom(type)){
21       throw new IllegalArgumentException JavaDoc("PropertyEditor expected, "+
22           type+" encountered");
23     }
24     this.editor_class = type;
25     this.editor = new DefaultConstructedThreadLocalSerializable(type);
26   }
27   private static Constructor JavaDoc getDefaultConstructor(final Class JavaDoc type){
28     try{
29       return type.getConstructor(null);
30     }
31     catch(NoSuchMethodException JavaDoc e){
32       throw new IllegalArgumentException JavaDoc("default constructor of "+type
33           + " not found.");
34     }
35   }
36   public Object JavaDoc deserialize(String JavaDoc str) throws Exception JavaDoc {
37     final PropertyEditor JavaDoc editor = (PropertyEditor JavaDoc)this.editor.get();
38     editor.setAsText(str);
39     return editor.getValue();
40   }
41   public boolean equals(Object JavaDoc obj) {
42     if(obj instanceof PropertyEditorDeserializer){
43       final PropertyEditorDeserializer other = (PropertyEditorDeserializer)obj;
44       return editor_class.equals(other.editor_class);
45     }
46     else return false;
47   }
48   public int hashCode() {
49     return editor_class.hashCode();
50   }
51   public String JavaDoc toString() {
52     return editor_class.getName();
53   }
54 }
55
Popular Tags