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/04/12 23:03:27 UTC
svn commit: r161120 - in geronimo/trunk/modules:
axis-builder/src/java/org/apache/geronimo/axis/builder/
axis/src/java/org/apache/geronimo/axis/server/
webservices/src/java/org/apache/geronimo/webservices/
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());
}