Author: pzf
Date: Tue Nov 21 08:28:04 2006
New Revision: 477734

URL: http://svn.apache.org/viewvc?view=rev&rev=477734
Log:
added changes to endpoint definition

Modified:
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Constants.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/Endpoint.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/EndpointFactory.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/EndpointSerializer.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/SendMediator.java

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Constants.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Constants.java?view=diff&rev=477734&r1=477733&r2=477734
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Constants.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Constants.java
 Tue Nov 21 08:28:04 2006
@@ -29,6 +29,8 @@
     /** The Synapse namespace */
     public static final String SYNAPSE_NAMESPACE = 
"http://ws.apache.org/ns/synapse";;
 
+       
+
     // -- keys related to Axis2 configuration and Synapse initialization --
     /** The key name used to store the Synapse configuration into the Axis2 
config */
     String SYNAPSE_CONFIG = "synapse.config";
@@ -72,6 +74,9 @@
     /** The message context property name which holds the Security 'Policy' 
object for outgoing messages */
     String OUTFLOW_SEC_POLICY = "OUTFLOW_SEC_POLICY";
 
+    /** If message context property contains Boolean.TRUE then Axis2 will send 
this with a separate listener engaged **/
+    public static final String OUTFLOW_USE_SEPARATE_LISTENER = 
"OUTFLOW_USE_SEPARATE_LISTENER";
+    
     /** The message context property name which holds the error code for the 
last encountered exception */
     String ERROR_CODE = "ERROR_CODE";
 

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/Endpoint.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/Endpoint.java?view=diff&rev=477734&r1=477733&r2=477734
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/Endpoint.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/Endpoint.java
 Tue Nov 21 08:28:04 2006
@@ -46,6 +46,14 @@
     private String wsRMPolicyKey = null;
     /** The "key" for any Rampart Security Policy to be used */
     private String wsSecPolicyKey = null;
+    /** use a separate listener - implies addressing is on **/
+       private boolean useSeparateListener = false;
+       /** force REST on **/
+       private boolean forceREST = false;
+       /** force SOAP on **/
+       private boolean forceSOAP = false;
+       
+       
 
     /**
      * Return the name of the endpoint
@@ -174,4 +182,27 @@
     public void setWsRMPolicyKey(String wsRMPolicyKey) {
         this.wsRMPolicyKey = wsRMPolicyKey;
     }
+
+       public void setUseSeparateListener(boolean b) {
+               this.useSeparateListener = b;   
+       }
+       public boolean isUseSeparateListener() {
+               return useSeparateListener;
+       }
+
+       public void setForceREST(boolean forceREST) {
+               this.forceREST = forceREST;
+       }
+
+       public boolean isForceREST() {
+               return forceREST;
+       }
+
+       public void setForceSOAP(boolean forceSOAP) {
+               this.forceSOAP = forceSOAP;
+       }
+
+       public boolean isForceSOAP() {
+               return forceSOAP;
+       }
 }

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/EndpointFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/EndpointFactory.java?view=diff&rev=477734&r1=477733&r2=477734
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/EndpointFactory.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/EndpointFactory.java
 Tue Nov 21 08:28:04 2006
@@ -29,110 +29,135 @@
 import org.apache.synapse.config.XMLToObjectMapper;
 
 import javax.xml.namespace.QName;
-import java.net.MalformedURLException;
-
 
 /**
  * Creates an Endpoint instance using the XML fragment specification
- *
+ * 
  * <endpoint name="string" address="url">
- *
- *    .. extensibility ..
- *
- *    <enableRM [policy="key"]/>+
- *    <enableSec [policy="key"]/>+
- *    <enableAddressing/>+
- *
+ *  .. extensibility ..
+ * 
+ * <enableRM [policy="key"]/>+ <enableSec [policy="key"]/>+ <enableAddressing
+ * separateListener="true|false"/>+
+ * 
  * </endpoint>
  */
 public class EndpointFactory implements XMLToObjectMapper {
 
-    private static Log log = LogFactory.getLog(EndpointFactory.class);
-
-    private static final EndpointFactory instance = new EndpointFactory();
-
-    private EndpointFactory() {}
+       private static Log log = LogFactory.getLog(EndpointFactory.class);
 
-    public static Endpoint createEndpoint(OMElement elem, boolean 
anonymousEndpoint) {
+       private static final EndpointFactory instance = new EndpointFactory();
 
+       private EndpointFactory() {
+       }
 
-        OMAttribute name = elem.getAttribute(new 
QName(Constants.NULL_NAMESPACE, "name"));
-        OMAttribute address = elem.getAttribute(new 
QName(Constants.NULL_NAMESPACE, "address"));
-            Endpoint endpoint = new Endpoint();
-            if(!anonymousEndpoint) {
-                if (name == null) {
-                    handleException("The 'name' attribute is required for a 
named endpoint definition");
-                } else {
-                    endpoint.setName(name.getAttributeValue());
-                }
-                if (address != null) {
-                endpoint.setAddress(address.getAttributeValue());
-                } else {
-                    // right now an address is *required*
-                    handleException("The 'address' attribute is required for 
an endpoint");
-                }
-            } else {
-                OMAttribute reference = elem.getAttribute(new 
QName(Constants.NULL_NAMESPACE, "ref"));
-                if(reference != null) {
-                    endpoint.setRef(reference.getAttributeValue());
-                } else if (address != null) {
-                    endpoint.setAddress(address.getAttributeValue());
-                } else {
-                    handleException("One of the 'address' or 'ref' attributes 
are required in an " +
-                            "anonymous endpoint");
-                }
-            }
-
-            OMElement wsAddr = elem.getFirstChildWithName(
-                new QName(Constants.SYNAPSE_NAMESPACE, "enableAddressing"));
-            if (wsAddr != null) {
-                endpoint.setAddressingOn(true);
-            }
-            OMElement wsSec = elem.getFirstChildWithName(
-                new QName(Constants.SYNAPSE_NAMESPACE, "enableSec"));
-            if (wsSec != null) {
-                endpoint.setSecurityOn(true);
-                OMAttribute policy = wsSec.getAttribute(
-                    new QName(Constants.NULL_NAMESPACE, "policy"));
-                if (policy != null) {
-                    endpoint.setWsSecPolicyKey(policy.getAttributeValue());
-                }
-            }
-            OMElement wsRm = elem.getFirstChildWithName(
-                new QName(Constants.SYNAPSE_NAMESPACE, "enableRM"));
-            if (wsRm != null) {
-                endpoint.setReliableMessagingOn(true);
-                OMAttribute policy = wsRm.getAttribute(
-                    new QName(Constants.NULL_NAMESPACE, "policy"));
-                if (policy != null) {
-                    endpoint.setWsRMPolicyKey(policy.getAttributeValue());
-                }
-            }
-
-            return endpoint;
-//        }
-    }
-
-    private static void handleException(String msg) {
-        log.error(msg);
-        throw new SynapseException(msg);
-    }
-
-    private static void handleException(String msg, Exception e) {
-        log.error(msg, e);
-        throw new SynapseException(msg, e);
-    }
-
-    public Object getObjectFromOMNode(OMNode om) {
-        if (om instanceof OMElement) {
-            return createEndpoint((OMElement) om, false);
-        } else {
-            handleException("Invalid XML configuration for an Endpoint. 
OMElement expected");
-        }
-        return null;
-    }
-
-    public static EndpointFactory getInstance() {
-        return instance;
-    }
+       public static Endpoint createEndpoint(OMElement elem,
+                       boolean anonymousEndpoint) {
+
+               OMAttribute name = elem.getAttribute(new QName(
+                               Constants.NULL_NAMESPACE, "name"));
+               OMAttribute address = elem.getAttribute(new QName(
+                               Constants.NULL_NAMESPACE, "address"));
+                OMAttribute force = elem.getAttribute(new QName(
+                                       Constants.NULL_NAMESPACE, "force"));
+               
+               Endpoint endpoint = new Endpoint();
+               if (!anonymousEndpoint) {
+                       if (name == null) {
+                               handleException("The 'name' attribute is 
required for a named endpoint definition");
+                       } else {
+                               endpoint.setName(name.getAttributeValue());
+                       }
+                       if (address != null) {
+                               
endpoint.setAddress(address.getAttributeValue());
+                       } else {
+                               // right now an address is *required*
+                               handleException("The 'address' attribute is 
required for an endpoint");
+                       }
+               } else {
+                       OMAttribute reference = elem.getAttribute(new QName(
+                                       Constants.NULL_NAMESPACE, "ref"));
+                       if (reference != null) {
+                               endpoint.setRef(reference.getAttributeValue());
+                       } else if (address != null) {
+                               
endpoint.setAddress(address.getAttributeValue());
+                       } else {
+                               handleException("One of the 'address' or 'ref' 
attributes are required in an "
+                                               + "anonymous endpoint");
+                       }
+               }
+               
+               
+               if (force!=null) 
+               {
+                       String forceValue = 
force.getAttributeValue().trim().toLowerCase();
+                       if (forceValue.equals("rest")) {
+                               endpoint.setForceREST(true);
+                       } else if (forceValue.equals("soap")) {
+                               endpoint.setForceSOAP(true);
+                       } else {
+                               handleException("force value 
-\""+forceValue+"\" not yet implemented");
+                       }
+               }
+
+               OMElement wsAddr = elem.getFirstChildWithName(new QName(
+                               Constants.SYNAPSE_NAMESPACE, 
"enableAddressing"));
+               if (wsAddr != null) {
+                       endpoint.setAddressingOn(true);
+                       String useSepList = wsAddr.getAttributeValue(new QName(
+                                       "separateListener"));
+                       if (useSepList != null) {
+                               if 
(useSepList.trim().toLowerCase().startsWith("tr")
+                                               || 
useSepList.trim().startsWith("1")) {
+                                       endpoint.setUseSeparateListener(true);
+                               }
+                       }
+               }
+
+               OMElement wsSec = elem.getFirstChildWithName(new QName(
+                               Constants.SYNAPSE_NAMESPACE, "enableSec"));
+               if (wsSec != null) {
+                       endpoint.setSecurityOn(true);
+                       OMAttribute policy = wsSec.getAttribute(new QName(
+                                       Constants.NULL_NAMESPACE, "policy"));
+                       if (policy != null) {
+                               
endpoint.setWsSecPolicyKey(policy.getAttributeValue());
+                       }
+               }
+               OMElement wsRm = elem.getFirstChildWithName(new QName(
+                               Constants.SYNAPSE_NAMESPACE, "enableRM"));
+               if (wsRm != null) {
+                       endpoint.setReliableMessagingOn(true);
+                       OMAttribute policy = wsRm.getAttribute(new QName(
+                                       Constants.NULL_NAMESPACE, "policy"));
+                       if (policy != null) {
+                               
endpoint.setWsRMPolicyKey(policy.getAttributeValue());
+                       }
+               }
+
+               return endpoint;
+               // }
+       }
+
+       private static void handleException(String msg) {
+               log.error(msg);
+               throw new SynapseException(msg);
+       }
+
+       private static void handleException(String msg, Exception e) {
+               log.error(msg, e);
+               throw new SynapseException(msg, e);
+       }
+
+       public Object getObjectFromOMNode(OMNode om) {
+               if (om instanceof OMElement) {
+                       return createEndpoint((OMElement) om, false);
+               } else {
+                       handleException("Invalid XML configuration for an 
Endpoint. OMElement expected");
+               }
+               return null;
+       }
+
+       public static EndpointFactory getInstance() {
+               return instance;
+       }
 }

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/EndpointSerializer.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/EndpointSerializer.java?view=diff&rev=477734&r1=477733&r2=477734
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/EndpointSerializer.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/EndpointSerializer.java
 Tue Nov 21 08:28:04 2006
@@ -68,6 +68,11 @@
                 "ref", nullNS, endpt.getRef()));
             
         } else {
+               if (endpt.isForceREST()) {
+                       endpoint.addAttribute(fac.createOMAttribute("force", 
nullNS, "rest"));
+               } else if (endpt.isForceSOAP()) {
+                       endpoint.addAttribute(fac.createOMAttribute("force", 
nullNS, "soap"));
+               }
 
             endpoint.addAttribute(fac.createOMAttribute(
                     "name", nullNS, endpt.getName()));
@@ -79,7 +84,12 @@
             }
 
             if (endpt.isAddressingOn()) {
-                endpoint.addChild(fac.createOMElement("enableAddressing", 
synNS));
+               OMElement addressing = fac.createOMElement("enableAddressing", 
synNS);
+               if (endpt.isUseSeparateListener()) {
+                       addressing.addAttribute(fac.createOMAttribute(
+                            "separateListener", nullNS, "true"));
+               }
+                endpoint.addChild(addressing);
             }
 
             if (endpt.isReliableMessagingOn()) {

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java?view=diff&rev=477734&r1=477733&r2=477734
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
 Tue Nov 21 08:28:04 2006
@@ -72,8 +72,11 @@
         String wsSecPolicyKey,
         boolean wsRMEnabled,
         String wsRMPolicyKey,
+        boolean separateListener,
         org.apache.synapse.MessageContext synapseOutMessageContext) throws 
AxisFault {
 
+       log.debug("sending [add = "+wsAddressingEnabled+"] [sec = 
"+wsSecurityEnabled + "] [ rm = "+wsRMEnabled+"] [ to 
"+synapseOutMessageContext.getTo()+"]");
+       
         MessageContext axisOutMsgCtx =
             ((Axis2MessageContext) 
synapseOutMessageContext).getAxis2MessageContext();
 
@@ -110,7 +113,7 @@
             new QName(AnonymousServiceFactory.DYNAMIC_OPERATION));
 
         Options clientOptions = new Options();
-
+        clientOptions.setUseSeparateListener(separateListener);
         // if RM is requested,
         if (wsRMEnabled) {
             // if a WS-RM policy is specified, use it
@@ -119,10 +122,10 @@
                     org.apache.synapse.config.xml.Constants.SANDESHA_POLICY,
                     getPolicy(synapseOutMessageContext, wsRMPolicyKey));
             }
-            clientOptions.setUseSeparateListener(true);
+
 
             // always send each and every message in a new sequence and 
terminate sequence
-            clientOptions.setProperty("Sandesha2LastMessage", "true");
+            //clientOptions.setProperty("Sandesha2LastMessage", "true");
         }
 
         // if security is enabled,

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java?view=diff&rev=477734&r1=477733&r2=477734
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
 Tue Nov 21 08:28:04 2006
@@ -48,6 +48,8 @@
                 Constants.OUTFLOW_RM_ON);
             Boolean wsSecOn = (Boolean) synapseInMessageContext.getProperty(
                 Constants.OUTFLOW_SECURITY_ON);
+            Boolean separateListener = (Boolean) 
synapseInMessageContext.getProperty(
+                    Constants.OUTFLOW_USE_SEPARATE_LISTENER);
 
             MessageContext axisOutMsgContext =
                 Axis2FlexibleMEPClient.send(
@@ -68,6 +70,9 @@
                     (String) synapseInMessageContext.getProperty(
                         Constants.OUTFLOW_RM_POLICY),
 
+                    // use a separate listener
+                    (separateListener != null && 
separateListener.booleanValue()),
+                    
                     // The Axis2 Message context of the Synapse MC
                     synapseInMessageContext);
 

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java?view=diff&rev=477734&r1=477733&r2=477734
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
 Tue Nov 21 08:28:04 2006
@@ -88,6 +88,7 @@
                         endpoint.getWsSecPolicyKey(),
                         endpoint.isReliableMessagingOn(),
                         endpoint.getWsRMPolicyKey(),
+                        endpoint.isUseSeparateListener(),
                         synCtx);
 
                 axisOutMsgContext.setServerSide(true);

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/SendMediator.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/SendMediator.java?view=diff&rev=477734&r1=477733&r2=477734
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/SendMediator.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/SendMediator.java
 Tue Nov 21 08:28:04 2006
@@ -59,7 +59,7 @@
         // TODO this may be really strange but true.. unless you call the 
below, sometimes it
         // results in an unbound URI exception for no credible reason - needs 
more investigation
         // seems like a woodstox issue. Use hack for now
-        synCtx.getEnvelope().build();
+        // synCtx.getEnvelope().build();
 
         // if no endpoints are defined, send where implicitly stated
         if (endpoints.isEmpty()) {
@@ -82,6 +82,16 @@
                 eprAddress = singleEndpoint.getAddress().toString();
             }
 
+            if (singleEndpoint.isForceREST()) {
+               synCtx.setDoingREST(true);
+            } else if (singleEndpoint.isForceSOAP()) {
+               synCtx.setDoingREST(false);
+            }
+            if (singleEndpoint.isUseSeparateListener()) 
+            {
+               synCtx.setProperty(Constants.OUTFLOW_USE_SEPARATE_LISTENER, 
Boolean.TRUE);
+            }
+            
             log.debug("Sending message to endpoint :: name = " +
                 singleEndpoint.getName() + " resolved address = " + 
eprAddress);
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to