You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by de...@apache.org on 2007/07/03 13:50:13 UTC

svn commit: r552794 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http: HTTPWorker.java ListingAgent.java

Author: deepal
Date: Tue Jul  3 04:50:12 2007
New Revision: 552794

URL: http://svn.apache.org/viewvc?view=rev&rev=552794
Log:
wsdl import issues , when there are multiple wsdl inside the service now can access them by putting ?wsdl="filename.wsdl"
- There are two TODOs , that Amila need to fix

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java?view=diff&rev=552794&r1=552793&r2=552794
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java Tue Jul  3 04:50:12 2007
@@ -204,6 +204,16 @@
                     }
                 }
             }
+            if (uri.indexOf("?wsdl2=") > 0) {
+                String serviceName =
+                        uri.substring(uri.lastIndexOf("/") + 1, uri.lastIndexOf("?wsdl2="));
+                if (processInternalWSDL(uri, configurationContext, serviceName, response)) return;
+            }
+            if (uri.indexOf("?wsdl=") > 0) {
+                String serviceName =
+                        uri.substring(uri.lastIndexOf("/") + 1, uri.lastIndexOf("?wsdl="));
+                if (processInternalWSDL(uri, configurationContext, serviceName, response)) return;
+            }
 
             String contentType = null;
             Header[] headers = request.getHeaders(HTTPConstants.HEADER_CONTENT_TYPE);
@@ -296,6 +306,41 @@
         } else {
             response.setStatus(HttpStatus.SC_ACCEPTED);
         }
+    }
+
+    private boolean processInternalWSDL(String uri, ConfigurationContext configurationContext, String serviceName, AxisHttpResponse response) throws IOException {
+        String wsdlName = uri.substring(uri.lastIndexOf("=") + 1);
+
+        HashMap services = configurationContext.getAxisConfiguration().getServices();
+        AxisService service = (AxisService) services.get(serviceName);
+        //TODO : Amila pls fix this correctly
+        if (service != null) {
+
+            InputStream instream = service.getClassLoader()
+                    .getResourceAsStream(DeploymentConstants.META_INF + "/" + wsdlName);
+
+            if (instream != null) {
+                response.setStatus(HttpStatus.SC_OK);
+                response.setContentType("text/xml");
+                OutputStream outstream = response.getOutputStream();
+                boolean checkLength = true;
+                int length = Integer.MAX_VALUE;
+                int nextValue = instream.read();
+                if (checkLength) length--;
+                while (-1 != nextValue && length >= 0) {
+                    outstream.write(nextValue);
+                    nextValue = instream.read();
+                    if (checkLength) length--;
+                }
+                outstream.flush();
+                return true;
+            } else {
+                // no schema available by that name  - send 404
+                response.sendError(HttpStatus.SC_NOT_FOUND, "Schema Not Found!");
+                return true;
+            }
+        }
+        return false;
     }
 
     public String getHostAddress(AxisHttpRequest request) throws java.net.SocketException {

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java?view=diff&rev=552794&r1=552793&r2=552794
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java Tue Jul  3 04:50:12 2007
@@ -211,19 +211,45 @@
                 if (wsdl2 >= 0) {
                     OutputStream out = res.getOutputStream();
                     res.setContentType("text/xml");
-                    String ip = extractHostAndPort(filePart, isHttp);
-                    ((AxisService) serviceObj)
-                            .printWSDL2(out);
-                    out.flush();
-                    out.close();
+                    String wsdlName = req.getParameter("wsdl2");
+                    if (!"".equals(wsdlName)) {
+                        InputStream in = ((AxisService) serviceObj).getClassLoader()
+                                .getResourceAsStream(DeploymentConstants.META_INF + "/" + wsdlName);
+                        if (in != null) {
+                            out.write(IOUtils.getStreamAsByteArray(in));
+                            out.flush();
+                            out.close();
+                        } else {
+                            res.sendError(HttpServletResponse.SC_NOT_FOUND);
+                        }
+                    } else {
+                        ((AxisService) serviceObj)
+                                .printWSDL2(out);
+                        out.flush();
+                        out.close();
+                    }
                     return;
                 } else if (wsdl >= 0) {
                     OutputStream out = res.getOutputStream();
                     res.setContentType("text/xml");
                     String ip = extractHostAndPort(filePart, isHttp);
-                    ((AxisService) serviceObj).printWSDL(out, ip);
-                    out.flush();
-                    out.close();
+                    String wsdlName = req.getParameter("wsdl");
+                    //TODO , Amila pls fix this in right way
+                    if (!"".equals(wsdlName)) {
+                        InputStream in = ((AxisService) serviceObj).getClassLoader()
+                                .getResourceAsStream(DeploymentConstants.META_INF + "/" + wsdlName);
+                        if (in != null) {
+                            out.write(IOUtils.getStreamAsByteArray(in));
+                            out.flush();
+                            out.close();
+                        } else {
+                            res.sendError(HttpServletResponse.SC_NOT_FOUND);
+                        }
+                    } else {
+                        ((AxisService) serviceObj).printWSDL(out, ip);
+                        out.flush();
+                        out.close();
+                    }
                     return;
                 } else if (xsd >= 0) {
                     OutputStream out = res.getOutputStream();



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org