/* * JBoss, Home of Professional Open Source. * Copyright 2009, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.switchboard.jbmeta.javaee.environment; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.xml.namespace.QName; import org.jboss.metadata.javaee.jboss.JBossPortComponentRef; import org.jboss.metadata.javaee.spec.PortComponentRef; import org.jboss.metadata.javaee.spec.ServiceReferenceHandlerChainMetaData; import org.jboss.metadata.javaee.spec.ServiceReferenceHandlerChainsMetaData; import org.jboss.metadata.javaee.spec.ServiceReferenceHandlerMetaData; import org.jboss.metadata.javaee.spec.ServiceReferenceHandlersMetaData; import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData; import org.jboss.switchboard.javaee.environment.Handler; import org.jboss.switchboard.javaee.environment.HandlerChain; import org.jboss.switchboard.javaee.environment.PortComponent; import org.jboss.switchboard.javaee.environment.ServiceRefType; import org.jboss.switchboard.javaee.util.EnvironmentEntryUtil; import org.jboss.switchboard.jbmeta.javaee.jboss.environment.JBossPortComponentImpl; /** * ServiceReference * * @author Jaikiran Pai * @version $Revision: $ */ public class ServiceReference extends JavaEEResource implements ServiceRefType { private ServiceReferenceMetaData delegate; private List<Handler> handlers; private List<HandlerChain> handlerChains; private Collection<PortComponent> portComponents; public ServiceReference(ServiceReferenceMetaData delegate) { super(delegate.getLookupName(), delegate.getMappedName(), InjectionTargetConverter.convert(delegate .getInjectionTargets())); this.delegate = delegate; this.initHandlers(); this.initHandlerChains(); this.initPortComponents(); } @Override public List<HandlerChain> getHandlerChains() { return this.handlerChains; } @Override public Collection<Handler> getHandlers() { return this.handlers; } @Override public String getHandlerChain() { return this.delegate.getHandlerChain(); } @Override public String getMappingFile() { return this.delegate.getJaxrpcMappingFile(); } @Override public Collection<PortComponent> getPortComponents() { return this.portComponents; } @Override public QName getQName() { return this.delegate.getServiceQname(); } @Override public String getServiceInterface() { return this.delegate.getServiceInterface(); } @Override public String getType() { return this.delegate.getServiceRefType(); } @Override public String getWsdlFile() { return this.delegate.getWsdlFile(); } @Override public String getName() { return EnvironmentEntryUtil.getENCName(this.delegate.getServiceRefName()); } @Override public String getAddressingResponses() { return this.delegate.getAddressingResponses(); } @Override public int getMtomThreshold() { return this.delegate.getMtomThreshold(); } @Override public boolean isAddressingEnabled() { return this.delegate.isAddressingEnabled(); } @Override public boolean isAddressingRequired() { return this.delegate.isAddressingRequired(); } @Override public boolean isMtomEnabled() { return this.delegate.isMtomEnabled(); } @Override public boolean isRespectBindingEnabled() { return this.delegate.isRespectBindingEnabled(); } @Override public boolean isAddressingFeatureEnabled() { return this.delegate.isAddressingAnnotationSpecified(); } @Override public boolean isMtomFeatureEnabled() { return this.delegate.isMtomAnnotationSpecified(); } @Override public boolean isRespectBindingFeatureEnabled() { return this.delegate.isRespectBindingAnnotationSpecified(); } private void initHandlers() { if (this.delegate.getHandlers() == null) { return; } ServiceReferenceHandlersMetaData serviceHandlers = this.delegate.getHandlers(); this.handlers = new ArrayList<Handler>(serviceHandlers.size()); for (ServiceReferenceHandlerMetaData serviceHandler : serviceHandlers) { this.handlers.add(new ServiceHandler(serviceHandler)); } } private void initPortComponents() { if (this.delegate.getPortComponentRef() == null) { return; } List<? extends PortComponentRef> portComponentRefs = this.delegate.getPortComponentRef(); this.portComponents = new ArrayList<PortComponent>(portComponentRefs.size()); for (PortComponentRef portCompRef : portComponentRefs) { if (portCompRef instanceof JBossPortComponentRef) { this.portComponents.add(new JBossPortComponentImpl((JBossPortComponentRef) portCompRef)); } else { this.portComponents.add(new ServicePortComponent(portCompRef)); } } } private void initHandlerChains() { if (this.delegate.getHandlerChains() == null) { return; } ServiceReferenceHandlerChainsMetaData serviceHandlers = this.delegate.getHandlerChains(); List<ServiceReferenceHandlerChainMetaData> srhcList = serviceHandlers.getHandlers(); this.handlerChains = new ArrayList<HandlerChain>(srhcList.size()); for (ServiceReferenceHandlerChainMetaData handlerChain : srhcList) { this.handlerChains.add(new HandlerChainImpl(handlerChain)); } } }