List of usage examples for java.lang.reflect Method isAccessible
@Deprecated(since = "9") public boolean isAccessible()
From source file:com.yanzhenjie.album.BasicWrapper.java
/** * Start the Album.// w w w .jav a 2s . c o m */ public final void start() { try { Method method = o.getClass().getMethod("startActivityForResult", Intent.class, int.class); if (!method.isAccessible()) method.setAccessible(true); method.invoke(o, intent, intent.getIntExtra(KEY_INPUT_REQUEST_CODE, 0)); } catch (Exception e) { e.printStackTrace(); } }
From source file:de.xaniox.heavyspleef.core.event.EventListenerMethod.java
@SuppressWarnings("unchecked") public EventListenerMethod(Object instance, Method method) { this.instance = instance; this.method = method; if (!method.isAccessible()) { method.setAccessible(true);// ww w . j av a 2s. com } subscribe = method.getAnnotation(Subscribe.class); Class<?>[] parameters = method.getParameterTypes(); Validate.isTrue(parameters.length == 1, "method must have only one parameter which must be a subtype of Event"); Class<?> eventClass = parameters[0]; Validate.isTrue(Event.class.isAssignableFrom(eventClass), "First parameter of method must be a subtype of Event"); this.eventClass = (Class<? extends Event>) eventClass; }
From source file:org.openspaces.pu.container.ProcessingUnitContainerContextBeanPostProcessor.java
private static Metric getMetricFromMethod(final Method method, final Object bean) { if (method.getParameterTypes().length != 0) { if (logger.isWarnEnabled()) logger.warn("Metric registration of method " + method.getName() + " in " + bean.getClass().getName() + " is skipped - metric method cannot have parameters"); return null; }//w w w.j ava 2 s . co m if (method.getReturnType().equals(Void.TYPE)) { if (logger.isWarnEnabled()) logger.warn("Metric registration of method " + method.getName() + " in " + bean.getClass().getName() + " is skipped - metric method cannot return void"); return null; } if (Modifier.isStatic(method.getModifiers())) { if (logger.isWarnEnabled()) logger.warn("Metric registration of method " + method.getName() + " in " + bean.getClass().getName() + " is skipped - metric method cannot be static"); return null; } if (!method.isAccessible()) method.setAccessible(true); if (Metric.class.isAssignableFrom(method.getReturnType())) { try { return (Metric) method.invoke(bean); } catch (IllegalAccessException e) { if (logger.isWarnEnabled()) logger.warn("Metric registration of method " + method.getName() + " in " + bean.getClass().getName() + " is skipped - failed to get metric - " + e.getMessage()); return null; } catch (InvocationTargetException e) { if (logger.isWarnEnabled()) logger.warn("Metric registration of method " + method.getName() + " in " + bean.getClass().getName() + " is skipped - failed to get metric - " + e.getMessage()); return null; } } return new Gauge<Object>() { @Override public Object getValue() throws Exception { return method.invoke(bean); } }; }
From source file:org.vulpe.commons.util.VulpeReflectUtil.java
/** * Returns field value from object.//from w w w. j a va 2s . co m * * @param <T> * @param object * @param fieldName * @return */ public static <T> T getFieldValue(final Object object, final String fieldName) { try { final String name = VulpeStringUtil.upperCaseFirst(fieldName); final Method method = getMethod(object.getClass(), "get".concat(name)); if (method != null) { synchronized (method) { boolean setted = false; if (!method.isAccessible()) { method.setAccessible(true); setted = true; } try { return (T) method.invoke(object); } catch (Exception e) { LOG.error(e.getMessage()); } finally { if (setted) { method.setAccessible(false); } } } } final Field field = getField(object.getClass(), fieldName); if (field != null) { synchronized (field) { boolean setted = false; if (!field.isAccessible()) { field.setAccessible(true); setted = true; } try { return (T) field.get(object); } finally { if (setted) { field.setAccessible(false); } } } } return null; } catch (Exception e) { throw new VulpeSystemException(e); } }
From source file:org.gerzog.spock.injectmock.internal.accessors.MethodAccessor.java
@Override protected void internalSet(final Object target, final String name, final Object value) { final String methodName = toMethodName(name); final Method method = getDeclaredMethod(target.getClass(), value.getClass(), methodName); if (method != null) { final boolean original = method.isAccessible(); try {//ww w.j ava2 s .co m method.setAccessible(true); method.invoke(target, value); } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { throw new InvalidSpecException("Cannot write injectable value to method <" + target.getClass().getSimpleName() + "." + methodName + ">", e); } finally { method.setAccessible(original); } } }
From source file:iqq.app.core.service.impl.TaskServiceImpl.java
@Override public void submit(final Object target, final String method, final Object... args) { threads.submit(new Runnable() { public void run() { for (Method m : target.getClass().getDeclaredMethods()) { if (m.getName().equals(method)) { try { if (!m.isAccessible()) { m.setAccessible(true); }/* www.j a v a2 s. c om*/ m.invoke(target, args); return; } catch (Throwable e) { LOG.warn("invoke method error!!", e); } } } } }); }
From source file:la.xiong.mylibrary.EasyPermissions.java
/** * Find all methods annotated with {@link } on a given object with the * correc requestCode argument./* w w w. j a va 2 s .com*/ * @param object the object with annotated methods. * @param requestCode the requestCode passed to the annotation. */ private static void runAnnotatedMethods(@NonNull Object object, int requestCode) { Class clazz = object.getClass(); if (isUsingAndroidAnnotations(object)) { clazz = clazz.getSuperclass(); } while (clazz != null) { for (Method method : clazz.getDeclaredMethods()) { if (method.isAnnotationPresent(AfterPermissionGranted.class)) { // Check for annotated methods with matching request code. AfterPermissionGranted ann = method.getAnnotation(AfterPermissionGranted.class); if (ann.value() == requestCode) { // Method must be void so that we can invoke it if (method.getParameterTypes().length > 0) { throw new RuntimeException("Cannot execute method " + method.getName() + " because it is non-void method and/or has input parameters."); } try { // Make method accessible if private if (!method.isAccessible()) { method.setAccessible(true); } method.invoke(object); } catch (IllegalAccessException e) { Log.e(TAG, "runDefaultMethod:IllegalAccessException", e); } catch (InvocationTargetException e) { Log.e(TAG, "runDefaultMethod:InvocationTargetException", e); } } } } clazz = clazz.getSuperclass(); } }
From source file:com.fxc.lib.pmsion.EasyPermissions.java
private static void runAnnotatedMethods(@NonNull Object object, int requestCode) { Class clazz = object.getClass(); if (isUsingAndroidAnnotations(object)) { clazz = clazz.getSuperclass();//w w w . j av a 2 s . c om } for (Method method : clazz.getDeclaredMethods()) { if (method.isAnnotationPresent(AfterPermissionGranted.class)) { // Check for annotated methods with matching request code. AfterPermissionGranted ann = method.getAnnotation(AfterPermissionGranted.class); if (ann.value() == requestCode) { // Method must be void so that we can invoke it if (method.getParameterTypes().length > 0) { throw new RuntimeException("Cannot execute method " + method.getName() + " because it is non-void method and/or has input parameters."); } try { // Make method accessible if private if (!method.isAccessible()) { method.setAccessible(true); } method.invoke(object); } catch (IllegalAccessException e) { Log.e(TAG, "runDefaultMethod:IllegalAccessException", e); } catch (InvocationTargetException e) { Log.e(TAG, "runDefaultMethod:InvocationTargetException", e); } } } } }
From source file:com.LFPermission.lib.LFPermissions.java
private static void runAnnotatedMethods(@NonNull Object object, int requestCode) { Class clazz = object.getClass(); if (isUsingAndroidAnnotations(object)) { clazz = clazz.getSuperclass();/*from ww w. ja va 2 s.com*/ } for (Method method : clazz.getDeclaredMethods()) { if (method.isAnnotationPresent(AfterPermissionGranted.class)) { // Check for annotated methods with matching request code. AfterPermissionGranted ann = method.getAnnotation(AfterPermissionGranted.class); if (ann.value() == requestCode) { // Method must be void so that we can invoke it if (method.getParameterTypes().length > 0) { throw new RuntimeException("Cannot execute method " + method.getName() + " because it is non-void method and/or " + "has input parameters."); } try { // Make method accessible if private if (!method.isAccessible()) { method.setAccessible(true); } method.invoke(object); } catch (IllegalAccessException e) { Log.e(TAG, "runDefaultMethod:IllegalAccessException", e); } catch (InvocationTargetException e) { Log.e(TAG, "runDefaultMethod:InvocationTargetException", e); } } } } }
From source file:org.jaffa.soa.dataaccess.DataTransformer.java
/** * Mould data from domain object and its related objects into a new JavaBean based * domain object graph, based on the defined mapping rules. * * @param source Source object to mould data from, typically extends Persistent * @param target Target object to mould data to, typically extends GraphDataObject * @param graph The mapping class with the rules of how to map this source object * @param filter Filter object that it is used to control what fields are populated or the target objects * @param objectPath The path of this object being processed. This identifies possible parent * and/or indexed entries where this object is contained. * @param includeKeys true if key fields should be included in results regardless of the filters * @param originalCriteria the original graph criteria. * @param handler Possible bean handler to be used when processing this source object graph * @throws ApplicationExceptions Thrown if one or more application logic errors are generated during moulding * @throws FrameworkException Thrown if any runtime moulding error has occured. *//*w w w . j av a2s . c o m*/ public static void buildGraphFromDomain(Object source, Object target, GraphMapping graph, MappingFilter filter, String objectPath, boolean includeKeys, GraphCriteria originalCriteria, ITransformationHandler handler) throws ApplicationExceptions, FrameworkException { if (graph == null) graph = MappingFactory.getInstance(target); boolean useQueryDomain = graph.getQueryDomainClass() != null && source.getClass().isAssignableFrom(graph.getQueryDomainClass()); //throw new InstantiationException("A GraphMapping must be supplied"); if (filter == null) filter = MappingFilter.getInstance(graph); try { // get list of target fileds to populate String[] tFields = graph.getDataFieldNames(); if (tFields != null && tFields.length != 0) for (int i = 0; i < tFields.length; i++) { // Try to map a source to a target String tName = tFields[i]; String fullName = tName; if (objectPath != null) fullName = objectPath + "." + fullName; if (filter == null || filter.isFieldIncluded(fullName) || (includeKeys && graph.isKeyField(tName))) { String sName = graph.getDomainFieldName(tName); AccessibleObject tAccessibleObject = graph.getDataMutator(tName); PropertyDescriptor tDesc = graph.getDataFieldDescriptor(tName); PropertyDescriptor sDesc = useQueryDomain ? graph.getQueryDomainFieldDescriptor(tName) : graph.getDomainFieldDescriptor(tName); if (useQueryDomain && sDesc == null) continue; // Based on validation in GraphMapping, that there is a // GraphObject descriptor with a setter, and a DO descriptor with a getter if (sDesc == null) log.error("No Getter for " + tName + " in path " + fullName); // incase getter is not public, make it available Method sm = sDesc.getReadMethod(); if (!sm.isAccessible()) sm.setAccessible(true); // Set the value if the source and target are the same datatype Class tClass = tDesc.getPropertyType(); Class sClass = sDesc.getPropertyType(); if (tClass.isAssignableFrom(sClass)) { // Get the value being copied Object sValue = sm.invoke(source, (Object[]) null); setValue(tAccessibleObject, target, sValue); if (log.isDebugEnabled()) log.debug("Set " + tName + " = " + sValue); // See if there is a datatype mapper for these classes } else if (DataTypeMapper.instance().isMappable(sClass, tClass)) { // Get the value being copied Object sValue = sm.invoke(source, (Object[]) null); if (sValue != null) { sValue = DataTypeMapper.instance().map(sValue, tClass); if (log.isDebugEnabled()) log.debug("Set " + tName + " = " + sValue); } setValue(tAccessibleObject, target, sValue); // See if target is a GraphObject, this could be a foreign object or one-to-one relationship... } else if (GraphDataObject.class.isAssignableFrom(tClass) && IPersistent.class.isAssignableFrom(sClass)) { // Get the mapper for the related GraphObject, if it has keys, it must be a foriegn object if (graph.isForeignField(tName)) { // look at foreign key fields, and make sure they are not null List foreignKeys = graph.getForeignKeys(tName); List foreignKeyValues = new ArrayList(); boolean nullKey = false; for (Iterator k = foreignKeys.iterator(); k.hasNext();) { String doProp = (String) k.next(); Object value = null; PropertyDescriptor doPd = graph.getRealDomainFieldDescriptor(doProp); if (doPd != null && doPd.getReadMethod() != null) { Method m = doPd.getReadMethod(); if (!m.isAccessible()) m.setAccessible(true); value = m.invoke(source, new Object[] {}); if (value == null) nullKey = true; foreignKeyValues.add(value); } else { throw new TransformException(TransformException.INVALID_FK_MAPPING, objectPath, doProp, graph.getDomainClassShortName()); } } if (nullKey) { if (log.isDebugEnabled()) log.debug("Did not create skeleton object '" + tClass.getName() + "': one or more foreign key values missing."); } else { // Create the foreign object if (log.isDebugEnabled()) log.debug("Creating foreign object - " + tClass.getName()); Object newGDO = newGraphDataObject(tClass); boolean createSkeleton = true; // Only retrieve related domain object and introspect if need if (filter.areSubFieldsIncluded(fullName)) { // read object and introspect all if (log.isDebugEnabled()) log.debug("Read foreign object '" + fullName + "' and mold"); try { Object sValue = sm.invoke(source, (Object[]) null); if (sValue != null) { DataTransformer.buildGraphFromDomain(sValue, newGDO, null, filter, fullName, true, originalCriteria, handler); createSkeleton = false; } } catch (InvocationTargetException e) { // If the foreign object is not found, create the skeleton if (e.getCause() != null && e.getCause() instanceof InvalidForeignKeyException) { if (log.isDebugEnabled()) log.debug( "All foreign keys present, but foreign object does not exist", e); } else throw e; } } if (createSkeleton) { // just set foreign keys from current object if (log.isDebugEnabled()) log.debug("Set keys on skeleton foreign object only"); GraphMapping graph2 = MappingFactory.getInstance(newGDO); Set keys = graph2.getKeyFields(); if (keys == null || keys.size() != foreignKeyValues.size()) { throw new TransformException(TransformException.MISMATCH_FK_MAPPING, objectPath, target.getClass().getName(), newGDO.getClass().getName()); } int k2 = 0; // Look through all the foreign keys on the skeleton object for (Iterator k = keys.iterator(); k.hasNext(); k2++) { String keyField = (String) k.next(); Object keyValue = foreignKeyValues.get(k2); AccessibleObject accessibleObject = graph2.getDataMutator(keyField); if (accessibleObject != null) { setValue(accessibleObject, newGDO, keyValue); } else { throw new TransformException(TransformException.CANT_SET_KEY_FIELD, objectPath, keyField, newGDO.getClass().getName()); } } } setValue(tAccessibleObject, target, newGDO); if (log.isDebugEnabled()) log.debug("Set " + tName + " = " + newGDO); } } else { // This is not a foreign object, must be a related object if (filter.areSubFieldsIncluded(fullName)) { // Create the related object if (log.isDebugEnabled()) log.debug("Creating One-To-One object - " + tClass.getName()); Object newGDO = newGraphDataObject(tClass); // read object and introspect all if (log.isDebugEnabled()) log.debug("Read related object '" + fullName + "' and mold"); Object sValue = sm.invoke(source, (Object[]) null); if (sValue != null) { DataTransformer.buildGraphFromDomain(sValue, newGDO, null, filter, fullName, false, originalCriteria, handler); setValue(tAccessibleObject, target, newGDO); if (log.isDebugEnabled()) log.debug("Set " + tName + " = " + newGDO); } else { if (log.isDebugEnabled()) log.debug("Related object '" + fullName + "' not found. Ignore it!"); } } else { if (log.isDebugEnabled()) log.debug("No subfields for object " + fullName + " included. Object not retrieved"); } } //END-related object // See if Target may be an array of GraphObject's } else if (tClass.isArray() && GraphDataObject.class.isAssignableFrom(tClass.getComponentType()) && filter.areSubFieldsIncluded(fullName)) { if (log.isDebugEnabled()) log.debug("Target is an array of GraphObject's"); if (sClass.isArray() && IPersistent.class.isAssignableFrom(sClass.getComponentType())) { if (log.isDebugEnabled()) { log.debug("Source is an array of Persistent Objects"); log.debug("Read related objects '" + fullName + "' and mold"); } Object[] sArray = findRelatedObjects(source, sClass, sm, handler, originalCriteria, fullName); if (sArray != null && sArray.length > 0) { Object[] tArray = (Object[]) Array.newInstance(tClass.getComponentType(), sArray.length); if (log.isDebugEnabled()) log.debug("Translate Array of Size " + sArray.length); for (int j = 0; j < sArray.length; j++) { Object newGDO = newGraphDataObject(tClass.getComponentType()); DataTransformer.buildGraphFromDomain(sArray[j], newGDO, null, filter, fullName, false, originalCriteria, handler); tArray[j] = newGDO; if (log.isDebugEnabled()) log.debug("Add to array [" + j + "] : " + newGDO); } setValue(tAccessibleObject, target, tArray); if (log.isDebugEnabled()) log.debug("Set Array " + tName); } else { if (log.isDebugEnabled()) log.debug("Source Array is empty! Do Nothing"); } } // source is DO array // Error... No way to map property } else { String err = "Can't Mold Property " + fullName + " from " + sClass.getName() + " to " + tClass.getName(); log.error(err); throw new RuntimeException(err); } } // is included in filtered fields } // Load flex fields // By default all the domain-mapped flex fields will be loaded; unless excluded by a rule if (source instanceof IFlexFields && target instanceof IFlexFields) { String fullName = (objectPath != null ? objectPath + '.' : "") + "flexBean"; if (filter == null || filter.isFieldIncluded(fullName)) { if (log.isDebugEnabled()) log.debug("Loading FlexBean " + fullName); FlexBean sFlexBean = ((IFlexFields) source).getFlexBean(); FlexBean tFlexBean = ((IFlexFields) target).getFlexBean(); if (sFlexBean != null && tFlexBean != null) { for (DynaProperty flexProperty : sFlexBean.getDynaClass().getDynaProperties()) { String name = flexProperty.getName(); Boolean include = filter.includeField(fullName + '.' + name); if (include != null ? include : ((FlexProperty) flexProperty).getFlexInfo() .getProperty("domain-mapping") != null) { Object value = sFlexBean.get(name); if (value != null) { if (log.isDebugEnabled()) log.debug("Loaded flex field '" + name + '=' + value + '\''); tFlexBean.set(name, value); } } } } } } // Clear changed fields on updated GraphObject if (target != null && target instanceof GraphDataObject) ((GraphDataObject) target).clearChanges(); // Invoke the handler if (handler != null) { if (log.isDebugEnabled()) { log.debug("Invoking the endBeanLoad on the handler"); } for (ITransformationHandler transformationHandler : handler.getTransformationHandlers()) { transformationHandler.endBeanLoad(objectPath, source, target, filter, originalCriteria); } } } catch (ApplicationException e) { throw new ApplicationExceptions(e); } catch (IllegalAccessException e) { TransformException me = new TransformException(TransformException.ACCESS_ERROR, objectPath, e.getMessage()); log.error(me.getLocalizedMessage(), e); throw me; } catch (InvocationTargetException e) { ApplicationExceptions appExps = ExceptionHelper.extractApplicationExceptions(e); if (appExps != null) throw appExps; FrameworkException fe = ExceptionHelper.extractFrameworkException(e); if (fe != null) throw fe; TransformException me = new TransformException(TransformException.INVOCATION_ERROR, objectPath, e); log.error(me.getLocalizedMessage(), me.getCause()); throw me; } catch (InstantiationException e) { TransformException me = new TransformException(TransformException.INSTANTICATION_ERROR, objectPath, e.getMessage()); log.error(me.getLocalizedMessage(), e); throw me; } }