Author: ruwan
Date: Wed Mar 4 15:59:39 2009
New Revision: 750057
URL: http://svn.apache.org/viewvc?rev=750057&view=rev
Log:
Fixing the SYNAPSE-511, if the proxy has no WSDL specified we cannot show WSDL
to clients
Modified:
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
Modified:
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java?rev=750057&r1=750056&r2=750057&view=diff
==============================================================================
---
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
(original)
+++
synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/nhttp/ServerWorker.java
Wed Mar 4 15:59:39 2009
@@ -32,19 +32,20 @@
import org.apache.axis2.transport.http.HTTPTransportReceiver;
import org.apache.axis2.transport.http.HTTPTransportUtils;
import org.apache.axis2.util.MessageContextBuilder;
+import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.*;
import org.apache.http.nio.NHttpServerConnection;
import org.apache.http.protocol.HTTP;
-import org.apache.synapse.transport.nhttp.util.RESTUtil;
import org.apache.synapse.transport.nhttp.util.NhttpUtil;
+import org.apache.synapse.transport.nhttp.util.RESTUtil;
import org.apache.ws.commons.schema.XmlSchema;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.io.ByteArrayOutputStream;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
@@ -381,6 +382,12 @@
AxisService service = (AxisService) cfgCtx.getAxisConfiguration().
getServices().get(serviceName);
if (service != null) {
+ String parameterValue = (String)
service.getParameterValue("serviceType");
+ if ("proxy".equals(parameterValue) &&
!isWSDLProvidedForProxyService(service)) {
+ handleBrowserException("No WSDL was provided for the
Service " + serviceName +
+ ". A WSDL cannot be generated.", null);
+ return;
+ }
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
service.printWSDL2(baos, getIpAddress());
@@ -459,6 +466,12 @@
AxisService service = (AxisService) cfgCtx.getAxisConfiguration().
getServices().get(serviceName);
if (service != null) {
+ String parameterValue = (String)
service.getParameterValue("serviceType");
+ if ("proxy".equals(parameterValue) &&
!isWSDLProvidedForProxyService(service)) {
+ handleBrowserException("No WSDL was provided for the
Service " + serviceName +
+ ". A WSDL cannot be generated.", null);
+ return;
+ }
try {
byte[] bytes =
HTTPTransportReceiver.printServiceHTML(serviceName,
cfgCtx).getBytes();
@@ -534,7 +547,7 @@
os.close();
} catch (IOException ignore) {}
}
-
+
if (conn != null) {
try {
conn.shutdown();
@@ -579,6 +592,14 @@
}
}
+ private boolean isWSDLProvidedForProxyService(AxisService service) {
+ boolean isWSDLProvided = false;
+ if (service.getParameterValue(WSDLConstants.WSDL_4_J_DEFINITION) !=
null ||
+ service.getParameterValue(WSDLConstants.WSDL_20_DESCRIPTION)
!= null) {
+ isWSDLProvided = true;
+ }
+ return isWSDLProvided;
+ }
public HttpResponse getResponse() {
return response;