Author: mlovett
Date: Mon Jan 15 08:23:40 2007
New Revision: 496387

URL: http://svn.apache.org/viewvc?view=rev&rev=496387
Log:
Add module.xml properties to control MakeConnection support

Modified:
    webservices/sandesha/trunk/java/config/module.xml
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java

Modified: webservices/sandesha/trunk/java/config/module.xml
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/config/module.xml?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- webservices/sandesha/trunk/java/config/module.xml (original)
+++ webservices/sandesha/trunk/java/config/module.xml Mon Jan 15 08:23:40 2007
@@ -110,6 +110,12 @@
              
              <!-- This will not be overriden by service level policies -->
                                
<sandesha2:SecurityManager>org.apache.sandesha2.security.dummy.DummySecurityManager</sandesha2:SecurityManager>
+                               
+                               <sandesha2:MakeConnection>
+                                 <sandesha2:Enabled>true</sandesha2:Enabled>
+                                 
<sandesha2:UseRMAnonURI>true</sandesha2:UseRMAnonURI>
+                               </sandesha2:MakeConnection>
+                               
                        </wsp:Policy>
                </sandesha2:RMAssertion>
        </wsp:Policy>

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 Mon Jan 15 08:23:40 2007
@@ -346,6 +346,10 @@
                String RetransmissionCount = "RetransmissionCount";
 
                String SecurityManager = "SecurityManager";
+
+               String EnableMakeConnection = "EnableMakeConnection";
+               
+               String EnableRMAnonURI = "EnableRMAnonURI";
                
                public interface DefaultValues {
                        
@@ -374,6 +378,10 @@
                        int MaximumRetransmissionCount = 10;
                        
                        String SecurityManager = 
"org.apache.sandesha2.security.dummy.DummySecurityManager";
+
+                       boolean EnableMakeConnection = true;
+                       
+                       boolean EnableRMAnonURI = true;
                }
        }
        
@@ -463,6 +471,8 @@
        
        static final String RETRANSMITTABLE_PHASES = "RMRetransmittablePhases";
        
+       static final String RM_ANON_UUID = "RMAnonymousUUID";
+       
        static final String propertiesToCopyFromReferenceMessage = 
"propertiesToCopyFromReferenceMessage";
        
        static final String propertiesToCopyFromReferenceRequestMessage = 
"propertiesToCopyFromReferenceRequestMessage";
@@ -502,6 +512,9 @@
         public static final String ELEM_SEC_MGR = "SecurityManager";
         public static final String ELEM_INMEMORY_STORAGE_MGR = 
"InMemoryStorageManager";
         public static final String ELEM_PERMANENT_STORAGE_MGR = 
"PermanentStorageManager";
+        public static final String ELEM_MAKE_CONNECTION = "MakeConnection";
+        public static final String ELEM_ENABLED = "Enabled";
+        public static final String ELEM_USE_RM_ANON_URI = "UseRMAnonURI";
         
         public static final QName Q_ELEM_POLICY = new QName(URI_POLICY_NS, 
ELEM_POLICY, ATTR_WSP);
         public static final QName Q_ELEM_RMASSERTION = new 
QName(URI_RM_POLICY_NS, ELEM_RMASSERTION, ATTR_WSRM);
@@ -518,5 +531,8 @@
         public static final QName Q_ELEM_SEC_MGR = new QName(URI_RM_POLICY_NS, 
ELEM_SEC_MGR, ATTR_WSRM);
         public static final QName Q_ELEM_INMEMORY_STORAGE_MGR =new 
QName(URI_RM_POLICY_NS, ELEM_INMEMORY_STORAGE_MGR, ATTR_WSRM);
         public static final QName Q_ELEM_PERMANENT_STORAGE_MGR =new 
QName(URI_RM_POLICY_NS, ELEM_PERMANENT_STORAGE_MGR, ATTR_WSRM);
+        public static final QName Q_ELEM_MAKE_CONNECTION = new 
QName(URI_RM_POLICY_NS, ELEM_MAKE_CONNECTION, ATTR_WSRM);
+        public static final QName Q_ELEM_ENABLED = new QName(URI_RM_POLICY_NS, 
ELEM_ENABLED, ATTR_WSRM);
+        public static final QName Q_ELEM_USE_RM_ANON_URI = new 
QName(URI_RM_POLICY_NS, ELEM_USE_RM_ANON_URI, ATTR_WSRM);
     }
 }

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
 Mon Jan 15 08:23:40 2007
@@ -18,9 +18,12 @@
 package org.apache.sandesha2.handlers;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContextFactory;
+import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.Parameter;
 import org.apache.axis2.handlers.AbstractHandler;
@@ -28,6 +31,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.sandesha2.RMMsgContext;
 import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
 import org.apache.sandesha2.client.SandeshaClientConstants;
 import org.apache.sandesha2.i18n.SandeshaMessageHelper;
 import org.apache.sandesha2.i18n.SandeshaMessageKeys;
@@ -35,6 +39,7 @@
 import org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor;
 import org.apache.sandesha2.msgprocessors.MsgProcessor;
 import org.apache.sandesha2.msgprocessors.MsgProcessorFactory;
+import org.apache.sandesha2.policy.SandeshaPolicyBean;
 import org.apache.sandesha2.storage.StorageManager;
 import org.apache.sandesha2.storage.Transaction;
 import org.apache.sandesha2.util.MsgInitializer;
@@ -118,6 +123,13 @@
                try {
                        transaction = storageManager.getTransaction();
                        
+                       // Re-write the WS-A anonymous URI, if we support the 
RM anonymous URI
+                       SandeshaPolicyBean policy = 
SandeshaUtil.getPropertyBean(context.getAxisConfiguration());
+                       if(policy.isEnableRMAnonURI()) {
+                               EndpointReference replyTo = 
rewriteEPR(msgCtx.getReplyTo(), msgCtx);
+                               msgCtx.setReplyTo(replyTo);
+                       }
+                       
                        // getting rm message
                        RMMsgContext rmMsgCtx = 
MsgInitializer.initializeMessage(msgCtx);
 
@@ -192,5 +204,44 @@
 
        public String getName() {
                return Sandesha2Constants.OUT_HANDLER_NAME;
+       }
+       
+       public EndpointReference rewriteEPR(EndpointReference epr, 
MessageContext mc)
+       throws SandeshaException
+       {
+               if (log.isDebugEnabled())
+                       log.debug("Exit: SandeshaOutHandler::rewriteEPR " + 
epr);
+
+               // Handle EPRs that have not yet been set. These are 
effectively WS-A anon, and therefore
+               // we can rewrite them.
+               if(epr == null) epr = new EndpointReference(null);
+               
+               String address = epr.getAddress();
+               if(address == null ||
+                  AddressingConstants.Final.WSA_ANONYMOUS_URL.equals(address) 
||
+                  
AddressingConstants.Submission.WSA_ANONYMOUS_URL.equals(address)) {
+                       // We use the service context to co-ordinate the RM 
anon uuid, so that several
+                       // invocations of the same target will yield stable 
replyTo addresses.
+                       String uuid = null;
+                       ServiceContext sc = mc.getServiceContext();
+                       if(sc == null) {
+                               String msg = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.serviceContextNotSet);
+                               throw new SandeshaException(msg);
+                       }
+                       synchronized (sc) {
+                               uuid = (String) 
sc.getProperty(Sandesha2Constants.RM_ANON_UUID);
+                               if(uuid == null) {
+                                       uuid = SandeshaUtil.getUUID();
+                                       
sc.setProperty(Sandesha2Constants.RM_ANON_UUID, uuid);
+                               }
+                       }
+                       
+                       if(log.isDebugEnabled()) log.debug("Rewriting EPR with 
UUID " + uuid);
+                       
epr.setAddress(Sandesha2Constants.SPEC_2006_08.ANONYMOUS_URI_PREFIX + uuid);
+               }
+               
+               if (log.isDebugEnabled())
+                       log.debug("Exit: SandeshaOutHandler::rewriteEPR " + 
epr);
+               return epr;
        }
 }

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 Mon Jan 15 08:23:40 2007
@@ -163,6 +163,7 @@
        public static final String acksToStrNotSet="acksToStrNotSet";
        public static final String invalidSequenceID="invalidsequenceID";
        public static final String 
cantSendMakeConnectionNoTransportOut="cantSendMakeConnectionNoTransportOut";
+       public static final String 
makeConnectionDisabled="makeConnectionDisabled";
        
        public static final String noCreateSeqResponse="noCreateSeqResponse";
        public static final String noTerminateSeqPart="noTerminateSeqPart";

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
 Mon Jan 15 08:23:40 2007
@@ -172,6 +172,7 @@
 acksToStrNotSet=acksToStr Seqeunce property is not set correctly
 invalidSequenceID=invalid sequence ID: {0}
 cantSendMakeConnectionNoTransportOut=Can''t send the MakeConnection reply 
since the message does not has a TransportOutDescription
+makeConnectionDisabled=Cannot handle synchronous 2-way connections because 
MakeConnection is not enabled. Either enable MakeConnection or reconfigure your 
application to use asynchronous connections.
 
 noCreateSeqResponse=''CreateSequenceResponse'' part is not available.
 noTerminateSeqPart=''Terminate Sequence'' part is not available.

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java
 Mon Jan 15 08:23:40 2007
@@ -59,6 +59,10 @@
     private boolean exponentialBackoff;
 
     private int maximumRetransmissionCount;
+    
+    private boolean enableMakeConnection;
+    
+    private boolean enableRMAnonURI;
 
     public void setInactiveTimeoutInterval(long value, String measure) {
         long timeOut = -1;
@@ -250,6 +254,22 @@
         writer.writeCharacters(getSecurityManagerClass());
         writer.writeEndElement();
         
+        // <wsrm:MakeConnection>
+        writer.writeStartElement(prefix, 
Sandesha2Constants.Assertions.Q_ELEM_MAKE_CONNECTION.getLocalPart(), 
namespaceURI);
+        
+        // <wsrm:Enabled />
+        writer.writeStartElement(prefix, 
Sandesha2Constants.Assertions.Q_ELEM_ENABLED.getLocalPart(), namespaceURI);
+        writer.writeCharacters(Boolean.toString(isEnableMakeConnection()));
+        writer.writeEndElement();
+        
+        // <wsrm:UseRMAnonURI />
+        writer.writeStartElement(prefix, 
Sandesha2Constants.Assertions.Q_ELEM_USE_RM_ANON_URI.getLocalPart(), 
namespaceURI);
+        writer.writeCharacters(Boolean.toString(isEnableRMAnonURI()));
+        writer.writeEndElement();
+        
+        // </wsrm:MakeConnection>
+        writer.writeEndElement();
+        
         // </wsp:Policy>
         writer.writeEndElement();
 
@@ -298,7 +318,23 @@
         this.inactivityTimeoutMeasure = inactivityTimeoutMeasure;
     }
 
-    public boolean equal(PolicyComponent policyComponent) {
+    public boolean isEnableMakeConnection() {
+               return enableMakeConnection;
+       }
+
+       public void setEnableMakeConnection(boolean enableMakeConnection) {
+               this.enableMakeConnection = enableMakeConnection;
+       }
+
+       public boolean isEnableRMAnonURI() {
+               return enableRMAnonURI;
+       }
+
+       public void setEnableRMAnonURI(boolean enableRMAnonURI) {
+               this.enableRMAnonURI = enableRMAnonURI;
+       }
+
+       public boolean equal(PolicyComponent policyComponent) {
         // TODO
         return false;
     }    

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
 Mon Jan 15 08:23:40 2007
@@ -132,6 +132,22 @@
                        }
                        
                 }
+            } else 
if(Sandesha2Constants.Assertions.ELEM_MAKE_CONNECTION.equals(name)) {
+                if (element!=null) {
+                       // Read the nested assertions
+                       
+                       OMElement enabledElem = 
element.getFirstChildWithName(Sandesha2Constants.Assertions.Q_ELEM_ENABLED);
+                       if (enabledElem!=null) {
+                               String data = enabledElem.getText().trim();
+                               
propertyBean.setEnableMakeConnection(Boolean.parseBoolean(data));
+                       }
+                       
+                       OMElement useRMAnonElem = 
element.getFirstChildWithName(Sandesha2Constants.Assertions.Q_ELEM_USE_RM_ANON_URI);
+                       if (useRMAnonElem!=null) {
+                               String data = useRMAnonElem.getText().trim();
+                               
propertyBean.setEnableRMAnonURI(Boolean.parseBoolean(data));
+                       }
+                }
             }
         }
     }

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java
 Mon Jan 15 08:23:40 2007
@@ -64,6 +64,9 @@
 
                
propertyBean.setSecurityManagerClass(Sandesha2Constants.Properties.DefaultValues.SecurityManager);
                
+               
propertyBean.setEnableMakeConnection(Sandesha2Constants.Properties.DefaultValues.EnableMakeConnection);
+               
propertyBean.setEnableRMAnonURI(Sandesha2Constants.Properties.DefaultValues.EnableRMAnonURI);
+               
                return propertyBean;
        }
 

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java 
Mon Jan 15 08:23:40 2007
@@ -220,6 +220,13 @@
        }
 
        public static void startPollingManager (ConfigurationContext 
configurationContext) throws SandeshaException {
+               // Only start the polling manager if we are configured to use 
MakeConnection
+               SandeshaPolicyBean policy = 
getPropertyBean(configurationContext.getAxisConfiguration());
+               if(!policy.isEnableMakeConnection()) {
+                       String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.makeConnectionDisabled);
+                       throw new SandeshaException(message);
+               }
+               
                PollingManager pollingManager = (PollingManager) 
configurationContext.getProperty(
                                Sandesha2Constants.POLLING_MANAGER);
                



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

Reply via email to