@Override public AnnotationProvider getClassAnnotationProvider() { return serviceDef.getClassAnnotationProvider(); }
@Override public AnnotationProvider getMethodAnnotationProvider(String methodName, Class... parameterTypes) { return serviceDef.getMethodAnnotationProvider(methodName, parameterTypes); } }
@Override public String getServiceId() { return serviceDef.getServiceId(); }
ObjectCreator creator = def.createServiceCreator(resources); ServiceLifecycle2 lifecycle = registry.getServiceLifecycle(def.getServiceScope()); String.format( "Service scope '%s' requires a proxy, but the service does not have a service interface (necessary to create a proxy). Provide a service interface or select a different service scope.", def.getServiceScope())); boolean allowDecoration = !def.isPreventDecoration(); Object proxy = createProxy(resources, delegate, def.isPreventDecoration()); if (def.isEagerLoad() && eagerLoadProxies != null) eagerLoadProxies.add(delegate);
@Override public Object createObject() { Object service = delegate.createObject(); List<ServiceAdvisor> advisors = registry.findAdvisorsForService(serviceDef); if (advisors.isEmpty()) return service; final AspectInterceptorBuilder builder = aspectDecorator.createBuilder(serviceDef.getServiceInterface(), service, serviceDef, String.format("<AspectProxy for %s(%s)>", serviceDef.getServiceId(), serviceDef .getServiceInterface().getName())); for (final ServiceAdvisor advisor : advisors) { registry.run("Invoking " + advisor, new Runnable() { @Override public void run() { advisor.advise(builder); } }); } return builder.build(); } }
@Override public Class getServiceInterface() { return serviceDef.getServiceInterface(); }
@Override public Class getServiceImplementation() { return serviceDef.getServiceImplementation(); }
@Override public void run() { for (ServiceDef3 def : serviceDefs.values()) { if (def.isEagerLoad()) findOrCreate(def, proxies); } } };
ObjectCreator creator = def.createServiceCreator(resources); ServiceLifecycle2 lifecycle = registry.getServiceLifecycle(def.getServiceScope()); String.format( "Service scope '%s' requires a proxy, but the service does not have a service interface (necessary to create a proxy). Provide a service interface or select a different service scope.", def.getServiceScope())); boolean allowDecoration = !def.isPreventDecoration(); Object proxy = createProxy(resources, delegate, def.isPreventDecoration()); if (def.isEagerLoad() && eagerLoadProxies != null) eagerLoadProxies.add(delegate);
@Override public Object createObject() { Object service = delegate.createObject(); List<ServiceAdvisor> advisors = registry.findAdvisorsForService(serviceDef); if (advisors.isEmpty()) return service; final AspectInterceptorBuilder builder = aspectDecorator.createBuilder(serviceDef.getServiceInterface(), service, serviceDef, String.format("<AspectProxy for %s(%s)>", serviceDef.getServiceId(), serviceDef .getServiceInterface().getName())); for (final ServiceAdvisor advisor : advisors) { registry.run("Invoking " + advisor, new Runnable() { @Override public void run() { advisor.advise(builder); } }); } return builder.build(); } }
@Override public Class getServiceInterface() { return serviceDef.getServiceInterface(); }
@Override public Class getServiceImplementation() { return serviceDef.getServiceImplementation(); }
@Override public void run() { for (ServiceDef3 def : serviceDefs.values()) { if (def.isEagerLoad()) findOrCreate(def, proxies); } } };
@Override public String getServiceId() { return serviceDef.getServiceId(); }
final String serviceId = def.getServiceId(); final Class serviceInterface = def.getServiceInterface();
@Override public <T> T getService(String serviceId, Class<T> serviceInterface) { assert InternalUtils.isNonBlank(serviceId); assert serviceInterface != null; ServiceDef3 def = getServiceDef(serviceId); // RegistryImpl should already have checked that the service exists. assert def != null; Object service = findOrCreate(def, null); try { return serviceInterface.cast(service); } catch (ClassCastException ex) { // This may be overkill: I don't know how this could happen // given that the return type of the method determines // the service interface. throw new RuntimeException(IOCMessages.serviceWrongInterface(serviceId, def.getServiceInterface(), serviceInterface)); } }
@Override public AnnotationProvider getClassAnnotationProvider() { return serviceDef.getClassAnnotationProvider(); }
@Override public AnnotationProvider getMethodAnnotationProvider(String methodName, Class... parameterTypes) { return serviceDef.getMethodAnnotationProvider(methodName, parameterTypes); } }
@Override public <K, V> Map<K, V> getMappedConfiguration(final Class<K> keyType, final Class<V> valueType) { Map<K, V> result = registry.invoke("Collecting mapped configuration for service " + serviceDef.getServiceId(), new Invokable<Map<K, V>>() { @Override public Map<K, V> invoke() { return registry.getMappedConfiguration(serviceDef, keyType, valueType); } }); if (logger.isDebugEnabled()) logger.debug(IOCMessages.constructedConfiguration(result)); return result; }
final String serviceId = def.getServiceId(); final Class serviceInterface = def.getServiceInterface();