You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ba...@apache.org on 2006/05/22 10:24:33 UTC

svn commit: r408598 - /james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/

Author: bago
Date: Mon May 22 01:24:33 2006
New Revision: 408598

URL: http://svn.apache.org/viewvc?rev=408598&view=rev
Log:
Thread safety for Terms (JSPF-3)

Modified:
    james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/AMechanism.java
    james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExpModifier.java
    james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericMechanism.java
    james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericModifier.java
    james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IP4Mechanism.java
    james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java
    james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/MXMechanism.java
    james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/RedirectModifier.java
    james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/UnknownModifier.java

Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/AMechanism.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/AMechanism.java?rev=408598&r1=408597&r2=408598&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/AMechanism.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/AMechanism.java Mon May 22 01:24:33 2006
@@ -43,9 +43,9 @@
             + SPF1Parser.DOMAIN_SPEC_REGEX + ")?" + "(?:"
             + DUAL_CIDR_LENGTH_REGEX + ")?";
 
-    protected int ip4cidr;
+    private int ip4cidr;
 
-    protected int ip6cidr;
+    private int ip6cidr;
 
     /**
      * 
@@ -66,11 +66,11 @@
             if (Inet6Util.isValidIPV4Address(spfData.getIpAddress())) {
 
                 IPAddr checkAddress = IPAddr.getAddress(spfData.getIpAddress(),
-                        ip4cidr);
+                        getIp4cidr());
 
                 try {
                     addressList.addAll(spfData.getDnsProbe().getARecords(host,
-                            ip4cidr));
+                            getIp4cidr()));
                     if (checkAddressList(checkAddress, addressList)) {
                         return true;
                     }
@@ -82,11 +82,11 @@
                 }
             } else {
                 IPAddr checkAddress = IPAddr.getAddress(spfData.getIpAddress(),
-                        ip6cidr);
+                        getIp6cidr());
 
                 try {
                     addressList.addAll(spfData.getDnsProbe().getAAAARecords(
-                            host, ip6cidr));
+                            host, getIp6cidr()));
                     if (checkAddressList(checkAddress, addressList)) {
                         return true;
                     }
@@ -109,7 +109,7 @@
     /**
      * @see org.apache.james.jspf.terms.GenericMechanism#config(ConfigurationMatch)
      */
-    public void config(ConfigurationMatch params) throws PermErrorException {
+    public synchronized void config(ConfigurationMatch params) throws PermErrorException {
         super.config(params);
         if (params.groupCount() >= 2 && params.group(2) != null) {
             ip4cidr = Integer.parseInt(params.group(2).toString());
@@ -151,6 +151,20 @@
             }
         }
         return false;
+    }
+
+    /**
+     * @return Returns the ip4cidr.
+     */
+    protected synchronized int getIp4cidr() {
+        return ip4cidr;
+    }
+
+    /**
+     * @return Returns the ip6cidr.
+     */
+    protected synchronized int getIp6cidr() {
+        return ip6cidr;
     }
 
 }

Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExpModifier.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExpModifier.java?rev=408598&r1=408597&r2=408598&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExpModifier.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/ExpModifier.java Mon May 22 01:24:33 2006
@@ -50,7 +50,7 @@
      */
     public String run(SPF1Data spfData) {
         String exp = null;
-        String host = this.host;
+        String host = getHost();
 
         // If the currentResult is not fail we have no need to run all these
         // methods!

Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericMechanism.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericMechanism.java?rev=408598&r1=408597&r2=408598&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericMechanism.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericMechanism.java Mon May 22 01:24:33 2006
@@ -49,7 +49,7 @@
             + IP4_CIDR_LENGTH_REGEX + ")?" + "(?:/" + IP6_CIDR_LENGTH_REGEX
             + ")?";
 
-    protected String domain;
+    private String domain;
 
     /**
      * Expand the hostname
@@ -58,7 +58,7 @@
      * @throws PermErrorException
      */
     protected String expandHost(SPF1Data spfData) throws PermErrorException {
-        String host = this.domain;
+        String host = getDomain();
         if (host == null) {
             host = spfData.getCurrentDomain();
         } else {
@@ -75,12 +75,19 @@
     /**
      * @see org.apache.james.jspf.core.Configurable#config(ConfigurationMatch)
      */
-    public void config(ConfigurationMatch params) throws PermErrorException {
+    public synchronized void config(ConfigurationMatch params) throws PermErrorException {
         if (params.groupCount() >= 1 && params.group(1) != null) {
             domain = params.group(1);
         } else {
             domain = null;
         }
+    }
+
+    /**
+     * @return Returns the domain.
+     */
+    protected synchronized String getDomain() {
+        return domain;
     }
 
 }

Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericModifier.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericModifier.java?rev=408598&r1=408597&r2=408598&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericModifier.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/GenericModifier.java Mon May 22 01:24:33 2006
@@ -32,7 +32,7 @@
  */
 public abstract class GenericModifier implements Modifier, Configurable {
 
-    protected String host;
+    private String host;
 
     /**
      * @see org.apache.james.jspf.core.Modifier#run(SPF1Data)
@@ -44,10 +44,17 @@
     /**
      * @see org.apache.james.jspf.core.Configurable#config(ConfigurationMatch)
      */
-    public void config(ConfigurationMatch params) throws PermErrorException {
+    public synchronized void config(ConfigurationMatch params) throws PermErrorException {
         if (params.groupCount() > 0) {
             this.host = params.group(1);
         }
+    }
+
+    /**
+     * @return Returns the host.
+     */
+    protected synchronized String getHost() {
+        return host;
     }
 
 }

Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IP4Mechanism.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IP4Mechanism.java?rev=408598&r1=408597&r2=408598&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IP4Mechanism.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IP4Mechanism.java Mon May 22 01:24:33 2006
@@ -39,8 +39,6 @@
 
     private IPAddr ip = null;
 
-    private int maskLength = 0;
-
     /**
      * 
      * @see org.apache.james.jspf.core.GenericMechanism#run(org.apache.james.jspf.core.SPF1Data)
@@ -48,10 +46,10 @@
     public boolean run(SPF1Data spfData) throws PermErrorException {
         IPAddr originalIP;
 
-        originalIP = IPAddr.getAddress(spfData.getIpAddress(), ip
+        originalIP = IPAddr.getAddress(spfData.getIpAddress(), getIp()
                 .getMaskLength());
 
-        if (ip.getMaskedIPAddress().equals(originalIP.getMaskedIPAddress())) {
+        if (getIp().getMaskedIPAddress().equals(originalIP.getMaskedIPAddress())) {
             return true;
         } else {
             // No match
@@ -62,7 +60,7 @@
     /**
      * @see org.apache.james.jspf.terms.GenericMechanism#config(ConfigurationMatch)
      */
-    public void config(ConfigurationMatch params) throws PermErrorException {
+    public synchronized void config(ConfigurationMatch params) throws PermErrorException {
         if (params.groupCount() == 0) {
             throw new PermErrorException("Missing ip");
         }
@@ -70,7 +68,7 @@
         if (!isValidAddress(ipString)) {
             throw new PermErrorException("Invalid Address: " + ipString);
         }
-        maskLength = getMaxCidr();
+        int maskLength = getMaxCidr();
         if (params.groupCount() >= 2 && params.group(2) != null) {
             maskLength = Integer.parseInt(params.group(2).toString());
             if (maskLength > getMaxCidr()) {
@@ -94,6 +92,13 @@
      */
     protected int getMaxCidr() {
         return 32;
+    }
+
+    /**
+     * @return Returns the ip.
+     */
+    protected synchronized IPAddr getIp() {
+        return ip;
     }
 
 }

Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java?rev=408598&r1=408597&r2=408598&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/IncludeMechanism.java Mon May 22 01:24:33 2006
@@ -57,7 +57,7 @@
      * @throws NoneException 
      */
     public boolean run(SPF1Data spfData) throws PermErrorException, TempErrorException, NoneException {
-        String host = this.host;
+        String host = getHost();
 
         // update currentDepth
         spfData.setCurrentDepth(spfData.getCurrentDepth() + 1);      
@@ -98,11 +98,18 @@
     /**
      * @see org.apache.james.jspf.core.Configurable#config(ConfigurationMatch)
      */
-    public void config(ConfigurationMatch params) throws PermErrorException {
+    public synchronized void config(ConfigurationMatch params) throws PermErrorException {
         if (params.groupCount() == 0) {
             throw new PermErrorException("Include mechanism without an host");
         }
         host = params.group(1);
+    }
+
+    /**
+     * @return Returns the host.
+     */
+    protected synchronized String getHost() {
+        return host;
     }
 
 }

Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/MXMechanism.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/MXMechanism.java?rev=408598&r1=408597&r2=408598&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/MXMechanism.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/MXMechanism.java Mon May 22 01:24:33 2006
@@ -57,10 +57,10 @@
         // get the ipAddress
         try {
             IPAddr checkAddress = IPAddr.getAddress(spfData.getIpAddress(),
-                    ip4cidr);
+                    getIp4cidr());
             try {
                 addressList.addAll(spfData.getDnsProbe().getMXRecords(host,
-                        ip4cidr));
+                        getIp4cidr()));
                 if (checkAddressList(checkAddress, addressList)) {
                     return true;
                 }

Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/RedirectModifier.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/RedirectModifier.java?rev=408598&r1=408597&r2=408598&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/RedirectModifier.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/RedirectModifier.java Mon May 22 01:24:33 2006
@@ -56,7 +56,7 @@
         // the redirect modifier is used only when we had no previous matches
         if (!spfData.isMatch()) {
 
-            String host = this.host;
+            String host = getHost();
 
             // update currentDepth
             spfData.setCurrentDepth(spfData.getCurrentDepth() + 1);

Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/UnknownModifier.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/UnknownModifier.java?rev=408598&r1=408597&r2=408598&view=diff
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/UnknownModifier.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/terms/UnknownModifier.java Mon May 22 01:24:33 2006
@@ -57,7 +57,7 @@
     /**
      * @see org.apache.james.jspf.core.Configurable#config(ConfigurationMatch)
      */
-    public void config(ConfigurationMatch params) throws PermErrorException {
+    public synchronized void config(ConfigurationMatch params) throws PermErrorException {
         // Nothing to do
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org