Author: bago
Date: Sun May 31 14:42:37 2009
New Revision: 780443

URL: http://svn.apache.org/viewvc?rev=780443&view=rev
Log:
DNSJava already parsed quoted TXT records correctly, so I moved the "unquote" 
to the resolver instead of the SPFRetriever that now expect a single, unquoted, 
string (JSPF-72)

Modified:
    
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/impl/DNSServiceXBillImpl.java
    
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/policies/SPFRetriever.java
    
james/jspf/trunk/resolver/src/test/java/org/apache/james/jspf/DNSServiceXBillImplTest.java

Modified: 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/impl/DNSServiceXBillImpl.java
URL: 
http://svn.apache.org/viewvc/james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/impl/DNSServiceXBillImpl.java?rev=780443&r1=780442&r2=780443&view=diff
==============================================================================
--- 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/impl/DNSServiceXBillImpl.java
 (original)
+++ 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/impl/DNSServiceXBillImpl.java
 Sun May 31 14:42:37 2009
@@ -39,6 +39,7 @@
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -180,6 +181,7 @@
         if (rr != null && rr.length > 0) {
             records = new ArrayList();
             for (int i = 0; i < rr.length; i++) {
+                System.out.println(rr[i].getType());
                 switch (rr[i].getType()) {
                     case Type.A:
                         ARecord a = (ARecord) rr[i];
@@ -199,11 +201,31 @@
                         break;
                     case Type.TXT:
                         TXTRecord txt = (TXTRecord) rr[i];
-                        records.add(txt.rdataToString());
+                        if (txt.getStrings().size() == 1) {
+                            records.add(txt.getStrings().get(0));
+                        } else {
+                            StringBuffer sb = new StringBuffer();
+                            for (Iterator it = txt.getStrings().iterator(); it
+                                    .hasNext();) {
+                                String k = (String) it.next();
+                                sb.append(k);
+                            }
+                            records.add(sb.toString());
+                        }
                         break;
                     case Type.SPF:
                         SPFRecord spf = (SPFRecord) rr[i];
-                        records.add(spf.rdataToString());
+                        if (spf.getStrings().size() == 1) {
+                            records.add(spf.getStrings().get(0));
+                        } else {
+                            StringBuffer sb = new StringBuffer();
+                            for (Iterator it = spf.getStrings().iterator(); it
+                                    .hasNext();) {
+                                String k = (String) it.next();
+                                sb.append(k);
+                            }
+                            records.add(sb.toString());
+                        }
                         break;
                     default:
                         return null;

Modified: 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/policies/SPFRetriever.java
URL: 
http://svn.apache.org/viewvc/james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/policies/SPFRetriever.java?rev=780443&r1=780442&r2=780443&view=diff
==============================================================================
--- 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/policies/SPFRetriever.java
 (original)
+++ 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/policies/SPFRetriever.java
 Sun May 31 14:42:37 2009
@@ -128,14 +128,6 @@
             // DO NOT trim the result!
             String compare = all.next().toString();
 
-            // TODO is this correct? we remove the first and last char if the
-            // result has an initial " 
-            // remove '"'
-            if (compare.charAt(0)=='"') {
-                compare = compare.toLowerCase().substring(1,
-                        compare.length() - 1);
-            }
-
             // We trim the compare value only for the comparison
             if 
(compare.toLowerCase().trim().startsWith(SPF1Constants.SPF_VERSION1 + " ") || 
compare.trim().equalsIgnoreCase(SPF1Constants.SPF_VERSION1)) {
                 if (returnValue == null) {

Modified: 
james/jspf/trunk/resolver/src/test/java/org/apache/james/jspf/DNSServiceXBillImplTest.java
URL: 
http://svn.apache.org/viewvc/james/jspf/trunk/resolver/src/test/java/org/apache/james/jspf/DNSServiceXBillImplTest.java?rev=780443&r1=780442&r2=780443&view=diff
==============================================================================
--- 
james/jspf/trunk/resolver/src/test/java/org/apache/james/jspf/DNSServiceXBillImplTest.java
 (original)
+++ 
james/jspf/trunk/resolver/src/test/java/org/apache/james/jspf/DNSServiceXBillImplTest.java
 Sun May 31 14:42:37 2009
@@ -20,9 +20,13 @@
 
 package org.apache.james.jspf;
 
+import org.apache.james.jspf.impl.DNSServiceXBillImpl;
+import org.xbill.DNS.DClass;
 import org.xbill.DNS.Lookup;
 import org.xbill.DNS.Name;
 import org.xbill.DNS.Record;
+import org.xbill.DNS.SPFRecord;
+import org.xbill.DNS.TXTRecord;
 import org.xbill.DNS.TextParseException;
 import org.xbill.DNS.Type;
 
@@ -59,5 +63,19 @@
         Record[] record = new Lookup(Name.root, Type.ANY).run();
         if (record !=null) System.out.println(record[0]);
     }
+    
+    public void testMultipleStrings() throws Exception {
+        Record[] rr = new Record[] { 
TXTRecord.fromString(Name.fromString("test.local."), Type.TXT, DClass.IN, 0, 
"\"string \" \"concatenated\"", Name.fromString("local.")) };
+        assertEquals("string concatenated", 
DNSServiceXBillImpl.convertRecordsToList(rr).get(0));
+
+        rr = new Record[] { 
TXTRecord.fromString(Name.fromString("test.local."), Type.TXT, DClass.IN, 0, 
"string", Name.fromString("local.")) };
+        assertEquals("string", 
DNSServiceXBillImpl.convertRecordsToList(rr).get(0));
+
+        rr = new Record[] { 
TXTRecord.fromString(Name.fromString("test.local."), Type.TXT, DClass.IN, 0, 
"\"quoted string\"", Name.fromString("local.")) };
+        assertEquals("quoted string", 
DNSServiceXBillImpl.convertRecordsToList(rr).get(0));
+
+        rr = new Record[] { 
SPFRecord.fromString(Name.fromString("test.local."), Type.SPF, DClass.IN, 0, 
"\"quot\" \"ed st\" \"ring\"", Name.fromString("local.")) };
+        assertEquals("quoted string", 
DNSServiceXBillImpl.convertRecordsToList(rr).get(0));
+    }
 
 }



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

Reply via email to