public Advisor getAdvisor() { return wrapped.getAdvisor(); }
private Advisor getAdvisor() { return delegate.getAdvisor(); }
public <T extends Annotation> T resolveTypedAnnotation(Class<T> annotation) { T val = super.resolveTypedAnnotation(annotation); if (val != null) return val; if (getAdvisor() != null) { val = getAdvisor().resolveTypedAnnotation(constructor, annotation); if (val != null) return val; } return null; } /**
/** * This method resolves metadata based on the context of the invocation. * It iterates through its list of MetaDataResolvers to find out the * value of the metadata desired. * * This list usually is ThreadMetaData, InstanceAdvisor.getMetaData * ClassAdvisor.getMethodMetaData (or field, or constructor) * ClassAdvisor.getDefaultMetaData */ public Object getMetaData(Object group, Object attr) { Object val = super.getMetaData(group, attr); if (val != null) return val; if (getAdvisor() != null) { val = getAdvisor().getConstructorMetaData().resolve(this, group, attr); if (val != null) return val; } if (getAdvisor() != null) { val = getAdvisor().getDefaultMetaData().resolve(this, group, attr); if (val != null) return val; } return null; }
/** * Copies complete state of Invocation object. * * @return an copy of this instance */ public Invocation copy() { ConstructionInvocation wrapper = new ConstructionInvocation(interceptors, constructor, arguments); wrapper.setAdvisor(this.getAdvisor()); wrapper.currentInterceptor = this.currentInterceptor; wrapper.metadata = this.metadata; return wrapper; }