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]