List of usage examples for com.badlogic.gdx.utils.reflect Field setAccessible
public void setAccessible(boolean accessible)
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)); }