Package com.daveayan.ark

Source Code of com.daveayan.ark.ArkUtils

package com.daveayan.ark;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.objenesis.Objenesis;
import org.objenesis.ObjenesisStd;
import org.objenesis.instantiator.ObjectInstantiator;
/**
* Usage:
* ArkUtils.get_value_on_field(Object target, String field_name)
* ArkUtils.set_value_on_field(Object target, String field_name, Object value)
* ArkUtils.public static Object instantiate(Class< ? > clazz)
*
* @author daveayan
*
*/
public class ArkUtils {
 
  public static Object get_value_on_field(Object target, String field_name) {
    List<Field> fields = getAllFieldsIn(target);
    for (Field field : fields) {
      if (fieldNameIs(field, field_name)) {
        return getFieldValueSafely(target, field);
      }
    }
    return null;
  }
 
  public static Object set_value_on_field(Object target, String field_name, Object value) {
    List<Field> fields = getAllFieldsIn(target);
    for(Field field: fields) {
      if(StringUtils.equals(field.getName(), field_name)) {
        makeAccessible(field);
        try {
          field.set(target, value);
        } catch (IllegalArgumentException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        } catch (IllegalAccessException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
    }
    return target;
  }
 
  public static Object instantiate(String json) {
    return null;
  }
 
  public static Object instantiate(Class< ? > clazz) {
    Objenesis objenesis = new ObjenesisStd();
    ObjectInstantiator thingyInstantiator = objenesis.getInstantiatorOf(clazz);
    return thingyInstantiator.newInstance();
  }
 
  private static List<Field> getAllFieldsIn(Object object) {
    List<Field> classes = new ArrayList<Field>();
    classes.addAll(Arrays.asList(object.getClass().getDeclaredFields()));
    Class<?> superclass = object.getClass().getSuperclass();
    while (superclass != null) {
      classes.addAll(Arrays.asList(superclass.getDeclaredFields()));
      superclass = superclass.getSuperclass();
    }

    return classes;
  }
 
  private static boolean fieldNameIs(Field field, String fieldName) {
    if (field == null || fieldName == null)
      return false;
    if (field.getName().trim().equals(fieldName.trim()))
      return true;
    return false;
  }
 
  private static Object getFieldValueSafely(Object object, Field field) {
    try {
      return getFieldValue(object, field);
    } catch (IllegalArgumentException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return null;
  }
 
  private static Object getFieldValue(Object object, Field field) throws IllegalArgumentException, IllegalAccessException {
    if(isNotAccessible(field)) { makeAccessible(field); }
    return field.get(object);
  }
 
  private static boolean isAccessible(Field field) {
    return Modifier.isPublic(field.getModifiers());
  }
 
  private static boolean isNotAccessible(Field field) {
    return ! Modifier.isPublic(field.getModifiers());
  }

  private static void makeAccessible(Field field) {
    if (!isAccessible(field)) {
      field.setAccessible(true);
    }
  }
}
TOP

Related Classes of com.daveayan.ark.ArkUtils

TOP
Copyright © 2018 www.massapi.com. 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.