public static Iterable<MethodInvoker> findAllAnnotatedInvokables(Class<?> type, Class<? extends Annotation> annot) { return transform(findAllAnnotatedMethods(type, annot), new Function<Method, MethodInvoker>() { @Override public MethodInvoker apply(Method method) { return MethodInvoker.on(method); } }); }
public static Iterable<Method> findAllAnnotatedMethods(Class<?> type, Class<? extends Annotation> annot) { return Iterables.filter(findAllMethods(type), annotatedBy(annot)); }
@Override public List<Key<?>> getParameterKeys(TypeLiteral<?> injectedType, Method injectedMember, A resourceAnnotation) { return Reflect.getParameterKeys(injectedType, injectedMember); }
public static Iterable<Field> findAllAnnotatedFields(Class<?> type, Class<? extends Annotation> annot) { return Iterables.filter(findAllFields(type), annotatedBy(annot)); }
private void preDestroy(Object instance) { TypeLiteral<?> type = TypeLiteral.get(Reflect.getTargetClass(instance)); for (Method method : Reflect.findAllAnnotatedMethods(type.getRawType(), PreDestroy.class)) { destroyer.handle(type, instance, method, method.getAnnotation(PreDestroy.class)); } } }
private static Method findMethod(Class<?> declaring, String methodName, Key<?>... paramTypes) { try { return declaring.getMethod(methodName, toClasses(paramTypes)); } catch (NoSuchMethodException e) { Iterator<Method> methods = filter(Reflect.findAllMethods(declaring).iterator(), Reflect.withSignature(methodName, toClasses(paramTypes))); if (!methods.hasNext()) throw new MycilaGuiceException("Unable to find method " + methodName + " in class " + declaring.getName() + " matching given parameter types", e); return methods.next(); } }
final Provider<? extends KeyProvider<A>> provider = encounter.getProvider(providerClass); final Provider<Injector> injectorProvider = encounter.getProvider(Injector.class); final List<Field> fields = Lists.newLinkedList(Reflect.findAllAnnotatedFields(injectableType.getRawType(), annotationType)); final List<MethodInvoker> methods = Lists.newLinkedList(Reflect.findAllAnnotatedInvokables(injectableType.getRawType(), annotationType)); if (!fields.isEmpty() || !methods.isEmpty()) { encounter.register(new MembersInjector<I>() {
public static Class<?> getTargetClass(Object instance) { return getTargetClass(instance.getClass()); }
@Override public boolean apply(T element) { return Reflect.isAnnotationPresent(element, annotationType); } };
public static List<Key<?>> getParameterKeys(TypeLiteral<?> type, Method method) { Annotation[][] parameterAnnotations = method.getParameterAnnotations(); List<TypeLiteral<?>> parameterTypes = type.getParameterTypes(method); List<Key<?>> keys = new ArrayList<Key<?>>(parameterTypes.size()); for (int i = 0; i < parameterTypes.size(); i++) keys.add(buildKey(parameterTypes.get(i), parameterAnnotations[i])); return keys; }
public static Iterable<Field> findAllFields(Class<?> type) { return type == null || type == Object.class ? new LinkedList<Field>() : concat(Lists.newArrayList(type.getDeclaredFields()), findAllFields(type.getSuperclass())); }
@Override public <I> void hear(final TypeLiteral<I> type, TypeEncounter<I> encounter) { final Provider<? extends FieldHandler<A>> provider = encounter.getProvider(handlerClass); final List<Field> fields = Lists.newLinkedList(Reflect.findAllAnnotatedFields(type.getRawType(), annotationType)); if (!fields.isEmpty()) { encounter.register(new InjectionListener<I>() { @Override public void afterInjection(I injectee) { FieldHandler<A> handler = provider.get(); for (Field field : fields) handler.handle(type, injectee, field, field.getAnnotation(annotationType)); } }); } } }
private void preDestroy(Object instance) { TypeLiteral<?> type = TypeLiteral.get(Reflect.getTargetClass(instance)); for (Method method : Reflect.findAllAnnotatedMethods(type.getRawType(), PreDestroy.class)) { destroyer.handle(type, instance, method, method.getAnnotation(PreDestroy.class)); } } }
private static Method findMethod(Class<?> declaring, String methodName, Key<?>... paramTypes) { try { return declaring.getMethod(methodName, toClasses(paramTypes)); } catch (NoSuchMethodException e) { Iterator<Method> methods = filter(Reflect.findAllMethods(declaring).iterator(), Reflect.withSignature(methodName, toClasses(paramTypes))); if (!methods.hasNext()) throw new MycilaGuiceException("Unable to find method " + methodName + " in class " + declaring.getName() + " matching given parameter types", e); return methods.next(); } }
public static Iterable<Field> findAllAnnotatedFields(Class<?> type, Class<? extends Annotation> annot) { return Iterables.filter(findAllFields(type), annotatedBy(annot)); }
final Provider<? extends KeyProvider<A>> provider = encounter.getProvider(providerClass); final Provider<Injector> injectorProvider = encounter.getProvider(Injector.class); final List<Field> fields = Lists.newLinkedList(Reflect.findAllAnnotatedFields(injectableType.getRawType(), annotationType)); final List<MethodInvoker> methods = Lists.newLinkedList(Reflect.findAllAnnotatedInvokables(injectableType.getRawType(), annotationType)); if (!fields.isEmpty() || !methods.isEmpty()) { encounter.register(new MembersInjector<I>() {
public static Class<?> getTargetClass(Object instance) { return getTargetClass(instance.getClass()); }
@Override public boolean apply(T element) { return Reflect.isAnnotationPresent(element, annotationType); } };
public static List<Key<?>> getParameterKeys(TypeLiteral<?> type, Method method) { Annotation[][] parameterAnnotations = method.getParameterAnnotations(); List<TypeLiteral<?>> parameterTypes = type.getParameterTypes(method); List<Key<?>> keys = new ArrayList<Key<?>>(parameterTypes.size()); for (int i = 0; i < parameterTypes.size(); i++) keys.add(buildKey(parameterTypes.get(i), parameterAnnotations[i])); return keys; }
public static Iterable<Field> findAllFields(Class<?> type) { return type == null || type == Object.class ? new LinkedList<Field>() : concat(Lists.newArrayList(type.getDeclaredFields()), findAllFields(type.getSuperclass())); }