Author: djencks Date: Tue Apr 12 14:03:26 2005 New Revision: 161120 URL: http://svn.apache.org/viewcvs?view=rev&rev=161120 Log: Fixed bugs in request URI and URL wsdl access
Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/SchemaInfoBuilder.java geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/server/AxisWebServiceContainer.java geronimo/trunk/modules/webservices/src/java/org/apache/geronimo/webservices/WebServiceContainerInvoker.java Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java?view=diff&r1=161119&r2=161120 ============================================================================== --- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java (original) +++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java Tue Apr 12 14:03:26 2005 @@ -16,6 +16,34 @@ */ package org.apache.geronimo.axis.builder; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.jar.JarFile; +import javax.wsdl.Binding; +import javax.wsdl.BindingInput; +import javax.wsdl.BindingOperation; +import javax.wsdl.Definition; +import javax.wsdl.Import; +import javax.wsdl.Port; +import javax.wsdl.Types; +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.UnknownExtensibilityElement; +import javax.xml.namespace.QName; +import javax.xml.rpc.handler.HandlerInfo; + import org.apache.axis.constants.Style; import org.apache.axis.constants.Use; import org.apache.axis.description.JavaServiceDesc; @@ -24,36 +52,30 @@ import org.apache.axis.encoding.SerializerFactory; import org.apache.axis.encoding.TypeMapping; import org.apache.axis.encoding.TypeMappingRegistryImpl; -import org.apache.axis.encoding.ser.*; +import org.apache.axis.encoding.ser.ArrayDeserializerFactory; +import org.apache.axis.encoding.ser.ArraySerializerFactory; +import org.apache.axis.encoding.ser.BaseDeserializerFactory; +import org.apache.axis.encoding.ser.BaseSerializerFactory; +import org.apache.axis.encoding.ser.BeanDeserializerFactory; +import org.apache.axis.encoding.ser.BeanSerializerFactory; import org.apache.geronimo.axis.server.ReadOnlyServiceDesc; import org.apache.geronimo.axis.server.ServiceInfo; import org.apache.geronimo.common.DeploymentException; import org.apache.geronimo.deployment.util.DeploymentUtil; import org.apache.geronimo.kernel.ClassLoading; -import org.apache.geronimo.xbeans.j2ee.*; +import org.apache.geronimo.xbeans.j2ee.JavaXmlTypeMappingType; +import org.apache.geronimo.xbeans.j2ee.ParamValueType; +import org.apache.geronimo.xbeans.j2ee.PortComponentHandlerType; +import org.apache.geronimo.xbeans.j2ee.ServiceEndpointMethodMappingType; +import org.apache.geronimo.xbeans.j2ee.XsdQNameType; import org.apache.xmlbeans.SchemaType; -import org.apache.xmlbeans.XmlObject; import org.apache.xmlbeans.XmlException; -import org.w3.x2001.xmlSchema.SchemaDocument; +import org.apache.xmlbeans.XmlObject; import org.w3.x2001.xmlSchema.ImportDocument; import org.w3.x2001.xmlSchema.IncludeDocument; +import org.w3.x2001.xmlSchema.SchemaDocument; import org.w3c.dom.Element; - -import javax.wsdl.*; -import javax.wsdl.extensions.soap.SOAPAddress; -import javax.wsdl.extensions.soap.SOAPBinding; -import javax.wsdl.extensions.soap.SOAPBody; -import javax.wsdl.extensions.schema.Schema; -import javax.xml.namespace.QName; -import javax.xml.rpc.handler.HandlerInfo; -import java.lang.String; -import java.lang.reflect.Method; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.*; -import java.util.jar.JarFile; +import org.w3c.dom.Node; /** * @version $Rev$ $Date$ @@ -61,6 +83,7 @@ public class AxisServiceBuilder { public static final String XSD_NS = "http://www.w3.org/2001/XMLSchema"; + public static final QName SCHEMA_QNAME = new QName(XSD_NS, "schema"); private static void validateLightweightMapping(Definition definition) throws DeploymentException { @@ -395,6 +418,7 @@ } } Types types = definition.getTypes(); + Map namespaceMap = definition.getNamespaces(); List schemaList = types.getExtensibilityElements(); for (Iterator iterator1 = schemaList.iterator(); iterator1.hasNext();) { Object o = iterator1.next(); @@ -408,6 +432,22 @@ schemaType.setElement(e2); } catch (XmlException e1) { throw new DeploymentException("Could not parse included schema", e1); + } + } else if (o instanceof UnknownExtensibilityElement) { + UnknownExtensibilityElement u = (UnknownExtensibilityElement) o; + QName elementType = u.getElementType(); + if (SCHEMA_QNAME.equals(elementType)) { + Element e = u.getElement(); + try { + SchemaDocument schemaDocument = (SchemaDocument) SchemaInfoBuilder.parseWithNamespaces(e, namespaceMap); + SchemaDocument.Schema schema = schemaDocument.getSchema(); + rewriteSchema(schema, contextURI, key); + Node node = schema.newDomNode(); + Element e2 = (Element) node.getFirstChild(); + u.setElement(e2); + } catch (XmlException e1) { + throw new DeploymentException("Could not parse included schema", e1); + } } } } Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/SchemaInfoBuilder.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/SchemaInfoBuilder.java?view=diff&r1=161119&r2=161120 ============================================================================== --- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/SchemaInfoBuilder.java (original) +++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/SchemaInfoBuilder.java Tue Apr 12 14:03:26 2005 @@ -237,21 +237,26 @@ private void addSchemaElement(Element element, Map namespaceMap, List schemaList) throws DeploymentException { 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(); - } + XmlObject xmlObject = parseWithNamespaces(element, namespaceMap); schemaList.add(xmlObject); } catch (XmlException e) { throw new DeploymentException("Could not parse schema element", e); } + } + + static XmlObject parseWithNamespaces(Element element, Map namespaceMap) throws XmlException { + 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(); + } + return xmlObject; } /** Modified: geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/server/AxisWebServiceContainer.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/server/AxisWebServiceContainer.java?view=diff&r1=161119&r2=161120 ============================================================================== --- geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/server/AxisWebServiceContainer.java (original) +++ geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/server/AxisWebServiceContainer.java Tue Apr 12 14:03:26 2005 @@ -201,20 +201,23 @@ public void getWsdl(Request request, Response response) throws Exception { URI realLocation = request.getURI(); - String locationKey = request.getParameter("wsdl"); - if (locationKey == null) { - locationKey = request.getParameter("WSDL"); + String query = realLocation.getQuery(); + if (query == null || !query.toLowerCase().startsWith("wsdl")) { + throw new IllegalStateException("request must contain a wsdl or WSDL parameter: " + request.getParameters()); } - if ("".equals(locationKey)) { + String locationKey; + if (query.length() > 4) { + locationKey = query.substring(5); + } else { locationKey = wsdlLocation.toString(); - } else if (locationKey == null) { - throw new IllegalStateException("request must contain a wsdl or WSDL parameter: " + request.getParameters()); } Object wsdl = wsdlMap.get(locationKey); if (wsdl == null) { throw new IllegalStateException("No wsdl or schema known at location: " + locationKey); } if (wsdl instanceof String) { +// log.info("===========XSD==============" + locationKey); +// log.info(wsdl); response.getOutputStream().write(((String)wsdl).getBytes()); } else { Definition definition = (Definition) wsdl; @@ -244,6 +247,11 @@ } } } +// log.info("===========WSDL==============" + locationKey); +// OutputStream baos = new java.io.ByteArrayOutputStream(); +// wsdlWriter.writeWSDL(definition, baos); +// log.info(baos.toString()); + // Dump the WSDL dom to the output stream OutputStream out = response.getOutputStream(); wsdlWriter.writeWSDL(definition, out); Modified: geronimo/trunk/modules/webservices/src/java/org/apache/geronimo/webservices/WebServiceContainerInvoker.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/webservices/src/java/org/apache/geronimo/webservices/WebServiceContainerInvoker.java?view=diff&r1=161119&r2=161120 ============================================================================== --- geronimo/trunk/modules/webservices/src/java/org/apache/geronimo/webservices/WebServiceContainerInvoker.java (original) +++ geronimo/trunk/modules/webservices/src/java/org/apache/geronimo/webservices/WebServiceContainerInvoker.java Tue Apr 12 14:03:26 2005 @@ -106,8 +106,7 @@ public java.net.URI getURI() { try { - String uriString = request.getRequestURI(); - return new java.net.URI(uriString); + return new java.net.URI(request.getScheme(), null, request.getServerName(), request.getServerPort(), request.getRequestURI(), request.getQueryString(), null); } catch (URISyntaxException e) { throw new IllegalStateException(e.getMessage()); }