Fix a bug which can cause an invalid header id
Add javadocs
Some minor refactoring
git-svn-id: https://svn.apache.org/repos/asf/james/jspf/branches/asynch-jspf@536180 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/james/jspf/FutureSPFResult.java b/src/main/java/org/apache/james/jspf/FutureSPFResult.java
index 8d65b03..188bb0e 100644
--- a/src/main/java/org/apache/james/jspf/FutureSPFResult.java
+++ b/src/main/java/org/apache/james/jspf/FutureSPFResult.java
@@ -29,6 +29,12 @@
isReady = false;
}
+ /**
+ * Set SPFResult using the given SPFsession
+ *
+ * @param session
+ *
+ */
public synchronized void setSPFResult(SPFSession session) {
setSPFSession(session);
isReady = true;
@@ -45,31 +51,51 @@
}
}
+ /**
+ * @see org.apache.james.jspf.SPFResult#getExplanation()
+ */
public String getExplanation() {
checkReady();
return super.getExplanation();
}
+ /**
+ * @see org.apache.james.jspf.SPFResult#getHeader()
+ */
public String getHeader() {
checkReady();
return super.getHeader();
}
+ /**
+ * @see org.apache.james.jspf.SPFResult#getHeaderName()
+ */
public String getHeaderName() {
checkReady();
return super.getHeaderName();
}
+ /**
+ * @see org.apache.james.jspf.SPFResult#getHeaderText()
+ */
public String getHeaderText() {
checkReady();
return super.getHeaderText();
}
+ /**
+ * @see org.apache.james.jspf.SPFResult#getResult()
+ */
public String getResult() {
checkReady();
return super.getResult();
}
+ /**
+ * Return true if the result was fully builded
+ *
+ * @return true or false
+ */
public boolean isReady() {
return isReady;
}
diff --git a/src/main/java/org/apache/james/jspf/SPF.java b/src/main/java/org/apache/james/jspf/SPF.java
index 184b6b3..0673b8d 100644
--- a/src/main/java/org/apache/james/jspf/SPF.java
+++ b/src/main/java/org/apache/james/jspf/SPF.java
@@ -277,6 +277,24 @@
this.executor = executor;
}
+
+ private static final class DefaultSPFChecker implements SPFChecker {
+
+ /**
+ * @see org.apache.james.jspf.core.SPFChecker#checkSPF(org.apache.james.jspf.core.SPFSession)
+ */
+ public DNSLookupContinuation checkSPF(SPFSession spfData)
+ throws PermErrorException, TempErrorException,
+ NeutralException, NoneException {
+ if (spfData.getCurrentResultExpanded() == null) {
+ String resultChar = spfData.getCurrentResult() != null ? spfData.getCurrentResult() : "";
+ String result = SPF1Utils.resultToName(resultChar);
+ spfData.setCurrentResultExpanded(result);
+ }
+ return null;
+ }
+ }
+
/**
* Run check for SPF with the given values.
*
@@ -300,20 +318,7 @@
spfData.setCurrentResultExpanded(e1.getResult());
}
- SPFChecker resultHandler = new SPFChecker() {
-
- public DNSLookupContinuation checkSPF(SPFSession spfData)
- throws PermErrorException, TempErrorException,
- NeutralException, NoneException {
- if (spfData.getCurrentResultExpanded() == null) {
- String resultChar = spfData.getCurrentResult() != null ? spfData.getCurrentResult() : "";
- String result = SPF1Utils.resultToName(resultChar);
- spfData.setCurrentResultExpanded(result);
- }
- return null;
- }
-
- };
+ SPFChecker resultHandler = new DefaultSPFChecker();
spfData.pushChecker(resultHandler);
spfData.pushChecker(this);
diff --git a/src/main/java/org/apache/james/jspf/core/SPFSession.java b/src/main/java/org/apache/james/jspf/core/SPFSession.java
index 2fde2e1..a92f491 100644
--- a/src/main/java/org/apache/james/jspf/core/SPFSession.java
+++ b/src/main/java/org/apache/james/jspf/core/SPFSession.java
@@ -79,7 +79,7 @@
private String currentResultExpanded;
/**
- * Build the SPF1Data from the given parameters
+ * Build the SPFSession from the given parameters
*
* @param mailFrom
* The emailaddress of the sender
diff --git a/src/main/java/org/apache/james/jspf/core/StagedMultipleSPFExecutor.java b/src/main/java/org/apache/james/jspf/core/StagedMultipleSPFExecutor.java
index 2e80f5a..2f3242a 100644
--- a/src/main/java/org/apache/james/jspf/core/StagedMultipleSPFExecutor.java
+++ b/src/main/java/org/apache/james/jspf/core/StagedMultipleSPFExecutor.java
@@ -62,9 +62,16 @@
}
- private static int id = 1;
+ // Use short as id because the id header is limited to 16 bit
+ // From RFC1035 4.1.1. Header section format :
+ //
+ // ID A 16 bit identifier assigned by the program that
+ // generates any kind of query. This identifier is copied
+ // the corresponding reply and can be used by the requester
+ // to match up replies to outstanding queries.
+ //
+ private static short id;
- // TODO: sooner or later we have to avoid overflow and restart.
private synchronized int nextId() {
return id++;
}
diff --git a/src/main/java/org/apache/james/jspf/policies/InitialChecksPolicy.java b/src/main/java/org/apache/james/jspf/policies/InitialChecksPolicy.java
index e763475..381e70e 100644
--- a/src/main/java/org/apache/james/jspf/policies/InitialChecksPolicy.java
+++ b/src/main/java/org/apache/james/jspf/policies/InitialChecksPolicy.java
@@ -38,6 +38,9 @@
*/
public final class InitialChecksPolicy implements SPFChecker {
+ /**
+ * @see org.apache.james.jspf.core.SPFChecker#checkSPF(org.apache.james.jspf.core.SPFSession)
+ */
public DNSLookupContinuation checkSPF(SPFSession spfData)
throws PermErrorException, TempErrorException, NeutralException,
NoneException {
diff --git a/src/main/java/org/apache/james/jspf/policies/SPFRetriever.java b/src/main/java/org/apache/james/jspf/policies/SPFRetriever.java
index 68679b3..54287f1 100644
--- a/src/main/java/org/apache/james/jspf/policies/SPFRetriever.java
+++ b/src/main/java/org/apache/james/jspf/policies/SPFRetriever.java
@@ -26,6 +26,9 @@
private static final class SPFRecordHandlerDNSResponseListener implements SPFCheckerDNSResponseListener {
+ /**
+ * @see org.apache.james.jspf.core.SPFCheckerDNSResponseListener#onDNSResponse(org.apache.james.jspf.core.DNSResponse, org.apache.james.jspf.core.SPFSession)
+ */
public DNSLookupContinuation onDNSResponse(
DNSResponse response, SPFSession session)
throws PermErrorException,
@@ -50,6 +53,9 @@
private static final class SPFRetrieverDNSResponseListener implements SPFCheckerDNSResponseListener {
+ /**
+ * @see org.apache.james.jspf.core.SPFCheckerDNSResponseListener#onDNSResponse(org.apache.james.jspf.core.DNSResponse, org.apache.james.jspf.core.SPFSession)
+ */
public DNSLookupContinuation onDNSResponse(
DNSResponse response, SPFSession session)
throws PermErrorException, NoneException,
diff --git a/src/main/java/org/apache/james/jspf/policies/SPFStrictCheckerRetriever.java b/src/main/java/org/apache/james/jspf/policies/SPFStrictCheckerRetriever.java
index 4b77dcd..8b4169c 100644
--- a/src/main/java/org/apache/james/jspf/policies/SPFStrictCheckerRetriever.java
+++ b/src/main/java/org/apache/james/jspf/policies/SPFStrictCheckerRetriever.java
@@ -27,6 +27,9 @@
private static final class SPFStrictSPFRecordsDNSResponseListener implements SPFCheckerDNSResponseListener {
+ /**
+ * @see org.apache.james.jspf.core.SPFCheckerDNSResponseListener#onDNSResponse(org.apache.james.jspf.core.DNSResponse, org.apache.james.jspf.core.SPFSession)
+ */
public DNSLookupContinuation onDNSResponse(
DNSResponse response, SPFSession session)
throws PermErrorException,
@@ -55,6 +58,9 @@
private static final class SPFStrictCheckDNSResponseListener implements SPFCheckerDNSResponseListener {
+ /**
+ * @see org.apache.james.jspf.core.SPFCheckerDNSResponseListener#onDNSResponse(org.apache.james.jspf.core.DNSResponse, org.apache.james.jspf.core.SPFSession)
+ */
public DNSLookupContinuation onDNSResponse(
DNSResponse response, SPFSession session)
throws PermErrorException, NoneException,
diff --git a/src/main/java/org/apache/james/jspf/policies/local/DefaultExplanationPolicy.java b/src/main/java/org/apache/james/jspf/policies/local/DefaultExplanationPolicy.java
index 6279f13..24158f6 100644
--- a/src/main/java/org/apache/james/jspf/policies/local/DefaultExplanationPolicy.java
+++ b/src/main/java/org/apache/james/jspf/policies/local/DefaultExplanationPolicy.java
@@ -40,6 +40,10 @@
private final class ExplanationChecker implements SPFChecker {
+
+ /**
+ * @see org.apache.james.jspf.core.SPFChecker#checkSPF(org.apache.james.jspf.core.SPFSession)
+ */
public DNSLookupContinuation checkSPF(SPFSession spfData)
throws PermErrorException,
NoneException, TempErrorException,