Author: sagara Date: Thu Oct 13 06:22:23 2011 New Revision: 1182678 URL: http://svn.apache.org/viewvc?rev=1182678&view=rev Log: Applied patch for AXIS2-5157.
Modified: axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPWorker.java axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/ListingAgent.java axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/server/HttpUtils.java Modified: axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java?rev=1182678&r1=1182677&r2=1182678&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java (original) +++ axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java Thu Oct 13 06:22:23 2011 @@ -46,6 +46,7 @@ import org.apache.axis2.engine.ListenerM import org.apache.axis2.transport.RequestResponseTransport; import org.apache.axis2.transport.TransportListener; import org.apache.axis2.transport.TransportUtils; +import org.apache.axis2.transport.http.server.HttpUtils; import org.apache.axis2.transport.http.util.QueryStringParser; import org.apache.axis2.transport.http.util.RESTUtil; import org.apache.axis2.util.JavaUtils; @@ -65,10 +66,10 @@ import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; -import java.util.Arrays; -import java.util.HashSet; +import java.util.Comparator; import java.util.Map; import java.util.Set; +import java.util.TreeSet; import java.util.concurrent.CountDownLatch; /** @@ -91,9 +92,8 @@ public class AxisServlet extends HttpSer public static final String CONFIGURATION_CONTEXT = "CONFIGURATION_CONTEXT"; public static final String SESSION_ID = "SessionId"; - private static final Set<String> metadataQueryParamNames = new HashSet<String>( - Arrays.asList("wsdl2", "wsdl", "xsd", "policy")); - + private static final Set<String> metadataQueryParamNames; + protected transient ConfigurationContext configContext; protected transient AxisConfiguration axisConfiguration; @@ -114,6 +114,23 @@ public class AxisServlet extends HttpSer private transient AxisServletListener httpListener; private transient AxisServletListener httpsListener; + static { + Comparator comparator = new Comparator(){ + public int compare(Object o1, Object o2) { + String string1 = (String) o1; + String string2 = (String) o2; + return string1.compareToIgnoreCase(string2); + } + }; + + metadataQueryParamNames= new TreeSet(comparator); + metadataQueryParamNames.add("wsdl2"); + metadataQueryParamNames.add("wsdl"); + metadataQueryParamNames.add("xsd"); + metadataQueryParamNames.add("policy"); + + + } /** * Implementaion of POST interface * @@ -258,8 +275,8 @@ public class AxisServlet extends HttpSer if ((query != null) && new QueryStringParser(query).search(metadataQueryParamNames)) { // handling meta data exchange stuff agent.processListService(request, response); - } else if (requestURI.endsWith(".xsd") || - requestURI.endsWith(".wsdl")) { + } else if (HttpUtils.endsWithIgnoreCase(requestURI , ".xsd") || + HttpUtils.endsWithIgnoreCase(requestURI, ".wsdl")) { agent.processExplicitSchemaAndWSDL(request, response); } else if (requestURI.endsWith(LIST_SERVICES_SUFFIX) || requestURI.endsWith(LIST_FAULTY_SERVICES_SUFFIX)) { Modified: axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPWorker.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPWorker.java?rev=1182678&r1=1182677&r2=1182678&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPWorker.java (original) +++ axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPWorker.java Thu Oct 13 06:22:23 2011 @@ -92,7 +92,7 @@ public class HTTPWorker implements Worke } if (uri.indexOf("?") < 0) { if (!uri.endsWith(contextPath)) { - if (uri.endsWith(".xsd") || uri.endsWith(".wsdl")) { + if (HttpUtils.endsWithIgnoreCase(uri , ".xsd") || HttpUtils.endsWithIgnoreCase(uri , ".wsdl")){ HashMap services = configurationContext.getAxisConfiguration().getServices(); String file = uri.substring(uri.lastIndexOf("/") + 1, uri.length()); @@ -115,7 +115,7 @@ public class HTTPWorker implements Worke } } } - if (uri.endsWith("?wsdl2")) { + if (HttpUtils.endsWithIgnoreCase(uri , "?wsdl2")) { String serviceName = uri.substring(uri.lastIndexOf("/") + 1, uri.length() - 6); HashMap services = configurationContext.getAxisConfiguration().getServices(); AxisService service = (AxisService) services.get(serviceName); @@ -131,7 +131,7 @@ public class HTTPWorker implements Worke return; } } - if (uri.endsWith("?wsdl")) { + if (HttpUtils.endsWithIgnoreCase(uri , "?wsdl")) { /** * service name can be hierarchical (axis2/services/foo/1.0.0/Version?wsdl) or * normal (axis2/services/Version?wsdl). @@ -153,7 +153,7 @@ public class HTTPWorker implements Worke return; } } - if (uri.endsWith("?xsd")) { + if (HttpUtils.endsWithIgnoreCase(uri , "?xsd")) { String serviceName = uri.substring(uri.lastIndexOf("/") + 1, uri.length() - 4); HashMap services = configurationContext.getAxisConfiguration().getServices(); AxisService service = (AxisService) services.get(serviceName); @@ -170,7 +170,7 @@ public class HTTPWorker implements Worke } } //cater for named xsds - check for the xsd name - if (uri.indexOf("?xsd=") > 0) { + if (HttpUtils.indexOfIngnoreCase(uri , "?xsd=") > 0) { // fix for imported schemas String[] uriParts = uri.split("[?]xsd="); String serviceName = @@ -250,14 +250,14 @@ public class HTTPWorker implements Worke } } } - if (uri.indexOf("?wsdl2=") > 0) { + if (HttpUtils.indexOfIngnoreCase(uri , "?wsdl2=") > 0) { String serviceName = - uri.substring(uri.lastIndexOf("/") + 1, uri.lastIndexOf("?wsdl2=")); + uri.substring(uri.lastIndexOf("/") + 1, HttpUtils.lastIndexOfIgnoreCase(uri , "?wsdl2=")); if (processInternalWSDL(uri, configurationContext, serviceName, response, getHost(request))) return; } - if (uri.indexOf("?wsdl=") > 0) { + if (HttpUtils.indexOfIngnoreCase(uri , "?wsdl=") > 0) { String serviceName = - uri.substring(uri.lastIndexOf("/") + 1, uri.lastIndexOf("?wsdl=")); + uri.substring(uri.lastIndexOf("/") + 1, HttpUtils.lastIndexOfIgnoreCase(uri , "?wsdl=")); if (processInternalWSDL(uri, configurationContext, serviceName, response, getHost(request))) return; } Modified: axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/ListingAgent.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/ListingAgent.java?rev=1182678&r1=1182677&r2=1182678&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/ListingAgent.java (original) +++ axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/ListingAgent.java Thu Oct 13 06:22:23 2011 @@ -24,8 +24,9 @@ import org.apache.axis2.Constants; import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.description.AxisDescription; import org.apache.axis2.description.AxisService; -import org.apache.axis2.description.PolicyInclude; import org.apache.axis2.description.Parameter; +import org.apache.axis2.description.PolicyInclude; +import org.apache.axis2.transport.http.server.HttpUtils; import org.apache.axis2.util.ExternalPolicySerializer; import org.apache.axis2.util.IOUtils; import org.apache.axis2.util.JavaUtils; @@ -43,6 +44,7 @@ import javax.xml.stream.XMLStreamWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -67,8 +69,8 @@ public class ListingAgent extends Abstra String query = httpServletRequest.getQueryString(); if (query != null) { - if (query.indexOf("wsdl2") > 0 || query.indexOf("wsdl") > 0 || - query.indexOf("xsd") > 0 || query.indexOf("policy") > 0) { + if (HttpUtils.indexOfIngnoreCase(query , "wsdl2") > 0 || HttpUtils.indexOfIngnoreCase(query, "wsdl") > 0 || + HttpUtils.indexOfIngnoreCase(query, "xsd") > 0 || HttpUtils.indexOfIngnoreCase(query, "policy") > 0) { processListService(httpServletRequest, httpServletResponse); } else { super.handle(httpServletRequest, httpServletResponse); @@ -167,10 +169,10 @@ public class ListingAgent extends Abstra String serviceName = extractServiceName(url); HashMap services = configContext.getAxisConfiguration().getServices(); String query = req.getQueryString(); - int wsdl2 = query.indexOf("wsdl2"); - int wsdl = query.indexOf("wsdl"); - int xsd = query.indexOf("xsd"); - int policy = query.indexOf("policy"); + int wsdl2 = HttpUtils.indexOfIngnoreCase(query, "wsdl2"); + int wsdl = HttpUtils.indexOfIngnoreCase(query, "wsdl"); + int xsd = HttpUtils.indexOfIngnoreCase(query, "xsd"); + int policy = HttpUtils.indexOfIngnoreCase(query, "policy"); if ((services != null) && !services.isEmpty()) { Object serviceObj = services.get(serviceName); @@ -297,7 +299,7 @@ public class ListingAgent extends Abstra return; } res.setContentType("text/xml"); - int ret = axisService.printXSD(res.getOutputStream(), req.getParameter("xsd")); + int ret = axisService.printXSD(res.getOutputStream(), getParamtereIgnoreCase(req ,"xsd")); if (ret == 0) { //multiple schemas are present and the user specified //no name - in this case we cannot possibly pump a schema @@ -319,7 +321,7 @@ public class ListingAgent extends Abstra OutputStream out = res.getOutputStream(); res.setContentType("text/xml"); String ip = extractHost(url); - String wsdlName = req.getParameter("wsdl"); + String wsdlName = getParamtereIgnoreCase(req , "wsdl"); if (wsdlName != null && wsdlName.length()>0) { axisService.printUserWSDL(out, wsdlName, ip); @@ -338,7 +340,7 @@ public class ListingAgent extends Abstra } res.setContentType("text/xml"); String ip = extractHost(url); - String wsdlName = req.getParameter("wsdl2"); + String wsdlName = getParamtereIgnoreCase(req , "wsdl2"); int ret = axisService.printWSDL2(res.getOutputStream(), ip, wsdlName); if (ret == 0) { @@ -348,6 +350,19 @@ public class ListingAgent extends Abstra } } + public String getParamtereIgnoreCase(HttpServletRequest req ,String paraName){ + Enumeration e = req.getParameterNames(); + while (e.hasMoreElements()) { + String name = (String)e.nextElement(); + if(name.equalsIgnoreCase(paraName)) { + String value = req.getParameter(name); + return value; + } + + } + return null; + } + /** * Checks whether exposing the WSDL & WSDL elements such as schema & policy have been allowed * Modified: axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/server/HttpUtils.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/server/HttpUtils.java?rev=1182678&r1=1182677&r2=1182678&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/server/HttpUtils.java (original) +++ axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/server/HttpUtils.java Thu Oct 13 06:22:23 2011 @@ -19,17 +19,9 @@ package org.apache.axis2.transport.http.server; -import org.apache.axis2.description.Parameter; -import org.apache.axis2.engine.AxisConfiguration; -import org.apache.axis2.transport.TransportListener; import org.apache.axis2.transport.http.HTTPConstants; import org.apache.http.Header; -import java.net.InetAddress; -import java.net.NetworkInterface; -import java.net.SocketException; -import java.util.Enumeration; - public class HttpUtils { private HttpUtils() { @@ -47,4 +39,26 @@ public class HttpUtils { } } + public static int indexOfIngnoreCase(String str , String subStr){ + String lowerStr = str.toLowerCase(); + String lowerSubStr = subStr.toLowerCase(); + return lowerStr.indexOf(lowerSubStr); + } + + public static boolean endsWithIgnoreCase(String str, String suffix) { + if (str == null || suffix == null) { + return (str == null && suffix == null); + } + if (suffix.length() > str.length()) { + return false; + } + int strOffset = str.length() - suffix.length(); + return str.regionMatches(true, strOffset, suffix, 0, suffix.length()); + } + + public static int lastIndexOfIgnoreCase(String str , String subStr){ + String lowerStr = str.toLowerCase(); + String lowerSubStr = subStr.toLowerCase(); + return lowerStr.lastIndexOf(lowerSubStr); + } }