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 2010/06/13 17:07:35 UTC

svn commit: r954239 - in /james/jdkim/trunk: ./ assemble/ mailets/ mailets/src/main/java/org/apache/james/jdkim/mailets/ mailets/src/test/java/org/apache/james/jdkim/mailets/ main/ main/src/main/java/org/apache/james/jdkim/ main/src/main/java/org/apach...

Author: bago
Date: Sun Jun 13 15:07:35 2010
New Revision: 954239

URL: http://svn.apache.org/viewvc?rev=954239&view=rev
Log:
Updated source code to java 5 using generics (JDKIM-16)
Updated mime4j dependency to 0.7-SNAPSHOT to solve some parsing/signing issue (JDKIM-17)
Updated log4j/apache-mailet-base to latest available. Updated dnsjava to 2.0.8.

Modified:
    james/jdkim/trunk/assemble/pom.xml
    james/jdkim/trunk/mailets/pom.xml
    james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMSign.java
    james/jdkim/trunk/mailets/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java
    james/jdkim/trunk/main/pom.xml
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMCommon.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/Headers.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/PublicKeyRecord.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/PublicKeyRecordRetriever.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/SignatureRecord.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/canon/CompoundOutputStream.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/DNSPublicKeyRecordRetriever.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/MultiplexingPublicKeyRecordRetriever.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/PublicKeyRecordImpl.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/SignatureRecordImpl.java
    james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/TagValue.java
    james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java
    james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java
    james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java
    james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java
    james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/canon/CompoundOutputStreamTest.java
    james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/tagvalue/TagValueTest.java
    james/jdkim/trunk/pom.xml

Modified: james/jdkim/trunk/assemble/pom.xml
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/assemble/pom.xml?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/assemble/pom.xml (original)
+++ james/jdkim/trunk/assemble/pom.xml Sun Jun 13 15:07:35 2010
@@ -54,7 +54,7 @@
     </dependency>
     <dependency>
       <groupId>org.apache.james</groupId>
-      <artifactId>apache-mime4j</artifactId>
+      <artifactId>apache-mime4j-core</artifactId>
     </dependency>
   </dependencies>
 

Modified: james/jdkim/trunk/mailets/pom.xml
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/mailets/pom.xml?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/mailets/pom.xml (original)
+++ james/jdkim/trunk/mailets/pom.xml Sun Jun 13 15:07:35 2010
@@ -18,16 +18,16 @@
     specific language governing permissions and limitations
     under the License.    
   -->
-  <parent>
-    <artifactId>apache-jdkim-project</artifactId>
-    <groupId>org.apache.james.jdkim</groupId>
-    <version>0.2-SNAPSHOT</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.james.jdkim</groupId>
-  <artifactId>apache-jdkim-mailets</artifactId>
-  <name>jDKIM Mailets for Apache James</name>
-  <version>0.2-SNAPSHOT</version>
+  <parent>
+    <artifactId>apache-jdkim-project</artifactId>
+    <groupId>org.apache.james.jdkim</groupId>
+    <version>0.2-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.james.jdkim</groupId>
+  <artifactId>apache-jdkim-mailets</artifactId>
+  <name>jDKIM Mailets for Apache James</name>
+  <version>0.2-SNAPSHOT</version>
   <url>http://james.apache.org/jdkim/mailets/</url>
   <description>
     Mailets integrating DKIM functions 
@@ -84,5 +84,10 @@
       <groupId>ca.juliusdavies</groupId>
       <artifactId>not-yet-commons-ssl</artifactId>
     </dependency>
+    <dependency>
+      <groupId>commons-codec</groupId>
+      <artifactId>commons-codec</artifactId>
+      <version>1.4</version>
+    </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>

Modified: james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMSign.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMSign.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMSign.java (original)
+++ james/jdkim/trunk/mailets/src/main/java/org/apache/james/jdkim/mailets/DKIMSign.java Sun Jun 13 15:07:35 2010
@@ -86,14 +86,15 @@ public class DKIMSign extends GenericMai
      */
     private final class MimeMessageHeaders implements Headers {
 
-        private Map/* String, String */headers;
-        private List/* String */fields;
+        private Map<String, List<String>> headers;
+        private List<String> fields;
 
+        @SuppressWarnings("unchecked")
         public MimeMessageHeaders(MimeMessage message)
                 throws MessagingException {
-            headers = new HashMap();
-            fields = new LinkedList();
-            for (Enumeration e = message.getAllHeaderLines(); e
+            headers = new HashMap<String, List<String>>();
+            fields = new LinkedList<String>();
+            for (Enumeration<String> e = message.getAllHeaderLines(); e
                     .hasMoreElements();) {
                 String head = (String) e.nextElement();
                 int p = head.indexOf(':');
@@ -102,21 +103,21 @@ public class DKIMSign extends GenericMai
                 String headerName = head.substring(0, p).trim();
                 String headerNameLC = headerName.toLowerCase();
                 fields.add(headerName);
-                List/* String */strings = (List) headers.get(headerNameLC);
+                List<String> strings = (List<String>) headers.get(headerNameLC);
                 if (strings == null) {
-                    strings = new LinkedList();
+                    strings = new LinkedList<String>();
                     headers.put(headerNameLC, strings);
                 }
                 strings.add(head);
             }
         }
 
-        public List getFields() {
+        public List<String> getFields() {
             return fields;
         }
 
-        public List getFields(String name) {
-            return (List) headers.get(name);
+        public List<String> getFields(String name) {
+            return headers.get(name);
         }
     }
 
@@ -175,25 +176,26 @@ public class DKIMSign extends GenericMai
 
     }
 
+    @SuppressWarnings("unchecked")
     private void prependHeader(MimeMessage message, String signatureHeader)
             throws MessagingException {
-        List prevHeader = new LinkedList();
+        List<String> prevHeader = new LinkedList<String>();
         // read all the headers
-        for (Enumeration e = message.getAllHeaderLines(); e.hasMoreElements();) {
-            String headerLine = (String) e.nextElement();
+        for (Enumeration<String> e = message.getAllHeaderLines(); e.hasMoreElements();) {
+            String headerLine = e.nextElement();
             prevHeader.add(headerLine);
         }
         // remove all the headers
-        for (Enumeration e = message.getAllHeaders(); e.hasMoreElements();) {
-            Header header = (Header) e.nextElement();
+        for (Enumeration<Header> e = message.getAllHeaders(); e.hasMoreElements();) {
+            Header header = e.nextElement();
             message.removeHeader(header.getName());
         }
         // add our header
         message.addHeaderLine(signatureHeader);
         // add the remaining headers using "addHeaderLine" that won't alter the
         // insertion order.
-        for (Iterator i = prevHeader.iterator(); i.hasNext();) {
-            String header = (String) i.next();
+        for (Iterator<String> i = prevHeader.iterator(); i.hasNext();) {
+            String header = i.next();
             message.addHeaderLine(header);
         }
     }

Modified: james/jdkim/trunk/mailets/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/mailets/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/mailets/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java (original)
+++ james/jdkim/trunk/mailets/src/test/java/org/apache/james/jdkim/mailets/DKIMSignTest.java Sun Jun 13 15:07:35 2010
@@ -180,7 +180,7 @@ public class DKIMSignTest extends TestCa
         MockPublicKeyRecordRetriever mockPublicKeyRecordRetriever = new MockPublicKeyRecordRetriever(
                 "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYDaYKXzwVYwqWbLhmuJ66aTAN8wmDR+rfHE8HfnkSOax0oIoTM5zquZrTLo30870YMfYzxwfB6j/Nz3QdwrUD/t0YMYJiUKyWJnCKfZXHJBJ+yfRHr7oW+UW3cVo9CG2bBfIxsInwYe175g9UjyntJpWueqdEIo1c2bhv9Mp66QIDAQAB;",
                 "selector", "example.com");
-        List/* SignatureRecord */ rs = new DKIMVerifier(mockPublicKeyRecordRetriever)
+        List<SignatureRecord> rs = new DKIMVerifier(mockPublicKeyRecordRetriever)
                 .verify(new ByteArrayInputStream(res.getBytes()));
         
         // check we have a valued signatureTimestamp

Modified: james/jdkim/trunk/main/pom.xml
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/pom.xml?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/pom.xml (original)
+++ james/jdkim/trunk/main/pom.xml Sun Jun 13 15:07:35 2010
@@ -91,7 +91,7 @@
 
     <dependency>
       <groupId>org.apache.james</groupId>
-      <artifactId>apache-mime4j</artifactId>
+      <artifactId>apache-mime4j-core</artifactId>
     </dependency>
     <dependency>
     	<groupId>log4j</groupId>

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMCommon.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMCommon.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMCommon.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMCommon.java Sun Jun 13 15:07:35 2010
@@ -60,7 +60,7 @@ public abstract class DKIMCommon {
     }
 
     protected static void signatureCheck(Headers h, SignatureRecord sign,
-            List headers, Signature signature)
+            List<CharSequence> headers, Signature signature)
             throws SignatureException, PermFailException {
 
         boolean relaxedHeaders = SignatureRecord.RELAXED.equals(sign
@@ -76,19 +76,19 @@ public abstract class DKIMCommon {
         // NOTE: this could be improved by using iterators.
         // NOTE: this relies on the list returned by Message being in insertion
         // order
-        Map/* String, Integer */processedHeader = new HashMap();
+        Map<String, Integer> processedHeader = new HashMap<String, Integer>();
 
-        for (Iterator i = headers.iterator(); i.hasNext();) {
-            CharSequence header = (CharSequence) i.next();
+        for (Iterator<CharSequence> i = headers.iterator(); i.hasNext();) {
+            CharSequence header = i.next();
             // NOTE check this getter is case insensitive
-            List hl = h.getFields(header.toString());
+            List<String> hl = h.getFields(header.toString());
             if (hl != null && hl.size() > 0) {
-                Integer done = (Integer) processedHeader.get(header.toString());
+                Integer done = processedHeader.get(header.toString());
                 if (done == null)
                     done = new Integer(0); /* Integer.valueOf(0) */
                 int doneHeaders = done.intValue() + 1;
                 if (doneHeaders <= hl.size()) {
-                    String fv = (String) hl.get(hl.size() - doneHeaders);
+                    String fv = hl.get(hl.size() - doneHeaders);
                     updateSignature(signature, relaxedHeaders, header, fv);
                     signature.update("\r\n".getBytes());
                     processedHeader.put(header.toString(), new Integer(

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMSigner.java Sun Jun 13 15:07:35 2010
@@ -91,7 +91,7 @@ public class DKIMSigner extends DKIMComm
         
         bhj.getSignatureRecord().setBodyHash(computedHash);
         
-        List headers = bhj.getSignatureRecord().getHeaders();
+        List<CharSequence> headers = bhj.getSignatureRecord().getHeaders();
         try {
             // TODO handle b= in SignatureRecord.
             // whenever any tag is changed the b should be invalidated and the
@@ -117,7 +117,7 @@ public class DKIMSigner extends DKIMComm
         }
     }
 
-    private byte[] signatureSign(Headers h, SignatureRecord sign, PrivateKey key, List headers)
+    private byte[] signatureSign(Headers h, SignatureRecord sign, PrivateKey key, List<CharSequence> headers)
             throws NoSuchAlgorithmException, InvalidKeyException,
             SignatureException, PermFailException {
 

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/DKIMVerifier.java Sun Jun 13 15:07:35 2010
@@ -82,14 +82,14 @@ public class DKIMVerifier extends DKIMCo
         return publicKeyRecordRetriever;
     }
 
-    public PublicKeyRecord publicKeySelector(List records)
+    public PublicKeyRecord publicKeySelector(List<String> records)
             throws PermFailException {
         String lastError = null;
         if (records == null || records.size() == 0) {
             lastError = "no key for signature";
         } else {
-            for (Iterator i = records.iterator(); i.hasNext();) {
-                String record = (String) i.next();
+            for (Iterator<String> i = records.iterator(); i.hasNext();) {
+                String record = i.next();
                 try {
                     PublicKeyRecord pk = newPublicKeyRecord(record);
                     pk.validate();
@@ -160,12 +160,12 @@ public class DKIMVerifier extends DKIMCo
         PublicKeyRecord key = null;
         TempFailException lastTempFailure = null;
         PermFailException lastPermFailure = null;
-        for (Iterator rlm = sign.getRecordLookupMethods().iterator(); key == null
+        for (Iterator<CharSequence> rlm = sign.getRecordLookupMethods().iterator(); key == null
                 && rlm.hasNext();) {
-            String method = (String) rlm.next();
+            CharSequence method = rlm.next();
             try {
                 PublicKeyRecordRetriever pkrr = getPublicKeyRecordRetriever();
-                List records = pkrr.getRecords(method, sign.getSelector()
+                List<String> records = pkrr.getRecords(method, sign.getSelector()
                         .toString(), sign.getDToken().toString());
                 PublicKeyRecord tempKey = publicKeySelector(records);
                 // checks wether the key is applicable to the signature
@@ -208,7 +208,7 @@ public class DKIMVerifier extends DKIMCo
      * @throws FailException
      *                 if no signature can be verified
      */
-    public List/* SignatureRecord */verify(InputStream is) throws IOException,
+    public List<SignatureRecord> verify(InputStream is) throws IOException,
             FailException {
         Message message;
         try {
@@ -235,10 +235,10 @@ public class DKIMVerifier extends DKIMCo
      * @throws FailException
      *                 if no signature can be verified
      */
-    public List/* SignatureRecord */verify(Headers messageHeaders,
+    public List<SignatureRecord> verify(Headers messageHeaders,
             InputStream bodyInputStream) throws IOException, FailException {
         // System.out.println(message.getFields("DKIM-Signature"));
-        List fields = messageHeaders.getFields("DKIM-Signature");
+        List<String> fields = messageHeaders.getFields("DKIM-Signature");
         // if (fields.size() > 1) throw new RuntimeException("here we are!");
         if (fields == null || fields.size() == 0) {
             throw new PermFailException("DKIM-Signature field not found");
@@ -247,11 +247,11 @@ public class DKIMVerifier extends DKIMCo
         // For each DKIM-signature we prepare an hashjob.
         // We calculate all hashes concurrently so to read
         // the inputstream only once.
-        Map/* String, BodyHashJob */bodyHashJobs = new HashMap();
-        List/* OutputStream */outputStreams = new LinkedList();
-        Map/* String, Exception */signatureExceptions = new Hashtable();
-        for (Iterator i = fields.iterator(); i.hasNext();) {
-            String signatureField = (String) i.next();
+        Map<String, BodyHasher> bodyHashJobs = new HashMap<String, BodyHasher>();
+        List<OutputStream> outputStreams = new LinkedList<OutputStream>();
+        Hashtable<String, FailException> signatureExceptions = new Hashtable<String, FailException>();
+        for (Iterator<String> i = fields.iterator(); i.hasNext();) {
+            String signatureField = i.next();
             try {
                 int pos = signatureField.indexOf(':');
                 if (pos > 0) {
@@ -283,7 +283,7 @@ public class DKIMVerifier extends DKIMCo
                     // e.g: the canonicalization method could be checked now.
                     PublicKeyRecord publicKeyRecord = publicRecordLookup(signatureRecord);
 
-                    List signedHeadersList = signatureRecord.getHeaders();
+                    List<CharSequence> signedHeadersList = signatureRecord.getHeaders();
 
                     byte[] decoded = signatureRecord.getSignature();
                     signatureVerify(messageHeaders, signatureRecord, decoded,
@@ -330,9 +330,9 @@ public class DKIMVerifier extends DKIMCo
         // simultaneous computation of all the hashes.
         DKIMCommon.streamCopy(bodyInputStream, o);
 
-        List/* SignatureRecord */verifiedSignatures = new LinkedList();
-        for (Iterator i = bodyHashJobs.values().iterator(); i.hasNext();) {
-            BodyHasher bhj = (BodyHasher) i.next();
+        List<SignatureRecord> verifiedSignatures = new LinkedList<SignatureRecord>();
+        for (Iterator<BodyHasher> i = bodyHashJobs.values().iterator(); i.hasNext();) {
+            BodyHasher bhj = i.next();
 
             byte[] computedHash = bhj.getDigest();
             byte[] expectedBodyHash = bhj.getSignatureRecord().getBodyHash();
@@ -373,9 +373,9 @@ public class DKIMVerifier extends DKIMCo
 
     }
 
-    private FailException prepareException(Map signatureExceptions) {
+    private FailException prepareException(Map<String, FailException> signatureExceptions) {
         if (signatureExceptions.size() == 1) {
-            return (FailException) signatureExceptions.values().iterator()
+            return signatureExceptions.values().iterator()
                     .next();
         } else {
             // TODO loops signatureExceptions to give a more complete
@@ -387,7 +387,7 @@ public class DKIMVerifier extends DKIMCo
     }
 
     private void signatureVerify(Headers h, SignatureRecord sign,
-            byte[] decoded, PublicKeyRecord key, List headers)
+            byte[] decoded, PublicKeyRecord key, List<CharSequence> headers)
             throws NoSuchAlgorithmException, InvalidKeyException,
             SignatureException, PermFailException {
 

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/Headers.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/Headers.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/Headers.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/Headers.java Sun Jun 13 15:07:35 2010
@@ -28,7 +28,7 @@ public interface Headers {
      * 
      * @return the list of <code>Field</code> objects.
      */
-    public abstract List/* String */getFields();
+    public abstract List<String> getFields();
 
     /**
      * Gets all <code>Field</code>s having the specified field name in a case
@@ -38,6 +38,6 @@ public interface Headers {
      *                the field name (e.g. From, Subject).
      * @return the list of fields.
      */
-    public abstract List/* String */getFields(final String name);
+    public abstract List<String> getFields(final String name);
 
 }
\ No newline at end of file

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/PublicKeyRecord.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/PublicKeyRecord.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/PublicKeyRecord.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/PublicKeyRecord.java Sun Jun 13 15:07:35 2010
@@ -36,18 +36,18 @@ public interface PublicKeyRecord {
     /**
      * @return null if "any", otherwise a list of supported methods
      */
-    public abstract List/* String */getAcceptableHashMethods();
+    public abstract List<CharSequence> getAcceptableHashMethods();
 
     /**
      * @return null if "any", otherwise a list of supported methods
      */
-    public abstract List/* String */getAcceptableKeyTypes();
+    public abstract List<CharSequence> getAcceptableKeyTypes();
 
     public abstract Pattern getGranularityPattern();
 
     public abstract PublicKey getPublicKey();
 
-    public abstract List getFlags();
+    public abstract List<CharSequence> getFlags();
 
     public abstract boolean isTesting();
 

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/PublicKeyRecordRetriever.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/PublicKeyRecordRetriever.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/PublicKeyRecordRetriever.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/PublicKeyRecordRetriever.java Sun Jun 13 15:07:35 2010
@@ -39,7 +39,7 @@ public interface PublicKeyRecordRetrieve
      * @throws PermFailException
      *                 in case of unsupported options
      */
-    public List/* String */getRecords(CharSequence methodAndOption,
+    public List<String> getRecords(CharSequence methodAndOption,
             CharSequence selector, CharSequence token)
             throws TempFailException, PermFailException;
 

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/SignatureRecord.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/SignatureRecord.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/SignatureRecord.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/api/SignatureRecord.java Sun Jun 13 15:07:35 2010
@@ -31,7 +31,7 @@ public interface SignatureRecord {
     public final static String SIMPLE = "simple";
     public final static String ALL = ";all;";
 
-    public abstract List/* CharSequence */getHeaders();
+    public abstract List<CharSequence> getHeaders();
 
     public abstract CharSequence getIdentityLocalPart();
 
@@ -55,7 +55,7 @@ public interface SignatureRecord {
 
     public abstract String getBodyCanonicalisationMethod();
 
-    public abstract List getRecordLookupMethods();
+    public abstract List<CharSequence> getRecordLookupMethods();
 
     public abstract void validate();
 

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/canon/CompoundOutputStream.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/canon/CompoundOutputStream.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/canon/CompoundOutputStream.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/canon/CompoundOutputStream.java Sun Jun 13 15:07:35 2010
@@ -26,35 +26,35 @@ import java.util.List;
 
 public class CompoundOutputStream extends OutputStream {
 
-    List/* OutputStream */outputStreams;
+    List<? extends OutputStream> outputStreams;
 
-    public CompoundOutputStream(List outputStreams) {
+    public CompoundOutputStream(List<? extends OutputStream> outputStreams) {
         this.outputStreams = outputStreams;
     }
 
     public void close() throws IOException {
-        for (Iterator i = outputStreams.iterator(); i.hasNext();)
-            ((OutputStream) i.next()).close();
+        for (Iterator<? extends OutputStream> i = outputStreams.iterator(); i.hasNext();)
+            i.next().close();
     }
 
     public void flush() throws IOException {
-        for (Iterator i = outputStreams.iterator(); i.hasNext();)
-            ((OutputStream) i.next()).flush();
+        for (Iterator<? extends OutputStream> i = outputStreams.iterator(); i.hasNext();)
+            i.next().flush();
     }
 
     public void write(byte[] b, int off, int len) throws IOException {
-        for (Iterator i = outputStreams.iterator(); i.hasNext();)
-            ((OutputStream) i.next()).write(b, off, len);
+        for (Iterator<? extends OutputStream> i = outputStreams.iterator(); i.hasNext();)
+            i.next().write(b, off, len);
     }
 
     public void write(byte[] b) throws IOException {
-        for (Iterator i = outputStreams.iterator(); i.hasNext();)
-            ((OutputStream) i.next()).write(b);
+        for (Iterator<? extends OutputStream> i = outputStreams.iterator(); i.hasNext();)
+            i.next().write(b);
     }
 
     public void write(int b) throws IOException {
-        for (Iterator i = outputStreams.iterator(); i.hasNext();)
-            ((OutputStream) i.next()).write(b);
+        for (Iterator<? extends OutputStream> i = outputStreams.iterator(); i.hasNext();)
+            i.next().write(b);
     }
 
 }

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/DNSPublicKeyRecordRetriever.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/DNSPublicKeyRecordRetriever.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/DNSPublicKeyRecordRetriever.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/DNSPublicKeyRecordRetriever.java Sun Jun 13 15:07:35 2010
@@ -49,7 +49,7 @@ public class DNSPublicKeyRecordRetriever
     /**
      * @see org.apache.james.jdkim.api.PublicKeyRecordRetriever#getRecords(java.lang.CharSequence, java.lang.CharSequence, java.lang.CharSequence)
      */
-    public List/* String */getRecords(CharSequence methodAndOptions,
+    public List<String> getRecords(CharSequence methodAndOptions,
             CharSequence selector, CharSequence token)
             throws TempFailException, PermFailException {
         if (!"dns/txt".equals(methodAndOptions))
@@ -67,7 +67,7 @@ public class DNSPublicKeyRecordRetriever
                 throw new TempFailException(query.getErrorString());
             }
 
-            List/* String */records = convertRecordsToList(rr);
+            List<String> records = convertRecordsToList(rr);
             return records;
         } catch (TextParseException e) {
             // TODO log
@@ -82,10 +82,11 @@ public class DNSPublicKeyRecordRetriever
      *                Record array
      * @return list
      */
-    public static List/* String */convertRecordsToList(Record[] rr) {
-        List/* String */records;
+    @SuppressWarnings("unchecked")
+    public static List<String> convertRecordsToList(Record[] rr) {
+        List<String> records;
         if (rr != null && rr.length > 0) {
-            records = new ArrayList/* String */();
+            records = new ArrayList<String>();
             for (int i = 0; i < rr.length; i++) {
                 switch (rr[i].getType()) {
                 case Type.TXT:
@@ -99,9 +100,9 @@ public class DNSPublicKeyRecordRetriever
                         records.add(((String) txt.getStrings().get(0)));
                     } else {
                         StringBuffer sb = new StringBuffer();
-                        for (Iterator/* String */it = txt.getStrings()
+                        for (Iterator<String> it = txt.getStrings()
                                 .iterator(); it.hasNext();) {
-                            String k = (String) it.next();
+                            String k = it.next();
                             // This was required until dnsjava 2.0.6 because
                             // dnsjava was escaping
                             // the result like it was doublequoted (JDKIM-7).

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/Message.java Sun Jun 13 15:07:35 2010
@@ -31,16 +31,19 @@ import java.util.Map;
 import org.apache.james.jdkim.api.Headers;
 import org.apache.james.mime4j.MimeException;
 import org.apache.james.mime4j.io.EOLConvertingInputStream;
-import org.apache.james.mime4j.parser.MimeEntityConfig;
-import org.apache.james.mime4j.parser.MimeTokenStream;
+import org.apache.james.mime4j.parser.AbstractContentHandler;
+import org.apache.james.mime4j.parser.MimeStreamParser;
+import org.apache.james.mime4j.stream.BodyDescriptor;
+import org.apache.james.mime4j.stream.MimeEntityConfig;
+import org.apache.james.mime4j.stream.RawField;
 
 /**
  * The header of an entity (see RFC 2045).
  */
-public class Message implements Headers {
+public class Message extends AbstractContentHandler implements Headers {
 
-    private List fields = new LinkedList();
-    private Map fieldMap = new HashMap();
+    private List<String> fields = new LinkedList<String>();
+    private Map<String, List<String>> fieldMap = new HashMap<String, List<String>>();
     private InputStream bodyIs = null;
 
     /**
@@ -63,45 +66,27 @@ public class Message implements Headers 
     public Message(InputStream is) throws IOException, MimeException {
         MimeEntityConfig mec = new MimeEntityConfig();
         mec.setMaxLineLen(10000);
-        MimeTokenStream stream = new ExtendedMimeTokenStream(mec);
-        stream.setRecursionMode(MimeTokenStream.M_FLAT);
-        // DKIM requires no isolated CR or LF, so we alter them at source.
-        stream.parse(new EOLConvertingInputStream(is));
-        for (int state = stream.getState(); state != MimeTokenStream.T_END_OF_STREAM; state = stream
-                .next()) {
-            switch (state) {
-            // a field
-            case MimeTokenStream.T_FIELD:
-                addField(stream.getFieldName(), stream.getField());
-                break;
-
-            // expected ignored tokens
-            case MimeTokenStream.T_START_MESSAGE:
-            case MimeTokenStream.T_END_MESSAGE:
-            case MimeTokenStream.T_START_HEADER:
-            case MimeTokenStream.T_END_HEADER:
-                break;
-
-            // the body stream
-            case MimeTokenStream.T_BODY:
-                this.bodyIs = stream.getInputStream();
-                break;
-
-            default:
-                throw new IllegalStateException("Unexpected stream message: "
-                        + state);
-            }
-            // stop parsing after header
-            if (bodyIs != null)
-                break;
-        }
-
+        
+        final MimeStreamParser parser = new MimeStreamParser(mec);
+        parser.setFlat(true);
+        parser.setContentDecoding(false);
+        parser.setContentHandler(this);
+        parser.parse(new EOLConvertingInputStream(is));
     }
 
     public InputStream getBodyInputStream() {
         return bodyIs;
     }
 
+    public void field(RawField rawField) throws MimeException {
+        addField(rawField.getName(), new String(rawField.getRaw().toByteArray()));
+    }
+    
+    public void body(BodyDescriptor bd, InputStream is) throws MimeException,
+            IOException {
+        setBodyInputStream(is);
+    }
+
     public void setBodyInputStream(InputStream is) {
         bodyIs = is;
     }
@@ -113,9 +98,9 @@ public class Message implements Headers 
      *                the field to add.
      */
     public void addField(String fieldName, String field) {
-        List values = (List) fieldMap.get(fieldName.toLowerCase());
+        List<String> values = fieldMap.get(fieldName.toLowerCase());
         if (values == null) {
-            values = new LinkedList();
+            values = new LinkedList<String>();
             fieldMap.put(fieldName.toLowerCase(), values);
         }
         values.add(field);
@@ -125,17 +110,17 @@ public class Message implements Headers 
     /**
      * @see org.apache.james.jdkim.api.Headers#getFields()
      */
-    public List getFields() {
+    public List<String> getFields() {
         return Collections.unmodifiableList(fields);
     }
 
     /**
      * @see org.apache.james.jdkim.api.Headers#getFields(java.lang.String)
      */
-    public List getFields(final String name) {
+    public List<String> getFields(final String name) {
         final String lowerCaseName = name.toLowerCase();
-        final List l = (List) fieldMap.get(lowerCaseName);
-        final List results;
+        final List<String> l = fieldMap.get(lowerCaseName);
+        final List<String> results;
         if (l == null || l.isEmpty()) {
             results = null;
         } else {
@@ -152,8 +137,8 @@ public class Message implements Headers 
      */
     public String toString() {
         StringBuffer str = new StringBuffer(128);
-        for (Iterator i = fields.iterator(); i.hasNext();) {
-            String field = (String) i.next();
+        for (Iterator<String> i = fields.iterator(); i.hasNext();) {
+            String field = i.next();
             str.append(field);
         }
         InputStream is = getBodyInputStream();
@@ -171,14 +156,4 @@ public class Message implements Headers 
         return str.toString();
     }
 
-    /**
-     * Extends this to publish the constructor
-     */
-    private final class ExtendedMimeTokenStream extends MimeTokenStream {
-
-        public ExtendedMimeTokenStream(MimeEntityConfig mec) {
-            super(mec);
-        }
-    }
-
 }
\ No newline at end of file

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/MultiplexingPublicKeyRecordRetriever.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/MultiplexingPublicKeyRecordRetriever.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/MultiplexingPublicKeyRecordRetriever.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/impl/MultiplexingPublicKeyRecordRetriever.java Sun Jun 13 15:07:35 2010
@@ -30,10 +30,10 @@ import org.apache.james.jdkim.exceptions
 public class MultiplexingPublicKeyRecordRetriever implements
         PublicKeyRecordRetriever {
 
-    private Map/* String, PublicKeyRecordRetriever */retrievers;
+    private Map<String, PublicKeyRecordRetriever> retrievers;
 
     public MultiplexingPublicKeyRecordRetriever() {
-        retrievers = new HashMap();
+        retrievers = new HashMap<String, PublicKeyRecordRetriever>();
     }
 
     public MultiplexingPublicKeyRecordRetriever(String methodName,
@@ -46,13 +46,12 @@ public class MultiplexingPublicKeyRecord
         retrievers.put(methodName, pkrr);
     }
 
-    public List getRecords(CharSequence methodAndOption, CharSequence selector,
+    public List<String> getRecords(CharSequence methodAndOption, CharSequence selector,
             CharSequence token) throws TempFailException, PermFailException {
         int pos = methodAndOption.toString().indexOf('/');
         String method = pos != -1 ? methodAndOption.subSequence(0, pos)
                 .toString() : methodAndOption.toString();
-        PublicKeyRecordRetriever pkrr = (PublicKeyRecordRetriever) retrievers
-                .get(method);
+        PublicKeyRecordRetriever pkrr = retrievers.get(method);
         if (pkrr != null) {
             return pkrr.getRecords(methodAndOption, selector, token);
         } else {

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/PublicKeyRecordImpl.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/PublicKeyRecordImpl.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/PublicKeyRecordImpl.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/PublicKeyRecordImpl.java Sun Jun 13 15:07:35 2010
@@ -51,10 +51,10 @@ public class PublicKeyRecordImpl extends
         super(data);
     }
 
-    protected Map newTagValue() {
+    protected Map<String, CharSequence> newTagValue() {
         // extensions may override this to use TreeMaps in order to keep track
         // of orders
-        return new LinkedHashMap();
+        return new LinkedHashMap<String, CharSequence>();
     }
 
     protected void init() {
@@ -90,7 +90,7 @@ public class PublicKeyRecordImpl extends
      * @see org.apache.james.jdkim.api.PublicKeyRecord#isHashMethodSupported(java.lang.CharSequence)
      */
     public boolean isHashMethodSupported(CharSequence hash) {
-        List hashes = getAcceptableHashMethods();
+        List<CharSequence> hashes = getAcceptableHashMethods();
         if (hashes == null)
             return true;
         return isInListCaseInsensitive(hash, hashes);
@@ -100,14 +100,14 @@ public class PublicKeyRecordImpl extends
      * @see org.apache.james.jdkim.api.PublicKeyRecord#isKeyTypeSupported(java.lang.CharSequence)
      */
     public boolean isKeyTypeSupported(CharSequence hash) {
-        List hashes = getAcceptableKeyTypes();
+        List<CharSequence> hashes = getAcceptableKeyTypes();
         return isInListCaseInsensitive(hash, hashes);
     }
 
     /**
      * @see org.apache.james.jdkim.api.PublicKeyRecord#getAcceptableHashMethods()
      */
-    public List/* String */getAcceptableHashMethods() {
+    public List<CharSequence> getAcceptableHashMethods() {
         if (ANY.equals(getValue("h")))
             return null;
         return stringToColonSeparatedList(getValue("h").toString(),
@@ -117,7 +117,7 @@ public class PublicKeyRecordImpl extends
     /**
      * @see org.apache.james.jdkim.api.PublicKeyRecord#getAcceptableKeyTypes()
      */
-    public List/* String */getAcceptableKeyTypes() {
+    public List<CharSequence> getAcceptableKeyTypes() {
         return stringToColonSeparatedList(getValue("k").toString(),
                 hyphenatedWordPattern);
     }
@@ -155,13 +155,13 @@ public class PublicKeyRecordImpl extends
         }
     }
 
-    public List getFlags() {
+    public List<CharSequence> getFlags() {
         String flags = getValue("t").toString();
         String[] flagsStrings = flags.split(":");
-        List res = new ArrayList();
+        List<CharSequence> res = new ArrayList<CharSequence>();
         for (int i = 0; i < flagsStrings.length; i++) {
             res.add(trimFWS(flagsStrings[i], 0, flagsStrings[i].length() - 1,
-                    true).toString());
+                    true));
         }
         return res;
     }

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/SignatureRecordImpl.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/SignatureRecordImpl.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/SignatureRecordImpl.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/SignatureRecordImpl.java Sun Jun 13 15:07:35 2010
@@ -119,7 +119,7 @@ public class SignatureRecordImpl extends
     /**
      * @see org.apache.james.jdkim.api.SignatureRecord#getHeaders()
      */
-    public List/* CharSequence */getHeaders() {
+    public List<CharSequence> getHeaders() {
         return stringToColonSeparatedList(getValue("h").toString(),
                 hdrNamePattern);
     }
@@ -305,15 +305,15 @@ public class SignatureRecordImpl extends
         }
     }
 
-    public List getRecordLookupMethods() {
+    public List<CharSequence> getRecordLookupMethods() {
         String flags = getValue("q").toString();
         String[] flagsStrings = flags.split(":");
-        List res = new LinkedList();
+        List<CharSequence> res = new LinkedList<CharSequence>();
         for (int i = 0; i < flagsStrings.length; i++) {
             // TODO add validation method[/option]
             // if (VALIDATION)
             res.add(trimFWS(flagsStrings[i], 0, flagsStrings[i].length() - 1,
-                    true).toString());
+                    true));
         }
         return res;
     }

Modified: james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/TagValue.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/TagValue.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/TagValue.java (original)
+++ james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/TagValue.java Sun Jun 13 15:07:35 2010
@@ -45,13 +45,13 @@ public class TagValue {
             + "((\r\n[\t ]|[\t ])+" + tval + ")*)?$");
 
     // we may use a TreeMap because we may need to know original order.
-    private Map/* String, CharSequence */tagValues;
+    private Map<String, CharSequence> tagValues;
 
-    protected Set/* String */mandatoryTags = new HashSet();
-    protected Map/* String, CharSequence */defaults = new HashMap();
+    protected Set<String> mandatoryTags = new HashSet<String>();
+    protected Map<String, CharSequence> defaults = new HashMap<String, CharSequence>();
     private String stringRepresentation = null;
 
-    protected Set tagSet() {
+    protected Set<String> tagSet() {
         return tagValues.keySet();
     }
     protected boolean containsTag(String tag) {
@@ -121,10 +121,10 @@ public class TagValue {
         parse(data);
     }
 
-    protected Map newTagValue() {
+    protected Map<String, CharSequence> newTagValue() {
         // extensions may override this to use TreeMaps in order to keep track
         // of orders
-        return new HashMap();
+        return new HashMap<String, CharSequence>();
     }
 
     protected void init() {
@@ -210,7 +210,7 @@ public class TagValue {
         return true;
     }
 
-    public Set getTags() {
+    public Set<String> getTags() {
         return tagValues.keySet();
     }
 
@@ -234,15 +234,15 @@ public class TagValue {
 
     public void validate() {
         // check mandatory fields
-        for (Iterator i = mandatoryTags.iterator(); i.hasNext();) {
-            String tag = (String) i.next();
+        for (Iterator<String> i = mandatoryTags.iterator(); i.hasNext();) {
+            String tag = i.next();
             if (getValue(tag) == null)
                 throw new IllegalStateException("Missing mandatory tag: " + tag);
         }
     }
 
-    protected List stringToColonSeparatedList(String h, Pattern pattern) {
-        List headers = new ArrayList();
+    protected List<CharSequence> stringToColonSeparatedList(String h, Pattern pattern) {
+        List<CharSequence> headers = new ArrayList<CharSequence>();
         for (int i = 0; i < h.length(); i++) {
             int p = h.indexOf(':', i);
             if (p == -1)
@@ -259,9 +259,9 @@ public class TagValue {
         return headers;
     }
 
-    protected boolean isInListCaseInsensitive(CharSequence hash, List hashes) {
-        for (Iterator i = hashes.iterator(); i.hasNext();) {
-            CharSequence suppHash = (CharSequence) i.next();
+    protected boolean isInListCaseInsensitive(CharSequence hash, List<CharSequence> hashes) {
+        for (Iterator<CharSequence> i = hashes.iterator(); i.hasNext();) {
+            CharSequence suppHash = i.next();
             if (hash.toString().equalsIgnoreCase(suppHash.toString()))
                 return true;
         }
@@ -278,9 +278,9 @@ public class TagValue {
     private void updateStringRepresentation() {
         // calculate a new string representation
         StringBuffer res = new StringBuffer();
-        Set s = getTags();
-        for (Iterator i = s.iterator(); i.hasNext();) {
-            String tag = (String) i.next();
+        Set<String> s = getTags();
+        for (Iterator<String> i = s.iterator(); i.hasNext();) {
+            String tag = i.next();
             res.append(" ");
             res.append(tag);
             res.append("=");

Modified: james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java (original)
+++ james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MessageTest.java Sun Jun 13 15:07:35 2010
@@ -61,7 +61,7 @@ public class MessageTest extends TestCas
         Message m = new Message();
         m.addField("Subject", "Subject: test\r\n");
         m.addField("Subject", "Subject: test2\r\n");
-        List f = m.getFields("Subject");
+        List<String> f = m.getFields("Subject");
         assertEquals(2, f.size());
         assertEquals("Subject: test\r\n", f.get(0));
         assertEquals("Subject: test2\r\n", f.get(1));
@@ -72,36 +72,29 @@ public class MessageTest extends TestCas
         m.addField("Subject", "Subject: test\r\n");
         m.addField("Subject", "Subject: test2\r\n");
         m.addField("From", "From: test2\r\n");
-        List f = m.getFields();
-        List expects = new LinkedList();
+        List<String> f = m.getFields();
+        List<String> expects = new LinkedList<String>();
         expects.add("Subject: test\r\n");
         expects.add("Subject: test2\r\n");
         expects.add("From: test2\r\n");
-        for (Iterator i = f.iterator(); i.hasNext();) {
-            String field = (String) i.next();
+        for (Iterator<String> i = f.iterator(); i.hasNext();) {
+            String field = i.next();
             assertTrue(expects.remove(field));
         }
         assertEquals(0, expects.size());
     }
 
-    /*
-     * public void testGetField() throws MimeException, IOException { String
-     * text = "Subject: test\r\n\r\nbody"; Headers m = new Message(new
-     * ByteArrayInputStream(text.getBytes())); Field f = m.getField("Subject");
-     * assertEquals(" test", f.getBody()); }
-     */
-
     public void testGetFieldsString() throws MimeException {
         Message m = new Message();
         m.addField("Subject", "Subject: test\r\n");
         m.addField("subject", "subject: test2\r\n");
         m.addField("From", "From: test2\r\n");
-        List f = m.getFields("Subject");
-        List expects = new LinkedList();
+        List<String> f = m.getFields("Subject");
+        List<String> expects = new LinkedList<String>();
         expects.add("Subject: test\r\n");
         expects.add("subject: test2\r\n");
-        for (Iterator i = f.iterator(); i.hasNext();) {
-            String field = (String) i.next();
+        for (Iterator<String> i = f.iterator(); i.hasNext();) {
+            String field = i.next();
             assertTrue(expects.remove(field));
         }
         assertEquals(0, expects.size());

Modified: james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java (original)
+++ james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MockPublicKeyRecordRetriever.java Sun Jun 13 15:07:35 2010
@@ -34,13 +34,13 @@ import org.apache.james.jdkim.exceptions
  */
 public class MockPublicKeyRecordRetriever implements PublicKeyRecordRetriever {
     private static final String _DOMAINKEY = "._domainkey.";
-    private Map/* String, List<String> */records = new HashMap();
+    private Map<String, List<String>> records = new HashMap<String, List<String>>();
 
     public void addRecord(String selector, String token, String record) {
         String key = selector + _DOMAINKEY + token;
-        List l = (List) records.get(key);
+        List<String> l = records.get(key);
         if (l == null) {
-            l = new LinkedList();
+            l = new LinkedList<String>();
             records.put(key, l);
         }
         if (record != null) {
@@ -57,12 +57,12 @@ public class MockPublicKeyRecordRetrieve
         addRecord(selector.toString(), token.toString(), record);
     }
 
-    public List getRecords(CharSequence methodAndOptions,
+    public List<String> getRecords(CharSequence methodAndOptions,
             CharSequence selector, CharSequence token)
             throws TempFailException, PermFailException {
         if ("dns/txt".equals(methodAndOptions)) {
             String search = selector + _DOMAINKEY + token;
-            List res = (List) records.get(search);
+            List<String> res = records.get(search);
             if (res == null || res.size() > 0)
                 return res;
             else

Modified: james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java (original)
+++ james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/MultiplexingPublicKeyRecordRetrieverTest.java Sun Jun 13 15:07:35 2010
@@ -35,10 +35,10 @@ public class MultiplexingPublicKeyRecord
 
     private PublicKeyRecordRetriever myMethodRetriever = new PublicKeyRecordRetriever() {
 
-        public List getRecords(CharSequence methodAndOption,
+        public List<String> getRecords(CharSequence methodAndOption,
                 CharSequence selector, CharSequence token)
                 throws TempFailException, PermFailException {
-            List l = new ArrayList();
+            List<String> l = new ArrayList<String>();
             l.add(selector.toString());
             l.add(token.toString());
             return l;
@@ -64,8 +64,8 @@ public class MultiplexingPublicKeyRecord
 
     private void check(MultiplexingPublicKeyRecordRetriever pkrr, String method)
             throws TempFailException, PermFailException {
-        List l = pkrr.getRecords(method, "selector", "token");
-        Iterator i = l.iterator();
+        List<String> l = pkrr.getRecords(method, "selector", "token");
+        Iterator<String> i = l.iterator();
         assertEquals("selector", i.next());
         assertEquals("token", i.next());
         try {

Modified: james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java (original)
+++ james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/PublicKeyRecordTest.java Sun Jun 13 15:07:35 2010
@@ -88,7 +88,7 @@ public class PublicKeyRecordTest extends
         PublicKeyRecord pkr = new PublicKeyRecordImpl(
                 "k=rsa; h=sha1:sha256; p=XXXXXXXX=;");
         pkr.validate();
-        List methods = pkr.getAcceptableHashMethods();
+        List<CharSequence> methods = pkr.getAcceptableHashMethods();
         assertEquals("[sha1, sha256]", methods.toString());
         pkr = new PublicKeyRecordImpl("k=rsa; p=XXXXXXXX=;");
         pkr.validate();
@@ -100,7 +100,7 @@ public class PublicKeyRecordTest extends
         PublicKeyRecord pkr = new PublicKeyRecordImpl(
                 "k=rsa; h=sha1:sha256; p=XXXXXXXX=;");
         pkr.validate();
-        List methods = pkr.getAcceptableKeyTypes();
+        List<CharSequence> methods = pkr.getAcceptableKeyTypes();
         assertEquals("[rsa]", methods.toString());
         pkr = new PublicKeyRecordImpl("k=rsa:dsa; p=XXXXXXXX=;");
         pkr.validate();
@@ -202,7 +202,7 @@ public class PublicKeyRecordTest extends
         PublicKeyRecord pkr = new PublicKeyRecordImpl(
                 "k=rsa; t=y:s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");
         pkr.validate();
-        List flags = pkr.getFlags();
+        List<CharSequence> flags = pkr.getFlags();
         assertEquals("[y, s]", flags.toString());
         pkr = new PublicKeyRecordImpl(
                 "k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB");

Modified: james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/canon/CompoundOutputStreamTest.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/canon/CompoundOutputStreamTest.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/canon/CompoundOutputStreamTest.java (original)
+++ james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/canon/CompoundOutputStreamTest.java Sun Jun 13 15:07:35 2010
@@ -38,7 +38,7 @@ public class CompoundOutputStreamTest ex
     }
 
     public void testSingleBytes() throws NoSuchAlgorithmException, IOException {
-        List/* ByteArrayOutputStream */oss = new LinkedList();
+        List<ByteArrayOutputStream> oss = new LinkedList<ByteArrayOutputStream>();
         for (int i = 0; i < 5; i++) {
             oss.add(new ByteArrayOutputStream());
         }
@@ -47,21 +47,21 @@ public class CompoundOutputStreamTest ex
             os.write(testData[i]);
         }
         os.close();
-        for (Iterator i = oss.iterator(); i.hasNext();) {
-            ByteArrayOutputStream bos = (ByteArrayOutputStream) i.next();
+        for (Iterator<ByteArrayOutputStream> i = oss.iterator(); i.hasNext();) {
+            ByteArrayOutputStream bos = i.next();
             assertArrayEquals(testData, bos.toByteArray());
         }
     }
 
     public void testChunks() throws NoSuchAlgorithmException, IOException {
-        List/* ByteArrayOutputStream */oss = new LinkedList();
+        List<ByteArrayOutputStream> oss = new LinkedList<ByteArrayOutputStream>();
         for (int i = 0; i < 5; i++) {
             oss.add(new ByteArrayOutputStream());
         }
         CompoundOutputStream os = new CompoundOutputStream(oss);
         chunker(testData, os);
-        for (Iterator i = oss.iterator(); i.hasNext();) {
-            ByteArrayOutputStream bos = (ByteArrayOutputStream) i.next();
+        for (Iterator<ByteArrayOutputStream> i = oss.iterator(); i.hasNext();) {
+            ByteArrayOutputStream bos = i.next();
             assertArrayEquals(testData, bos.toByteArray());
         }
     }

Modified: james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/tagvalue/TagValueTest.java
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/tagvalue/TagValueTest.java?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/tagvalue/TagValueTest.java (original)
+++ james/jdkim/trunk/main/src/test/java/org/apache/james/jdkim/tagvalue/TagValueTest.java Sun Jun 13 15:07:35 2010
@@ -158,7 +158,7 @@ public class TagValueTest extends TestCa
 
     public void testTagSetWithEquals() {
         TagValue tv = new TagValue("t=value; v=encoded=40value");
-        Set tags = tv.getTags();
+        Set<String> tags = tv.getTags();
         assertEquals(2, tags.size());
         assertTrue(tags.contains("t"));
         assertTrue(tags.contains("v"));

Modified: james/jdkim/trunk/pom.xml
URL: http://svn.apache.org/viewvc/james/jdkim/trunk/pom.xml?rev=954239&r1=954238&r2=954239&view=diff
==============================================================================
--- james/jdkim/trunk/pom.xml (original)
+++ james/jdkim/trunk/pom.xml Sun Jun 13 15:07:35 2010
@@ -124,19 +124,19 @@
       <dependency>
         <groupId>org.apache.james</groupId>
         <artifactId>apache-mailet-base</artifactId>
-        <version>1.0</version>
+        <version>1.1</version>
       </dependency>
       <dependency>
         <groupId>org.apache.james</groupId>
         <artifactId>apache-mailet-base</artifactId>
-        <version>1.0</version>
+        <version>1.1</version>
         <scope>test</scope>
         <classifier>tests</classifier>
       </dependency>
       <dependency>
         <groupId>org.apache.james</groupId>
         <artifactId>apache-mailet-base</artifactId>
-        <version>1.0</version>
+        <version>1.1</version>
         <type>test-jar</type>
         <scope>test</scope>
       </dependency>
@@ -149,12 +149,12 @@
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
         <scope>runtime</scope>
-        <version>1.2.14</version>
+        <version>1.2.16</version>
       </dependency>
       <dependency>
         <groupId>dnsjava</groupId>
         <artifactId>dnsjava</artifactId>
-        <version>2.0.7</version>
+        <version>2.0.8</version>
       </dependency>
       <dependency>
         <groupId>org.apache.james.jdkim</groupId>
@@ -185,8 +185,8 @@
       </dependency>
       <dependency>
         <groupId>org.apache.james</groupId>
-        <artifactId>apache-mime4j</artifactId>
-        <version>0.5</version>
+        <artifactId>apache-mime4j-core</artifactId>
+        <version>0.7-SNAPSHOT</version>
       </dependency>
     </dependencies>
   </dependencyManagement>
@@ -262,6 +262,15 @@
         </executions>
       </plugin>
       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+          <encoding>iso8859-1</encoding>
+        </configuration>
+      </plugin>      
+      <plugin>
         <artifactId>maven-javadoc-plugin</artifactId>
         <version>2.6.1</version>
         <executions>



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