1 16 package org.directwebremoting.convert; 17 18 import java.lang.reflect.Field ; 19 import java.lang.reflect.Modifier ; 20 import java.util.HashMap ; 21 import java.util.Map ; 22 23 import org.directwebremoting.extend.Converter; 24 import org.directwebremoting.extend.InboundContext; 25 import org.directwebremoting.extend.MarshallException; 26 import org.directwebremoting.extend.Property; 27 import org.directwebremoting.extend.TypeHintContext; 28 import org.directwebremoting.impl.FieldProperty; 29 30 34 public class ObjectConverter extends BasicObjectConverter implements Converter 35 { 36 40 public void setForce(String force) 41 { 42 this.force = Boolean.valueOf(force).booleanValue(); 43 } 44 45 48 public Map getPropertyMapFromObject(Object example, boolean readRequired, boolean writeRequired) throws MarshallException 49 { 50 Class clazz = example.getClass(); 51 return getPropertyMapFromClass(clazz, readRequired, writeRequired); 52 } 53 54 57 public Map getPropertyMapFromClass(Class type, boolean readRequired, boolean writeRequired) 58 { 59 Map allFields = new HashMap (); 60 61 while (type != Object .class) 62 { 63 Field [] fields = type.getDeclaredFields(); 64 65 fieldLoop: 66 for (int i = 0; i < fields.length; i++) 67 { 68 Field field = fields[i]; 69 String name = field.getName(); 70 71 if ("class".equals(name)) 73 { 74 continue fieldLoop; 75 } 76 77 if (!isAllowedByIncludeExcludeRules(name)) 79 { 80 continue fieldLoop; 81 } 82 83 if (!Modifier.isPublic(field.getModifiers())) 84 { 85 if (force) 86 { 87 field.setAccessible(true); 88 } 89 else 90 { 91 continue fieldLoop; 92 } 93 } 94 95 allFields.put(name, new FieldProperty(field)); 96 } 97 98 type = type.getSuperclass(); 99 } 100 101 return allFields; 102 } 103 104 107 protected TypeHintContext createTypeHintContext(InboundContext inctx, Property property) 108 { 109 return inctx.getCurrentTypeHintContext(); 110 } 111 112 115 private boolean force = false; 116 } 117
| Popular Tags
|