* @return unified jbossws service reference meta data
*/
private UnifiedServiceRefMetaData getUnifiedServiceRefMetaData(final UnifiedVirtualFile vfsRoot,
final ServiceRefType serviceRefSBMD, final ClassLoader loader)
{
final UnifiedServiceRefMetaData serviceRefUMDM = new UnifiedServiceRefMetaData(vfsRoot);
serviceRefUMDM.setServiceRefName(serviceRefSBMD.getName());
serviceRefUMDM.setServiceRefType(serviceRefSBMD.getType());
serviceRefUMDM.setServiceInterface(serviceRefSBMD.getServiceInterface());
serviceRefUMDM.setWsdlFile(serviceRefSBMD.getWsdlFile());
serviceRefUMDM.setMappingFile(serviceRefSBMD.getMappingFile());
serviceRefUMDM.setServiceQName(serviceRefSBMD.getQName());
serviceRefUMDM.setHandlerChain(serviceRefSBMD.getHandlerChain());
// propagate addressing properties
serviceRefUMDM.setAddressingAnnotationSpecified(serviceRefSBMD.isAddressingFeatureEnabled());
serviceRefUMDM.setAddressingEnabled(serviceRefSBMD.isAddressingEnabled());
serviceRefUMDM.setAddressingRequired(serviceRefSBMD.isAddressingRequired());
serviceRefUMDM.setAddressingResponses(serviceRefSBMD.getAddressingResponses());
// propagate MTOM properties
serviceRefUMDM.setMtomAnnotationSpecified(serviceRefSBMD.isMtomFeatureEnabled());
serviceRefUMDM.setMtomEnabled(serviceRefSBMD.isMtomEnabled());
serviceRefUMDM.setMtomThreshold(serviceRefSBMD.getMtomThreshold());
// propagate respect binding properties
serviceRefUMDM.setRespectBindingAnnotationSpecified(serviceRefSBMD.isRespectBindingFeatureEnabled());
serviceRefUMDM.setRespectBindingEnabled(serviceRefSBMD.isRespectBindingEnabled());
// process injection targets
if (serviceRefSBMD.getInjectionTargets() != null && serviceRefSBMD.getInjectionTargets().size() > 0)
{
if (serviceRefSBMD.getInjectionTargets().size() > 1)
{
// TODO: We should validate all the injection targets whether they're compatible.
// This means all the injection targets must be assignable or equivalent.
// If there are @Addressing, @RespectBinding or @MTOM annotations present on injection targets,
// these annotations must be equivalent for all the injection targets.
}
final InjectionTarget injectionTarget = serviceRefSBMD.getInjectionTargets().iterator().next();
AccessibleObject anAlement = this.findInjectionTarget(loader, injectionTarget);
this.processAnnotatedElement(anAlement, serviceRefUMDM);
}
// propagate port compoments
final Collection<? extends PortComponent> portComponentsSBMD = serviceRefSBMD.getPortComponents();
if (portComponentsSBMD != null)
{
for (final PortComponent portComponentSBMD : portComponentsSBMD)
{
final UnifiedPortComponentRefMetaData portComponentUMDM = this.getUnifiedPortComponentRefMetaData(
serviceRefUMDM, portComponentSBMD);
if (portComponentUMDM.getServiceEndpointInterface() != null || portComponentUMDM.getPortQName() != null)
{
serviceRefUMDM.addPortComponentRef(portComponentUMDM);
}
else
{
log.warn("Ignoring <port-component-ref> without <service-endpoint-interface> and <port-qname>: "
+ portComponentUMDM);
}
}
}
// propagate handlers
final Collection<Handler> handlersSBMD = serviceRefSBMD.getHandlers();
if (handlersSBMD != null)
{
for (final Handler handlerSBMD : handlersSBMD)
{
final UnifiedHandlerMetaData handlerUMDM = this.getUnifiedHandlerMetaData(handlerSBMD);
serviceRefUMDM.addHandler(handlerUMDM);
}
}
// propagate handler chains
final List<HandlerChain> handlerChainsSBMD = serviceRefSBMD.getHandlerChains();
if (handlerChainsSBMD != null)
{
final UnifiedHandlerChainsMetaData handlerChainsUMDM = this.getUnifiedHandlerChainsMetaData(handlerChainsSBMD);
serviceRefUMDM.setHandlerChains(handlerChainsUMDM);
}
// propagate jboss specific MD
if (serviceRefSBMD instanceof JBossServiceRefType)
{