protected ServiceReferenceMetaData createServiceRef(WebServiceRef annotation, E element) { ServiceReferenceMetaData ref = new ServiceReferenceMetaData(); String name = annotation.name(); if (name.length() == 0) name = getName(element); ref.setServiceRefName(name); if (annotation.mappedName().length() > 0) ref.setMappedName(annotation.mappedName()); ref.setAnnotatedElement(element); if (annotation.wsdlLocation().length() > 0) ref.setWsdlFile(annotation.wsdlLocation()); if (annotation.type() != Object.class) { ref.setServiceRefType(annotation.type().getName()); } else ref.setServiceRefType(getType(element)); if (annotation.value() != Service.class) { ref.setServiceInterface(annotation.value().getName()); } else if (element instanceof Field) { final Class<?> targetClass = ((Field) element).getType(); if (Service.class.isAssignableFrom(targetClass)) ref.setServiceInterface(targetClass.getName()); } else if (element instanceof Method) { final Class<?> targetClass = ((Method) element).getParameterTypes()[0]; if (Service.class.isAssignableFrom(targetClass)) ref.setServiceInterface(targetClass.getName()); } else { ref.setServiceInterface(Service.class.getName()); } String injectionName = getInjectionName(element); Set<ResourceInjectionTargetMetaData> injectionTargets = ProcessorUtils.getInjectionTargets(injectionName, element); if (injectionTargets != null) ref.setInjectionTargets(injectionTargets); return ref; }
public WebServiceRefElement(Member member, PropertyDescriptor pd) { super(member, pd); AnnotatedElement ae = (AnnotatedElement) member; WebServiceRef resource = ae.getAnnotation(WebServiceRef.class); String resourceName = resource.name(); Class<?> resourceType = resource.type(); this.isDefaultName = !StringUtils.hasLength(resourceName); if (this.isDefaultName) { resourceName = this.member.getName(); if (this.member instanceof Method && resourceName.startsWith("set") && resourceName.length() > 3) { resourceName = Introspector.decapitalize(resourceName.substring(3)); } } if (resourceType != null && !Object.class.equals(resourceType)) { checkResourceType(resourceType); } else { // No resource type specified... check field/method. resourceType = getResourceType(); } this.name = resourceName; this.elementType = resourceType; if (Service.class.isAssignableFrom(resourceType)) { this.lookupType = resourceType; } else { this.lookupType = (!Object.class.equals(resource.value()) ? resource.value() : Service.class); } this.mappedName = resource.mappedName(); this.wsdlLocation = resource.wsdlLocation(); }