Author: indika
Date: Sun Dec  2 22:31:57 2007
New Revision: 10400

Modified:
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/AccessRateController.java
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/CallerConfiguration.java
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/Throttle.java
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/ThrottleConfiguration.java
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/ThrottleContext.java
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/CallerConfigurationFactory.java
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/CallerContextFactory.java
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/ThrottleConfigurationFactory.java
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/ThrottleContextFactory.java
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/domainbase/DomainBaseCallerConfiguration.java
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/domainbase/DomainBaseThrottleConfiguration.java
   
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/ipbase/IPBaseThrottleConfiguration.java
   
branches/wsas/java/2.1/commons/throttle/modules/mar/src/main/java/org/wso2/throttle/module/handler/ThrottleHandler.java
Log:
logs improvement + some fixes 


Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/AccessRateController.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/AccessRateController.java
      (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/AccessRateController.java
      Sun Dec  2 22:31:57 2007
@@ -58,7 +58,7 @@
      * @throws ThrottleException 
      */
     public boolean canAccess(ThrottleContext throttleContext,
-                             Object callerID, int callerType) throws 
ThrottleException {
+                             String callerID, int callerType) throws 
ThrottleException {
 
         String type = ThrottleConstants.IP_BASE == callerType ? "IP address" : 
"domain";
 
@@ -71,26 +71,18 @@
             return true;
         }
 
-        String id = null;
-        if (callerID instanceof String) {
-            id = (String) callerID;
-        } else {
-            if (debugOn) {
-                log.debug("Caller ID should instance of String for Throttle");
-            }
-        }
-        if (id == null) {
+        if (callerID == null) {
             if (debugOn) {
                 log.debug("Caller host or ip  couldn't find !! - Access will 
be denied ");
             }
             return false;
         }
-
+        
         CallerConfiguration configuration =
-            throttleConfigurationBean.getCallerConfiguration(id);
+            throttleConfigurationBean.getCallerConfiguration(callerID);
         if (configuration == null) {
             if (debugOn) {
-                log.debug("Caller configuration couldn't find for " + type + " 
and for caller " + id);
+                log.debug("Caller configuration couldn't find for " + type + " 
and for caller " + callerID);
             }
             return true;
         }
@@ -101,11 +93,11 @@
             return true;
         } else if (configuration.getAccessState() == 
ThrottleConstants.ACCESS_CONTROLLED) {
             synchronized (lock) {
-                CallerContext caller = throttleContext.getCallerContext(id);
+                CallerContext caller = 
throttleContext.getCallerContext(callerID);
                 if (caller == null) {
                     //if caller has not already registered ,then create new 
caller description and
                     //set it in throttle
-                    caller = CallerContextFactory.createCaller(callerType, id);
+                    caller = CallerContextFactory.createCaller(callerType, 
callerID);
                 }
                 if (caller != null) {
                     long currentTime = System.currentTimeMillis();
@@ -117,13 +109,13 @@
                         return false;
                     } else {
                         if (debugOn) {
-                            log.debug("Access  from " + type + " " + id + " is 
successful.");
+                            log.debug("Access  from " + type + " " + callerID 
+ " is successful.");
                         }
                         return true;
                     }
                 } else {
                     if (debugOn) {
-                        log.debug("Caller " + type + " not found! " + id);
+                        log.debug("Caller " + type + " not found! " + 
callerID);
                     }
                     return true;
                 }

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/CallerConfiguration.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/CallerConfiguration.java
       (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/CallerConfiguration.java
       Sun Dec  2 22:31:57 2007
@@ -136,7 +136,7 @@
     /**
      * To get ID
      *
-     * @return Object value of ID
+     * @return String value of ID
      */
     public abstract String getID();
 

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/Throttle.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/Throttle.java
  (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/Throttle.java
  Sun Dec  2 22:31:57 2007
@@ -22,9 +22,11 @@
 import java.util.Map;
 
 /**
- *The representation for Throttle-hold both runtime and static data.
- *There is a one to one relationship between configuration and context.
- *There may be a concurrent access controller,if the throttle policy has 
defined  maximum concurrent access .
+ *The representation for Throttle - holds the both of runtime and static data.
+ *There is a one to one relationship between each throttle configuration and 
context.
+ *Currently support two type of throttle configuration. One is remote caller 
IP based and
+ *other one is remote caller domain name based.There may be a concurrent 
access controller,
+ *if the throttle policy has defined the maximum concurrent access .
  */
 
 public class Throttle {
@@ -32,10 +34,10 @@
     /* Holder for ThrottleContext - keeps all runtime data */
     private Map throttleContexts;
 
-    /* Holder for ThrottleConfigurations - keeps all static data (data that 
have extracted from throttle policy) */
+    /* Holder for ThrottleConfigurations - keeps all static data (data that 
have extracted from the throttle policy) */
     private Map throttleConfigurations;
 
-    /* ConcurrentAccessController insatnce- this is common to all remote 
callers - controls the concurrent access */
+    /* ConcurrentAccessController insatnce- This is common to all remote 
callers - controls the concurrent access through this throttle*/
     private ConcurrentAccessController controller;
     /* unique identifier for each throttle */
     private String id;
@@ -62,7 +64,7 @@
      * Adds a ThrotleContext with the given key - context holds all runtime 
data for registered callers
      *
      * @param key             - corresponding key for throttle type.This key 
has one-one relationship with key of configurations
-     * @param throttleContext - holds runtime data - ex: all callers state
+     * @param throttleContext - holds runtime data - ex: all callers states
      */
     public void addThrottleContext(String key, ThrottleContext 
throttleContext) {
         this.throttleContexts.put(key, throttleContext);

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/ThrottleConfiguration.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/ThrottleConfiguration.java
     (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/ThrottleConfiguration.java
     Sun Dec  2 22:31:57 2007
@@ -26,28 +26,28 @@
 public interface ThrottleConfiguration {
 
     /**
-     * To add a CallerConfiguration
+     * To add a CallerConfiguration - The controlling policy for a caller
      *
      * @param callerConfiguration The caller configuration data
      */
     public void addCallerConfiguration(CallerConfiguration 
callerConfiguration);
 
     /**
-     * To get a CallerConfiguration
+     * To get a CallerConfiguration - The controlling policy for a caller
      *
      * @param ID The ID of the caller (ip/domain name)
      * @return CallerConfiguration
      */
-    public CallerConfiguration getCallerConfiguration(Object ID);
+    public CallerConfiguration getCallerConfiguration(String ID);
 
     /**
-     * To get a access key for caller (In the case of group ID)
+     * To get a access key for a caller (In the case of group ID)
      *
      * @param callerID - The ID of the caller (ip/domain name)
-     * @return Object  -The pre-define key with in policy
+     * @return String  -The pre-define key with in policy
      */
 
-    public Object getConfigurationKeyOfCaller(Object callerID);
+    public String getConfigurationKeyOfCaller(String callerID);
 
     /**
      * To get the type of the throttle

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/ThrottleContext.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/ThrottleContext.java
   (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/ThrottleContext.java
   Sun Dec  2 22:31:57 2007
@@ -84,7 +84,7 @@
      * @param ID the remote caller id ex: domain , ip
      * @return Returns the CallerContext which holds runtime state of a remote 
caller
      */
-    public CallerContext getCallerContext(Object ID) {
+    public CallerContext getCallerContext(String ID) {
 
         String key = (String) 
throttleConfiguration.getConfigurationKeyOfCaller(ID);
         if (key != null) {
@@ -190,8 +190,8 @@
     public void removeCallerContext(Object ID) {
         if (ID instanceof Long) {
             removeCaller((Long) ID);
-        } else {
-            String key = (String) 
throttleConfiguration.getConfigurationKeyOfCaller(ID);
+        } else if (ID instanceof String) {
+            String key = 
throttleConfiguration.getConfigurationKeyOfCaller((String) ID);
             Long time;
             if (key != null) {
                 time = (Long) keyToTimeStampMap.get(key);

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/CallerConfigurationFactory.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/CallerConfigurationFactory.java
        (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/CallerConfigurationFactory.java
        Sun Dec  2 22:31:57 2007
@@ -22,7 +22,7 @@
 import org.wso2.throttle.impl.ipbase.IPBaseCallerConfiguration;
 
 /**
- * Factory for creating CallerConfigurations 
+ * Factory for creating a CallerConfiguration
  *
  */
 

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/CallerContextFactory.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/CallerContextFactory.java
      (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/CallerContextFactory.java
      Sun Dec  2 22:31:57 2007
@@ -22,26 +22,26 @@
 import org.wso2.throttle.impl.ipbase.IPBaseCallerContext;
 
 /**
- * Factory for creating CallerContexts
+ * Factory for creating a CallerContext
  *
  */
 
 public class CallerContextFactory {
 
     /**
-     * To create a CallerContext(run time data holder for a remote caller) for 
the given throttle type.
-     * Needs to provide the ID of the remote caller (ip/domain accoding to the 
policy)
+     * To create a CallerContext(the run time data holder for a remote caller) 
for the given throttle type.
+     * Needs to provide the ID(ip | domain) of the remote caller (ip/domain 
accoding to the policy)
      *
      * @param throttletype  - The type of the throttle
      * @param id            - The id of the caller
      * @return caller       - The corresponding caller context for the given 
throttle type
      * @throws ThrottleException - Throws for if the throttle type is unknown
      */
-    public static CallerContext createCaller(int throttletype, Object id) 
throws ThrottleException {
+    public static CallerContext createCaller(int throttletype, String id) 
throws ThrottleException {
         if (ThrottleConstants.IP_BASE == throttletype) {
-            return new IPBaseCallerContext((String) id);
+            return new IPBaseCallerContext(id);
         } else if (ThrottleConstants.DOMAIN_BASE == throttletype) {
-            return new DomainBaseCallerContext((String) id);
+            return new DomainBaseCallerContext(id);
         } else {
             throw new ThrottleException("unknown throttle type");
         }

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/ThrottleConfigurationFactory.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/ThrottleConfigurationFactory.java
      (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/ThrottleConfigurationFactory.java
      Sun Dec  2 22:31:57 2007
@@ -22,7 +22,7 @@
 import org.wso2.throttle.impl.ipbase.IPBaseThrottleConfiguration;
 
 /**
- *Factory for creating ThrottleConfigurations - holds all callers controle 
parameters
+ *Factory for creating a ThrottleConfiguration - holds all callers controle 
parameters
  *
  */
 

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/ThrottleContextFactory.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/ThrottleContextFactory.java
    (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/factory/ThrottleContextFactory.java
    Sun Dec  2 22:31:57 2007
@@ -23,7 +23,7 @@
 import org.wso2.throttle.impl.ipbase.IPBaseThrottleContext;
 
 /**
- *Factory for creating ThrottleContexts - hold all callers runtime data - 
current state
+ *Factory for creating a ThrottleContext - holds all callers runtime data - 
the current state
  *
  */
 
@@ -31,7 +31,7 @@
 
     /**
      * To create a ThrottleContext for the given throttle type
-     * Needs to provide throttle configuration
+     * Needs to provide a throttle configuration
      *
      * @param throttletype  - The type of the throttle
      * @param configuration - The throttle configuration

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/domainbase/DomainBaseCallerConfiguration.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/domainbase/DomainBaseCallerConfiguration.java
     (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/domainbase/DomainBaseCallerConfiguration.java
     Sun Dec  2 22:31:57 2007
@@ -26,7 +26,7 @@
  */
 
 public class DomainBaseCallerConfiguration extends CallerConfiguration {
-
+    /* The id - domain name */
     private String id;
 
     public String getID() {

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/domainbase/DomainBaseThrottleConfiguration.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/domainbase/DomainBaseThrottleConfiguration.java
   (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/domainbase/DomainBaseThrottleConfiguration.java
   Sun Dec  2 22:31:57 2007
@@ -57,12 +57,12 @@
      * @param ID - The Remote caller id (domain name)
      * @return Returns the corresponding configuration for the caller with 
given ID
      */
-    public CallerConfiguration getCallerConfiguration(Object ID) {
+    public CallerConfiguration getCallerConfiguration(String ID) {
 
         if 
(ID.equals(ThrottleConstants.KEY_OF_DEFAULT_CONFIGURATION_FOR_OTHER)) {
             return defaultCallerConfiguration;
         } else {
-            String key = (String) getConfigurationKeyOfCaller(ID);
+            String key = getConfigurationKeyOfCaller(ID);
             if (key != null) {
                 if 
(key.equals(ThrottleConstants.KEY_OF_DEFAULT_CONFIGURATION_FOR_OTHER)) {
                     return defaultCallerConfiguration;
@@ -95,23 +95,27 @@
      * To get key for caller configuration
      * if there is a configuration with callerID , it returns
      * otherwise ,
-     * on the first (if ID is a.a.a), check pattern *.a.a and a.a
-     * then *.*.a or *.a or a
+     * on the first the ID contains one or more "." ,then recursively try to 
find the nearest root callerID.
+     * else if the ID doesn't contains ".", try to find a key with *.{ID} .
+     * Note : For valid ID , it should contain only  zero or more  "*."  as a 
prefix.
+     * example:
+     * (if ID is a.a.a), check pattern *.a.a and a.a
+     *     then *.*.a or *.a or a  )
+     * if ID a then check start with *.a
      *
-     * @param callerID The id of the remote caller (domain name)
-     * @return Object-String representation of  corrected epr-key for get 
configuration
+     * @param callerID The id of the remote caller (callerID name)
+     * @return String value -String representation of  corrected epr-key for 
get configuration
      */
-    public Object getConfigurationKeyOfCaller(Object callerID) {
+    public String getConfigurationKeyOfCaller(String callerID) {
 
         if (callerID != null) {
-            String domain = (String) callerID;
             //if there is a unique Domain
-            if (configurationsMap.containsKey(domain)) {
-                return domain;
+            if (configurationsMap.containsKey(callerID)) {
+                return callerID;
             } else {
-                int index = domain.indexOf(".");
+                int index = callerID.indexOf(".");
                 if (index > 0) {
-                    String rootDomain = domain.substring(index + 1, 
domain.length());
+                    String rootDomain = callerID.substring(index + 1, 
callerID.length());
                     if (rootDomain != null) {
                         String all = "*." + rootDomain;
                         Set keyset = configurationsMap.keySet();
@@ -125,6 +129,17 @@
                         }
                         return getConfigurationKeyOfCaller(rootDomain);
                     }
+                } else {
+                    String all = "*." + callerID;
+                    Set keyset = configurationsMap.keySet();
+                    if (keyset != null && !keyset.isEmpty()) {
+                        for (Iterator iter = keyset.iterator(); 
iter.hasNext();) {
+                            String key = (String) iter.next();
+                            if (key != null && key.endsWith(all)) {
+                                return key;
+                            }
+                        }
+                    }
                 }
             }
         }

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/ipbase/IPBaseThrottleConfiguration.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/ipbase/IPBaseThrottleConfiguration.java
   (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/core/src/main/java/org/wso2/throttle/impl/ipbase/IPBaseThrottleConfiguration.java
   Sun Dec  2 22:31:57 2007
@@ -53,12 +53,12 @@
      * @param ID - The Remote caller id (IP)
      * @return Returns the corresponding configuration for the caller with 
given ID
      */
-    public CallerConfiguration getCallerConfiguration(Object ID) {
+    public CallerConfiguration getCallerConfiguration(String ID) {
 
         if 
(ID.equals(ThrottleConstants.KEY_OF_DEFAULT_CONFIGURATION_FOR_OTHER)) {
             return defaultCallerConfiguration;
         } else {
-            String key = (String) getConfigurationKeyOfCaller(ID);
+            String key = getConfigurationKeyOfCaller(ID);
             if (key != null) {
                 if 
(key.equals(ThrottleConstants.KEY_OF_DEFAULT_CONFIGURATION_FOR_OTHER)) {
                     return defaultCallerConfiguration;
@@ -95,18 +95,17 @@
      * @param callerID The remote caller id (ip)
      * @return Object-String representation of  corrected epr-key for get 
configuration
      */
-    public Object getConfigurationKeyOfCaller(Object callerID) {
+    public String getConfigurationKeyOfCaller(String callerID) {
 
         if (callerID != null) {
-            String ip = (String) callerID;
             //if there is a unique IP
-            if (configurationsMap.containsKey(ip)) {
-                return ip;
+            if (configurationsMap.containsKey(callerID)) {
+                return callerID;
             } else {
-                int index = ip.lastIndexOf(".");
+                int index = callerID.lastIndexOf(".");
                 if (index > 0) {
-                    String net = ip.substring(0, index);     // get the 
network portion
-                    String host = ip.substring(index + 1, ip.length()); //get 
the host portion
+                    String net = callerID.substring(0, index);     // get the 
network portion
+                    String host = callerID.substring(index + 1, 
callerID.length()); //get the host portion
                     if (net != null && host != null) {
                         Set keys = configurationsMap.keySet();
                         if (keys != null && !keys.isEmpty()) {

Modified: 
branches/wsas/java/2.1/commons/throttle/modules/mar/src/main/java/org/wso2/throttle/module/handler/ThrottleHandler.java
==============================================================================
--- 
branches/wsas/java/2.1/commons/throttle/modules/mar/src/main/java/org/wso2/throttle/module/handler/ThrottleHandler.java
     (original)
+++ 
branches/wsas/java/2.1/commons/throttle/modules/mar/src/main/java/org/wso2/throttle/module/handler/ThrottleHandler.java
     Sun Dec  2 22:31:57 2007
@@ -183,7 +183,7 @@
 
                 // Domain name based throttling
                 //check whether a configuration has been defined for this 
domain name or not
-                Object callerId = null;
+                String callerId = null;
                 if (domain != null) {
                     //loads the ThrottleContext
                     ThrottleContext context =

_______________________________________________
Wsas-java-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/wsas-java-dev

Reply via email to