X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosJson.java;h=67f3a00ad3fdc2502e7921cc962ad98b5a8e5bb1;hb=a7e0bb5eb661cfde31c383d605cb9cb8ca568bc7;hp=e979a4599195e16236046921c3cd1ef0f92377bb;hpb=1dce20f7eee56166ac61798ca26eeb323dc8f012;p=fw%2Faltos diff --git a/altoslib/AltosJson.java b/altoslib/AltosJson.java index e979a459..67f3a00a 100644 --- a/altoslib/AltosJson.java +++ b/altoslib/AltosJson.java @@ -1012,7 +1012,32 @@ public class AltosJson extends JsonUtil { assert_array(false); Class element_class = c.getComponentType(); - if (element_class == Double.TYPE) { + if (element_class == Boolean.TYPE) { + boolean[] array = (boolean[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = (Boolean) get(i).make(element_class); + ret = array; + } else if (element_class == Byte.TYPE) { + byte[] array = (byte[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = (Byte) get(i).make(element_class); + ret = array; + } else if (element_class == Character.TYPE) { + char[] array = (char[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = (Character) get(i).make(element_class); + ret = array; + } else if (element_class == Integer.TYPE) { + int[] array = (int[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = (Integer) get(i).make(element_class); + ret = array; + } else if (element_class == Long.TYPE) { + long[] array = (long[]) Array.newInstance(element_class, size()); + for (int i = 0; i < array.length; i++) + array[i] = (Long) get(i).make(element_class); + ret = array; + } else if (element_class == Double.TYPE) { double[] array = (double[]) Array.newInstance(element_class, size()); for (int i = 0; i < array.length; i++) array[i] = (Double) get(i).make(element_class); @@ -1038,7 +1063,7 @@ public class AltosJson extends JsonUtil { } else { object = c.newInstance(); } - for (; c != null; c = c.getSuperclass()) { + for (; c != Object.class; c = c.getSuperclass()) { for (Field field : c.getDeclaredFields()) { String fieldName = field.getName(); Class fieldClass = field.getType(); @@ -1055,17 +1080,27 @@ public class AltosJson extends JsonUtil { field.set(object, val); } } catch (IllegalAccessException ie) { + System.out.printf("%s:%s %s\n", + c.getName(), fieldName, ie.toString()); } } } ret = object; } catch (InvocationTargetException ie) { + System.out.printf("%s: %s\n", + c.getName(), ie.toString()); ret = null; } catch (NoSuchMethodException ie) { + System.out.printf("%s: %s\n", + c.getName(), ie.toString()); ret = null; } catch (InstantiationException ie) { + System.out.printf("%s: %s\n", + c.getName(), ie.toString()); ret = null; } catch (IllegalAccessException ie) { + System.out.printf("%s: %s\n", + c.getName(), ie.toString()); ret = null; } } @@ -1173,7 +1208,7 @@ public class AltosJson extends JsonUtil { } } else { assert_hash(true); - for (Class c = object.getClass(); c != null; c = c.getSuperclass()) { + for (Class c = object.getClass(); c != Object.class; c = c.getSuperclass()) { for (Field field : c.getDeclaredFields()) { String fieldName = field.getName(); @@ -1198,6 +1233,8 @@ public class AltosJson extends JsonUtil { put(fieldName, json); } } catch (IllegalAccessException ie) { + System.out.printf("%s:%s %s\n", + c.getName(), fieldName, ie.toString()); } } }