Package org.exoplatform.ws.frameworks.json.value

Examples of org.exoplatform.ws.frameworks.json.value.JsonValue


   {
      if (array == null)
         return new NullValue();

      Types t = JsonUtils.getType(array);
      JsonValue jsonArray = new ArrayValue();
      int length = Array.getLength(array);
      if (t == Types.ARRAY_BOOLEAN)
      {
         for (int i = 0; i < length; i++)
            jsonArray.addElement(new BooleanValue(Array.getBoolean(array, i)));
      }
      else if (t == Types.ARRAY_BYTE)
      {
         for (int i = 0; i < length; i++)
            jsonArray.addElement(new LongValue(Array.getByte(array, i)));
      }
      else if (t == Types.ARRAY_SHORT)
      {
         for (int i = 0; i < length; i++)
            jsonArray.addElement(new LongValue(Array.getShort(array, i)));
      }
      else if (t == Types.ARRAY_INT)
      {
         for (int i = 0; i < length; i++)
            jsonArray.addElement(new LongValue(Array.getInt(array, i)));
      }
      else if (t == Types.ARRAY_LONG)
      {
         for (int i = 0; i < length; i++)
            jsonArray.addElement(new LongValue(Array.getLong(array, i)));
      }
      else if (t == Types.ARRAY_FLOAT)
      {
         for (int i = 0; i < length; i++)
            jsonArray.addElement(new DoubleValue(Array.getFloat(array, i)));
      }
      else if (t == Types.ARRAY_DOUBLE)
      {
         for (int i = 0; i < length; i++)
            jsonArray.addElement(new DoubleValue(Array.getDouble(array, i)));
      }
      else if (t == Types.ARRAY_CHAR)
      {
         for (int i = 0; i < length; i++)
            jsonArray.addElement(new StringValue(Character.toString(Array.getChar(array, i))));
      }
      else if (t == Types.ARRAY_STRING)
      {
         for (int i = 0; i < length; i++)
            jsonArray.addElement(new StringValue((String)Array.get(array, i)));
      }
      else if (t == Types.ARRAY_OBJECT)
      {
         for (int i = 0; i < length; i++)
         {
            Object el = Array.get(array, i);
            // If :
            // 1. Known types (primitive, String, array of primitive or String)
            // 2. Array of any object (expect for Java Bean)
            // 3. Collection<?>
            // 4. Map<String, ?>
            if (JsonUtils.getType(el) != null)
               jsonArray.addElement(createJsonValue(el));
            else
               jsonArray.addElement(createJsonObject(el));
         }
      }
      else
      {
         throw new JsonException("Invalid argument, must be array.");
View Full Code Here


   public JsonValue createJsonObject(Map<String, Object> map) throws JsonException
   {
      if (map == null)
         return new NullValue();

      JsonValue jsonObject = new ObjectValue();
      Set<String> keys = map.keySet();
      for (String k : keys)
      {
         Object o = map.get(k);
         // If :
         // 1. Known types (primitive, String, array of primitive or String)
         // 2. Array of any object (expect for Java Bean)
         // 3. Collection<?>
         // 4. Map<String, ?>
         if (JsonUtils.getType(o) != null)
            jsonObject.addElement(k, createJsonValue(o));
         else
            jsonObject.addElement(k, createJsonObject(o));
      }
      return jsonObject;
   }
View Full Code Here

   {
      Method[] methods = object.getClass().getMethods();

      List<String> transientFields = getTransientFields(object.getClass());

      JsonValue jsonRootValue = new ObjectValue();

      for (Method method : methods)
      {
         String name = method.getName();

         /*
          * Method must be as follow: 1. Name starts from "get" plus at least one
          * character or starts from "is" plus one more character and return
          * boolean type; 2. Must be without parameters; 3. Not "getClass" method;
          */
         String key = null;
         if (name.startsWith("get") && name.length() > 3 && method.getParameterTypes().length == 0
            && !"getClass".equals(name))
         {
            key = name.substring(3);
         }
         else if (name.startsWith("is") && name.length() > 2
            && (method.getReturnType() == Boolean.class || method.getReturnType() == boolean.class)
            && method.getParameterTypes().length == 0)
         {
            key = name.substring(2);
         }

         if (key != null)
         {
            // First letter of key to lower case.
            key = (key.length() > 1) ? Character.toLowerCase(key.charAt(0)) + key.substring(1) : key.toLowerCase();
            // Check is this field in list of transient field.
            if (!transientFields.contains(key))
            {
               try
               {
                  // Get result of invoke method get...
                  Object invokeResult = method.invoke(object, new Object[0]);

                  // If :
                  // 1. Known types (primitive, String, array of primitive or String)
                  // 2. Array of any object (expect for Java Bean)
                  // 3. Collection<?>
                  // 4. Map<String, ?>
                  if (JsonUtils.getType(invokeResult) != null)
                  {
                     jsonRootValue.addElement(key, createJsonValue(invokeResult));
                  }
                  else
                  {
                     jsonRootValue.addElement(key, createJsonObject(invokeResult));
                  }

               }
               catch (InvocationTargetException e)
               {
View Full Code Here

         case STRING :
            return new StringValue((String)object);
         case ENUM:
            return new StringValue(((Enum)object).name());
         case ARRAY_BOOLEAN : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
            {
               jsonArray.addElement(new BooleanValue(Array.getBoolean(object, i)));
            }
            return jsonArray;
         }
         case ARRAY_BYTE : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
            {
               jsonArray.addElement(new LongValue(Array.getByte(object, i)));
            }
            return jsonArray;
         }
         case ARRAY_SHORT : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
            {
               jsonArray.addElement(new LongValue(Array.getShort(object, i)));
            }
            return jsonArray;
         }
         case ARRAY_INT : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
            {
               jsonArray.addElement(new LongValue(Array.getInt(object, i)));
            }
            return jsonArray;
         }
         case ARRAY_LONG : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
            {
               jsonArray.addElement(new LongValue(Array.getLong(object, i)));
            }
            return jsonArray;
         }
         case ARRAY_FLOAT : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
            {
               jsonArray.addElement(new DoubleValue(Array.getFloat(object, i)));
            }
            return jsonArray;
         }
         case ARRAY_DOUBLE : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
            {
               jsonArray.addElement(new DoubleValue(Array.getDouble(object, i)));
            }
            return jsonArray;
         }
         case ARRAY_CHAR : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
            {
               jsonArray.addElement(new StringValue(Character.toString(Array.getChar(object, i))));
            }
            return jsonArray;
         }
         case ARRAY_STRING : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
            {
               jsonArray.addElement(new StringValue((String)Array.get(object, i)));
            }
            return jsonArray;
         }
         case ARRAY_OBJECT : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
            {
               Object el = Array.get(object, i);
               if (JsonUtils.getType(el) != null)
               {
                  jsonArray.addElement(createJsonValue(el));
               }
               else
               {
                  jsonArray.addElement(createJsonObject(el));
               }
            }

            return jsonArray;
         }
         case COLLECTION : {
            JsonValue jsonArray = new ArrayValue();
            List<Object> list = new ArrayList<Object>((Collection<?>)object);
            for (Object o : list)
            {
               if (JsonUtils.getType(o) != null)
               {
                  jsonArray.addElement(createJsonValue(o));
               }
               else
               {
                  jsonArray.addElement(createJsonObject(o));
               }
            }

            return jsonArray;
         }
         case MAP :
            JsonValue jsonObject = new ObjectValue();
            Map<String, Object> map = new HashMap<String, Object>((Map<String, Object>)object);
            Set<String> keys = map.keySet();
            for (String k : keys)
            {
               Object o = map.get(k);
               if (JsonUtils.getType(o) != null)
               {
                  jsonObject.addElement(k, createJsonValue(o));
               }
               else
               {
                  jsonObject.addElement(k, createJsonObject(o));
               }
            }

            return jsonObject;
         default :
View Full Code Here

   {
      Method[] methods = object.getClass().getMethods();

      List<String> transientFields = getTransientFields(object.getClass());

      JsonValue jsonRootValue = new ObjectValue();

      for (Method method : methods)
      {
         String name = method.getName();

         /*
          * Method must be as follow: 1. Name starts from "get" plus at least one
          * character or starts from "is" plus one more character and return
          * boolean type; 2. Must be without parameters; 3. Not "getClass" method;
          */
         String key = null;
         if (name.startsWith("get") && name.length() > 3 && method.getParameterTypes().length == 0
            && !"getClass".equals(name))
         {
            key = name.substring(3);
         }
         else if (name.startsWith("is") && name.length() > 2
            && (method.getReturnType() == Boolean.class || method.getReturnType() == boolean.class)
            && method.getParameterTypes().length == 0)
         {
            key = name.substring(2);
         }

         if (key != null)
         {
            // First letter of key to lower case.
            key = (key.length() > 1) ? Character.toLowerCase(key.charAt(0)) + key.substring(1) : key.toLowerCase();
            // Check is this field in list of transient field.
            if (!transientFields.contains(key))
            {
               try
               {
                  // Get result of invoke method get...
                  Object invokeResult = method.invoke(object, new Object[0]);

                  if (JsonUtils.getType(invokeResult) != null)
                     jsonRootValue.addElement(key, createJsonValue(invokeResult));
                  else
                     jsonRootValue.addElement(key, createJsonObject(invokeResult));

               }
               catch (InvocationTargetException e)
               {
                  throw new JsonException(e);
View Full Code Here

         case CHAR :
            return new StringValue(Character.toString((Character)object));
         case STRING :
            return new StringValue((String)object);
         case ARRAY_BOOLEAN : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
               jsonArray.addElement(new BooleanValue(Array.getBoolean(object, i)));
            return jsonArray;
         }
         case ARRAY_BYTE : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
               jsonArray.addElement(new LongValue(Array.getByte(object, i)));
            return jsonArray;
         }
         case ARRAY_SHORT : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
               jsonArray.addElement(new LongValue(Array.getShort(object, i)));
            return jsonArray;
         }
         case ARRAY_INT : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
               jsonArray.addElement(new LongValue(Array.getInt(object, i)));
            return jsonArray;
         }
         case ARRAY_LONG : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
               jsonArray.addElement(new LongValue(Array.getLong(object, i)));
            return jsonArray;
         }
         case ARRAY_FLOAT : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
               jsonArray.addElement(new DoubleValue(Array.getFloat(object, i)));
            return jsonArray;
         }
         case ARRAY_DOUBLE : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
               jsonArray.addElement(new DoubleValue(Array.getDouble(object, i)));
            return jsonArray;
         }
         case ARRAY_CHAR : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
               jsonArray.addElement(new StringValue(Character.toString(Array.getChar(object, i))));
            return jsonArray;
         }
         case ARRAY_STRING : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
               jsonArray.addElement(new StringValue((String)Array.get(object, i)));
            return jsonArray;
         }
         case ARRAY_OBJECT : {
            JsonValue jsonArray = new ArrayValue();
            int length = Array.getLength(object);
            for (int i = 0; i < length; i++)
            {
               Object el = Array.get(object, i);
               if (JsonUtils.getType(el) != null)
                  jsonArray.addElement(createJsonValue(el));
               else
                  jsonArray.addElement(createJsonObject(el));
            }

            return jsonArray;
         }
         case COLLECTION : {
            JsonValue jsonArray = new ArrayValue();
            List<Object> list = new ArrayList<Object>((Collection<?>)object);
            for (Object o : list)
            {
               if (JsonUtils.getType(o) != null)
                  jsonArray.addElement(createJsonValue(o));
               else
                  jsonArray.addElement(createJsonObject(o));
            }

            return jsonArray;
         }
         case MAP :
            JsonValue jsonObject = new ObjectValue();
            Map<String, Object> map = new HashMap<String, Object>((Map<String, Object>)object);
            Set<String> keys = map.keySet();
            for (String k : keys)
            {
               Object o = map.get(k);
               if (JsonUtils.getType(o) != null)
                  jsonObject.addElement(k, createJsonValue(o));
               else
                  jsonObject.addElement(k, createJsonObject(o));
            }

            return jsonObject;
         default :
            // Must not be here!
View Full Code Here

            if (!jsonValue.isObject())
               throw new JsonException("Unsupported type of jsonValue for parameter of method " + clazz.getName() + "#"
                  + method.getName());

            JsonValue childJsonValue = jsonValue.getElement(key);

            if (childJsonValue == null)
               continue;

            // if one of known primitive type or array of primitive type
            if (JsonUtils.isKnownType(methodParameterClazz))
            {
               method.invoke(object, new Object[]{createObjectKnownTypes(methodParameterClazz, childJsonValue)});
            }
            else
            {
               Types type = JsonUtils.getType(methodParameterClazz);
               // other type Collection, Map or Object[].
               if (type != null)
               {
                  switch (type)
                  {
                     case ARRAY_OBJECT : {
                        Object array = createArray(methodParameterClazz, childJsonValue);
                        method.invoke(object, new Object[]{array});
                     }
                        break;
                     case COLLECTION : {
                        Type[] genericParameterTypes = method.getGenericParameterTypes();
                        Class<?> parameterizedTypeClass = null;
                        if (genericParameterTypes.length == 1)
                        {
                           if (genericParameterTypes[0] instanceof ParameterizedType)
                           {
                              ParameterizedType parameterizedType = (ParameterizedType)genericParameterTypes[0];
                              try
                              {
                                 // Collection can't be parameterized by other Collection,
                                 // Array, etc.
                                 parameterizedTypeClass = (Class<?>)parameterizedType.getActualTypeArguments()[0];
                              }
                              catch (ClassCastException e)
                              {
                                 throw new JsonException("Unsupported parameter in method " + clazz.getName() + "#"
                                    + method.getName()
                                    + ". This type of Collection can't be restored from JSON source.\n"
                                    + "Collection is parameterized by wrong Type: " + parameterizedType + ".");
                              }
                           }
                           else
                           {
                              throw new JsonException("Unsupported parameter in method " + clazz.getName() + "#"
                                 + method.getName() + ". Collection is not parameterized. "
                                 + "Collection<?> is not supported. \nCollection must be parameterized by"
                                 + " any types, or by JavaBean with 'get' and 'set' methods.");
                           }
                        }
                        Constructor<?> constructor = null;
                        if (methodParameterClazz.isInterface()
                           || Modifier.isAbstract(methodParameterClazz.getModifiers()))
                        {
                           try
                           {
                              constructor =
                                 ArrayList.class.asSubclass(methodParameterClazz).getConstructor(
                                    new Class[]{Collection.class});
                           }
                           catch (Exception e)
                           {
                              try
                              {
                                 constructor =
                                    HashSet.class.asSubclass(methodParameterClazz).getConstructor(
                                       new Class[]{Collection.class});
                              }
                              catch (Exception e1)
                              {
                                 try
                                 {
                                    constructor =
                                       LinkedList.class.asSubclass(methodParameterClazz).getConstructor(
                                          new Class[]{Collection.class});
                                 }
                                 catch (Exception e2)
                                 {
                                    // ignore exception here
                                 }
                              }
                           }
                        }
                        else
                        {
                           constructor = methodParameterClazz.getConstructor(new Class[]{Collection.class});
                        }
                        if (constructor == null)
                           throw new JsonException("Can't find satisfied constructor for : " + methodParameterClazz
                              + ", method : " + clazz.getName() + "#" + method.getName());

                        ArrayList<Object> sourceCollection = new ArrayList<Object>(childJsonValue.size());

                        Iterator<JsonValue> values = childJsonValue.getElements();

                        while (values.hasNext())
                        {
                           JsonValue v = values.next();
                           if (!JsonUtils.isKnownType(parameterizedTypeClass))
                              sourceCollection.add(createObject(parameterizedTypeClass, v));
                           else
                              sourceCollection.add(createObjectKnownTypes(parameterizedTypeClass, v));
                        }

                        constructor.newInstance(sourceCollection);
                        method.invoke(object, constructor.newInstance(sourceCollection));
                     }
                        break;
                     case MAP : {
                        Type[] genericParameterTypes = method.getGenericParameterTypes();
                        Class<?> parameterizedTypeClass = null;
                        if (genericParameterTypes.length == 1)
                        {
                           if (genericParameterTypes[0] instanceof ParameterizedType)
                           {
                              ParameterizedType parameterizedType = (ParameterizedType)genericParameterTypes[0];
                              if (!String.class
                                 .isAssignableFrom((Class<?>)parameterizedType.getActualTypeArguments()[0]))
                                 throw new JsonException("Unsupported parameter in method " + clazz.getName() + "#"
                                    + method.getName() + ". Key of Map must be String.");
                              try
                              {
                                 parameterizedTypeClass = (Class<?>)parameterizedType.getActualTypeArguments()[1];
                              }
                              catch (Exception e)
                              {
                                 throw new JsonException("Unsupported parameter in method " + clazz.getName() + "#"
                                    + method.getName() + ". This type of Map can't be restored from JSON source.\n"
                                    + "Map is parameterized by wrong Type: " + parameterizedType + ".");
                              }
                           }
                           else
                           {
                              throw new JsonException("Unsupported parameter in method " + clazz.getName() + "#"
                                 + method.getName() + ". Map is not parameterized. "
                                 + "Map<Sting, ?> is not supported. \nMap must be parameterized by"
                                 + "String and any types or JavaBean with 'get' and 'set' methods.");
                           }
                        }
                        Constructor<?> constructor = null;
                        if (methodParameterClazz.isInterface()
                           || Modifier.isAbstract(methodParameterClazz.getModifiers()))
                        {
                           try
                           {
                              constructor =
                                 HashMap.class.asSubclass(methodParameterClazz).getConstructor(new Class[]{Map.class});
                           }
                           catch (Exception e)
                           {
                              try
                              {
                                 constructor =
                                    Hashtable.class.asSubclass(methodParameterClazz).getConstructor(
                                       new Class[]{Map.class});
                              }
                              catch (Exception e1)
                              {
                                 try
                                 {
                                    constructor =
                                       LinkedHashMap.class.asSubclass(methodParameterClazz).getConstructor(
                                          new Class[]{Map.class});
                                 }
                                 catch (Exception e2)
                                 {
                                    // ignore exception here
                                 }
                              }
                           }
                        }
                        else
                        {
                           constructor = methodParameterClazz.getConstructor(new Class[]{Map.class});
                        }

                        if (constructor == null)
                           throw new JsonException("Can't find satisfied constructor for : " + methodParameterClazz
                              + ", method : " + clazz.getName() + "#" + method.getName());

                        HashMap<String, Object> sourceMap = new HashMap<String, Object>(childJsonValue.size());

                        Iterator<String> keys = childJsonValue.getKeys();

                        while (keys.hasNext())
                        {
                           String k = keys.next();
                           JsonValue v = childJsonValue.getElement(k);
                           if (!JsonUtils.isKnownType(parameterizedTypeClass))
                              sourceMap.put(k, createObject(parameterizedTypeClass, v));
                           else
                              sourceMap.put(k, createObjectKnownTypes(parameterizedTypeClass, v));
                        }
View Full Code Here

      {
         if (JsonUtils.isKnownType(componentType))
         {
            while (values.hasNext())
            {
               JsonValue v = values.next();
               Array.set(array, i++, createObjectKnownTypes(componentType, v));
            }
         }
         else
         {
            while (values.hasNext())
            {
               JsonValue v = values.next();
               Array.set(array, i++, createArray(componentType, v));
            }
         }
      }
      else
      {
         while (values.hasNext())
         {
            JsonValue v = values.next();
            Array.set(array, i++, createObject(componentType, v));
         }
      }
      return array;
   }
View Full Code Here

    BackupConfigBean bean = new BackupConfigBean(BackupManager.FULL_BACKUP_ONLY,
                                                 backupDir);
   
    JsonGeneratorImpl generatorImpl = new JsonGeneratorImpl();
    JsonValue json;
    try {
      json = generatorImpl.createJsonObject(bean);
    } catch (JsonException e) {
      throw new BackupExecuteException("Can not get json from  : " + bean.getClass().toString(), e);
    }
       
    BackupAgentResponse response  = transport.executePOST(sURL, json.toString());
   
    if (response.getStatus() == Response.Status.OK.getStatusCode()) {
      return "\nSuccessful : \n" +
             "\tstatus code = " + response.getStatus() + "\n";
    } else {
View Full Code Here

    BackupConfigBean bean = new BackupConfigBean(BackupManager.FULL_AND_INCREMENTAL,
                                                 backupDir,
                                                 incr);
   
    JsonGeneratorImpl generatorImpl = new JsonGeneratorImpl();
    JsonValue json;
    try {
      json = generatorImpl.createJsonObject(bean);
    } catch (JsonException e) {
      throw new BackupExecuteException("Can not get json from  : " + bean.getClass().toString(), e);
    }
       
    BackupAgentResponse response  = transport.executePOST(sURL, json.toString());
   
    if (response.getStatus() == Response.Status.OK.getStatusCode()) {
      return "\nSuccessful : \n" +
             "\tstatus code = " + response.getStatus() + "\n";
    } else {
View Full Code Here

TOP

Related Classes of org.exoplatform.ws.frameworks.json.value.JsonValue

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.