private void injectProcessor(Object processor, Field field) { Object injectedValue = null; for (Object p : processors.values()) { if (field.getType().isAssignableFrom(p.getClass())) { injectedValue = p; break; } } if (injectedValue == null) { throw new ClarityException( "cannot inject processor of type %s into processor of type %s: not found!", field.getType().getName(), processor.getClass().getName() ); } injectValue(processor, field, injectedValue, "cannot inject processor"); }
private void injectProcessor(Object processor, Field field) { Object injectedValue = null; for (Object p : processors.values()) { if (field.getType().isAssignableFrom(p.getClass())) { injectedValue = p; break; } } if (injectedValue == null) { throw new ClarityException( "cannot inject processor of type %s into processor of type %s: not found!", field.getType().getName(), processor.getClass().getName() ); } injectValue(processor, field, injectedValue, "cannot inject processor"); }
private void injectEvent(Object processor, Field field, InsertEvent fieldAnnotation) { Class<? extends Annotation> eventType = (Class<? extends Annotation>) ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0]; Class<?>[] parameterTypes; if (fieldAnnotation.override()) { parameterTypes = fieldAnnotation.parameterTypes(); } else { UsagePointMarker marker = eventType.getAnnotation(UsagePointMarker.class); parameterTypes = marker.parameterClasses(); } injectValue(processor, field, createEvent(eventType, parameterTypes), "cannot inject event"); }
private void processInjections() { for (Object processor : processors.values()) { Class<?> c = processor.getClass(); while (true) { for (Field field : c.getDeclaredFields()) { for (Annotation fieldAnnotation : field.getAnnotations()) { if (fieldAnnotation instanceof Insert) { if (field.getType().isAssignableFrom(Context.class)) { injectValue(processor, field, runner.getContext(), "cannot inject context"); } else { injectProcessor(processor, field); } } else if (fieldAnnotation instanceof InsertEvent) { injectEvent(processor, field, (InsertEvent) fieldAnnotation); } } } c = c.getSuperclass(); if (c == Object.class) { break; } } } }
private void processInjections() { for (Object processor : processors.values()) { Class<?> c = processor.getClass(); while (true) { for (Field field : c.getDeclaredFields()) { for (Annotation fieldAnnotation : field.getAnnotations()) { if (fieldAnnotation instanceof Insert) { if (field.getType().isAssignableFrom(Context.class)) { injectValue(processor, field, runner.getContext(), "cannot inject context"); } else { injectProcessor(processor, field); } } else if (fieldAnnotation instanceof InsertEvent) { injectEvent(processor, field, (InsertEvent) fieldAnnotation); } } } c = c.getSuperclass(); if (c == Object.class) { break; } } } }
private void injectEvent(Object processor, Field field, InsertEvent fieldAnnotation) { Class<? extends Annotation> eventType = (Class<? extends Annotation>) ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0]; Class<?>[] parameterTypes; if (fieldAnnotation.override()) { parameterTypes = fieldAnnotation.parameterTypes(); } else { UsagePointMarker marker = eventType.getAnnotation(UsagePointMarker.class); parameterTypes = marker.parameterClasses(); } injectValue(processor, field, createEvent(eventType, parameterTypes), "cannot inject event"); }