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