Package org.jboss.ws.metadata.builder.jaxws

Source Code of org.jboss.ws.metadata.builder.jaxws.JAXWSProviderMetaDataBuilder

/*     */ package org.jboss.ws.metadata.builder.jaxws;
/*     */
/*     */ import java.io.IOException;
/*     */ import java.net.URL;
/*     */ import javax.jws.WebService;
/*     */ import javax.jws.soap.SOAPBinding.ParameterStyle;
/*     */ import javax.management.ObjectName;
/*     */ import javax.xml.namespace.QName;
/*     */ import javax.xml.transform.Source;
/*     */ import javax.xml.ws.Provider;
/*     */ import javax.xml.ws.Service.Mode;
/*     */ import javax.xml.ws.ServiceMode;
/*     */ import javax.xml.ws.WebServiceException;
/*     */ import javax.xml.ws.WebServiceProvider;
/*     */ import org.jboss.ws.Constants;
/*     */ import org.jboss.ws.core.soap.SOAPContentElement;
/*     */ import org.jboss.ws.core.soap.Style;
/*     */ import org.jboss.ws.metadata.builder.MetaDataBuilder;
/*     */ import org.jboss.ws.metadata.umdm.EndpointMetaData.Type;
/*     */ import org.jboss.ws.metadata.umdm.OperationMetaData;
/*     */ import org.jboss.ws.metadata.umdm.ParameterMetaData;
/*     */ import org.jboss.ws.metadata.umdm.ServerEndpointMetaData;
/*     */ import org.jboss.ws.metadata.umdm.ServiceMetaData;
/*     */ import org.jboss.ws.metadata.umdm.UnifiedMetaData;
/*     */ import org.jboss.ws.metadata.wsdl.WSDLUtils;
/*     */ import org.jboss.wsf.common.JavaUtils;
/*     */ import org.jboss.wsf.spi.deployment.ArchiveDeployment;
/*     */ import org.jboss.wsf.spi.deployment.Endpoint;
/*     */ import org.jboss.wsf.spi.deployment.Service;
/*     */
/*     */ public class JAXWSProviderMetaDataBuilder extends JAXWSServerMetaDataBuilder
/*     */ {
/*     */   public ServerEndpointMetaData buildProviderMetaData(ArchiveDeployment dep, UnifiedMetaData wsMetaData, Class<?> sepClass, String linkName)
/*     */     throws IOException
/*     */   {
/*  67 */     if (!JavaUtils.isAssignableFrom(Provider.class, sepClass)) {
/*  68 */       throw new WebServiceException("Endpoint implementation does not implement javax.xml.ws.Provider: " + sepClass.getName());
/*     */     }
/*     */
/*  72 */     WebServiceProvider anWebServiceProvider = (WebServiceProvider)sepClass.getAnnotation(WebServiceProvider.class);
/*  73 */     if (anWebServiceProvider == null) {
/*  74 */       throw new WebServiceException("Cannot obtain @WebServiceProvider annotation from: " + sepClass.getName());
/*     */     }
/*     */
/*  78 */     if (sepClass.isAnnotationPresent(WebService.class)) {
/*  79 */       throw new WebServiceException("Provider cannot carry @WebService annotation: " + sepClass.getName());
/*     */     }
/*  81 */     WSDLUtils wsdlUtils = WSDLUtils.getInstance();
/*     */
/*  83 */     String name = WSDLUtils.getJustClassName(sepClass);
/*     */
/*  85 */     String serviceName = anWebServiceProvider.serviceName();
/*  86 */     if (serviceName.length() == 0) {
/*  87 */       serviceName = name + "Service";
/*     */     }
/*  89 */     String targetNS = anWebServiceProvider.targetNamespace();
/*  90 */     if (targetNS.length() == 0) {
/*  91 */       targetNS = WSDLUtils.getTypeNamespace(sepClass);
/*     */     }
/*  93 */     String portName = anWebServiceProvider.portName();
/*  94 */     if (portName.length() == 0) {
/*  95 */       portName = name + "Port";
/*     */     }
/*  97 */     ServiceMetaData serviceMetaData = new ServiceMetaData(wsMetaData, new QName(targetNS, serviceName));
/*  98 */     wsMetaData.addService(serviceMetaData);
/*     */
/* 101 */     QName portQName = new QName(targetNS, portName);
/* 102 */     QName portTypeQName = new QName(targetNS, name);
/*     */
/* 104 */     Endpoint ep = dep.getService().getEndpointByName(linkName);
/* 105 */     ServerEndpointMetaData sepMetaData = new ServerEndpointMetaData(serviceMetaData, ep, portQName, portTypeQName, EndpointMetaData.Type.JAXWS);
/* 106 */     sepMetaData.setLinkName(linkName);
/*     */
/* 108 */     sepMetaData.setStyle(Style.DOCUMENT);
/* 109 */     sepMetaData.setParameterStyle(SOAPBinding.ParameterStyle.BARE);
/*     */
/* 111 */     sepMetaData.setServiceEndpointImplName(sepClass.getName());
/* 112 */     sepMetaData.setServiceEndpointInterfaceName(sepClass.getName());
/*     */
/* 114 */     ServiceMode anServiceMode = (ServiceMode)sepClass.getAnnotation(ServiceMode.class);
/* 115 */     sepMetaData.setServiceMode(anServiceMode != null ? anServiceMode.value() : Service.Mode.PAYLOAD);
/*     */
/* 117 */     serviceMetaData.addEndpoint(sepMetaData);
/*     */
/* 120 */     processInvokeMethod(sepMetaData);
/*     */
/* 123 */     String wsdlLocation = anWebServiceProvider.wsdlLocation();
/* 124 */     if (wsdlLocation.length() > 0)
/*     */     {
/* 126 */       URL wsdlURL = dep.getMetaDataFileURL(wsdlLocation);
/* 127 */       serviceMetaData.setWsdlLocation(wsdlURL);
/*     */     }
/*     */
/* 131 */     processBindingType(sepMetaData, sepClass);
/*     */
/* 134 */     processHandlerChain(sepMetaData, sepClass);
/*     */
/* 137 */     processEndpointConfig(dep, sepMetaData, sepClass, linkName);
/*     */
/* 140 */     processWebContext(dep, sepClass, linkName, sepMetaData);
/*     */
/* 143 */     initEndpointAddress(dep, sepMetaData);
/*     */
/* 146 */     if (sepMetaData.getServiceMetaData().getWsdlLocation() != null) {
/* 147 */       MetaDataBuilder.replaceAddressLocation(sepMetaData);
/*     */     }
/*     */
/* 150 */     ObjectName sepID = MetaDataBuilder.createServiceEndpointID(dep, sepMetaData);
/* 151 */     sepMetaData.setServiceEndpointID(sepID);
/*     */
/* 153 */     return sepMetaData;
/*     */   }
/*     */
/*     */   private void processInvokeMethod(ServerEndpointMetaData epMetaData)
/*     */   {
/* 158 */     String javaName = "invoke";
/* 159 */     String targetNS = epMetaData.getPortName().getNamespaceURI();
/* 160 */     OperationMetaData opMetaData = new OperationMetaData(epMetaData, new QName(targetNS, javaName), javaName);
/* 161 */     epMetaData.addOperation(opMetaData);
/*     */
/* 164 */     Class paramType = Source.class;
/* 165 */     QName xmlName = SOAPContentElement.GENERIC_PARAM_NAME;
/* 166 */     QName xmlType = Constants.TYPE_LITERAL_ANYTYPE;
/* 167 */     ParameterMetaData pmd = new ParameterMetaData(opMetaData, xmlName, xmlType, paramType.getName());
/* 168 */     opMetaData.addParameter(pmd);
/*     */
/* 171 */     xmlName = SOAPContentElement.GENERIC_RETURN_NAME;
/* 172 */     ParameterMetaData retMetaData = new ParameterMetaData(opMetaData, xmlName, xmlType, paramType.getName());
/* 173 */     opMetaData.setReturnParameter(retMetaData);
/*     */   }
/*     */ }

/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/jboss-embedded-all.jar
* Qualified Name:     org.jboss.ws.metadata.builder.jaxws.JAXWSProviderMetaDataBuilder
* JD-Core Version:    0.6.0
*/
TOP

Related Classes of org.jboss.ws.metadata.builder.jaxws.JAXWSProviderMetaDataBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.