You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2005/02/21 05:43:07 UTC
svn commit: r154623 [1/2] - in geronimo/trunk/modules: assembly/src/plan/
axis-builder/ axis-builder/src/java/org/apache/geronimo/axis/builder/
axis-builder/src/test/org/apache/geronimo/axis/builder/
axis/src/java/org/apache/geronimo/axis/client/
j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/
j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/ j2ee-schema/
j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/ jetty-builder/
jetty-builder/src/java/org/apache/geronimo/jetty/deployment/
jetty-builder/src/test/org/apache/geronimo/jetty/deployment/
jetty/src/java/org/apache/geronimo/jetty/
tomcat/src/java/org/apache/geronimo/tomcat/deployment/
Author: djencks
Date: Sun Feb 20 20:43:02 2005
New Revision: 154623
URL: http://svn.apache.org/viewcvs?view=rev&rev=154623
Log:
Put the pieces in place for POJO WS deployment. Refactor non-axis specific ws dd manipulation into a separate class.
Added:
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/PortInfo.java
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/WSDescriptorParser.java
geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebServiceBuilder.java
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyAxisPOJOWebService.java
Removed:
geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/client/ServiceReference.java
Modified:
geronimo/trunk/modules/assembly/src/plan/j2ee-runtime-deployer-plan.xml
geronimo/trunk/modules/axis-builder/project.xml
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java
geronimo/trunk/modules/axis-builder/src/test/org/apache/geronimo/axis/builder/ServiceReferenceTest.java
geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebModule.java
geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java
geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/MockWARConfigBuilder.java
geronimo/trunk/modules/j2ee-schema/maven.xml
geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java
geronimo/trunk/modules/jetty-builder/project.xml
geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java
geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyServletHolder.java
geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
Modified: geronimo/trunk/modules/assembly/src/plan/j2ee-runtime-deployer-plan.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/src/plan/j2ee-runtime-deployer-plan.xml?view=diff&r1=154622&r2=154623
==============================================================================
--- geronimo/trunk/modules/assembly/src/plan/j2ee-runtime-deployer-plan.xml (original)
+++ geronimo/trunk/modules/assembly/src/plan/j2ee-runtime-deployer-plan.xml Sun Feb 20 20:43:02 2005
@@ -124,10 +124,12 @@
<attribute name="defaultWelcomeFiles">index.html,index.htm,index.jsp</attribute>
<attribute name="jettyContainerObjectName">geronimo.server:name=JettyWebContainer,*</attribute>
<attribute name="defaultServlets">geronimo.server:j2eeType=DefaultServlet,J2EEModule=org/apache/geronimo/RuntimeDeployer,*</attribute>
+ <attribute name="pojoWebServiceTemplate">geronimo.server:J2EEApplication=null,J2EEModule=org/apache/geronimo/RuntimeDeployer,J2EEServer=geronimo,j2eeType=ServletWebServiceTemplate,name=AxisPOJOTemplate</attribute>
+ <reference name="WebServiceBuilder">geronimo.server:J2EEApplication=null,J2EEModule=org/apache/geronimo/RuntimeDeployer,J2EEServer=geronimo,j2eeType=ModuleBuilder,name=WebServiceBuilder</reference>
<reference name="Repository">*:name=Repository,*</reference>
</gbean>
- <gbean name="geronimo.server:J2EEApplication=null,J2EEModule=org/apache/geronimo/Deployer,J2EEServer=geronimo,j2eeType=DefaultServlet,name=StaticContent" class="org.apache.geronimo.jetty.JettyServletHolder">
+ <gbean namePart="StaticContent" class="org.apache.geronimo.jetty.JettyServletHolder">
<attribute name="servletName">default</attribute>
<attribute name="servletClass">org.mortbay.jetty.servlet.Default</attribute>
<attribute name="loadOnStartup">0</attribute>
@@ -141,7 +143,7 @@
<attribute name="servletMappings">/</attribute>
</gbean>
- <gbean name="geronimo.server:J2EEApplication=null,J2EEModule=org/apache/geronimo/Deployer,J2EEServer=geronimo,j2eeType=DefaultServlet,name=JSPServlet" class="org.apache.geronimo.jetty.JettyServletHolder">
+ <gbean namePart="JSPServlet" class="org.apache.geronimo.jetty.JettyServletHolder">
<attribute name="servletName">jsp</attribute>
<attribute name="servletClass">org.apache.jasper.servlet.JspServlet</attribute>
<attribute name="loadOnStartup">0</attribute>
@@ -150,6 +152,11 @@
fork=false
xpoweredBy=false</attribute>
<attribute name="servletMappings">*.jsp,*.jspf,*.jspx,*.xsp</attribute>
+ </gbean>
+
+ <gbean namePart="AxisPOJOTemplate" class="org.apache.geronimo.jetty.JettyAxisPOJOWebService">
+ <attribute name="servletName">dummy</attribute>
+
</gbean>
<gbean namePart="EJBBuilder" class="org.openejb.deployment.OpenEJBModuleBuilder">
Modified: geronimo/trunk/modules/axis-builder/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/project.xml?view=diff&r1=154622&r2=154623
==============================================================================
--- geronimo/trunk/modules/axis-builder/project.xml (original)
+++ geronimo/trunk/modules/axis-builder/project.xml Sun Feb 20 20:43:02 2005
@@ -65,6 +65,24 @@
<!-- Module Dependencies -->
<dependency>
+ <groupId>geronimo-spec</groupId>
+ <artifactId>geronimo-spec-jaxrpc</artifactId>
+ <version>${geronimo_spec_jaxrpc_version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>geronimo-spec</groupId>
+ <artifactId>geronimo-spec-saaj</artifactId>
+ <version>${geronimo_spec_saaj_version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>geronimo-spec</groupId>
+ <artifactId>geronimo-spec-qname</artifactId>
+ <version>${geronimo_spec_qname_version}</version>
+ </dependency>
+
+ <dependency>
<groupId>geronimo</groupId>
<artifactId>geronimo-axis</artifactId>
<version>${pom.currentVersion}</version>
@@ -197,12 +215,6 @@
<dependency>
<groupId>axis</groupId>
- <artifactId>axis-jaxrpc</artifactId>
- <version>${axis_jaxrpc_version}</version>
- </dependency>
-
- <dependency>
- <groupId>axis</groupId>
<artifactId>axis</artifactId>
<version>${axis_version}</version>
</dependency>
@@ -212,11 +224,7 @@
<artifactId>commons-discovery</artifactId>
<version>${axis_commons_discovery_version}</version>
</dependency>
- <dependency>
- <groupId>axis</groupId>
- <artifactId>axis-saaj</artifactId>
- <version>${axis_saaj_version}</version>
- </dependency>
+
<dependency>
<groupId>axis</groupId>
<artifactId>axis-wsdl4j</artifactId>
Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java?view=diff&r1=154622&r2=154623
==============================================================================
--- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java (original)
+++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java Sun Feb 20 20:43:02 2005
@@ -18,18 +18,14 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.math.BigDecimal;
-import java.math.BigInteger;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
-import java.util.Calendar;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -47,41 +43,12 @@
import javax.wsdl.Part;
import javax.wsdl.Port;
import javax.wsdl.PortType;
-import javax.wsdl.Types;
-import javax.wsdl.WSDLException;
-import javax.wsdl.extensions.ExtensibilityElement;
-import javax.wsdl.extensions.UnknownExtensibilityElement;
-import javax.wsdl.extensions.schema.Schema;
import javax.wsdl.extensions.soap.SOAPAddress;
import javax.wsdl.extensions.soap.SOAPBinding;
import javax.wsdl.extensions.soap.SOAPBody;
import javax.wsdl.extensions.soap.SOAPOperation;
-import javax.wsdl.factory.WSDLFactory;
-import javax.wsdl.xml.WSDLLocator;
-import javax.wsdl.xml.WSDLReader;
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.HandlerInfo;
-import javax.xml.rpc.holders.BigDecimalHolder;
-import javax.xml.rpc.holders.BigIntegerHolder;
-import javax.xml.rpc.holders.BooleanHolder;
-import javax.xml.rpc.holders.BooleanWrapperHolder;
-import javax.xml.rpc.holders.ByteArrayHolder;
-import javax.xml.rpc.holders.ByteHolder;
-import javax.xml.rpc.holders.ByteWrapperHolder;
-import javax.xml.rpc.holders.CalendarHolder;
-import javax.xml.rpc.holders.DoubleHolder;
-import javax.xml.rpc.holders.DoubleWrapperHolder;
-import javax.xml.rpc.holders.FloatHolder;
-import javax.xml.rpc.holders.FloatWrapperHolder;
-import javax.xml.rpc.holders.IntHolder;
-import javax.xml.rpc.holders.IntegerWrapperHolder;
-import javax.xml.rpc.holders.LongHolder;
-import javax.xml.rpc.holders.LongWrapperHolder;
-import javax.xml.rpc.holders.ObjectHolder;
-import javax.xml.rpc.holders.QNameHolder;
-import javax.xml.rpc.holders.ShortHolder;
-import javax.xml.rpc.holders.ShortWrapperHolder;
-import javax.xml.rpc.holders.StringHolder;
import net.sf.cglib.core.DefaultGeneratorStrategy;
import net.sf.cglib.proxy.Callback;
@@ -109,101 +76,61 @@
import org.apache.geronimo.axis.client.SerializableNoOp;
import org.apache.geronimo.axis.client.ServiceImpl;
import org.apache.geronimo.axis.client.ServiceMethodInterceptor;
-import org.apache.geronimo.axis.client.ServiceReference;
import org.apache.geronimo.axis.client.TypeMappingInfo;
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.deployment.DeploymentContext;
+import org.apache.geronimo.gbean.GBeanData;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.j2ee.deployment.Module;
import org.apache.geronimo.j2ee.deployment.ServiceReferenceBuilder;
+import org.apache.geronimo.j2ee.deployment.WebServiceBuilder;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.kernel.ClassLoading;
import org.apache.geronimo.naming.reference.DeserializingReference;
-import org.apache.geronimo.schema.SchemaConversionUtils;
import org.apache.geronimo.xbeans.j2ee.ConstructorParameterOrderType;
import org.apache.geronimo.xbeans.j2ee.ExceptionMappingType;
-import org.apache.geronimo.xbeans.j2ee.JavaWsdlMappingDocument;
import org.apache.geronimo.xbeans.j2ee.JavaWsdlMappingType;
import org.apache.geronimo.xbeans.j2ee.JavaXmlTypeMappingType;
import org.apache.geronimo.xbeans.j2ee.MethodParamPartsMappingType;
-import org.apache.geronimo.xbeans.j2ee.PackageMappingType;
import org.apache.geronimo.xbeans.j2ee.ServiceEndpointInterfaceMappingType;
import org.apache.geronimo.xbeans.j2ee.ServiceEndpointMethodMappingType;
import org.apache.geronimo.xbeans.j2ee.WsdlMessageMappingType;
import org.apache.geronimo.xbeans.j2ee.WsdlReturnValueMappingType;
-import org.apache.xmlbeans.XmlCursor;
-import org.apache.xmlbeans.XmlException;
-import org.apache.xmlbeans.XmlObject;
import org.objectweb.asm.Type;
import org.w3.x2001.xmlSchema.ComplexType;
import org.w3.x2001.xmlSchema.ExplicitGroup;
import org.w3.x2001.xmlSchema.LocalElement;
-import org.w3.x2001.xmlSchema.SchemaDocument;
-import org.w3c.dom.Element;
-import org.xml.sax.InputSource;
/**
* @version $Rev: $ $Date: $
*/
-public class AxisBuilder implements ServiceReferenceBuilder {
+public class AxisBuilder implements ServiceReferenceBuilder, WebServiceBuilder {
private static final Class[] SERVICE_CONSTRUCTOR_TYPES = new Class[]{Map.class, Map.class};
- private static final URI ENHANCED_LOCATION = URI.create("cglib/");
private static final SOAPConstants SOAP_VERSION = SOAPConstants.SOAP11_CONSTANTS;
- public ServiceReference createServiceReference(Class serviceInterface, URI wsdlURI, URI jaxrpcMappingURI, QName serviceQName, Map portComponentRefMap, List handlers, DeploymentContext deploymentContext, ClassLoader classLoader) throws DeploymentException {
- Enhancer enhancer = new Enhancer();
- enhancer.setClassLoader(classLoader);
- enhancer.setSuperclass(ServiceImpl.class);
- enhancer.setInterfaces(new Class[]{serviceInterface});
- enhancer.setCallbackFilter(new NoOverrideCallbackFilter(Service.class));
- enhancer.setCallbackTypes(new Class[]{NoOp.class, MethodInterceptor.class});
- enhancer.setUseFactory(false);
- ByteArrayRetrievingGeneratorStrategy strategy = new ByteArrayRetrievingGeneratorStrategy();
- enhancer.setStrategy(strategy);
- Class enhanced = enhancer.createClass();
+ //WebServiceBuilder
+ public void configurePOJO(GBeanData targetGBean, Object portInfoObject, String seiClassName) throws DeploymentException {
+ PortInfo portInfo = (PortInfo)portInfoObject;
+ System.out.println("NOT CONFIGURING WEB SERVICE " + portInfo.getPortName());
+ }
+
+ public void configureEJB(GBeanData targetGBean, Object portInfoObject, String seiClassName) throws DeploymentException {
- saveClass(deploymentContext, enhanced.getName(), strategy.getClassBytes());
- return new ServiceReference(enhanced, null, null, null);
}
+
+ //ServicereferenceBuilder
public Object createService(Class serviceInterface, URI wsdlURI, URI jaxrpcMappingURI, QName serviceQName, Map portComponentRefMap, List handlerInfos, DeploymentContext deploymentContext, Module module, ClassLoader classLoader) throws DeploymentException {
JarFile moduleFile = module.getModuleFile();
Definition definition = null;
JavaWsdlMappingType mapping = null;
if (wsdlURI != null) {
- JarWSDLLocator wsdlLocator = new JarWSDLLocator(moduleFile, wsdlURI);
- WSDLFactory wsdlFactory = null;
- try {
- wsdlFactory = WSDLFactory.newInstance();
- } catch (WSDLException e) {
- throw new DeploymentException("Could not create WSDLFactory", e);
- }
- WSDLReader wsdlReader = wsdlFactory.newWSDLReader();
- definition = null;
- try {
- definition = wsdlReader.readWSDL(wsdlLocator);
- } catch (WSDLException e) {
- throw new DeploymentException("Failed to read wsdl document", e);
- }
+ definition = WSDescriptorParser.readWsdl(moduleFile, wsdlURI);
- InputStream jaxrpcInputStream = null;
- try {
- jaxrpcInputStream = moduleFile.getInputStream(moduleFile.getEntry(jaxrpcMappingURI.toString()));
- } catch (IOException e) {
- throw new DeploymentException("Could not open stream to jaxrpc mapping document", e);
- }
- JavaWsdlMappingDocument mappingDocument = null;
- try {
- mappingDocument = JavaWsdlMappingDocument.Factory.parse(jaxrpcInputStream);
- } catch (XmlException e) {
- throw new DeploymentException("Could not parse jaxrpc mapping document", e);
- } catch (IOException e) {
- throw new DeploymentException("Could not read jaxrpc mapping document", e);
- }
- mapping = mappingDocument.getJavaWsdlMapping();
+ mapping = WSDescriptorParser.readJaxrpcMapping(moduleFile, jaxrpcMappingURI);
}
Object service = createService(serviceInterface, definition, mapping, serviceQName, SOAP_VERSION, handlerInfos, deploymentContext, module, classLoader);
@@ -282,15 +209,15 @@
Map wsdlPortMap = service.getPorts();
- Map complexTypeMap = getComplexTypesInWsdl(definition);
- Map exceptionMap = getExceptionMap(mapping);
+ Map complexTypeMap = WSDescriptorParser.getComplexTypesInWsdl(definition);
+ Map exceptionMap = WSDescriptorParser.getExceptionMap(mapping);
for (Iterator iterator = wsdlPortMap.entrySet().iterator(); iterator.hasNext();) {
Map.Entry entry = (Map.Entry) iterator.next();
String portName = (String) entry.getKey();
Port port = (Port) entry.getValue();
- SOAPAddress soapAddress = (SOAPAddress) getExtensibilityElement(SOAPAddress.class, port.getExtensibilityElements());
+ SOAPAddress soapAddress = (SOAPAddress) WSDescriptorParser.getExtensibilityElement(SOAPAddress.class, port.getExtensibilityElements());
String locationURIString = soapAddress.getLocationURI();
URL location = null;
try {
@@ -300,7 +227,7 @@
}
Binding binding = port.getBinding();
- SOAPBinding soapBinding = (SOAPBinding) getExtensibilityElement(SOAPBinding.class, binding.getExtensibilityElements());
+ SOAPBinding soapBinding = (SOAPBinding) WSDescriptorParser.getExtensibilityElement(SOAPBinding.class, binding.getExtensibilityElements());
// String transportURI = soapBinding.getTransportURI();
String portStyleString = soapBinding.getStyle();
Style portStyle = Style.getStyle(portStyleString);
@@ -332,7 +259,7 @@
} else {
//complete jaxrpc mapping file supplied
QName portTypeQName = portType.getQName();
- ServiceEndpointInterfaceMappingType endpointMapping = getServiceEndpointInterfaceMapping(endpointMappings, portTypeQName);
+ ServiceEndpointInterfaceMappingType endpointMapping = WSDescriptorParser.getServiceEndpointInterfaceMapping(endpointMappings, portTypeQName);
String fqcn = endpointMapping.getServiceEndpointInterface().getStringValue();
try {
serviceEndpointInterface = classLoader.loadClass(fqcn);
@@ -345,8 +272,9 @@
int i = 0;
for (Iterator ops = operations.iterator(); ops.hasNext();) {
Operation operation = (Operation) ops.next();
- BindingOperation bindingOperation = binding.getBindingOperation(operation.getName(), operation.getInput().getName(), operation.getOutput() == null ? null : operation.getOutput().getName());
- ServiceEndpointMethodMappingType methodMapping = getMethodMappingForOperation(operation, methodMappings);
+ String operationName = operation.getName();
+ BindingOperation bindingOperation = binding.getBindingOperation(operationName, operation.getInput().getName(), operation.getOutput() == null ? null : operation.getOutput().getName());
+ ServiceEndpointMethodMappingType methodMapping = WSDescriptorParser.getMethodMappingForOperation(operationName, methodMappings);
OperationInfo operationInfo = buildOperationInfoHeavyweight(methodMapping, bindingOperation, portStyle, soapVersion, exceptionMap, complexTypeMap, mapping, classLoader);
operationInfos[i++] = operationInfo;
}
@@ -396,30 +324,6 @@
}
}
- private Map getExceptionMap(JavaWsdlMappingType mapping) {
- Map exceptionMap = new HashMap();
- if (mapping != null) {
- ExceptionMappingType[] exceptionMappings = mapping.getExceptionMappingArray();
- for (int i = 0; i < exceptionMappings.length; i++) {
- ExceptionMappingType exceptionMapping = exceptionMappings[i];
- QName exceptionMessageQName = exceptionMapping.getWsdlMessage().getQNameValue();
- exceptionMap.put(exceptionMessageQName, exceptionMapping);
- }
- }
- return exceptionMap;
- }
-
- private ServiceEndpointMethodMappingType getMethodMappingForOperation(Operation operation, ServiceEndpointMethodMappingType[] methodMappings) throws DeploymentException {
- String operationName = operation.getName();
- for (int i = 0; i < methodMappings.length; i++) {
- ServiceEndpointMethodMappingType methodMapping = methodMappings[i];
- if (operationName.equals(methodMapping.getWsdlOperation().getStringValue())) {
- return methodMapping;
- }
- }
- throw new DeploymentException("No method found for operation named " + operationName);
- }
-
private Method getMethodForOperation(Class enhancedServiceEndpointClass, Operation operation) throws DeploymentException {
Method[] methods = enhancedServiceEndpointClass.getMethods();
String opName = operation.getName();
@@ -442,7 +346,7 @@
private Class getServiceEndpointInterfaceLightweight(PortType portType, JavaWsdlMappingType mappings, ClassLoader classLoader) throws DeploymentException {
QName portTypeQName = portType.getQName();
String portTypeNamespace = portTypeQName.getNamespaceURI();
- String portTypePackage = getPackageFromNamespace(portTypeNamespace, mappings);
+ String portTypePackage = WSDescriptorParser.getPackageFromNamespace(portTypeNamespace, mappings);
StringBuffer shortInterfaceName = new StringBuffer(portTypeQName.getLocalPart());
shortInterfaceName.setCharAt(0, Character.toUpperCase(shortInterfaceName.charAt(0)));
//TODO just use one buffer!
@@ -455,37 +359,6 @@
}
- private ServiceEndpointInterfaceMappingType getServiceEndpointInterfaceMapping(ServiceEndpointInterfaceMappingType[] endpointMappings, QName portTypeQName) throws DeploymentException {
- for (int i = 0; i < endpointMappings.length; i++) {
- ServiceEndpointInterfaceMappingType endpointMapping = endpointMappings[i];
- QName testPortQName = endpointMapping.getWsdlPortType().getQNameValue();
- if (portTypeQName.equals(testPortQName)) {
- return endpointMapping;
- }
- }
- throw new DeploymentException("Could not find service endpoint interface for port named " + portTypeQName);
- }
-
- private ExtensibilityElement getExtensibilityElement(Class clazz, List extensibilityElements) throws DeploymentException {
- for (Iterator iterator = extensibilityElements.iterator(); iterator.hasNext();) {
- ExtensibilityElement extensibilityElement = (ExtensibilityElement) iterator.next();
- if (clazz.isAssignableFrom(extensibilityElement.getClass())) {
- return extensibilityElement;
- }
- }
- throw new DeploymentException("No element of class " + clazz.getName() + " found");
- }
-
- private String getPackageFromNamespace(String namespace, JavaWsdlMappingType mapping) throws DeploymentException {
- PackageMappingType[] packageMappings = mapping.getPackageMappingArray();
- for (int i = 0; i < packageMappings.length; i++) {
- PackageMappingType packageMapping = packageMappings[i];
- if (namespace.equals(packageMapping.getNamespaceURI().getStringValue().trim())) {
- return packageMapping.getPackageType().getStringValue().trim();
- }
- }
- throw new DeploymentException("Namespace " + namespace + " was not mapped in jaxrpc mapping file");
- }
public SEIFactory createSEIFactory(String portName, Class enhancedServiceEndpointClass, Object serviceImpl, List typeMappings, URL location, OperationInfo[] operationInfos, List handlerInfoInfos, DeploymentContext deploymentContext, ClassLoader classLoader) throws DeploymentException {
List handlerInfos = buildHandlerInfosForPort(portName, handlerInfoInfos);
@@ -583,12 +456,12 @@
Class returnClass = method.getReturnType();
operationDesc.setReturnClass(returnClass);
- SOAPOperation soapOperation = (SOAPOperation) getExtensibilityElement(SOAPOperation.class, bindingOperation.getExtensibilityElements());
+ SOAPOperation soapOperation = (SOAPOperation) WSDescriptorParser.getExtensibilityElement(SOAPOperation.class, bindingOperation.getExtensibilityElements());
String soapActionURI = soapOperation.getSoapActionURI();
String styleString = soapOperation.getStyle();
Style style = Style.getStyle(styleString, defaultStyle);
BindingInput bindingInput = bindingOperation.getBindingInput();
- SOAPBody soapBody = (SOAPBody) getExtensibilityElement(SOAPBody.class, bindingInput.getExtensibilityElements());
+ SOAPBody soapBody = (SOAPBody) WSDescriptorParser.getExtensibilityElement(SOAPBody.class, bindingInput.getExtensibilityElements());
String useString = soapBody.getUse();
Use use = Use.getUse(useString);
operationDesc.setStyle(style);
@@ -700,7 +573,8 @@
//use complexTypeMap
boolean isComplexType = complexTypeMap.containsKey(partTypeQName);
String paramJavaTypeName = paramMapping.getParamType().getStringValue().trim();
- Class actualParamJavaType = getHolderType(paramJavaTypeName, mode, partTypeQName, isComplexType, mapping, classLoader);
+ boolean isInOnly = mode == ParameterDesc.IN;
+ Class actualParamJavaType = WSDescriptorParser.getHolderType(paramJavaTypeName, isInOnly, partTypeQName, isComplexType, mapping, classLoader);
ParameterDesc parameterDesc = new ParameterDesc(partQName, mode, partTypeQName, actualParamJavaType, inHeader, outHeader);
parameterDescriptions[position] = parameterDesc;
@@ -771,12 +645,12 @@
operationDesc.setReturnType(returnType);
operationDesc.setReturnClass(returnClass);
- SOAPOperation soapOperation = (SOAPOperation) getExtensibilityElement(SOAPOperation.class, bindingOperation.getExtensibilityElements());
+ SOAPOperation soapOperation = (SOAPOperation) WSDescriptorParser.getExtensibilityElement(SOAPOperation.class, bindingOperation.getExtensibilityElements());
String soapActionURI = soapOperation.getSoapActionURI();
String styleString = soapOperation.getStyle();
Style style = Style.getStyle(styleString, defaultStyle);
BindingInput bindingInput = bindingOperation.getBindingInput();
- SOAPBody soapBody = (SOAPBody) getExtensibilityElement(SOAPBody.class, bindingInput.getExtensibilityElements());
+ SOAPBody soapBody = (SOAPBody) WSDescriptorParser.getExtensibilityElement(SOAPBody.class, bindingInput.getExtensibilityElements());
String useString = soapBody.getUse();
Use use = Use.getUse(useString);
operationDesc.setStyle(style);
@@ -831,7 +705,7 @@
QName elementType = (QName) elementMap.get(elementName);
String javaElementTypeName;
if (complexTypeMap.containsKey(elementType)) {
- String packageName = getPackageFromNamespace(elementType.getNamespaceURI(), mapping);
+ String packageName = WSDescriptorParser.getPackageFromNamespace(elementType.getNamespaceURI(), mapping);
javaElementTypeName = packageName + "." + elementType.getLocalPart();
} else {
//TODO finish this
@@ -866,188 +740,6 @@
return operationInfo;
}
- /**
- * Find all the top level complex types in the schemas in the definitions' types.
- * Put them in a map from complex type QName to schema fragment.
- * TODO it is not clear what happens with included schemas.
- *
- * @param definition
- * @return
- * @throws DeploymentException
- */
- Map getComplexTypesInWsdl(Definition definition) throws DeploymentException {
- Map complexTypeMap = new HashMap();
- Types types = definition.getTypes();
- Map namespaceMap = definition.getNamespaces();
- if (types != null) {
- List schemas = types.getExtensibilityElements();
- for (Iterator iterator = schemas.iterator(); iterator.hasNext();) {
- Object o = iterator.next();
- if (o instanceof Schema) {
- Schema unknownExtensibilityElement = (Schema) o;
- QName elementType = unknownExtensibilityElement.getElementType();
- if (new QName("http://www.w3.org/2001/XMLSchema", "schema").equals(elementType)) {
- Element element = unknownExtensibilityElement.getElement();
- try {
- XmlObject xmlObject = SchemaConversionUtils.parse(element);
- XmlCursor cursor = xmlObject.newCursor();
- try {
- cursor.toFirstContentToken();
- for (Iterator namespaces = namespaceMap.entrySet().iterator(); namespaces.hasNext();) {
- Map.Entry entry = (Map.Entry) namespaces.next();
- cursor.insertNamespace((String) entry.getKey(), (String) entry.getValue());
- }
- } finally {
- cursor.dispose();
- }
- SchemaDocument schemaDoc = (SchemaDocument) xmlObject.changeType(SchemaDocument.type);
- SchemaConversionUtils.validateDD(schemaDoc);
- SchemaDocument.Schema schema = schemaDoc.getSchema();
- String targetNamespace = schema.getTargetNamespace();
- ComplexType[] complexTypes = schema.getComplexTypeArray();
- for (int j = 0; j < complexTypes.length; j++) {
- ComplexType complexType = complexTypes[j];
- String complexTypeName = complexType.getName();
- QName complexTypeQName = new QName(targetNamespace, complexTypeName);
- complexTypeMap.put(complexTypeQName, complexType);
- }
- } catch (XmlException e) {
- throw new DeploymentException("Invalid schema in wsdl", e);
- }
- } else {
- //problems??
- }
- } else if (o instanceof UnknownExtensibilityElement) {
- //This is apparently obsolete as of axis-wsdl4j-1.2-RC3.jar which includes the Schema extension above.
- //I'm leaving this in in case this Schema class is not really part of a spec, even though its in javax.
- UnknownExtensibilityElement unknownExtensibilityElement = (UnknownExtensibilityElement) o;
- QName elementType = unknownExtensibilityElement.getElementType();
- if (new QName("http://www.w3.org/2001/XMLSchema", "schema").equals(elementType)) {
- Element element = unknownExtensibilityElement.getElement();
- try {
- XmlObject xmlObject = SchemaConversionUtils.parse(element);
- XmlCursor cursor = xmlObject.newCursor();
- try {
- cursor.toFirstContentToken();
- for (Iterator namespaces = namespaceMap.entrySet().iterator(); namespaces.hasNext();) {
- Map.Entry entry = (Map.Entry) namespaces.next();
- cursor.insertNamespace((String) entry.getKey(), (String) entry.getValue());
- }
- } finally {
- cursor.dispose();
- }
- SchemaDocument schemaDoc = (SchemaDocument) xmlObject.changeType(SchemaDocument.type);
- SchemaConversionUtils.validateDD(schemaDoc);
- SchemaDocument.Schema schema = schemaDoc.getSchema();
- String targetNamespace = schema.getTargetNamespace();
- ComplexType[] complexTypes = schema.getComplexTypeArray();
- for (int j = 0; j < complexTypes.length; j++) {
- ComplexType complexType = complexTypes[j];
- String complexTypeName = complexType.getName();
- QName complexTypeQName = new QName(targetNamespace, complexTypeName);
- complexTypeMap.put(complexTypeQName, complexType);
- }
- } catch (XmlException e) {
- throw new DeploymentException("Invalid schema in wsdl", e);
- }
- } else {
- //problems??
- }
- }
- }
- }
- return complexTypeMap;
- }
-
- private static final Map rpcHolderClasses = new HashMap();
-
- static {
- rpcHolderClasses.put(BigDecimal.class, BigDecimalHolder.class);
- rpcHolderClasses.put(BigInteger.class, BigIntegerHolder.class);
- rpcHolderClasses.put(boolean.class, BooleanHolder.class);
- rpcHolderClasses.put(Boolean.class, BooleanWrapperHolder.class);
- rpcHolderClasses.put(byte[].class, ByteArrayHolder.class);
- rpcHolderClasses.put(byte.class, ByteHolder.class);
- rpcHolderClasses.put(Byte.class, ByteWrapperHolder.class);
- rpcHolderClasses.put(Calendar.class, CalendarHolder.class);
- rpcHolderClasses.put(double.class, DoubleHolder.class);
- rpcHolderClasses.put(Double.class, DoubleWrapperHolder.class);
- rpcHolderClasses.put(float.class, FloatHolder.class);
- rpcHolderClasses.put(Float.class, FloatWrapperHolder.class);
- rpcHolderClasses.put(int.class, IntHolder.class);
- rpcHolderClasses.put(Integer.class, IntegerWrapperHolder.class);
- rpcHolderClasses.put(long.class, LongHolder.class);
- rpcHolderClasses.put(Long.class, LongWrapperHolder.class);
- rpcHolderClasses.put(Object.class, ObjectHolder.class);
- rpcHolderClasses.put(QName.class, QNameHolder.class);
- rpcHolderClasses.put(short.class, ShortHolder.class);
- rpcHolderClasses.put(Short.class, ShortWrapperHolder.class);
- rpcHolderClasses.put(String.class, StringHolder.class);
- }
-
- private Class getHolderType(String paramJavaTypeName, byte mode, QName typeQName, boolean isComplexType, JavaWsdlMappingType mapping, ClassLoader classLoader) throws DeploymentException {
- Class paramJavaType = null;
- if (mode == ParameterDesc.IN) {
- //IN parameters just use their own type
- try {
- paramJavaType = ClassLoading.loadClass(paramJavaTypeName, classLoader);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("could not load parameter type", e);
- }
- return paramJavaType;
- } else {
- //INOUT and OUT parameters use holders. See jaxrpc spec 4.3.5
- String holderName;
- if (isComplexType) {
- //complex types get mapped:
- //package is determined from the namespace to package map + ".holders"
- //class name is the complex type QNMAne local part + "Holder", with the initial character uppercased.
- String namespace = typeQName.getNamespaceURI();
- String packageName = getPackageFromNamespace(namespace, mapping);
- StringBuffer buf = new StringBuffer(packageName.length() + typeQName.getLocalPart().length() + 14);
- buf.append(packageName).append(".holders.").append(typeQName.getLocalPart()).append("Holder");
- buf.setCharAt(packageName.length() + 9, Character.toUpperCase(typeQName.getLocalPart().charAt(0)));
- holderName = buf.toString();
- } else {
- //see if it is in the primitive type and simple type mapping
- try {
- paramJavaType = ClassLoading.loadClass(paramJavaTypeName, classLoader);
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("could not load parameter type", e);
- }
- Class holder = (Class) rpcHolderClasses.get(paramJavaType);
- if (holder != null) {
- return holder;
- }
- //Otherwise, the holder must be in:
- //package same as type's package + ".holders"
- //class name same as type name + "Holder"
- String paramTypeName = paramJavaType.getName();
- StringBuffer buf = new StringBuffer(paramTypeName.length() + 14);
- int dot = paramTypeName.lastIndexOf(".");
- //foo.Bar >>> foo.holders.BarHolder
- buf.append(paramTypeName.substring(0, dot)).append(".holders").append(paramTypeName.substring(dot)).append("Holder");
- holderName = buf.toString();
- }
- try {
- Class holder = ClassLoading.loadClass(holderName, classLoader);
- return holder;
- } catch (ClassNotFoundException e) {
- throw new DeploymentException("Could not load holder class", e);
- }
- }
- }
-
-
- private void saveClass(DeploymentContext deploymentContext, String className, byte[] classBytes) throws DeploymentException {
- try {
- deploymentContext.addClass(ENHANCED_LOCATION, className, classBytes, true);
- } catch (IOException e) {
- throw new DeploymentException("Could not save enhanced class bytes", e);
- } catch (URISyntaxException e) {
- throw new DeploymentException("Could not construct URI for class file", e);
- }
- }
private static class ByteArrayRetrievingGeneratorStrategy extends DefaultGeneratorStrategy {
@@ -1063,53 +755,13 @@
}
}
- static class JarWSDLLocator implements WSDLLocator {
-
- private final JarFile moduleFile;
- private final URI wsdlURI;
- private URI latestImportURI;
-
- public JarWSDLLocator(JarFile moduleFile, URI wsdlURI) {
- this.moduleFile = moduleFile;
- this.wsdlURI = wsdlURI;
- }
-
- public InputSource getBaseInputSource() {
- InputStream wsdlInputStream = null;
- try {
- wsdlInputStream = moduleFile.getInputStream(moduleFile.getEntry(wsdlURI.toString()));
- } catch (IOException e) {
- throw new RuntimeException("Could not open stream to wsdl file", e);
- }
- return new InputSource(wsdlInputStream);
- }
-
- public String getBaseURI() {
- return wsdlURI.toString();
- }
-
- public InputSource getImportInputSource(String parentLocation, String relativeLocation) {
- URI parentURI = URI.create(parentLocation);
- latestImportURI = parentURI.resolve(relativeLocation);
- InputStream importInputStream = null;
- try {
- importInputStream = moduleFile.getInputStream(moduleFile.getEntry(latestImportURI.toString()));
- } catch (IOException e) {
- throw new RuntimeException("Could not open stream to import file", e);
- }
- return new InputSource(importInputStream);
- }
-
- public String getLatestImportURI() {
- return latestImportURI.toString();
- }
- }
public static final GBeanInfo GBEAN_INFO;
static {
GBeanInfoBuilder infoBuilder = new GBeanInfoBuilder(AxisBuilder.class, NameFactory.MODULE_BUILDER);
infoBuilder.addInterface(ServiceReferenceBuilder.class);
+ infoBuilder.addInterface(WebServiceBuilder.class);
GBEAN_INFO = infoBuilder.getBeanInfo();
}
Added: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/PortInfo.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/PortInfo.java?view=auto&rev=154623
==============================================================================
--- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/PortInfo.java (added)
+++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/PortInfo.java Sun Feb 20 20:43:02 2005
@@ -0,0 +1,68 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.axis.builder;
+
+import javax.xml.namespace.QName;
+import javax.wsdl.Definition;
+
+import org.apache.geronimo.xbeans.j2ee.JavaWsdlMappingType;
+import org.apache.geronimo.xbeans.j2ee.PortComponentHandlerType;
+
+/**
+ * @version $Rev: $ $Date: $
+ */
+public class PortInfo {
+ private final String portName;
+ private final QName portQName;
+ private final Definition definition;
+ private final JavaWsdlMappingType javaWsdlMapping;
+ private final String seiInterfaceName;
+ private final PortComponentHandlerType[] handlers;
+
+ public PortInfo(String portName, QName portQName, Definition definition, JavaWsdlMappingType javaWsdlMapping, String seiInterfaceName, PortComponentHandlerType[] handlers) {
+ this.portName = portName;
+ this.portQName = portQName;
+ this.definition = definition;
+ this.javaWsdlMapping = javaWsdlMapping;
+ this.seiInterfaceName = seiInterfaceName;
+ this.handlers = handlers;
+ }
+
+ public String getPortName() {
+ return portName;
+ }
+
+ public QName getPortQName() {
+ return portQName;
+ }
+
+ public Definition getDefinition() {
+ return definition;
+ }
+
+ public JavaWsdlMappingType getJavaWsdlMapping() {
+ return javaWsdlMapping;
+ }
+
+ public String getSeiInterfaceName() {
+ return seiInterfaceName;
+ }
+
+ public PortComponentHandlerType[] getHandlers() {
+ return handlers;
+ }
+}
Added: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/WSDescriptorParser.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/WSDescriptorParser.java?view=auto&rev=154623
==============================================================================
--- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/WSDescriptorParser.java (added)
+++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/WSDescriptorParser.java Sun Feb 20 20:43:02 2005
@@ -0,0 +1,457 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.axis.builder;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.jar.JarFile;
+import javax.wsdl.Definition;
+import javax.wsdl.Types;
+import javax.wsdl.WSDLException;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.UnknownExtensibilityElement;
+import javax.wsdl.extensions.schema.Schema;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLLocator;
+import javax.wsdl.xml.WSDLReader;
+import javax.xml.namespace.QName;
+import javax.xml.rpc.holders.BigDecimalHolder;
+import javax.xml.rpc.holders.BigIntegerHolder;
+import javax.xml.rpc.holders.BooleanHolder;
+import javax.xml.rpc.holders.BooleanWrapperHolder;
+import javax.xml.rpc.holders.ByteArrayHolder;
+import javax.xml.rpc.holders.ByteHolder;
+import javax.xml.rpc.holders.ByteWrapperHolder;
+import javax.xml.rpc.holders.CalendarHolder;
+import javax.xml.rpc.holders.DoubleHolder;
+import javax.xml.rpc.holders.DoubleWrapperHolder;
+import javax.xml.rpc.holders.FloatHolder;
+import javax.xml.rpc.holders.FloatWrapperHolder;
+import javax.xml.rpc.holders.IntHolder;
+import javax.xml.rpc.holders.IntegerWrapperHolder;
+import javax.xml.rpc.holders.LongHolder;
+import javax.xml.rpc.holders.LongWrapperHolder;
+import javax.xml.rpc.holders.ObjectHolder;
+import javax.xml.rpc.holders.QNameHolder;
+import javax.xml.rpc.holders.ShortHolder;
+import javax.xml.rpc.holders.ShortWrapperHolder;
+import javax.xml.rpc.holders.StringHolder;
+
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.kernel.ClassLoading;
+import org.apache.geronimo.schema.SchemaConversionUtils;
+import org.apache.geronimo.xbeans.j2ee.ExceptionMappingType;
+import org.apache.geronimo.xbeans.j2ee.JavaWsdlMappingDocument;
+import org.apache.geronimo.xbeans.j2ee.JavaWsdlMappingType;
+import org.apache.geronimo.xbeans.j2ee.PackageMappingType;
+import org.apache.geronimo.xbeans.j2ee.PortComponentHandlerType;
+import org.apache.geronimo.xbeans.j2ee.PortComponentType;
+import org.apache.geronimo.xbeans.j2ee.ServiceEndpointInterfaceMappingType;
+import org.apache.geronimo.xbeans.j2ee.ServiceEndpointMethodMappingType;
+import org.apache.geronimo.xbeans.j2ee.ServiceImplBeanType;
+import org.apache.geronimo.xbeans.j2ee.WebserviceDescriptionType;
+import org.apache.geronimo.xbeans.j2ee.WebservicesDocument;
+import org.apache.geronimo.xbeans.j2ee.WebservicesType;
+import org.apache.xmlbeans.XmlCursor;
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlObject;
+import org.w3.x2001.xmlSchema.ComplexType;
+import org.w3.x2001.xmlSchema.SchemaDocument;
+import org.w3c.dom.Element;
+import org.xml.sax.InputSource;
+
+/**
+ * @version $Rev: $ $Date: $
+ */
+public class WSDescriptorParser {
+
+ public static Map parseWebServiceDescriptor(URL wsDDUrl, JarFile moduleFile, boolean isEJB) throws DeploymentException {
+ try {
+ WebservicesDocument webservicesDocument = WebservicesDocument.Factory.parse(wsDDUrl);
+ SchemaConversionUtils.validateDD(webservicesDocument);
+ WebservicesType webservicesType = webservicesDocument.getWebservices();
+ return parseWebServiceDescriptor(webservicesType, moduleFile, isEJB);
+ } catch (XmlException e) {
+ throw new DeploymentException("Could not read descriptor document", e);
+ } catch (IOException e) {
+ return null;
+ }
+
+ }
+
+ public static Map parseWebServiceDescriptor(WebservicesType webservicesType, JarFile moduleFile, boolean isEJB) throws DeploymentException {
+ Map portMap = new HashMap();
+ WebserviceDescriptionType[] webserviceDescriptions = webservicesType.getWebserviceDescriptionArray();
+ for (int i = 0; i < webserviceDescriptions.length; i++) {
+ WebserviceDescriptionType webserviceDescription = webserviceDescriptions[i];
+ URI wsdlURI = null;
+ try {
+ wsdlURI = new URI(webserviceDescription.getWsdlFile().getStringValue().trim());
+ } catch (URISyntaxException e) {
+ throw new DeploymentException("could not construct wsdl uri from " + webserviceDescription.getWsdlFile().getStringValue(), e);
+ }
+ URI jaxrpcMappingURI = null;
+ try {
+ jaxrpcMappingURI = new URI(webserviceDescription.getJaxrpcMappingFile().getStringValue().trim());
+ } catch (URISyntaxException e) {
+ throw new DeploymentException("Could not construct jaxrpc mapping uri from " + webserviceDescription.getJaxrpcMappingFile(), e);
+ }
+ Definition definition = readWsdl(moduleFile, wsdlURI);
+ JavaWsdlMappingType javaWsdlMapping = readJaxrpcMapping(moduleFile, jaxrpcMappingURI);
+ PortComponentType[] portComponents = webserviceDescription.getPortComponentArray();
+ for (int j = 0; j < portComponents.length; j++) {
+ PortComponentType portComponent = portComponents[j];
+ String portComponentName = portComponent.getPortComponentName().getStringValue().trim();
+ QName portQName = portComponent.getWsdlPort().getQNameValue();
+ String seiInterfaceName = portComponent.getServiceEndpointInterface().getStringValue().trim();
+ ServiceImplBeanType serviceImplBeanType = portComponent.getServiceImplBean();
+ if (isEJB == serviceImplBeanType.isSetServletLink()) {
+ throw new DeploymentException("Wrong kind of web service described in web service descriptor: expected " + (isEJB? "EJB": "POJO(Servlet)"));
+ }
+ String linkName;
+ if (serviceImplBeanType.isSetServletLink()) {
+ linkName = serviceImplBeanType.getServletLink().getStringValue().trim();
+ } else {
+ linkName = serviceImplBeanType.getEjbLink().getStringValue().trim();
+ }
+ PortComponentHandlerType[] handlers = portComponent.getHandlerArray();
+ PortInfo portInfo = new PortInfo(portComponentName, portQName, definition, javaWsdlMapping, seiInterfaceName, handlers);
+ if (portMap.put(linkName, portInfo) != null) {
+ throw new DeploymentException("Ambiguous description of port associated with j2ee component " + linkName);
+ }
+ }
+ }
+ return portMap;
+ }
+
+ public static JavaWsdlMappingType readJaxrpcMapping(JarFile moduleFile, URI jaxrpcMappingURI) throws DeploymentException {
+ JavaWsdlMappingType mapping;
+ InputStream jaxrpcInputStream = null;
+ try {
+ jaxrpcInputStream = moduleFile.getInputStream(moduleFile.getEntry(jaxrpcMappingURI.toString()));
+ } catch (IOException e) {
+ throw new DeploymentException("Could not open stream to jaxrpc mapping document", e);
+ }
+ JavaWsdlMappingDocument mappingDocument = null;
+ try {
+ mappingDocument = JavaWsdlMappingDocument.Factory.parse(jaxrpcInputStream);
+ } catch (XmlException e) {
+ throw new DeploymentException("Could not parse jaxrpc mapping document", e);
+ } catch (IOException e) {
+ throw new DeploymentException("Could not read jaxrpc mapping document", e);
+ }
+ mapping = mappingDocument.getJavaWsdlMapping();
+ return mapping;
+ }
+
+ public static Definition readWsdl(JarFile moduleFile, URI wsdlURI) throws DeploymentException {
+ Definition definition;
+ JarWSDLLocator wsdlLocator = new JarWSDLLocator(moduleFile, wsdlURI);
+ WSDLFactory wsdlFactory = null;
+ try {
+ wsdlFactory = WSDLFactory.newInstance();
+ } catch (WSDLException e) {
+ throw new DeploymentException("Could not create WSDLFactory", e);
+ }
+ WSDLReader wsdlReader = wsdlFactory.newWSDLReader();
+ try {
+ definition = wsdlReader.readWSDL(wsdlLocator);
+ } catch (WSDLException e) {
+ throw new DeploymentException("Failed to read wsdl document", e);
+ }
+ return definition;
+ }
+
+ /**
+ * Find all the top level complex types in the schemas in the definitions' types.
+ * Put them in a map from complex type QName to schema fragment.
+ * TODO it is not clear what happens with included schemas.
+ *
+ * @param definition
+ * @return
+ * @throws DeploymentException
+ */
+ public static Map getComplexTypesInWsdl(Definition definition) throws DeploymentException {
+ Map complexTypeMap = new HashMap();
+ Types types = definition.getTypes();
+ Map namespaceMap = definition.getNamespaces();
+ if (types != null) {
+ List schemas = types.getExtensibilityElements();
+ for (Iterator iterator = schemas.iterator(); iterator.hasNext();) {
+ Object o = iterator.next();
+ if (o instanceof Schema) {
+ Schema unknownExtensibilityElement = (Schema) o;
+ QName elementType = unknownExtensibilityElement.getElementType();
+ if (new QName("http://www.w3.org/2001/XMLSchema", "schema").equals(elementType)) {
+ Element element = unknownExtensibilityElement.getElement();
+ try {
+ XmlObject xmlObject = SchemaConversionUtils.parse(element);
+ XmlCursor cursor = xmlObject.newCursor();
+ try {
+ cursor.toFirstContentToken();
+ for (Iterator namespaces = namespaceMap.entrySet().iterator(); namespaces.hasNext();) {
+ Map.Entry entry = (Map.Entry) namespaces.next();
+ cursor.insertNamespace((String) entry.getKey(), (String) entry.getValue());
+ }
+ } finally {
+ cursor.dispose();
+ }
+ SchemaDocument schemaDoc = (SchemaDocument) xmlObject.changeType(SchemaDocument.type);
+ SchemaConversionUtils.validateDD(schemaDoc);
+ SchemaDocument.Schema schema = schemaDoc.getSchema();
+ String targetNamespace = schema.getTargetNamespace();
+ ComplexType[] complexTypes = schema.getComplexTypeArray();
+ for (int j = 0; j < complexTypes.length; j++) {
+ ComplexType complexType = complexTypes[j];
+ String complexTypeName = complexType.getName();
+ QName complexTypeQName = new QName(targetNamespace, complexTypeName);
+ complexTypeMap.put(complexTypeQName, complexType);
+ }
+ } catch (XmlException e) {
+ throw new DeploymentException("Invalid schema in wsdl", e);
+ }
+ } else {
+ //problems??
+ }
+ } else if (o instanceof UnknownExtensibilityElement) {
+ //This is apparently obsolete as of axis-wsdl4j-1.2-RC3.jar which includes the Schema extension above.
+ //I'm leaving this in in case this Schema class is not really part of a spec, even though its in javax.
+ UnknownExtensibilityElement unknownExtensibilityElement = (UnknownExtensibilityElement) o;
+ QName elementType = unknownExtensibilityElement.getElementType();
+ if (new QName("http://www.w3.org/2001/XMLSchema", "schema").equals(elementType)) {
+ Element element = unknownExtensibilityElement.getElement();
+ try {
+ XmlObject xmlObject = SchemaConversionUtils.parse(element);
+ XmlCursor cursor = xmlObject.newCursor();
+ try {
+ cursor.toFirstContentToken();
+ for (Iterator namespaces = namespaceMap.entrySet().iterator(); namespaces.hasNext();) {
+ Map.Entry entry = (Map.Entry) namespaces.next();
+ cursor.insertNamespace((String) entry.getKey(), (String) entry.getValue());
+ }
+ } finally {
+ cursor.dispose();
+ }
+ SchemaDocument schemaDoc = (SchemaDocument) xmlObject.changeType(SchemaDocument.type);
+ SchemaConversionUtils.validateDD(schemaDoc);
+ SchemaDocument.Schema schema = schemaDoc.getSchema();
+ String targetNamespace = schema.getTargetNamespace();
+ ComplexType[] complexTypes = schema.getComplexTypeArray();
+ for (int j = 0; j < complexTypes.length; j++) {
+ ComplexType complexType = complexTypes[j];
+ String complexTypeName = complexType.getName();
+ QName complexTypeQName = new QName(targetNamespace, complexTypeName);
+ complexTypeMap.put(complexTypeQName, complexType);
+ }
+ } catch (XmlException e) {
+ throw new DeploymentException("Invalid schema in wsdl", e);
+ }
+ } else {
+ //problems??
+ }
+ }
+ }
+ }
+ return complexTypeMap;
+ }
+
+ public static Map getExceptionMap(JavaWsdlMappingType mapping) {
+ Map exceptionMap = new HashMap();
+ if (mapping != null) {
+ ExceptionMappingType[] exceptionMappings = mapping.getExceptionMappingArray();
+ for (int i = 0; i < exceptionMappings.length; i++) {
+ ExceptionMappingType exceptionMapping = exceptionMappings[i];
+ QName exceptionMessageQName = exceptionMapping.getWsdlMessage().getQNameValue();
+ exceptionMap.put(exceptionMessageQName, exceptionMapping);
+ }
+ }
+ return exceptionMap;
+ }
+
+ public static String getPackageFromNamespace(String namespace, JavaWsdlMappingType mapping) throws DeploymentException {
+ PackageMappingType[] packageMappings = mapping.getPackageMappingArray();
+ for (int i = 0; i < packageMappings.length; i++) {
+ PackageMappingType packageMapping = packageMappings[i];
+ if (namespace.equals(packageMapping.getNamespaceURI().getStringValue().trim())) {
+ return packageMapping.getPackageType().getStringValue().trim();
+ }
+ }
+ throw new DeploymentException("Namespace " + namespace + " was not mapped in jaxrpc mapping file");
+ }
+
+ private static final Map rpcHolderClasses = new HashMap();
+
+ static {
+ rpcHolderClasses.put(BigDecimal.class, BigDecimalHolder.class);
+ rpcHolderClasses.put(BigInteger.class, BigIntegerHolder.class);
+ rpcHolderClasses.put(boolean.class, BooleanHolder.class);
+ rpcHolderClasses.put(Boolean.class, BooleanWrapperHolder.class);
+ rpcHolderClasses.put(byte[].class, ByteArrayHolder.class);
+ rpcHolderClasses.put(byte.class, ByteHolder.class);
+ rpcHolderClasses.put(Byte.class, ByteWrapperHolder.class);
+ rpcHolderClasses.put(Calendar.class, CalendarHolder.class);
+ rpcHolderClasses.put(double.class, DoubleHolder.class);
+ rpcHolderClasses.put(Double.class, DoubleWrapperHolder.class);
+ rpcHolderClasses.put(float.class, FloatHolder.class);
+ rpcHolderClasses.put(Float.class, FloatWrapperHolder.class);
+ rpcHolderClasses.put(int.class, IntHolder.class);
+ rpcHolderClasses.put(Integer.class, IntegerWrapperHolder.class);
+ rpcHolderClasses.put(long.class, LongHolder.class);
+ rpcHolderClasses.put(Long.class, LongWrapperHolder.class);
+ rpcHolderClasses.put(Object.class, ObjectHolder.class);
+ rpcHolderClasses.put(QName.class, QNameHolder.class);
+ rpcHolderClasses.put(short.class, ShortHolder.class);
+ rpcHolderClasses.put(Short.class, ShortWrapperHolder.class);
+ rpcHolderClasses.put(String.class, StringHolder.class);
+ }
+
+ public static Class getHolderType(String paramJavaTypeName, boolean isInOnly, QName typeQName, boolean isComplexType, JavaWsdlMappingType mapping, ClassLoader classLoader) throws DeploymentException {
+ Class paramJavaType = null;
+ if (isInOnly) {
+ //IN parameters just use their own type
+ try {
+ paramJavaType = ClassLoading.loadClass(paramJavaTypeName, classLoader);
+ } catch (ClassNotFoundException e) {
+ throw new DeploymentException("could not load parameter type", e);
+ }
+ return paramJavaType;
+ } else {
+ //INOUT and OUT parameters use holders. See jaxrpc spec 4.3.5
+ String holderName;
+ if (isComplexType) {
+ //complex types get mapped:
+ //package is determined from the namespace to package map + ".holders"
+ //class name is the complex type QNMAne local part + "Holder", with the initial character uppercased.
+ String namespace = typeQName.getNamespaceURI();
+ String packageName = WSDescriptorParser.getPackageFromNamespace(namespace, mapping);
+ StringBuffer buf = new StringBuffer(packageName.length() + typeQName.getLocalPart().length() + 14);
+ buf.append(packageName).append(".holders.").append(typeQName.getLocalPart()).append("Holder");
+ buf.setCharAt(packageName.length() + 9, Character.toUpperCase(typeQName.getLocalPart().charAt(0)));
+ holderName = buf.toString();
+ } else {
+ //see if it is in the primitive type and simple type mapping
+ try {
+ paramJavaType = ClassLoading.loadClass(paramJavaTypeName, classLoader);
+ } catch (ClassNotFoundException e) {
+ throw new DeploymentException("could not load parameter type", e);
+ }
+ Class holder = (Class) rpcHolderClasses.get(paramJavaType);
+ if (holder != null) {
+ return holder;
+ }
+ //Otherwise, the holder must be in:
+ //package same as type's package + ".holders"
+ //class name same as type name + "Holder"
+ String paramTypeName = paramJavaType.getName();
+ StringBuffer buf = new StringBuffer(paramTypeName.length() + 14);
+ int dot = paramTypeName.lastIndexOf(".");
+ //foo.Bar >>> foo.holders.BarHolder
+ buf.append(paramTypeName.substring(0, dot)).append(".holders").append(paramTypeName.substring(dot)).append("Holder");
+ holderName = buf.toString();
+ }
+ try {
+ Class holder = ClassLoading.loadClass(holderName, classLoader);
+ return holder;
+ } catch (ClassNotFoundException e) {
+ throw new DeploymentException("Could not load holder class", e);
+ }
+ }
+ }
+
+ public static ServiceEndpointMethodMappingType getMethodMappingForOperation(String operationName, ServiceEndpointMethodMappingType[] methodMappings) throws DeploymentException {
+ for (int i = 0; i < methodMappings.length; i++) {
+ ServiceEndpointMethodMappingType methodMapping = methodMappings[i];
+ if (operationName.equals(methodMapping.getWsdlOperation().getStringValue())) {
+ return methodMapping;
+ }
+ }
+ throw new DeploymentException("No method found for operation named " + operationName);
+ }
+
+ public static ServiceEndpointInterfaceMappingType getServiceEndpointInterfaceMapping(ServiceEndpointInterfaceMappingType[] endpointMappings, QName portTypeQName) throws DeploymentException {
+ for (int i = 0; i < endpointMappings.length; i++) {
+ ServiceEndpointInterfaceMappingType endpointMapping = endpointMappings[i];
+ QName testPortQName = endpointMapping.getWsdlPortType().getQNameValue();
+ if (portTypeQName.equals(testPortQName)) {
+ return endpointMapping;
+ }
+ }
+ throw new DeploymentException("Could not find service endpoint interface for port named " + portTypeQName);
+ }
+
+ public static ExtensibilityElement getExtensibilityElement(Class clazz, List extensibilityElements) throws DeploymentException {
+ for (Iterator iterator = extensibilityElements.iterator(); iterator.hasNext();) {
+ ExtensibilityElement extensibilityElement = (ExtensibilityElement) iterator.next();
+ if (clazz.isAssignableFrom(extensibilityElement.getClass())) {
+ return extensibilityElement;
+ }
+ }
+ throw new DeploymentException("No element of class " + clazz.getName() + " found");
+ }
+
+ static class JarWSDLLocator implements WSDLLocator {
+
+ private final JarFile moduleFile;
+ private final URI wsdlURI;
+ private URI latestImportURI;
+
+ public JarWSDLLocator(JarFile moduleFile, URI wsdlURI) {
+ this.moduleFile = moduleFile;
+ this.wsdlURI = wsdlURI;
+ }
+
+ public InputSource getBaseInputSource() {
+ InputStream wsdlInputStream = null;
+ try {
+ wsdlInputStream = moduleFile.getInputStream(moduleFile.getEntry(wsdlURI.toString()));
+ } catch (IOException e) {
+ throw new RuntimeException("Could not open stream to wsdl file", e);
+ }
+ return new InputSource(wsdlInputStream);
+ }
+
+ public String getBaseURI() {
+ return wsdlURI.toString();
+ }
+
+ public InputSource getImportInputSource(String parentLocation, String relativeLocation) {
+ URI parentURI = URI.create(parentLocation);
+ latestImportURI = parentURI.resolve(relativeLocation);
+ InputStream importInputStream = null;
+ try {
+ importInputStream = moduleFile.getInputStream(moduleFile.getEntry(latestImportURI.toString()));
+ } catch (IOException e) {
+ throw new RuntimeException("Could not open stream to import file", e);
+ }
+ return new InputSource(importInputStream);
+ }
+
+ public String getLatestImportURI() {
+ return latestImportURI.toString();
+ }
+ }
+}
Modified: geronimo/trunk/modules/axis-builder/src/test/org/apache/geronimo/axis/builder/ServiceReferenceTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/test/org/apache/geronimo/axis/builder/ServiceReferenceTest.java?view=diff&r1=154622&r2=154623
==============================================================================
--- geronimo/trunk/modules/axis-builder/src/test/org/apache/geronimo/axis/builder/ServiceReferenceTest.java (original)
+++ geronimo/trunk/modules/axis-builder/src/test/org/apache/geronimo/axis/builder/ServiceReferenceTest.java Sun Feb 20 20:43:02 2005
@@ -48,11 +48,10 @@
import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;
import javax.xml.namespace.QName;
-import javax.xml.rpc.Service;
import junit.framework.TestCase;
-import org.apache.axis.soap.SOAPConstants;
import org.apache.axis.constants.Style;
+import org.apache.axis.soap.SOAPConstants;
import org.apache.geronimo.axis.builder.bookquote.BookQuote;
import org.apache.geronimo.axis.builder.bookquote.BookQuoteService;
import org.apache.geronimo.axis.builder.interop.InteropLab;
@@ -63,7 +62,6 @@
import org.apache.geronimo.axis.client.OperationInfo;
import org.apache.geronimo.axis.client.SEIFactory;
import org.apache.geronimo.axis.client.ServiceImpl;
-import org.apache.geronimo.axis.client.ServiceReference;
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.deployment.DeploymentContext;
import org.apache.geronimo.deployment.util.UnpackedJarFile;
@@ -112,19 +110,6 @@
recursiveDelete(tmpbasedir);
}
- public void testServiceRefCreation() throws Exception {
- AxisBuilder builder = new AxisBuilder();
-
- ServiceReference ref = builder.createServiceReference(MockService.class, null, null, null, null, null, context, isolatedCl);
- Object instance = ref.getContent();
- assertTrue(instance instanceof Service);
-
- ClassLoader cl = context.getClassLoader(null);
- Class loadedType = cl.loadClass(instance.getClass().getName());
- assertTrue(Service.class.isAssignableFrom(loadedType));
- assertTrue(instance.getClass() != loadedType);
- }
-
public void testServiceProxy() throws Exception {
//construct the SEI proxy
Map portMap = new HashMap();
@@ -263,8 +248,7 @@
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader reader = factory.newWSDLReader();
Definition definition = reader.readWSDL(wsdlFile.toURI().toString());
- AxisBuilder builder = new AxisBuilder();
- Map complexTypeMap = builder.getComplexTypesInWsdl(definition);
+ Map complexTypeMap = WSDescriptorParser.getComplexTypesInWsdl(definition);
assertEquals(7, complexTypeMap.size());
}
Modified: geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebModule.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebModule.java?view=diff&r1=154622&r2=154623
==============================================================================
--- geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebModule.java (original)
+++ geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebModule.java Sun Feb 20 20:43:02 2005
@@ -18,6 +18,7 @@
import java.util.jar.JarFile;
import java.util.LinkedHashSet;
+import java.util.Map;
import java.net.URI;
import java.net.URISyntaxException;
import java.io.IOException;
@@ -33,9 +34,11 @@
private final LinkedHashSet webClassPath = new LinkedHashSet();
private String contextRoot;
+ private final Map portMap;
- public WebModule(boolean standAlone, URI configId, URI parentId, JarFile moduleFile, String targetPath, XmlObject specDD, XmlObject vendorDD, String originalSpecDD) {
+ public WebModule(boolean standAlone, URI configId, URI parentId, JarFile moduleFile, String targetPath, XmlObject specDD, XmlObject vendorDD, String originalSpecDD, Map portMap) {
super(standAlone, configId, parentId, moduleFile, targetPath, specDD, vendorDD, originalSpecDD);
+ this.portMap = portMap;
}
public String getContextRoot() {
@@ -48,6 +51,10 @@
public ConfigurationModuleType getType() {
return ConfigurationModuleType.WAR;
+ }
+
+ public Map getPortMap() {
+ return portMap;
}
public void addClass(URI location, String fqcn, byte[] bytes, DeploymentContext context) throws IOException, URISyntaxException {
Added: geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebServiceBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebServiceBuilder.java?view=auto&rev=154623
==============================================================================
--- geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebServiceBuilder.java (added)
+++ geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebServiceBuilder.java Sun Feb 20 20:43:02 2005
@@ -0,0 +1,47 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.j2ee.deployment;
+
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.gbean.GBeanData;
+
+/**
+ * @version $Rev: $ $Date: $
+ */
+public interface WebServiceBuilder {
+
+ //obviously these need the deployment descriptors, but I'm not sure in what form yet.
+ /**
+ * configure the supplied GBeanData to implement the POJO web service described in the deployment descriptor.
+ * The GBeanData will be for a ServletHolder like gbean that is adapted to holding a ws stack that talks to a
+ * POJO web service. The web deployer is responsible for filling in the standard servlet info such as init params.
+ * @param targetGBean
+ * @param portInfo
+ * @param seiClassName
+ * @throws DeploymentException
+ */
+ void configurePOJO(GBeanData targetGBean, Object portInfo, String seiClassName) throws DeploymentException;
+
+ /**
+ * configure the supplied EJBContainer gbeandata to implement the ejb web service described in the deployment descriptor
+ * N.B. this method is a complete guess and should be replaced by something useable right away!
+ * @param targetGBean
+ * @throws DeploymentException
+ */
+ void configureEJB(GBeanData targetGBean, Object portInfoObject, String seiClassName) throws DeploymentException;
+
+}
Modified: geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java?view=diff&r1=154622&r2=154623
==============================================================================
--- geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java (original)
+++ geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTest.java Sun Feb 20 20:43:02 2005
@@ -75,6 +75,7 @@
private static final ObjectName transactionalTimerObjectName = JMXUtil.getObjectName(j2eeServerName + ":type=ThreadPooledTimer,name=TransactionalThreaPooledTimer");
private static final ObjectName nonTransactionalTimerObjectName = JMXUtil.getObjectName(j2eeServerName + ":type=ThreadPooledTimer,name=NonTransactionalThreaPooledTimer");
private URI defaultParentId;
+ private static final Map portMap = null;
protected void setUp() throws Exception {
defaultParentId = new URI("org/apache/geronimo/Server");
@@ -87,7 +88,7 @@
earFile = DeploymentUtil.createJarFile(new File(basedir, "target/test-ear14/test-ear.ear"));
ejbConfigBuilder.ejbModule = new EJBModule(false, null, null, null, "test-ejb-jar.jar", null, null, null);
webConfigBuilder.contextRoot = "test";
- webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war", null, null, null);
+ webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war", null, null, null, portMap);
webConfigBuilder.webModule.setContextRoot("test");
connectorConfigBuilder.connectorModule = new ConnectorModule(false, null, null, null, "test-rar.rar", null, null, null);
}
@@ -104,7 +105,7 @@
earFile = DeploymentUtil.createJarFile(new File(basedir, "target/test-ear14/test-naked-ear.ear"));
ejbConfigBuilder.ejbModule = new EJBModule(false, null, null, null, "test-ejb-jar.jar", null, null, null);
webConfigBuilder.contextRoot = "test";
- webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war", null, null, null);
+ webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war", null, null, null, portMap);
webConfigBuilder.webModule.setContextRoot("test");
connectorConfigBuilder.connectorModule = new ConnectorModule(false, null, null, null, "test-rar.rar", null, null, null);
}
@@ -121,7 +122,7 @@
earFile = DeploymentUtil.createJarFile(new File(basedir, "target/test-ear13/test-ear.ear"));
ejbConfigBuilder.ejbModule = new EJBModule(false, null, null, null, "test-ejb-jar.jar", null, null, null);
webConfigBuilder.contextRoot = "test";
- webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war", null, null, null);
+ webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war", null, null, null, portMap);
webConfigBuilder.webModule.setContextRoot("test");
connectorConfigBuilder.connectorModule = new ConnectorModule(false, null, null, null, "test-rar.rar", null, null, null);
}
@@ -138,7 +139,7 @@
earFile = DeploymentUtil.createJarFile(new File(basedir, "target/test-ear13/test-naked-ear.ear"));
ejbConfigBuilder.ejbModule = new EJBModule(false, null, null, null, "test-ejb-jar.jar", null, null, null);
webConfigBuilder.contextRoot = "test";
- webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war", null, null, null);
+ webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war", null, null, null, portMap);
webConfigBuilder.webModule.setContextRoot("test");
connectorConfigBuilder.connectorModule = new ConnectorModule(false, null, null, null, "test-rar.rar", null, null, null);
}
@@ -155,7 +156,7 @@
earFile = DeploymentUtil.createJarFile(new File(basedir, "target/test-unpacked-ear/full/"));
ejbConfigBuilder.ejbModule = new EJBModule(false, null, null, null, "test-ejb-jar.jar/", null, null, null);
webConfigBuilder.contextRoot = "test";
- webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war/", null, null, null);
+ webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war/", null, null, null, portMap);
webConfigBuilder.webModule.setContextRoot("test");
connectorConfigBuilder.connectorModule = new ConnectorModule(false, null, null, null, "test-rar.rar", null, null, null);
}
@@ -172,7 +173,7 @@
earFile = DeploymentUtil.createJarFile(new File(basedir, "target/test-unpacked-ear/naked/"));
ejbConfigBuilder.ejbModule = new EJBModule(false, null, null, null, "test-ejb-jar.jar/", null, null, null);
webConfigBuilder.contextRoot = "test";
- webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war", null, null, null);
+ webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war", null, null, null, portMap);
webConfigBuilder.webModule.setContextRoot("test");
connectorConfigBuilder.connectorModule = new ConnectorModule(false, null, null, null, "test-rar.rar", null, null, null);
}
@@ -189,7 +190,7 @@
earFile = DeploymentUtil.createJarFile(new File(basedir, "target/test-unpacked-ear/alt-dd/"));
ejbConfigBuilder.ejbModule = new EJBModule(false, null, null, null, "test-ejb-jar.jar/", null, null, null);
webConfigBuilder.contextRoot = "test";
- webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war/", null, null, null);
+ webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war/", null, null, null, portMap);
webConfigBuilder.webModule.setContextRoot("test");
connectorConfigBuilder.connectorModule = new ConnectorModule(false, null, null, null, "test-rar.rar", null, null, null);
}
@@ -206,7 +207,7 @@
earFile = DeploymentUtil.createJarFile(new File(basedir, "target/test-unpacked-ear/alt-dd.ear"));
ejbConfigBuilder.ejbModule = new EJBModule(false, null, null, null, "test-ejb-jar.jar/", null, null, null);
webConfigBuilder.contextRoot = "test";
- webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war/", null, null, null);
+ webConfigBuilder.webModule = new WebModule(false, null, null, null, "test-war.war/", null, null, null, portMap);
webConfigBuilder.webModule.setContextRoot("test");
connectorConfigBuilder.connectorModule = new ConnectorModule(false, null, null, null, "test-rar.rar", null, null, null);
}
Modified: geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/MockWARConfigBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/MockWARConfigBuilder.java?view=diff&r1=154622&r2=154623
==============================================================================
--- geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/MockWARConfigBuilder.java (original)
+++ geronimo/trunk/modules/j2ee-builder/src/test/org/apache/geronimo/j2ee/deployment/MockWARConfigBuilder.java Sun Feb 20 20:43:02 2005
@@ -20,6 +20,7 @@
import java.net.URL;
import java.net.URI;
import java.util.jar.JarFile;
+import java.util.Map;
import javax.management.ObjectName;
@@ -34,13 +35,14 @@
public WebModule webModule;
public ClassLoader cl;
public String contextRoot;
+ private Map portMap = null;
public Module createModule(File plan, JarFile moduleFile) throws DeploymentException {
- return new WebModule(true, null, null, moduleFile, "war", null, null, null);
+ return new WebModule(true, null, null, moduleFile, "war", null, null, null, portMap);
}
public Module createModule(Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, URI earConfigId) throws DeploymentException {
- return new WebModule(false, null, null, moduleFile, targetPath, null, null, null);
+ return new WebModule(false, null, null, moduleFile, targetPath, null, null, null, portMap);
}
public void installModule(JarFile earFile, EARContext earContext, Module webModule) throws DeploymentException {
Modified: geronimo/trunk/modules/j2ee-schema/maven.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee-schema/maven.xml?view=diff&r1=154622&r2=154623
==============================================================================
--- geronimo/trunk/modules/j2ee-schema/maven.xml (original)
+++ geronimo/trunk/modules/j2ee-schema/maven.xml Sun Feb 20 20:43:02 2005
@@ -28,7 +28,7 @@
<preGoal name="java:compile">
<xmlbeans:schema2java
sourcedir="${basedir}/src"
- sourceschema="j2ee_1_4schema/application_1_4.xsd,j2ee_1_4schema/j2ee_jaxrpc_mapping_1_1.xsd,j2ee_1_3schema/connector_1_0.xsd,j2ee_1_4schema/j2ee_1_4.xsd,j2ee_1_4schema/connector_1_5.xsd,j2ee_1_4schema/ejb-jar_2_1.xsd,j2ee_1_4schema/web-app_2_4.xsd,j2ee_1_4schema/application-client_1_4.xsd"
+ sourceschema="j2ee_1_4schema/application_1_4.xsd,j2ee_1_4schema/j2ee_jaxrpc_mapping_1_1.xsd,j2ee_1_3schema/connector_1_0.xsd,j2ee_1_4schema/j2ee_1_4.xsd,j2ee_1_4schema/connector_1_5.xsd,j2ee_1_4schema/ejb-jar_2_1.xsd,j2ee_1_4schema/web-app_2_4.xsd,j2ee_1_4schema/application-client_1_4.xsd,j2ee_1_4schema/j2ee_web_services_1_1.xsd"
xmlconfigs="${basedir}/src/conf/xmlconfig.xml"
targetdir="${basedir}/target/xmlbeans"
cataloglocation="${basedir}/src/catalog/resolver-catalog.xml"/>
Modified: geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java?view=diff&r1=154622&r2=154623
==============================================================================
--- geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java (original)
+++ geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java Sun Feb 20 20:43:02 2005
@@ -95,6 +95,7 @@
public static final String PERSISTENT_CONFIGURATION_LIST = "PersistentConfigurationList"; //duplicated in FileConfigurationList
// public static final String URL_PATTERN = "URLPattern";
public static String DEFAULT_SERVLET = "DefaultServlet";
+ public static final String SERVLET_WEB_SERVICE_TEMPLATE = "ServletWebServiceTemplate";
public static ObjectName getDomainName(String j2eeDomainName, J2eeContext context) throws MalformedObjectNameException {
Properties props = new Properties();
Modified: geronimo/trunk/modules/jetty-builder/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty-builder/project.xml?view=diff&r1=154622&r2=154623
==============================================================================
--- geronimo/trunk/modules/jetty-builder/project.xml (original)
+++ geronimo/trunk/modules/jetty-builder/project.xml Sun Feb 20 20:43:02 2005
@@ -172,6 +172,13 @@
<version>${pom.currentVersion}</version>
</dependency>
+ <!--todo put WSDescriptorParser somewhere else and remove this dependency-->
+ <dependency>
+ <groupId>geronimo</groupId>
+ <artifactId>geronimo-axis-builder</artifactId>
+ <version>${pom.currentVersion}</version>
+ </dependency>
+
<dependency>
<groupId>geronimo-spec</groupId>
<artifactId>geronimo-spec-jta</artifactId>
@@ -231,6 +238,18 @@
</dependency>
<dependency>
+ <groupId>geronimo-spec</groupId>
+ <artifactId>geronimo-spec-jaxrpc</artifactId>
+ <version>${geronimo_spec_jaxrpc_version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>geronimo-spec</groupId>
+ <artifactId>geronimo-spec-saaj</artifactId>
+ <version>${geronimo_spec_saaj_version}</version>
+ </dependency>
+
+ <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons_logging_version}</version>
@@ -294,6 +313,13 @@
<version>${tranql_version}</version>
<url>http://tranql.codehaus.org</url>
</dependency>
+
+ <dependency>
+ <groupId>axis</groupId>
+ <artifactId>axis-wsdl4j</artifactId>
+ <version>${axis_wsdl4j_version}</version>
+ </dependency>
+
</dependencies>