package com.oopdev.io.util.reflects; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import com.oopdev.io.util.exceptions.IOUtilException; /** * * @author kamilbukum * */ public class IOUtilFieldReflections { /** * * @param field * @param fieldParent * @param fieldGetterMethod * @return * @throws IOUtilException */ public static Object getFieldValue(Field field,Object fieldParent,Method fieldGetterMethod) throws IOUtilException{ Object value=null; if(fieldGetterMethod!=null){ try { value=fieldGetterMethod.invoke(fieldParent); } catch (IllegalArgumentException e) { throw new IOUtilException("com.oopdev.io.util.reflects.IOUtilFieldReflections.exception",new Object[]{e.getMessage()},e); } catch (IllegalAccessException e) { throw new IOUtilException("com.oopdev.io.util.reflects.IOUtilFieldReflections.exception",new Object[]{e.getMessage()},e); } catch (InvocationTargetException e) { throw new IOUtilException("com.oopdev.io.util.reflects.IOUtilFieldReflections.exception",new Object[]{e.getMessage()},e); } }else{ boolean accessible=field.isAccessible(); if(!accessible){ field.setAccessible(true); value=getPublicFieldValue(field, fieldParent); field.setAccessible(accessible); }else{ value=getPublicFieldValue(field, fieldParent); } } return value; } /** * * @param field * @param fieldParent * @return * @throws IOUtilException */ public static Object getPublicFieldValue(Field field,Object fieldParent)throws IOUtilException{ Object value=null; try { value=field.get(fieldParent); } catch (IllegalArgumentException e) { throw new IOUtilException("com.oopdev.io.util.reflects.IOUtilFieldReflections.exception",new Object[]{e.getMessage()},e); } catch (IllegalAccessException e) { throw new IOUtilException("com.oopdev.io.util.reflects.IOUtilFieldReflections.exception",new Object[]{e.getMessage()},e); } return value; } }