Author: hiranya
Date: Sun Jul 14 20:43:58 2013
New Revision: 1503049

URL: http://svn.apache.org/r1503049
Log:
Committing the patch for SYNAPSE-936. Updated the axis2.xml configs and sample 
800 config. Thanks Dushan for the contribution.

Added:
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/api/
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/api/PassThroughNHttpGetProcessor.java
Modified:
    
synapse/trunk/java/modules/integration/src/test/resources/axis2Xml/synapse/axis2_def.xml
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/DefaultHttpGetProcessor.java
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/ProtocolState.java
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/ServerWorker.java
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/SourceHandler.java
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/config/SourceConfiguration.java
    synapse/trunk/java/repository/conf/axis2.xml
    synapse/trunk/java/repository/conf/sample/synapse_sample_800.xml

Modified: 
synapse/trunk/java/modules/integration/src/test/resources/axis2Xml/synapse/axis2_def.xml
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/integration/src/test/resources/axis2Xml/synapse/axis2_def.xml?rev=1503049&r1=1503048&r2=1503049&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/integration/src/test/resources/axis2Xml/synapse/axis2_def.xml
 (original)
+++ 
synapse/trunk/java/modules/integration/src/test/resources/axis2Xml/synapse/axis2_def.xml
 Sun Jul 14 20:43:58 2013
@@ -192,6 +192,7 @@
     <transportReceiver name="http" 
class="org.apache.synapse.transport.passthru.PassThroughHttpListener">
         <parameter name="port">8280</parameter>
         <parameter name="non-blocking">true</parameter>
+        <parameter name="httpGetProcessor" 
locked="false">org.apache.synapse.transport.passthru.api.PassThroughNHttpGetProcessor</parameter>
         <!--parameter name="bind-address" locked="false">hostname or IP 
address</parameter-->
         <!--parameter name="WSDLEPRPrefix" 
locked="false">https://apachehost:port/somepath</parameter-->
     </transportReceiver>
@@ -199,6 +200,7 @@
     <transportReceiver name="https" 
class="org.apache.synapse.transport.passthru.PassThroughHttpSSLListener">
         <parameter name="port" locked="false">8243</parameter>
         <parameter name="non-blocking" locked="false">true</parameter>
+        <parameter name="httpGetProcessor" 
locked="false">org.apache.synapse.transport.passthru.api.PassThroughNHttpGetProcessor</parameter>
         <parameter name="keystore" locked="false">
             <KeyStore>
                 
<Location>modules/integration/src/test/resources/identity.jks</Location>

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/DefaultHttpGetProcessor.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/DefaultHttpGetProcessor.java?rev=1503049&r1=1503048&r2=1503049&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/DefaultHttpGetProcessor.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/DefaultHttpGetProcessor.java
 Sun Jul 14 20:43:58 2013
@@ -118,12 +118,6 @@ public class DefaultHttpGetProcessor imp
             response.setStatusCode(HttpStatus.SC_MOVED_PERMANENTLY);
             response.addHeader(LOCATION, "http://ws.apache.org/favicon.ico";);
             serverHandler.commitResponseHideExceptions(conn, response);
-
-//        } else if (!uri.startsWith(servicePath)) {
-//            response.setStatusCode(HttpStatus.SC_MOVED_PERMANENTLY);
-//            response.addHeader(LOCATION, servicePath + "/");
-//            serverHandler.commitResponseHideExceptions(conn, response);
-
         } else if (serviceName != null && parameters.containsKey("wsdl")) {
             generateWsdl(request, response, msgContext,
                     conn, os, serviceName, parameters, isRestDispatching);

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/ProtocolState.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/ProtocolState.java?rev=1503049&r1=1503048&r2=1503049&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/ProtocolState.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/ProtocolState.java
 Sun Jul 14 20:43:58 2013
@@ -44,5 +44,5 @@ public enum ProtocolState {
     /** The connection is closed */
     CLOSED,
     /** WSDL response has been sent */
-    WSDL_RESPONSE_DONE
+    WSDL_XSD_RESPONSE_DONE
 }

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/ServerWorker.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/ServerWorker.java?rev=1503049&r1=1503048&r2=1503049&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/ServerWorker.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/ServerWorker.java
 Sun Jul 14 20:43:58 2013
@@ -200,7 +200,7 @@ public class ServerWorker implements Run
                SourceContext info = (SourceContext) 
request.getConnection().getContext().
                 getAttribute(SourceContext.CONNECTION_INFORMATION);
                if (info != null &&
-                   info.getState().equals(ProtocolState.WSDL_RESPONSE_DONE) ||
+                   
info.getState().equals(ProtocolState.WSDL_XSD_RESPONSE_DONE) ||
                    
(msgContext.getProperty(PassThroughConstants.WSDL_GEN_HANDLED) != null &&
                     
Boolean.TRUE.equals((msgContext.getProperty(PassThroughConstants.WSDL_GEN_HANDLED)))))
 {
                        return;

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/SourceHandler.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/SourceHandler.java?rev=1503049&r1=1503048&r2=1503049&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/SourceHandler.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/SourceHandler.java
 Sun Jul 14 20:43:58 2013
@@ -83,7 +83,7 @@ public class SourceHandler implements NH
                     System.currentTimeMillis());
                 
             if (!SourceContext.assertState(conn, ProtocolState.REQUEST_READY) 
&&
-                    !SourceContext.assertState(conn, 
ProtocolState.WSDL_RESPONSE_DONE)) {
+                    !SourceContext.assertState(conn, 
ProtocolState.WSDL_XSD_RESPONSE_DONE)) {
                 handleInvalidState(conn, "Request received");
                 return;
             }
@@ -192,7 +192,7 @@ public class SourceHandler implements NH
             ProtocolState protocolState = SourceContext.getState(conn);
             
             //special case to handle WSDLs
-            if(protocolState == ProtocolState.WSDL_RESPONSE_DONE){
+            if(protocolState == ProtocolState.WSDL_XSD_RESPONSE_DONE){
                // we need to shut down if the shutdown flag is set
                 HttpContext context = conn.getContext();
                 ContentOutputBuffer outBuf = (ContentOutputBuffer) 
context.getAttribute(
@@ -433,5 +433,26 @@ public class SourceHandler implements NH
         }
         log.error(errorMessage, e);
     }
+    
+    
+    /**
+     * Commit the response to the connection. Processes the response through 
the configured
+     * HttpProcessor and submits it to be sent out. This method hides any 
exceptions and is targetted
+     * for non critical (i.e. browser requests etc) requests, which are not 
core messages
+     * @param conn the connection being processed
+     * @param response the response to commit over the connection
+     */
+    public void commitResponseHideExceptions(
+            final NHttpServerConnection conn, final HttpResponse response) {
+        try {
+            conn.suspendInput();
+            sourceConfiguration.getHttpProcessor().process(response, 
conn.getContext());
+            conn.submitResponse(response);
+        } catch (HttpException e) {
+            handleException("Unexpected HTTP protocol error : " + 
e.getMessage(), e, conn);
+        } catch (IOException e) {
+            handleException("IO error submiting response : " + e.getMessage(), 
e, conn);
+        }
+    }
 
 }

Added: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/api/PassThroughNHttpGetProcessor.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/api/PassThroughNHttpGetProcessor.java?rev=1503049&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/api/PassThroughNHttpGetProcessor.java
 (added)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/api/PassThroughNHttpGetProcessor.java
 Sun Jul 14 20:43:58 2013
@@ -0,0 +1,470 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.synapse.transport.passthru.api;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.http.HttpRequest;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.apache.http.nio.NHttpServerConnection;
+import org.apache.http.protocol.HTTP;
+import org.apache.synapse.transport.nhttp.NHttpConfiguration;
+import org.apache.synapse.transport.nhttp.NhttpConstants;
+import org.apache.synapse.transport.passthru.HttpGetRequestProcessor;
+import org.apache.synapse.transport.passthru.PassThroughConstants;
+import org.apache.synapse.transport.passthru.ProtocolState;
+import org.apache.synapse.transport.passthru.SourceContext;
+import org.apache.synapse.transport.passthru.SourceHandler;
+import org.apache.ws.commons.schema.XmlSchema;
+
+public class PassThroughNHttpGetProcessor implements HttpGetRequestProcessor {
+
+       private static final Log log = 
LogFactory.getLog(PassThroughNHttpGetProcessor.class);
+
+        
+       private static final String LOCATION = "Location";
+       private static final String CONTENT_TYPE = "Content-Type";
+       private static final String TEXT_HTML = "text/html";
+       private static final String TEXT_XML = "text/xml";
+
+       protected ConfigurationContext cfgCtx;
+
+       protected SourceHandler sourceHandler;
+
+       public void init(ConfigurationContext cfgCtx, SourceHandler handler)
+                       throws AxisFault {
+
+               this.cfgCtx = cfgCtx;
+               this.sourceHandler = handler;
+       }
+
+       public void process(HttpRequest request, HttpResponse response,
+                       MessageContext msgContext, NHttpServerConnection conn,
+                       OutputStream os, boolean isRestDispatching) {
+
+               String uri = request.getRequestLine().getUri();
+               String serviceName = getServiceName(request);
+
+               Map<String, String> parameters = new HashMap<String, String>();
+               int pos = uri.indexOf("?");
+               if (pos != -1) {
+                       msgContext.setTo(new EndpointReference(uri.substring(0, 
pos)));
+                       StringTokenizer st = new 
StringTokenizer(uri.substring(pos + 1),
+                                       "&");
+                       while (st.hasMoreTokens()) {
+                               String param = st.nextToken();
+                               pos = param.indexOf("=");
+                               if (pos != -1) {
+                                       parameters.put(param.substring(0, pos),
+                                                       param.substring(pos + 
1));
+                               } else {
+                                       parameters.put(param, null);
+                               }
+                       }
+               } else {
+                       msgContext.setTo(new EndpointReference(uri));
+               }
+
+               if (isServiceListBlocked(uri)) {
+                       response.setStatusCode(HttpStatus.SC_FORBIDDEN);
+                       sourceHandler.commitResponseHideExceptions(conn, 
response);
+            closeOutputStream(os);
+               } else if (uri.equals("/favicon.ico")) {
+                       response.setStatusCode(HttpStatus.SC_MOVED_PERMANENTLY);
+                       response.addHeader(LOCATION, 
"http://ws.apache.org/favicon.ico";);
+                       sourceHandler.commitResponseHideExceptions(conn, 
response);
+            closeOutputStream(os);
+               } else if (serviceName != null && 
parameters.containsKey("wsdl")) {
+                       generateWsdl(response, msgContext, conn, os, 
serviceName, parameters);
+               } else if (serviceName != null && 
parameters.containsKey("wsdl2")) {
+                       generateWsdl2(response, msgContext, conn, os, 
serviceName);
+               } else if (serviceName != null && 
parameters.containsKey("xsd")) {
+                       generateXsd(response, msgContext, conn, os, 
serviceName, parameters);
+               } else {
+                       
msgContext.setProperty(PassThroughConstants.REST_GET_DELETE_INVOKE, true);
+               }
+       }
+
+       private void closeOutputStream(OutputStream os) {
+               try {
+                       os.flush();
+                       os.close();
+               } catch (IOException ignore) {
+               }
+       }
+
+       /**
+        * Generate WSDL.
+        *
+        * @param response
+        *            HttpResponse
+        * @param msgContext
+        *            MessageContext
+        * @param conn
+        *            NHttpServerConnection
+        * @param os
+        *            OutputStream
+        * @param serviceName
+        *            service name
+        * @param parameters
+        *            parameters
+        */
+       protected void generateWsdl(HttpResponse response,
+                       MessageContext msgContext, NHttpServerConnection conn,
+                       OutputStream os, String serviceName,
+                       Map<String, String> parameters) {
+               AxisService service = 
cfgCtx.getAxisConfiguration().getServices()
+                               .get(serviceName);
+               if (service != null) {
+                       try {
+                               ByteArrayOutputStream baos = new 
ByteArrayOutputStream();
+                               String parameterValue = parameters.get("wsdl");
+                               if (parameterValue == null) {
+                                       service.printWSDL(baos, getIpAddress());
+                               } else {
+                                       // here the parameter value should be 
the wsdl file name
+                                       service.printUserWSDL(baos, 
parameterValue);
+                               }
+                               SourceContext.updateState(conn, 
ProtocolState.WSDL_XSD_RESPONSE_DONE);
+                               response.addHeader(CONTENT_TYPE, TEXT_XML);
+                               
sourceHandler.commitResponseHideExceptions(conn, response);
+                               os.write(baos.toByteArray());
+                               closeOutputStream(os);
+
+                       } catch (Exception e) {
+                               handleBrowserException(response, conn, os,
+                                               "Error generating ?wsdl output 
for service : "
+                                                               + serviceName, 
e);
+                       }
+               } else {
+                       
msgContext.setProperty(PassThroughConstants.REST_GET_DELETE_INVOKE, true);
+               }
+       }
+
+       /**
+        * Generate WSDL2.
+        * 
+        * @param response
+        *            HttpResponse
+        * @param msgContext
+        *            MessageContext
+        * @param conn
+        *            NHttpServerConnection
+        * @param os
+        *            OutputStream
+        * @param serviceName
+        *            service name
+        */
+       protected void generateWsdl2(HttpResponse response,
+                       MessageContext msgContext, NHttpServerConnection conn,
+                       OutputStream os, String serviceName) {
+               AxisService service = 
cfgCtx.getAxisConfiguration().getServices()
+                               .get(serviceName);
+               if (service != null) {
+                       String parameterValue = (String) service
+                                       .getParameterValue("serviceType");
+                       if ("proxy".equals(parameterValue)
+                                       && 
!isWSDLProvidedForProxyService(service)) {
+                               handleBrowserException(response, conn, os,
+                                               "No WSDL was provided for the 
Service " + serviceName
+                                                               + ". A WSDL 
cannot be generated.", null);
+                       }
+                       try {
+                               ByteArrayOutputStream baos = new 
ByteArrayOutputStream();
+                               service.printWSDL2(baos, getIpAddress());
+                               response.addHeader(CONTENT_TYPE, TEXT_XML);
+                               SourceContext.updateState(conn, 
ProtocolState.WSDL_XSD_RESPONSE_DONE);
+                               
sourceHandler.commitResponseHideExceptions(conn, response);
+                               os.write(baos.toByteArray());
+                               closeOutputStream(os);
+
+                       } catch (Exception e) {
+                               handleBrowserException(response, conn, os,
+                                               "Error generating ?wsdl2 output 
for service : "
+                                                               + serviceName, 
e);
+                       }
+               } else {
+                       
msgContext.setProperty(PassThroughConstants.REST_GET_DELETE_INVOKE, true);
+               }
+       }
+
+       /**
+        * Returns the service name.
+        * 
+        * @param request
+        *            HttpRequest
+        * @return service name as a String
+        */
+       protected String getServiceName(HttpRequest request) {
+               String uri = request.getRequestLine().getUri();
+
+               String servicePath = cfgCtx.getServiceContextPath();
+               if (!servicePath.startsWith("/")) {
+                       servicePath = "/" + servicePath;
+               }
+
+               String serviceName = null;
+               if (uri.startsWith(servicePath)) {
+                       serviceName = uri.substring(servicePath.length());
+                       if (serviceName.startsWith("/")) {
+                               serviceName = serviceName.substring(1);
+                       }
+                       if (serviceName.contains("?")) {
+                               serviceName = serviceName
+                                               .substring(0, 
serviceName.indexOf("?"));
+                       }
+               } else {
+                       // this may be a custom URI
+                       String incomingURI = request.getRequestLine().getUri();
+
+                       Map serviceURIMap = (Map) cfgCtx
+                                       
.getProperty(NhttpConstants.EPR_TO_SERVICE_NAME_MAP);
+                       if (serviceURIMap != null) {
+                               Set keySet = serviceURIMap.keySet();
+                               for (Object key : keySet) {
+                                       if (incomingURI.toLowerCase().contains(
+                                                       ((String) 
key).toLowerCase())) {
+                                               return (String) 
serviceURIMap.get(key);
+                                       }
+                               }
+                       }
+               }
+
+               if (serviceName != null) {
+                       int opnStart = serviceName.indexOf("/");
+                       if (opnStart != -1) {
+                               serviceName = serviceName.substring(0, 
opnStart);
+                       }
+               }
+               return serviceName;
+       }
+
+       /**
+        * Generates Schema.
+        *
+        * @param response
+        *            HttpResponse
+        * @param messageCtx
+        *            Current MessageContext
+        * @param conn
+        *            NHttpServerConnection
+        * @param os
+        *            OutputStream
+        * @param serviceName
+        *            service name
+        * @param parameters
+        *            url parameters
+        */
+       protected void generateXsd(HttpResponse response,
+                       MessageContext messageCtx, NHttpServerConnection conn,
+                       OutputStream os, String serviceName,
+                       Map<String, String> parameters) {
+               if (parameters.get("xsd") == null || 
"".equals(parameters.get("xsd"))) {
+                       AxisService service = 
cfgCtx.getAxisConfiguration().getServices()
+                                       .get(serviceName);
+                       if (service != null) {
+                               try {
+                                       ByteArrayOutputStream baos = new 
ByteArrayOutputStream();
+                                       service.printSchema(baos);
+                                       response.addHeader(CONTENT_TYPE, 
TEXT_XML);
+                                       SourceContext.updateState(conn, 
ProtocolState.WSDL_XSD_RESPONSE_DONE);
+                                       
sourceHandler.commitResponseHideExceptions(conn, response);
+                                       os.write(baos.toByteArray());
+                                       closeOutputStream(os);
+
+                               } catch (Exception e) {
+                                       handleBrowserException(response, conn, 
os,
+                                                       "Error generating ?xsd 
output for service : "
+                                                                       + 
serviceName, e);
+                               }
+                       } else {
+                               
messageCtx.setProperty(PassThroughConstants.REST_GET_DELETE_INVOKE,
+                                               true);
+                       }
+
+               } else {
+                       // cater for named XSDs - check for the xsd name
+                       String schemaName = parameters.get("xsd");
+                       AxisService service = 
cfgCtx.getAxisConfiguration().getServices()
+                                       .get(serviceName);
+
+                       if (service != null) {
+                               // run the population logic just to be sure
+                               service.populateSchemaMappings();
+                               // write out the correct schema
+                               Map schemaTable = 
service.getSchemaMappingTable();
+                               XmlSchema schema = (XmlSchema) 
schemaTable.get(schemaName);
+                               if (schema == null) {
+                                       int dotIndex = schemaName.indexOf('.');
+                                       if (dotIndex > 0) {
+                                               String schemaKey = 
schemaName.substring(0, dotIndex);
+                                               schema = (XmlSchema) 
schemaTable.get(schemaKey);
+                                       }
+                               }
+                               // schema found - write it to the stream
+                               if (schema != null) {
+                                       try {
+                                               ByteArrayOutputStream baos = 
new ByteArrayOutputStream();
+                                               schema.write(baos);
+                                               
response.addHeader(CONTENT_TYPE, TEXT_XML);
+                                               
sourceHandler.commitResponseHideExceptions(conn,
+                                                               response);
+                                               os.write(baos.toByteArray());
+                                               closeOutputStream(os);
+                                       } catch (Exception e) {
+                                               
handleBrowserException(response, conn, os,
+                                                               "Error 
generating named ?xsd output for service : "
+                                                                               
+ serviceName, e);
+                                       }
+
+                               } else {
+                                       // no schema available by that name - 
send 404
+                                       
response.setStatusCode(HttpStatus.SC_NOT_FOUND);
+                                       closeOutputStream(os);
+                               }
+                       } else {
+                               
messageCtx.setProperty(PassThroughConstants.REST_GET_DELETE_INVOKE,
+                                               true);
+                       }
+               }
+       }
+
+       
+       /**
+     * Handles browser exception.
+     *
+     * @param response HttpResponse
+     * @param conn     NHttpServerConnection
+     * @param os       OutputStream
+     * @param msg      message
+     * @param e        Exception
+     */
+    protected void handleBrowserException(HttpResponse response,
+                                          NHttpServerConnection conn, 
OutputStream os,
+                                          String msg, Exception e) {
+        if (e == null) {
+            log.error(msg);
+        } else {
+            log.error(msg, e);
+        }
+
+        if (!response.containsHeader(HTTP.TRANSFER_ENCODING)) {
+            response.setStatusCode(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+            response.setReasonPhrase(msg);
+            response.addHeader(CONTENT_TYPE, TEXT_HTML);
+            sourceHandler.commitResponseHideExceptions(conn, response);
+            try {
+                os.write(msg.getBytes());
+                os.close();
+            } catch (IOException ignore) {
+            }
+        }
+
+        if (conn != null) {
+            try {
+                conn.shutdown();
+            } catch (IOException ignore) {
+            }
+        }
+    }
+    
+    
+       /**
+        * Is the incoming URI is requesting service list and
+        * http.block_service_list=true in nhttp.properties
+        * 
+        * @param incomingURI
+        *            incoming URI
+        * @return whether to proceed with incomingURI
+        */
+       protected boolean isServiceListBlocked(String incomingURI) {
+               String isBlocked = NHttpConfiguration.getInstance()
+                               .isServiceListBlocked();
+
+               return (("/services").equals(incomingURI) || ("/services" + "/")
+                               .equals(incomingURI)) && 
Boolean.parseBoolean(isBlocked);
+       }
+       
+       
+    /**
+     * Checks whether a wsdl is provided for a proxy service.
+     *
+     * @param service AxisService
+     * @return whether the wsdl is provided or not
+     */
+    protected 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;
+    }
+
+       
+          /**
+     * Whatever this method returns as the IP is ignored by the actual http/s 
listener when
+     * its getServiceEPR is invoked. This was originally copied from axis2
+     *
+     * @return Returns String.
+     * @throws java.net.SocketException if the socket can not be accessed
+     */
+    protected static String getIpAddress() throws SocketException {
+        Enumeration e = NetworkInterface.getNetworkInterfaces();
+        String address = "127.0.0.1";
+
+        while (e.hasMoreElements()) {
+            NetworkInterface netface = (NetworkInterface) e.nextElement();
+            Enumeration addresses = netface.getInetAddresses();
+
+            while (addresses.hasMoreElements()) {
+                InetAddress ip = (InetAddress) addresses.nextElement();
+                if (!ip.isLoopbackAddress() && isIP(ip.getHostAddress())) {
+                    return ip.getHostAddress();
+                }
+            }
+        }
+        return address;
+    }
+    
+    protected static boolean isIP(String hostAddress) {
+        return hostAddress.split("[.]").length == 4;
+    }
+
+}

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/config/SourceConfiguration.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/config/SourceConfiguration.java?rev=1503049&r1=1503048&r2=1503049&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/config/SourceConfiguration.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/passthru/config/SourceConfiguration.java
 Sun Jul 14 20:43:58 2013
@@ -33,7 +33,6 @@ import org.apache.http.impl.DefaultHttpR
 import org.apache.axis2.transport.base.threads.WorkerPool;
 import org.apache.axis2.transport.base.ParamUtils;
 import org.apache.axis2.AxisFault;
-import org.apache.synapse.transport.nhttp.DefaultHttpGetProcessor;
 
 import org.apache.synapse.transport.nhttp.NhttpConstants;
 import org.apache.synapse.transport.passthru.HttpGetRequestProcessor;

Modified: synapse/trunk/java/repository/conf/axis2.xml
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/axis2.xml?rev=1503049&r1=1503048&r2=1503049&view=diff
==============================================================================
--- synapse/trunk/java/repository/conf/axis2.xml (original)
+++ synapse/trunk/java/repository/conf/axis2.xml Sun Jul 14 20:43:58 2013
@@ -189,6 +189,7 @@
     <transportReceiver name="http" 
class="org.apache.synapse.transport.passthru.PassThroughHttpListener">
         <parameter name="port">8280</parameter>
         <parameter name="non-blocking">true</parameter>
+           <parameter name="httpGetProcessor" 
locked="false">org.apache.synapse.transport.passthru.api.PassThroughNHttpGetProcessor</parameter>
         <!--parameter name="bind-address" locked="false">hostname or IP 
address</parameter-->
         <!--parameter name="WSDLEPRPrefix" 
locked="false">https://apachehost:port/somepath</parameter-->
         <!-- paramter name="priorityConfigFile" locked="false">location of 
priority configuration file<parameter-->
@@ -197,9 +198,11 @@
     <!-- the non blocking https transport based on HttpCore + SSL-NIO 
extensions -->
     <transportReceiver name="https" 
class="org.apache.synapse.transport.passthru.PassThroughHttpSSLListener">
         <parameter name="port" locked="false">8243</parameter>
+        <parameter name="non-blocking" locked="false">true</parameter>
+        <parameter name="httpGetProcessor" 
locked="false">org.apache.synapse.transport.passthru.api.PassThroughNHttpGetProcessor</parameter>
         <!--parameter name="bind-address" locked="false">hostname or IP 
address</parameter-->
         <!--parameter name="WSDLEPRPrefix" 
locked="false">http://apachehost:port/somepath</parameter-->
-        <parameter name="non-blocking" locked="false">true</parameter>
+
         <parameter name="keystore" locked="false">
             <KeyStore>
                 <Location>lib/identity.jks</Location>
@@ -585,4 +588,4 @@
         <phase name="MessageOut"/>
         <phase name="Security"/>
     </phaseOrder>
-</axisconfig>
\ No newline at end of file
+</axisconfig>

Modified: synapse/trunk/java/repository/conf/sample/synapse_sample_800.xml
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_800.xml?rev=1503049&r1=1503048&r2=1503049&view=diff
==============================================================================
--- synapse/trunk/java/repository/conf/sample/synapse_sample_800.xml (original)
+++ synapse/trunk/java/repository/conf/sample/synapse_sample_800.xml Sun Jul 14 
20:43:58 2013
@@ -14,6 +14,7 @@
                         <arg expression="get-property('uri.var.symbol')"/>
                     </args>
                 </payloadFactory>
+                <header name="Action" value="urn:getQuote"/>
                 <send>
                     <endpoint>
                         <address 
uri="http://localhost:9000/services/SimpleStockQuoteService"; format="soap11"/>
@@ -28,6 +29,7 @@
             <inSequence>
                 <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
                 <property name="OUT_ONLY" value="true"/>
+                <header name="Action" value="urn:placeOrder"/>
                 <send>
                     <endpoint>
                         <address 
uri="http://localhost:9000/services/SimpleStockQuoteService"; format="soap11"/>


Reply via email to