public void visitType(Stateless annotation, Class<?> type, InjectingComponentType componentType, IntrospectionContext context) { componentType.setScope(org.fabric3.api.model.type.component.Scope.STATELESS); } }
public void visitType(Composite annotation, Class<?> type, InjectingComponentType componentType, IntrospectionContext context) { componentType.setScope(org.fabric3.api.model.type.component.Scope.COMPOSITE); } }
public void visitType(Domain annotation, Class<?> type, InjectingComponentType componentType, IntrospectionContext context) { componentType.setScope(org.fabric3.api.model.type.component.Scope.DOMAIN); } }
public void visitType(Scope annotation, Class<?> type, InjectingComponentType componentType, IntrospectionContext context) { String scopeName = annotation.value(); if (!COMPOSITE.getScope().equals(scopeName) && !STATELESS.getScope().equals(scopeName) && !DOMAIN.getScope().equals(scopeName)) { InvalidScope failure = new InvalidScope(type, scopeName, componentType); context.addError(failure); return; } org.fabric3.api.model.type.component.Scope scope = org.fabric3.api.model.type.component.Scope.getScope(scopeName); componentType.setScope(scope); } }
public void process(Component<JavaImplementation> component, IntrospectionContext context) { JavaImplementation implementation = component.getImplementation(); Object instance = implementation.getInstance(); InjectingComponentType componentType = implementation.getComponentType(); if (instance == null) { introspector.introspect(componentType, context); } else { componentType.setScope(Scope.COMPOSITE); if (componentType.getServices().isEmpty()) { // introspect services if not defined addServiceDefinitions(instance, componentType, context); } processAnnotations(instance, component, context); for (PostProcessor postProcessor : postProcessors) { postProcessor.process(componentType, instance.getClass(), context); } } }
public void introspect(InjectingComponentType componentType, IntrospectionContext context) { componentType.setScope(Scope.COMPOSITE); Class<?> implClass = componentType.getImplClass(); if (implClass.isInterface()) { InvalidImplementation failure = new InvalidImplementation("Implementation class is an interface", implClass, componentType); context.addError(failure); return; } TypeMapping mapping = context.getTypeMapping(implClass); if (mapping == null) { mapping = new TypeMapping(); context.addTypeMapping(implClass, mapping); helper.resolveTypeParameters(implClass, mapping); } classVisitor.visit(componentType, implClass, context); heuristic.applyHeuristics(componentType, implClass, context); } }
public void introspect(InjectingComponentType componentType, IntrospectionContext context) { componentType.setScope(Scope.STATELESS); Class<?> implClass = componentType.getImplClass(); if (implClass.isInterface()) { InvalidImplementation failure = new InvalidImplementation("Implementation class is an interface", implClass, componentType); context.addError(failure); return; } TypeMapping mapping = context.getTypeMapping(implClass); if (mapping == null) { mapping = new TypeMapping(); context.addTypeMapping(implClass, mapping); helper.resolveTypeParameters(implClass, mapping); } try { classVisitor.visit(componentType, implClass, context); heuristic.applyHeuristics(componentType, implClass, context); } catch (NoClassDefFoundError e) { // May be thrown as a result of a referenced class not being on the classpath context.addError(new ImplementationArtifactNotFound(implClass.getName(), e.getMessage(), componentType)); } validateScope(componentType, implClass, context); for (PostProcessor postProcessor : postProcessors) { postProcessor.process(componentType, implClass, context); } }