1 55 package org.lateralnz.common.util; 56 57 import java.io.ByteArrayInputStream ; 58 import java.io.ByteArrayOutputStream ; 59 import java.io.IOException ; 60 import java.io.ObjectInputStream ; 61 import java.io.ObjectOutputStream ; 62 import java.lang.reflect.Array ; 63 import java.lang.reflect.Method ; 64 import java.util.HashMap ; 65 import java.util.Iterator ; 66 import java.util.List ; 67 import java.util.Map ; 68 69 70 80 public class ObjectUtils implements Constants { 81 private static final String L_BRACKET = "["; 82 private static final String R_BRACKET = "]"; 83 private static final String BRACKETS = L_BRACKET + R_BRACKET; 84 85 private static Map primitives = new HashMap (); 86 static { 87 primitives.put("boolean", boolean.class); 88 primitives.put("byte", byte.class); 89 primitives.put("short", short.class); 90 primitives.put("char", char.class); 91 primitives.put("int", int.class); 92 primitives.put("long", long.class); 93 primitives.put("float", float.class); 94 primitives.put("double", double.class); 95 } 96 97 101 public static final Object coercePrimitive(String s, Class c) { 102 if (c == boolean.class) { 103 return new Boolean (s); 104 } 105 else if (c == byte.class) { 106 return new Byte (s); 107 } 108 else if (c == short.class) { 109 return new Short (s); 110 } 111 else if (c == char.class) { 112 return s; 113 } 114 else if (c == int.class) { 115 return new Integer (s); 116 } 117 else if (c == long.class) { 118 return new Long (s); 119 } 120 else if (c == float.class) { 121 return new Float (s); 122 } 123 else if (c == double.class) { 124 return new Double (s); 125 } 126 else { 127 return null; 128 } 129 } 130 131 134 public static final boolean containsObject(Object [] src, Object match) { 135 for (int i = 0; i < src.length; i++) { 136 if (src[i].equals(match)) { 137 return true; 138 } 139 } 140 141 return false; 142 } 143 144 147 public static final Object copyArray(Object [] src, int newsize) { 148 if (src == null) { 149 return new Object [newsize]; 150 } 151 else if (newsize < src.length) { 152 newsize = src.length; 153 } 154 155 Object dest = Array.newInstance(src[0].getClass(), newsize); 156 157 String tmp[] = (String [])dest; 158 System.arraycopy(src, 0, dest, 0, src.length); 159 160 return dest; 161 } 162 163 167 public static final Class getClass(String classname) throws Exception { 168 if (primitives.containsKey(classname)) { 169 return (Class )primitives.get(classname); 170 } 171 else { 172 return Class.forName(classname); 173 } 174 } 175 176 179 public static final String getParameterType(Class c) { 180 if (c.isArray()) { 181 StringBuffer sb = new StringBuffer (c.getComponentType().getName()); 182 183 for (int i = 0; i < StringUtils.countOccurrences(c.getName(), '['); 184 i++) { 185 sb.append(BRACKETS); 186 } 187 188 return sb.toString(); 189 } 190 else { 191 return c.getName(); 192 } 193 } 194 195 198 public static final String getMD5Signature(Class c) throws Exception { 199 Method [] meth = c.getDeclaredMethods(); 200 StringBuffer sb = new StringBuffer (); 201 for (int i = 0; i < meth.length; i++) { 202 sb.append(meth[i].getReturnType().getName()).append(SPACE); 203 sb.append(meth[i].getName()).append(LEFT_BRACKET); 204 Class [] params = meth[i].getParameterTypes(); 205 for (int j = 0; j < params.length; j++) { 206 sb.append(params[j].getName()); 207 if (j < params.length - 1) { 208 sb.append(COMMA); 209 } 210 } 211 sb.append(RIGHT_BRACKET).append(NEWLINE); 212 } 213 214 return StringUtils.toMD5Digest(sb.toString()); 215 } 216 217 220 public static final Object deserialize(byte[] b) throws IOException , ClassNotFoundException { 221 ByteArrayInputStream bais = null; 222 ObjectInputStream ois = null; 223 224 try { 225 bais = new ByteArrayInputStream (b); 226 ois = new ObjectInputStream (bais); 227 return ois.readObject(); 228 } 229 finally { 230 IOUtils.close(ois); 231 IOUtils.close(bais); 232 } 233 } 234 235 239 public static final boolean isPrimitive(String classname) { 240 return primitives.containsKey(classname); 241 } 242 243 246 public static final void loadList(Object [] src, List dest) { 247 for (int i = 0; i < src.length; i++) { 248 dest.add(src[i]); 249 } 250 } 251 252 255 public static final byte[] serialize(Object obj) throws IOException { 256 ByteArrayOutputStream baos = null; 257 ObjectOutputStream oos = null; 258 try { 259 baos = new ByteArrayOutputStream (); 260 oos = new ObjectOutputStream (baos); 261 oos.writeObject(obj); 262 return baos.toByteArray(); 263 } 264 finally { 265 IOUtils.close(oos); 266 IOUtils.close(baos); 267 } 268 } 269 270 274 public static final String toString(List objectList) { 275 StringBuffer sb = new StringBuffer (); 276 277 if ((objectList != null) && (objectList.size() > 0)) { 278 Iterator iter = objectList.iterator(); 279 280 while (iter.hasNext()) { 281 Object obj = iter.next(); 282 sb.append(L_BRACKET).append(obj.toString()).append(R_BRACKET); 283 284 if (iter.hasNext()) { 285 sb.append(COMMA); 286 } 287 } 288 } 289 290 return sb.toString(); 291 } 292 } | Popular Tags |