Example usage for com.badlogic.gdx.utils.reflect Field setAccessible

List of usage examples for com.badlogic.gdx.utils.reflect Field setAccessible

Introduction

In this page you can find the example usage for com.badlogic.gdx.utils.reflect Field setAccessible.

Prototype

public void setAccessible(boolean accessible) 

Source Link

Usage

From source file:com.dongbat.invasion.registry.ReflectionUtil.java

static void setFieldValue(Class clazz, String fieldName, Object obj, String value) {
    try {//  w w w.j  a v a  2 s.c  o  m
        Field field = ClassReflection.getDeclaredField(clazz, fieldName);
        field.setAccessible(true);
        Class type = field.getType();
        if (type.equals(float.class)) {
            field.set(obj, Float.parseFloat(value));
        } else if (type.equals(int.class)) {
            field.set(obj, Integer.parseInt(value));
        } else if (type.equals(boolean.class)) {
            field.set(obj, Boolean.parseBoolean(value));
        } else {
            field.set(obj, value);
        }
    } catch (ReflectionException ex) {
        Logger.getLogger(EnemyRegistry.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:com.dongbat.game.registry.ReflectionUtil.java

/**
 * Set object value for declared field//from w  ww.j  a  v a2 s.co  m
 *
 * @param clazz class name
 * @param fieldName field name
 * @param obj object type
 * @param value field value
 */
static void setFieldValue(Class clazz, String fieldName, Object obj, Object value) {

    try {
        Field field = ClassReflection.getDeclaredField(clazz, fieldName);
        field.setAccessible(true);
        Class type = field.getType();
        field.set(obj, value);
    } catch (ReflectionException ex) {
        Logger.getLogger(ReflectionUtil.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:com.dongbat.game.registry.ReflectionUtil.java

/**
 * Set value for declared field Field data type is String, float, int, long,
 * boolean//www.  j a  v a  2s. c  om
 *
 * @param clazz class name
 * @param fieldName field name
 * @param obj object type
 * @param value field value
 */
static void setFieldValue(Class clazz, String fieldName, Object obj, String value) {

    try {
        Field field = ClassReflection.getDeclaredField(clazz, fieldName);
        field.setAccessible(true);
        Class type = field.getType();
        if (type.equals(float.class)) {
            field.set(obj, Float.parseFloat(value));
        } else if (type.equals(int.class)) {
            field.set(obj, Integer.parseInt(value));
        } else if (type.equals(long.class)) {
            field.set(obj, Long.parseLong(value));
        } else if (type.equals(boolean.class)) {
            field.set(obj, Boolean.parseBoolean(value));
        } else {
            field.set(obj, value);
        }
    } catch (ReflectionException ex) {
        Logger.getLogger(ReflectionUtil.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:es.eucm.utils.apache.commons.lang3.JsonEscapeUtils.java

License:Open Source License

private static void escapeOrUnescape(Object objectToEscape, Class type, boolean escape) {
    if (objectToEscape == null) {
        return;//from w w w . j  a  va  2s  .c om
    }

    if (type == null) {
        type = objectToEscape.getClass();
    }

    // If the objectToEscape is from primitive type, do not search
    if (type.isEnum() || type == Float.class || type == Double.class || type == Boolean.class
            || type == Integer.class || type == Byte.class || type == Character.class || type == Long.class
            || type == Short.class || type == String.class) {
        return;
    }

    // Iterate through fields
    for (Field field : ClassReflection.getDeclaredFields(type)) {
        field.setAccessible(true);

        Object value = null;
        try {
            value = field.get(objectToEscape);
        } catch (ReflectionException e) {
            e.printStackTrace();
        }
        if (value == null) {
            continue;
        }

        // String field
        if (ClassReflection.isAssignableFrom(String.class, field.getType())) {
            try {
                field.set(objectToEscape, escapeOrUnescapeJsonString((String) value, escape));
            } catch (ReflectionException e) {
                e.printStackTrace();
            }
        }
        // Recursive search: array, list, map,
        else if (ClassReflection.isArray(field.getType())) {
            int length = java.lang.reflect.Array.getLength(value);
            for (int i = 0; i < length; i++) {
                Object child = java.lang.reflect.Array.get(value, i);
                if (child == null) {
                    continue;
                }
                if (child.getClass() == String.class) {
                    java.lang.reflect.Array.set(value, i, escapeOrUnescapeJsonString((String) child, escape));
                } else {
                    escapeOrUnescape(child, child.getClass(), escape);
                }
            }
        }

        else if (ClassReflection.isAssignableFrom(Array.class, field.getType())) {
            Array array = (Array) value;
            for (int i = 0; i < array.size; i++) {
                Object child = array.get(i);
                if (child == null) {
                    continue;
                }
                if (child.getClass() == String.class) {
                    array.set(i, escapeOrUnescapeJsonString((String) child, escape));
                } else {
                    escapeOrUnescape(child, child.getClass(), escape);
                }
            }
        }

        else if (ClassReflection.isAssignableFrom(List.class, field.getType())) {
            List list = (List) value;
            for (int i = 0; i < list.size(); i++) {
                Object child = list.get(i);
                if (child == null) {
                    continue;
                }
                if (child.getClass() == String.class) {
                    list.set(i, escapeOrUnescapeJsonString((String) child, escape));
                } else {
                    escapeOrUnescape(child, child.getClass(), escape);
                }
            }
        }

        else if (ClassReflection.isAssignableFrom(Map.class, field.getType())) {
            Map map = (Map) value;
            for (Object key : map.keySet()) {
                Object child = map.get(key);
                if (child == null) {
                    continue;
                }
                if (child.getClass() == String.class) {
                    map.put(key, escapeOrUnescapeJsonString((String) child, escape));
                } else {
                    escapeOrUnescape(child, child.getClass(), escape);
                }
            }
        }

        // Recursive search
        else {
            escapeOrUnescape(value, value.getClass(), escape);
        }
    }

    if (type.getSuperclass() != null) {
        escapeOrUnescape(objectToEscape, type.getSuperclass(), escape);
    }
}

From source file:es.eucm.ead.editor.utils.ProjectUtils.java

License:Open Source License

private static void listRefBinaries(Object object, Class clazz, BinaryReferences binaryPaths) {
    if (clazz == null) {
        clazz = object.getClass();/*w  w w . j  a v a  2s .co m*/
    }

    // If the object is from primitive type, do not search
    if (clazz.isEnum() || clazz == Float.class || clazz == Double.class || clazz == Boolean.class
            || clazz == Integer.class || clazz == Byte.class || clazz == Character.class || clazz == Long.class
            || clazz == Short.class) {
        return;
    }

    // If the object is a String (leaf)
    // Leaf: String
    if (ClassReflection.isAssignableFrom(String.class, clazz)) {
        String strValue = (String) object;
        binaryPaths.checkAndAdd(strValue);
    }
    // Special case: SpineAnimation does not store extension, and therefore
    // it needs to be treated differently
    else if (ClassReflection.isAssignableFrom(SpineAnimation.class, clazz)) {
        SpineAnimation spineAnimation = (SpineAnimation) object;
        String baseUri = spineAnimation.getUri();
        if (baseUri != null) {
            if (baseUri.toLowerCase().endsWith(".json")) {
                baseUri = baseUri.substring(0, baseUri.length() - 5);
            }
            String pngUri = baseUri + ".png";
            String jsonUri = baseUri + ".json";
            String atlasUri = baseUri + ".atlas";
            // Avoid adding the same reference twice
            binaryPaths.checkAndAdd(pngUri);
            binaryPaths.checkAndAdd(jsonUri);
            binaryPaths.checkAndAdd(atlasUri);
        }
    }

    // Iterate through fields
    for (Field field : ClassReflection.getDeclaredFields(clazz)) {
        field.setAccessible(true);

        Object value = null;
        try {
            value = field.get(object);
        } catch (ReflectionException e) {
            e.printStackTrace();
        }
        if (value == null) {
            continue;
        }

        // Recursive search: array, list, map,
        if (ClassReflection.isAssignableFrom(Array.class, field.getType())) {
            Array array = (Array) value;
            for (Object child : array) {
                if (child == null) {
                    continue;
                }
                listRefBinaries(child, child.getClass(), binaryPaths);
            }
        }

        else if (ClassReflection.isAssignableFrom(List.class, field.getType())) {
            List list = (List) value;
            for (Object child : list) {
                if (child == null) {
                    continue;
                }
                listRefBinaries(child, child.getClass(), binaryPaths);
            }
        }

        else if (ClassReflection.isAssignableFrom(Map.class, field.getType())) {
            Map map = (Map) value;
            for (Object child : map.values()) {
                if (child == null) {
                    continue;
                }
                listRefBinaries(child, child.getClass(), binaryPaths);
            }
        }

        // Recursive search
        else {
            listRefBinaries(value, value.getClass(), binaryPaths);
        }
    }

    if (clazz.getSuperclass() != null) {
        listRefBinaries(object, clazz.getSuperclass(), binaryPaths);
    }
}

From source file:es.eucm.ead.editor.utils.ProjectUtils.java

License:Open Source License

private static void replaceBinaryRef(Object object, Class clazz, String oldRef, String newRef) {
    if (clazz == null) {
        clazz = object.getClass();//from www .j  av  a  2 s. c o m
    }

    // If the object is from primitive type or null, do not search
    if (object == null || clazz.isEnum() || clazz == Float.class || clazz == Double.class
            || clazz == Boolean.class || clazz == Integer.class || clazz == Byte.class
            || clazz == Character.class || clazz == Long.class || clazz == Short.class) {
        return;
    }

    // Special case: SpineAnimation does not store extension, and therefore
    // it needs to be treated differently
    else if (ClassReflection.isAssignableFrom(SpineAnimation.class, clazz)) {
        SpineAnimation spineAnimation = (SpineAnimation) object;
        String baseUri = spineAnimation.getUri();
        if (baseUri != null) {
            baseUri = baseUri.toLowerCase();
            oldRef = oldRef.toLowerCase();
            if (baseUri.endsWith(".json")) {
                baseUri = baseUri.substring(0, baseUri.length() - 5);
            }
            if (oldRef.endsWith(".json")) {
                oldRef = oldRef.substring(0, oldRef.length() - 5);
            }
            if (baseUri.equals(oldRef)) {
                spineAnimation.setUri(newRef);
            }
        }
    }

    // Iterate through fields
    for (Field field : ClassReflection.getDeclaredFields(clazz)) {
        field.setAccessible(true);

        Object value = null;
        try {
            value = field.get(object);
        } catch (ReflectionException e) {
            e.printStackTrace();
        }
        if (value == null) {
            continue;
        }

        // Recursive search: array, list, map,
        if (ClassReflection.isAssignableFrom(Array.class, field.getType())) {
            Array array = (Array) value;
            for (int i = 0; i < array.size; i++) {
                Object child = array.get(i);
                if (child == null) {
                    continue;
                } else if (child instanceof String) {
                    String strValue = (String) child;
                    if (strValue.toLowerCase().equals(oldRef.toLowerCase())) {
                        array.set(i, newRef);
                    }
                } else {
                    replaceBinaryRef(child, child.getClass(), oldRef, newRef);
                }
            }
        }

        else if (ClassReflection.isAssignableFrom(List.class, field.getType())) {
            List list = (List) value;
            for (int i = 0; i < list.size(); i++) {
                Object child = list.get(i);
                if (child == null) {
                    continue;
                } else if (child instanceof String) {
                    String strValue = (String) child;
                    if (strValue.toLowerCase().equals(oldRef.toLowerCase())) {
                        list.set(i, newRef);
                    }
                } else {
                    replaceBinaryRef(child, child.getClass(), oldRef, newRef);
                }
            }
        }

        else if (ClassReflection.isAssignableFrom(Map.class, field.getType())) {
            Map map = (Map) value;
            for (Object key : map.keySet()) {
                Object child = map.get(key);
                if (child == null) {
                    continue;
                } else if (child instanceof String) {
                    String strValue = (String) child;
                    if (strValue.toLowerCase().equals(oldRef.toLowerCase())) {
                        map.put(key, newRef);
                    }
                } else {
                    replaceBinaryRef(child, child.getClass(), oldRef, newRef);
                }
            }
        } else if (ClassReflection.isAssignableFrom(String.class, field.getType())) {
            String strValue = (String) value;
            // Check if value matches oldRef
            if (strValue.toLowerCase().equals(oldRef.toLowerCase())) {
                try {
                    field.set(object, newRef);
                } catch (ReflectionException e) {
                    Gdx.app.error("Error setting binary ref in field " + field.getName(), "", e);
                }
            }
        }
        // Recursive search
        else {
            replaceBinaryRef(value, value.getClass(), oldRef, newRef);
        }
    }

    if (clazz.getSuperclass() != null) {
        replaceBinaryRef(object, clazz.getSuperclass(), oldRef, newRef);
    }
}

From source file:es.eucm.ead.engine.systems.tweens.tweencreators.AlphaTweenCreator.java

License:Open Source License

@Override
public Object getTarget(EngineEntity entity, AlphaTween fieldTween) {
    try {// www  . j a  v a2s. c o  m
        Class clazz = Color.class;
        Field field = ClassReflection.getDeclaredField(clazz, "a");
        field.setAccessible(true);
        return new FieldWrapper(field, entity.getGroup().getColor());
    } catch (ReflectionException e) {
        Gdx.app.error("FieldTweenCreator", "Error creating field wrapper", e);
    }
    return null;
}

From source file:es.eucm.ead.engine.processors.RefProcessor.java

License:Open Source License

@Override
public Component getComponent(T component) {
    try {/*from   www.j a v  a 2 s.  c o m*/
        Field field = ClassReflection.getDeclaredField(component.getClass(), "uri");
        field.setAccessible(true);
        loadedComponent = null;
        gameAssets.get(field.get(component) + "", Object.class, this);
        return componentLoader.toEngineComponent(loadedComponent);
    } catch (ReflectionException e) {
        Gdx.app.error("RefProcessor", "No uri field in " + component);
        return null;
    }
}

From source file:es.eucm.ead.engine.systems.tweens.tweencreators.FieldTweenCreator.java

License:Open Source License

@Override
public Object getTarget(EngineEntity entity, FieldTween fieldTween) {
    try {/* ww  w.  j ava 2  s.  co  m*/
        Class clazz = componentLoader.toEngineComponent(fieldTween.getComponent());
        if (clazz != null) {
            Field field = ClassReflection.getDeclaredField(clazz, fieldTween.getField());
            field.setAccessible(true);
            return new FieldWrapper(field, entity.getComponent(clazz));
        }
    } catch (ReflectionException e) {
        Gdx.app.error("FieldTweenCreator", "Error creating field wrapper", e);
    }
    return null;
}

From source file:com.algodal.gdxscreen.utils.GdxPrefs.java

License:Apache License

private void take(Field field) {
    field.setAccessible(true); //allow private access, important unless the POJO has only public fields
    if (field.getType().equals(Integer.class) || field.getType().equals(Short.class)
            || field.getType().equals(int.class) || field.getType().equals(short.class))
        setValue(field, prefs.getInteger(field.getName(), 0));
    else if (field.getType().equals(Long.class) || field.getType().equals(long.class))
        setValue(field, prefs.getLong(field.getName(), 0));
    else if (field.getType().equals(Boolean.class) || field.getType().equals(boolean.class))
        setValue(field, prefs.getBoolean(field.getName(), false));
    else if (field.getType().equals(Float.class) || field.getType().equals(Double.class)
            || field.getType().equals(float.class) || field.getType().equals(double.class))
        setValue(field, prefs.getFloat(field.getName(), 0.0f));
    else if (field.getType().equals(String.class))
        setValue(field, prefs.getString(field.getName(), null));
    if (field.getType().equals(Character.class) || field.getType().equals(char.class)
            || field.getType().equals(Byte.class) || field.getType().equals(byte.class))
        setStringValueFromCharacter(field, prefs.getString(field.getName(), null));
}