@Override public Class getServiceInterface() { return serviceDef.getServiceInterface(); }
@Override public Class getServiceInterface() { return serviceDef.getServiceInterface(); }
@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 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 <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 <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)); } }
final Class serviceInterface = def.getServiceInterface();
final Class serviceInterface = def.getServiceInterface();