Author: chamikara
Date: Fri Mar 17 01:02:21 2006
New Revision: 386575

URL: http://svn.apache.org/viewcvs?rev=386575&view=rev
Log:
Added a new policy - MaximumRetransmissionCount. The retransmission will happen 
only this number of times.

Added:
    
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/processors/MaximumRetransmissionCountProcessor.java
Modified:
    
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/PolicyEngineData.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicy.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicyBean.java
    
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicyProcessor.java
    
webservices/sandesha/trunk/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
    
webservices/sandesha/trunk/src/org/apache/sandesha2/util/PropertyManager.java
    
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaPropertyBean.java

Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/PolicyEngineData.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/policy/PolicyEngineData.java?rev=386575&r1=386574&r2=386575&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/PolicyEngineData.java
 (original)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/PolicyEngineData.java
 Fri Mar 17 01:02:21 2006
@@ -12,6 +12,7 @@
        private String permanentStorageMgr = null;
        private String inmemoryStorageManager = null;   
        private String storageManager = null;
+       private int maximumRetransmissionCount; 
 
        public boolean isExponentialBackoff() {
                return exponentialBackoff;
@@ -85,6 +86,7 @@
                ped.setRetransmissionInterval(this.getRetransmissionInterval());
                
//ped.setPermanentStorageManager(this.getPermanentStorageManager());
                ped.setStorageManager(this.getStorageManager());
+               
ped.setMaximumRetransmissionCount(this.getMaximumRetransmissionCount());
                
                return ped;
        }
@@ -103,5 +105,13 @@
        
        public String getStorageManager() {
                return storageManager;
+       }
+
+       public int getMaximumRetransmissionCount() {
+               return maximumRetransmissionCount;
+       }
+
+       public void setMaximumRetransmissionCount(int 
maximumRetransmissionCount) {
+               this.maximumRetransmissionCount = maximumRetransmissionCount;
        }
 }

Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicy.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicy.java?rev=386575&r1=386574&r2=386575&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicy.java 
(original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicy.java 
Fri Mar 17 01:02:21 2006
@@ -10,6 +10,10 @@
        public static final RMPolicyToken acknowledgementInterval = new 
RMPolicyToken(
                        "AcknowledgementInterval", RMPolicyToken.SIMPLE_TOKEN,
                        new String[] {});
+       
+       public static final RMPolicyToken maximumRetransmissionCount = new 
RMPolicyToken(
+                       "MaximumRetransmissionCount", 
RMPolicyToken.SIMPLE_TOKEN,
+                       new String[] {});
 
        public static final RMPolicyToken exponentialBackoff = new 
RMPolicyToken(
                        "ExponentialBackoff", RMPolicyToken.SIMPLE_TOKEN, new 
String[] {});

Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicyBean.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicyBean.java?rev=386575&r1=386574&r2=386575&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicyBean.java 
(original)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicyBean.java 
Fri Mar 17 01:02:21 2006
@@ -30,6 +30,7 @@
     private long acknowledgementInterval;
     private long retransmissionInterval;
     private boolean exponentialBackoff;
+    private int maximumRetransmissionCount;
     
     public RMPolicyBean () {
        loadValuesFromPropertyFile ();
@@ -70,6 +71,14 @@
     public void setAcknowledgementInterval(long acknowledgementInterval) {
         this.acknowledgementInterval = acknowledgementInterval;
     }
+
+       public int getMaximumRetransmissionCount() {
+               return maximumRetransmissionCount;
+       }
+
+       public void setMaximumRetransmissionCount(int 
maximumRetransmissionCount) {
+               this.maximumRetransmissionCount = maximumRetransmissionCount;
+       }
     
     
 }

Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicyProcessor.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicyProcessor.java?rev=386575&r1=386574&r2=386575&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicyProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/RMPolicyProcessor.java
 Fri Mar 17 01:02:21 2006
@@ -11,6 +11,7 @@
 import 
org.apache.sandesha2.policy.processors.InactivityTimeoutMeasureProcessor;
 import org.apache.sandesha2.policy.processors.InactivityTimeoutProcessor;
 import org.apache.sandesha2.policy.processors.InvokeInOrderProcessor;
+import 
org.apache.sandesha2.policy.processors.MaximumRetransmissionCountProcessor;
 import org.apache.sandesha2.policy.processors.MessageTypesToDropProcessor;
 import org.apache.sandesha2.policy.processors.RetransmissionItervalProcessor;
 import org.apache.sandesha2.policy.processors.StorageManagersProcessor;
@@ -52,6 +53,11 @@
                rpt.setProcessTokenMethod(aip);
                topLevel.setChildToken(rpt);
 
+               MaximumRetransmissionCountProcessor mrip = new 
MaximumRetransmissionCountProcessor();
+               rpt = RMPolicy.maximumRetransmissionCount.copy();
+               rpt.setProcessTokenMethod(mrip);
+               topLevel.setChildToken(rpt);
+               
                ExponentialBackoffProcessor ebp = new 
ExponentialBackoffProcessor();
                rpt = RMPolicy.exponentialBackoff.copy();
                rpt.setProcessTokenMethod(ebp);

Added: 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/processors/MaximumRetransmissionCountProcessor.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/policy/processors/MaximumRetransmissionCountProcessor.java?rev=386575&view=auto
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/processors/MaximumRetransmissionCountProcessor.java
 (added)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/policy/processors/MaximumRetransmissionCountProcessor.java
 Fri Mar 17 01:02:21 2006
@@ -0,0 +1,57 @@
+package org.apache.sandesha2.policy.processors;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.sandesha2.policy.PolicyEngineData;
+import org.apache.sandesha2.policy.RMPolicyToken;
+import org.apache.sandesha2.policy.RMProcessorContext;
+
+public class MaximumRetransmissionCountProcessor {
+
+       private boolean initializedMaximumRetransmissionCount = false;
+
+       private Log logger = LogFactory.getLog(this.getClass().getName());
+
+       public void initializeMaximumRetransmissionCount(RMPolicyToken rmpt)
+                       throws NoSuchMethodException {
+               
logger.debug("MaximumRetransmissionCountProcessor:initializeAcknowledgementInterval");
+       }
+
+       public Object doMaximumRetransmissionCount(RMProcessorContext rmpc) {
+               logger.debug("Processing "
+                               + 
rmpc.readCurrentSecurityToken().getTokenName() + ": "
+                               + 
RMProcessorContext.ACTION_NAMES[rmpc.getAction()]);
+
+               RMPolicyToken rmpt = rmpc.readCurrentSecurityToken();
+
+               switch (rmpc.getAction()) {
+
+               case RMProcessorContext.START:
+                       if (!initializedMaximumRetransmissionCount) {
+                               try {
+                                       
initializeMaximumRetransmissionCount(rmpt);
+                                       initializedMaximumRetransmissionCount = 
true;
+                               } catch (NoSuchMethodException e) {
+                                       
logger.error("MaximumRetransmissionCountProcessor:doAcknowledgementInterval", 
e);
+                                       return new Boolean(false);
+                               }
+                       }
+                       logger.debug(rmpt.getTokenName());
+
+               case RMProcessorContext.COMMIT:
+
+                       // //////////
+
+                       PolicyEngineData engineData = 
rmpc.readCurrentPolicyEngineData();
+                       String txt = rmpc.getAssertion().getStrValue();
+                       
engineData.setMaximumRetransmissionCount(Integer.parseInt(txt.trim()));
+
+                       // /////////////////////////////////
+
+                       break;
+               case RMProcessorContext.ABORT:
+                       break;
+               }
+               return new Boolean(true);
+       }
+}

Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java?rev=386575&r1=386574&r2=386575&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
 (original)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
 Fri Mar 17 01:02:21 2006
@@ -52,21 +52,12 @@
 
                SandeshaPropertyBean propertyBean = 
SandeshaUtil.getPropretyBean(messageContext);
                
-               
-               //TODO make MaxRetransmissionCount a policy
-//             int maxRetransmissionCount = 
Sandesha2Constants.Properties.DefaultValues.RetransmissionCount;
-//             if (retransmitterBean.getSentCount()>maxRetransmissionCount) {
-//                     log.debug("Stopping retransmission since maximum 
retransmission was exceeded");
-//                     retransmitterBean.setSend(false);
-//                     
-//                     //TODO do reporting and cleaning since this sequence 
will not work correctly after this.
-//             }
-               
                retransmitterBean.setSentCount(retransmitterBean.getSentCount() 
+ 1);
                adjustNextRetransmissionTime(retransmitterBean, propertyBean);
 
-//             if (retransmitterBean.getSentCount() >= 
Sandesha2Constants.MAXIMUM_RETRANSMISSION_ATTEMPTS)
-//                     stopRetransmission(retransmitterBean);
+               int maxRetransmissionAttempts = 
propertyBean.getMaximumRetransmissionCount();
+               if (maxRetransmissionAttempts>=0 && 
retransmitterBean.getSentCount() > maxRetransmissionAttempts)
+                       stopRetransmission(retransmitterBean);
 
                return retransmitterBean;
        }
@@ -106,7 +97,7 @@
        }
 
        private void stopRetransmission(SenderBean bean) {
-               bean.setReSend(false);
+               bean.setSend(false);
        }
 
        private long generateNextExponentialBackedoffDifference(int count,

Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/util/PropertyManager.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/PropertyManager.java?rev=386575&r1=386574&r2=386575&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/util/PropertyManager.java 
(original)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/util/PropertyManager.java 
Fri Mar 17 01:02:21 2006
@@ -203,6 +203,7 @@
 
                // CHECKME
                propertyBean.setStorageManagerClass(data.getStorageManager());
+               
propertyBean.setMaximumRetransmissionCount(data.getMaximumRetransmissionCount());
        }
 
        public void loadPropertiesFromAxisDescription(AxisDescription desc)

Modified: 
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaPropertyBean.java
URL: 
http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaPropertyBean.java?rev=386575&r1=386574&r2=386575&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaPropertyBean.java
 (original)
+++ 
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaPropertyBean.java
 Fri Mar 17 01:02:21 2006
@@ -121,5 +121,13 @@
                }
        }
        
+       public int getMaximumRetransmissionCount() {
+               return policyBean.getMaximumRetransmissionCount();
+       }
+
+       public void setMaximumRetransmissionCount(int 
maximumRetransmissionCount) {
+               
policyBean.setMaximumRetransmissionCount(maximumRetransmissionCount);
+       }
+       
        
 }



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

Reply via email to