Author: ieugen Date: Wed Dec 26 12:11:40 2012 New Revision: 1425891 URL: http://svn.apache.org/viewvc?rev=1425891&view=rev Log: JAMES-1445 Intellij IDEA code analisys improvements
Modified: james/server/trunk/core/pom.xml james/server/trunk/core/src/main/java/org/apache/james/core/InternetHeadersInputStream.java james/server/trunk/core/src/main/java/org/apache/james/core/MailHeaders.java james/server/trunk/core/src/main/java/org/apache/james/core/MailImpl.java james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageSource.java james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageUtil.java james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageWrapper.java james/server/trunk/core/src/test/java/org/apache/james/core/MailTestAllImplementations.java james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageTest.java james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageWrapperTest.java james/server/trunk/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/DataLineLMTPHandler.java james/server/trunk/protocols-smtp/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java james/server/trunk/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesDataCmdHandler.java james/server/trunk/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/mailet/MockMailContext.java Modified: james/server/trunk/core/pom.xml URL: http://svn.apache.org/viewvc/james/server/trunk/core/pom.xml?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/pom.xml (original) +++ james/server/trunk/core/pom.xml Wed Dec 26 12:11:40 2012 @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="ISO-8859-15"?> +<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file Modified: james/server/trunk/core/src/main/java/org/apache/james/core/InternetHeadersInputStream.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/main/java/org/apache/james/core/InternetHeadersInputStream.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/main/java/org/apache/james/core/InternetHeadersInputStream.java (original) +++ james/server/trunk/core/src/main/java/org/apache/james/core/InternetHeadersInputStream.java Wed Dec 26 12:11:40 2012 @@ -35,7 +35,7 @@ public class InternetHeadersInputStream private final static String LINE_SEPERATOR = "\r\n"; - private Enumeration<String> headerLines; + private final Enumeration<String> headerLines; private byte[] currLine; private int pos = 0; @@ -51,7 +51,7 @@ public class InternetHeadersInputStream @Override public int read() throws IOException { if (currLine == null || pos == currLine.length) { - if (readNextLine() == false) { + if (!readNextLine()) { return -1; } } @@ -71,7 +71,7 @@ public class InternetHeadersInputStream pos = 0; String line = (headerLines.nextElement() + LINE_SEPERATOR); // Add seperator to show that headers are complete - if (headerLines.hasMoreElements() == false) { + if (!headerLines.hasMoreElements()) { line += LINE_SEPERATOR; } currLine = line.getBytes("US-ASCII"); Modified: james/server/trunk/core/src/main/java/org/apache/james/core/MailHeaders.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/main/java/org/apache/james/core/MailHeaders.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/main/java/org/apache/james/core/MailHeaders.java (original) +++ james/server/trunk/core/src/main/java/org/apache/james/core/MailHeaders.java Wed Dec 26 12:11:40 2012 @@ -50,7 +50,7 @@ public class MailHeaders extends Interne * @throws MessagingException * if the super class cannot be properly instantiated */ - public MailHeaders() throws MessagingException { + public MailHeaders() { super(); } Modified: james/server/trunk/core/src/main/java/org/apache/james/core/MailImpl.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/main/java/org/apache/james/core/MailImpl.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/main/java/org/apache/james/core/MailImpl.java (original) +++ james/server/trunk/core/src/main/java/org/apache/james/core/MailImpl.java Wed Dec 26 12:11:40 2012 @@ -263,6 +263,7 @@ public class MailImpl implements Disposa * * @return the error message associated with this MailImpl */ + @Override public String getErrorMessage() { return errorMessage; } @@ -643,6 +644,7 @@ public class MailImpl implements Disposa * @see org.apache.mailet.Mail#hasAttributes() * @since 2.2.0 */ + @Override public boolean hasAttributes() { return !attributes.isEmpty(); } @@ -665,8 +667,7 @@ public class MailImpl implements Disposa out.close(); ByteArrayInputStream bi = new ByteArrayInputStream(b.toByteArray()); ObjectInputStream in = new ObjectInputStream(bi); - Object no = in.readObject(); - return no; + return in.readObject(); } private static final java.util.Random random = new java.util.Random(); // Used @@ -705,8 +706,7 @@ public class MailImpl implements Disposa } } - StringBuffer nameBuffer = new StringBuffer(64).append(oldName).append("-!").append(random.nextInt(1048576)); - return nameBuffer.toString(); + return oldName + "-!" + random.nextInt(1048576); } /** @@ -715,8 +715,7 @@ public class MailImpl implements Disposa * @return the new identifier */ public static String getId() { - StringBuilder idBuffer = new StringBuilder().append("Mail").append(System.currentTimeMillis()).append("-").append(UUID.randomUUID()); - return idBuffer.toString(); + return "Mail" + System.currentTimeMillis() + "-" + UUID.randomUUID(); } } Modified: james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java (original) +++ james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java Wed Dec 26 12:11:40 2012 @@ -109,7 +109,7 @@ public class MimeMessageCopyOnWriteProxy * MimeMessageWrapper * @throws MessagingException */ - public MimeMessageCopyOnWriteProxy(MimeMessage original) throws MessagingException { + public MimeMessageCopyOnWriteProxy(MimeMessage original) { this(original, false); } @@ -129,7 +129,7 @@ public class MimeMessageCopyOnWriteProxy * @param writeable * @throws MessagingException */ - private MimeMessageCopyOnWriteProxy(MimeMessage original, boolean writeable) throws MessagingException { + private MimeMessageCopyOnWriteProxy(MimeMessage original, boolean writeable) { super(Session.getDefaultInstance(System.getProperties(), null)); if (original instanceof MimeMessageCopyOnWriteProxy) { @@ -465,6 +465,7 @@ public class MimeMessageCopyOnWriteProxy /** * @see java.lang.Object#equals(java.lang.Object) */ + @Override public boolean equals(Object arg0) { return getWrappedMessage().equals(arg0); } @@ -472,6 +473,7 @@ public class MimeMessageCopyOnWriteProxy /** * @see java.lang.Object#hashCode() */ + @Override public int hashCode() { return getWrappedMessage().hashCode(); } @@ -479,6 +481,7 @@ public class MimeMessageCopyOnWriteProxy /** * @see java.lang.Object#toString() */ + @Override public String toString() { return getWrappedMessage().toString(); } @@ -490,6 +493,7 @@ public class MimeMessageCopyOnWriteProxy /** * @see javax.mail.Message#setFrom(javax.mail.Address) */ + @Override public void setFrom(Address address) throws MessagingException { getWrappedMessageForWriting().setFrom(address); } @@ -497,6 +501,7 @@ public class MimeMessageCopyOnWriteProxy /** * @see javax.mail.Message#setFrom() */ + @Override public void setFrom() throws MessagingException { getWrappedMessageForWriting().setFrom(); } @@ -504,6 +509,7 @@ public class MimeMessageCopyOnWriteProxy /** * @see javax.mail.Message#addFrom(javax.mail.Address[]) */ + @Override public void addFrom(Address[] addresses) throws MessagingException { getWrappedMessageForWriting().addFrom(addresses); } @@ -512,6 +518,7 @@ public class MimeMessageCopyOnWriteProxy * @see javax.mail.Message#setRecipients(javax.mail.Message.RecipientType, * javax.mail.Address[]) */ + @Override public void setRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException { getWrappedMessageForWriting().setRecipients(type, addresses); } @@ -520,6 +527,7 @@ public class MimeMessageCopyOnWriteProxy * @see javax.mail.Message#addRecipients(javax.mail.Message.RecipientType, * javax.mail.Address[]) */ + @Override public void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException { getWrappedMessageForWriting().addRecipients(type, addresses); } @@ -527,6 +535,7 @@ public class MimeMessageCopyOnWriteProxy /** * @see javax.mail.Message#setReplyTo(javax.mail.Address[]) */ + @Override public void setReplyTo(Address[] addresses) throws MessagingException { getWrappedMessageForWriting().setReplyTo(addresses); } @@ -534,6 +543,7 @@ public class MimeMessageCopyOnWriteProxy /** * @see javax.mail.Message#setSubject(java.lang.String) */ + @Override public void setSubject(String subject) throws MessagingException { getWrappedMessageForWriting().setSubject(subject); } @@ -542,6 +552,7 @@ public class MimeMessageCopyOnWriteProxy * @see javax.mail.internet.MimeMessage#setSubject(java.lang.String, * java.lang.String) */ + @Override public void setSubject(String subject, String charset) throws MessagingException { getWrappedMessageForWriting().setSubject(subject, charset); } @@ -549,6 +560,7 @@ public class MimeMessageCopyOnWriteProxy /** * @see javax.mail.Message#setSentDate(java.util.Date) */ + @Override public void setSentDate(Date d) throws MessagingException { getWrappedMessageForWriting().setSentDate(d); } @@ -556,6 +568,7 @@ public class MimeMessageCopyOnWriteProxy /** * @see javax.mail.Part#setDisposition(java.lang.String) */ + @Override public void setDisposition(String disposition) throws MessagingException { getWrappedMessageForWriting().setDisposition(disposition); } @@ -563,6 +576,7 @@ public class MimeMessageCopyOnWriteProxy /** * @see javax.mail.internet.MimeMessage#setContentID(java.lang.String) */ + @Override public void setContentID(String cid) throws MessagingException { getWrappedMessageForWriting().setContentID(cid); } Modified: james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java (original) +++ james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java Wed Dec 26 12:11:40 2012 @@ -19,15 +19,14 @@ package org.apache.james.core; -import javax.mail.MessagingException; -import javax.mail.util.SharedByteArrayInputStream; -import javax.mail.util.SharedFileInputStream; - import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.io.output.DeferredFileOutputStream; import org.apache.james.lifecycle.api.Disposable; +import javax.mail.MessagingException; +import javax.mail.util.SharedByteArrayInputStream; +import javax.mail.util.SharedFileInputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -40,8 +39,7 @@ import java.util.List; * Takes an input stream and creates a repeatable input stream source for a * MimeMessageWrapper. It does this by completely reading the input stream and * saving that to data to an {@link DeferredFileOutputStream} with its threshold set to 100kb - * - **/ + */ public class MimeMessageInputStreamSource extends MimeMessageSource implements Disposable { private final List<InputStream> streams = new ArrayList<InputStream>(); @@ -60,30 +58,26 @@ public class MimeMessageInputStreamSourc * 100kb threshold for the stream. */ private final static int THRESHOLD = 1024 * 100; - + /** * Temporary directory to use */ private final static File TMPDIR = new File(System.getProperty("java.io.tmpdir")); - + /** * Construct a new MimeMessageInputStreamSource from an * <code>InputStream</code> that contains the bytes of a MimeMessage. - * - * @param key - * the prefix for the name of the temp file - * @param in - * the stream containing the MimeMessage - * - * @throws MessagingException - * if an error occurs while trying to store the stream + * + * @param key the prefix for the name of the temp file + * @param in the stream containing the MimeMessage + * @throws MessagingException if an error occurs while trying to store the stream */ public MimeMessageInputStreamSource(String key, InputStream in) throws MessagingException { super(); // We want to immediately read this into a temporary file // Create a temp file and channel the input stream into it try { - out = new DeferredFileOutputStream(THRESHOLD, key, ".m64", TMPDIR ); + out = new DeferredFileOutputStream(THRESHOLD, key, ".m64", TMPDIR); IOUtils.copy(in, out); sourceId = key; } catch (IOException ioe) { @@ -92,7 +86,7 @@ public class MimeMessageInputStreamSourc try { if (out != null) { out.close(); - + File file = out.getFile(); if (file != null) { file.delete(); @@ -109,19 +103,19 @@ public class MimeMessageInputStreamSourc } catch (IOException ioe) { // Ignored - logging unavailable to log this non-fatal error. } - + } } - public MimeMessageInputStreamSource(String key) throws MessagingException { + public MimeMessageInputStreamSource(String key) { super(); - out = new DeferredFileOutputStream(THRESHOLD, key, ".m64", TMPDIR ); + out = new DeferredFileOutputStream(THRESHOLD, key, ".m64", TMPDIR); sourceId = key; } /** * Returns the unique identifier of this input stream source - * + * * @return the unique identifier for this MimeMessageInputStreamSource */ public String getSourceId() { @@ -130,7 +124,7 @@ public class MimeMessageInputStreamSourc /** * Get an input stream to retrieve the data stored in the temporary file - * + * * @return a <code>BufferedInputStream</code> containing the data */ public synchronized InputStream getInputStream() throws IOException { @@ -146,40 +140,33 @@ public class MimeMessageInputStreamSourc /** * Get the size of the temp file - * + * * @return the size of the temp file - * - * @throws IOException - * if an error is encoutered while computing the size of the - * message + * @throws IOException if an error is encoutered while computing the size of the + * message */ + @Override public long getMessageSize() throws IOException { return out.getByteCount(); } - /** - * @return the output stream to write to - * @throws FileNotFoundException - */ - public OutputStream getWritableOutputStream() throws FileNotFoundException { + public OutputStream getWritableOutputStream() { return out; } - /** - * @see org.apache.james.lifecycle.api.Disposable#dispose() - */ + @Override public void dispose() { // explicit close all streams - for (int i = 0; i < streams.size(); i++) { - IOUtils.closeQuietly(streams.get(i)); + for (InputStream stream : streams) { + IOUtils.closeQuietly(stream); } if (out != null) { IOUtils.closeQuietly(out); File file = out.getFile(); if (file != null) { - FileUtils.deleteQuietly(file); - file = null; + FileUtils.deleteQuietly(file); + file = null; } out = null; } Modified: james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageSource.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageSource.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageSource.java (original) +++ james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageSource.java Wed Dec 26 12:11:40 2012 @@ -63,7 +63,7 @@ public abstract class MimeMessageSource InputStream in = null; try { in = getInputStream(); - int read = 0; + int read; byte[] data = new byte[1024]; while ((read = in.read(data)) > 0) { size += read; Modified: james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageUtil.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageUtil.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageUtil.java (original) +++ james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageUtil.java Wed Dec 26 12:11:40 2012 @@ -101,7 +101,7 @@ public class MimeMessageUtil { * @throws IOException * @throws UnsupportedDataTypeException */ - public static void writeToInternal(MimeMessage message, OutputStream headerOs, OutputStream bodyOs, String[] ignoreList) throws MessagingException, IOException, UnsupportedDataTypeException { + public static void writeToInternal(MimeMessage message, OutputStream headerOs, OutputStream bodyOs, String[] ignoreList) throws MessagingException, IOException { if (message.getMessageID() == null) { message.saveChanges(); } @@ -123,7 +123,7 @@ public class MimeMessageUtil { * @throws UnsupportedDataTypeException * @throws MessagingException */ - public static void writeMessageBodyTo(MimeMessage message, OutputStream bodyOs) throws IOException, UnsupportedDataTypeException, MessagingException { + public static void writeMessageBodyTo(MimeMessage message, OutputStream bodyOs) throws IOException, MessagingException { OutputStream bos; InputStream bis; Modified: james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageWrapper.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageWrapper.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageWrapper.java (original) +++ james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageWrapper.java Wed Dec 26 12:11:40 2012 @@ -82,7 +82,7 @@ public class MimeMessageWrapper extends private long initialHeaderSize; - private MimeMessageWrapper(Session session) throws MessagingException { + private MimeMessageWrapper(Session session) { super(session); this.headers = null; this.modified = false; @@ -98,7 +98,7 @@ public class MimeMessageWrapper extends * the MimeMessageSource * @throws MessagingException */ - public MimeMessageWrapper(Session session, MimeMessageSource source) throws MessagingException { + public MimeMessageWrapper(Session session, MimeMessageSource source) { this(session); this.source = source; } @@ -166,6 +166,7 @@ public class MimeMessageWrapper extends * * @see javax.mail.internet.MimeMessage#updateMessageID() */ + @Override protected void updateMessageID() throws MessagingException { if (getMessageID() == null) super.updateMessageID(); @@ -190,7 +191,6 @@ public class MimeMessageWrapper extends protected synchronized void loadHeaders() throws MessagingException { if (headers != null) { // Another thread has already loaded these headers - return; } else if (source != null) { try { InputStream in = source.getInputStream(); @@ -217,7 +217,6 @@ public class MimeMessageWrapper extends public synchronized void loadMessage() throws MessagingException { if (messageParsed) { // Another thread has already loaded this message - return; } else if (source != null) { sourceIn = null; try { @@ -267,6 +266,7 @@ public class MimeMessageWrapper extends /** * Rewritten for optimization purposes */ + @Override public void writeTo(OutputStream os) throws IOException, MessagingException { writeTo(os, os); @@ -275,6 +275,7 @@ public class MimeMessageWrapper extends /** * Rewritten for optimization purposes */ + @Override public void writeTo(OutputStream os, String[] ignoreList) throws IOException, MessagingException { writeTo(os, os, ignoreList); } @@ -292,7 +293,7 @@ public class MimeMessageWrapper extends public synchronized void writeTo(OutputStream headerOs, OutputStream bodyOs, String[] ignoreList, boolean preLoad) throws IOException, MessagingException { - if (preLoad == false && source != null && !isBodyModified()) { + if (!preLoad && source != null && !isBodyModified()) { // We do not want to instantiate the message... just read from // source // and write to this outputstream @@ -304,7 +305,7 @@ public class MimeMessageWrapper extends MailHeaders parsedHeaders = new MailHeaders(in); // check if we should use the parsed headers or not - if (isHeaderModified() == false) { + if (!isHeaderModified()) { myHeaders = parsedHeaders; } else { // The headers was modified so we need to call saveChanges() just to be sure @@ -331,7 +332,7 @@ public class MimeMessageWrapper extends } IOUtils.copy(new InternetHeadersInputStream(headers.getNonMatchingHeaderLines(ignoreList)), headerOs); - if (preLoad && messageParsed == false) { + if (preLoad && !messageParsed) { loadMessage(); } MimeMessageUtil.writeMessageBodyTo(this, bodyOs); @@ -343,6 +344,7 @@ public class MimeMessageWrapper extends * body, not the entire message (should not count headers). This size will * never change on {@link #saveChanges()} */ + @Override public synchronized int getSize() throws MessagingException { if (source != null) { try { @@ -370,8 +372,9 @@ public class MimeMessageWrapper extends * Corrects JavaMail 1.1 version which always returns -1. Only corrected for * content less than 5000 bytes, to avoid memory hogging. */ + @Override public int getLineCount() throws MessagingException { - InputStream in = null; + InputStream in; try { in = getContentStream(); } catch (Exception e) { @@ -427,6 +430,7 @@ public class MimeMessageWrapper extends * the headers */ + @Override public String[] getHeader(String name) throws MessagingException { if (headers == null) { loadHeaders(); @@ -434,6 +438,7 @@ public class MimeMessageWrapper extends return headers.getHeader(name); } + @Override public String getHeader(String name, String delimiter) throws MessagingException { if (headers == null) { loadHeaders(); @@ -441,6 +446,7 @@ public class MimeMessageWrapper extends return headers.getHeader(name, delimiter); } + @Override public Enumeration getAllHeaders() throws MessagingException { if (headers == null) { loadHeaders(); @@ -448,6 +454,7 @@ public class MimeMessageWrapper extends return headers.getAllHeaders(); } + @Override public Enumeration getMatchingHeaders(String[] names) throws MessagingException { if (headers == null) { loadHeaders(); @@ -455,6 +462,7 @@ public class MimeMessageWrapper extends return headers.getMatchingHeaders(names); } + @Override public Enumeration getNonMatchingHeaders(String[] names) throws MessagingException { if (headers == null) { loadHeaders(); @@ -462,6 +470,7 @@ public class MimeMessageWrapper extends return headers.getNonMatchingHeaders(names); } + @Override public Enumeration getAllHeaderLines() throws MessagingException { if (headers == null) { loadHeaders(); @@ -469,6 +478,7 @@ public class MimeMessageWrapper extends return headers.getAllHeaderLines(); } + @Override public Enumeration getMatchingHeaderLines(String[] names) throws MessagingException { if (headers == null) { loadHeaders(); @@ -476,6 +486,7 @@ public class MimeMessageWrapper extends return headers.getMatchingHeaderLines(names); } + @Override public Enumeration getNonMatchingHeaderLines(String[] names) throws MessagingException { if (headers == null) { loadHeaders(); @@ -498,21 +509,25 @@ public class MimeMessageWrapper extends headersModified = true; } + @Override public void setHeader(String name, String value) throws MessagingException { checkModifyHeaders(); super.setHeader(name, value); } + @Override public void addHeader(String name, String value) throws MessagingException { checkModifyHeaders(); super.addHeader(name, value); } + @Override public void removeHeader(String name) throws MessagingException { checkModifyHeaders(); super.removeHeader(name); } + @Override public void addHeaderLine(String line) throws MessagingException { checkModifyHeaders(); super.addHeaderLine(line); @@ -524,6 +539,7 @@ public class MimeMessageWrapper extends * * @see javax.mail.Part#setDataHandler(javax.activation.DataHandler) */ + @Override public synchronized void setDataHandler(DataHandler arg0) throws MessagingException { modified = true; saved = false; @@ -531,9 +547,7 @@ public class MimeMessageWrapper extends super.setDataHandler(arg0); } - /** - * @see org.apache.james.lifecycle.api.Disposable#dispose() - */ + @Override public void dispose() { if (sourceIn != null) { IOUtils.closeQuietly(sourceIn); @@ -546,6 +560,7 @@ public class MimeMessageWrapper extends /** * @see javax.mail.internet.MimeMessage#parse(java.io.InputStream) */ + @Override protected synchronized void parse(InputStream is) throws MessagingException { // the super implementation calls // headers = createInternetHeaders(is); @@ -559,6 +574,7 @@ public class MimeMessageWrapper extends * * @see javax.mail.internet.MimeMessage#createInternetHeaders(java.io.InputStream) */ + @Override protected synchronized InternetHeaders createInternetHeaders(InputStream is) throws MessagingException { /* * This code is no more needed: see JAMES-570 and new tests @@ -601,6 +617,7 @@ public class MimeMessageWrapper extends /** * @see javax.mail.internet.MimeMessage#getContentStream() */ + @Override protected InputStream getContentStream() throws MessagingException { if (!messageParsed) { loadMessage(); @@ -611,6 +628,7 @@ public class MimeMessageWrapper extends /** * @see javax.mail.internet.MimeMessage#getRawInputStream() */ + @Override public synchronized InputStream getRawInputStream() throws MessagingException { if (!messageParsed && !isModified() && source != null) { InputStream is; Modified: james/server/trunk/core/src/test/java/org/apache/james/core/MailTestAllImplementations.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/test/java/org/apache/james/core/MailTestAllImplementations.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/test/java/org/apache/james/core/MailTestAllImplementations.java (original) +++ james/server/trunk/core/src/test/java/org/apache/james/core/MailTestAllImplementations.java Wed Dec 26 12:11:40 2012 @@ -33,7 +33,7 @@ public abstract class MailTestAllImpleme /** provide the concrete implementation to test */ protected abstract Mail createMailImplementation(); - protected void helperTestInitialState(Mail mail) throws MessagingException { + protected void helperTestInitialState(Mail mail) { assertFalse("no initial attributes", mail.hasAttributes()); assertNull("no initial error", mail.getErrorMessage()); assertNotNull("initial last update set", mail.getLastUpdated()); Modified: james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java (original) +++ james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java Wed Dec 26 12:11:40 2012 @@ -34,9 +34,9 @@ import org.junit.Test; public class MimeMessageCopyOnWriteProxyTest extends MimeMessageFromStreamTest { - String content = "Subject: foo\r\nContent-Transfer-Encoding2: plain"; - String sep = "\r\n\r\n"; - String body = "bar\r\n.\r\n"; + final String content = "Subject: foo\r\nContent-Transfer-Encoding2: plain"; + final String sep = "\r\n\r\n"; + final String body = "bar\r\n.\r\n"; @Override protected MimeMessage getMessageFromSources(String sources) throws Exception { Modified: james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageTest.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageTest.java (original) +++ james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageTest.java Wed Dec 26 12:11:40 2012 @@ -53,7 +53,7 @@ public class MimeMessageTest { return mmCreated; } - protected String getSimpleMessageCleanedSource() throws Exception { + protected String getSimpleMessageCleanedSource() { return "Subject: test\r\n" + "MIME-Version: 1.0\r\n" + "Content-Type: text/plain; charset=us-ascii\r\n" @@ -71,7 +71,7 @@ public class MimeMessageTest { return mmCreated; } - protected String getMessageWithBadReturnPathSource() throws Exception { + protected String getMessageWithBadReturnPathSource() { return "Subject: test\r\n" + "Return-Path: <mybadret...@example.com>\r\n" + "MIME-Version: 1.0\r\n" @@ -81,7 +81,7 @@ public class MimeMessageTest { + "test body"; } - protected String getSimpleMessageCleanedSourceHeaderExpected() throws Exception { + protected String getSimpleMessageCleanedSourceHeaderExpected() { return "X-Test: foo\r\n" + getSimpleMessageCleanedSource(); } Modified: james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageWrapperTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageWrapperTest.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageWrapperTest.java (original) +++ james/server/trunk/core/src/test/java/org/apache/james/core/MimeMessageWrapperTest.java Wed Dec 26 12:11:40 2012 @@ -102,9 +102,9 @@ public class MimeMessageWrapperTest exte } } TestableMimeMessageWrapper mw = null; - String content = "Subject: foo\r\nContent-Transfer-Encoding2: plain"; - String sep = "\r\n\r\n"; - String body = "bar\r\n"; + final String content = "Subject: foo\r\nContent-Transfer-Encoding2: plain"; + final String sep = "\r\n\r\n"; + final String body = "bar\r\n"; @Override protected MimeMessage getMessageFromSources(String sources) throws Exception { @@ -264,7 +264,7 @@ public class MimeMessageWrapperTest exte mw.saveChanges(); BufferedReader reader = new BufferedReader(new InputStreamReader(mw.getMessageInputStream())); - String line = null; + String line; boolean headerUpdated = false; while ((line = reader.readLine()) != null) { @@ -284,12 +284,12 @@ public class MimeMessageWrapperTest exte public void testMessageStreamWithUpatedContent() throws MessagingException, IOException { String newContent = "This is the new message content!"; mw.setText(newContent); - assertEquals(newContent, (String) mw.getContent()); + assertEquals(newContent, mw.getContent()); mw.saveChanges(); BufferedReader reader = new BufferedReader(new InputStreamReader(mw.getMessageInputStream())); - String line = null; + String line; boolean contentUpdated = false; while ((line = reader.readLine()) != null) { Modified: james/server/trunk/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/DataLineLMTPHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/DataLineLMTPHandler.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/DataLineLMTPHandler.java (original) +++ james/server/trunk/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/DataLineLMTPHandler.java Wed Dec 26 12:11:40 2012 @@ -18,18 +18,12 @@ ****************************************************************/ package org.apache.james.lmtpserver; -import java.io.IOException; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - import org.apache.james.protocols.api.Response; import org.apache.james.protocols.api.handler.WiringException; import org.apache.james.protocols.lmtp.LMTPMultiResponse; import org.apache.james.protocols.lmtp.hook.DeliverToRecipientHook; import org.apache.james.protocols.smtp.MailAddress; +import org.apache.james.protocols.smtp.MailAddressException; import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.protocols.smtp.SMTPRetCode; import org.apache.james.protocols.smtp.SMTPSession; @@ -38,6 +32,12 @@ import org.apache.james.protocols.smtp.d import org.apache.james.smtpserver.DataLineJamesMessageHookHandler; import org.apache.mailet.Mail; +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + /** * Handler which takes care of deliver the mail to the recipients INBOX */ @@ -49,17 +49,21 @@ public class DataLineLMTPHandler extends @Override protected Response processExtensions(SMTPSession session, final Mail mail) { LMTPMultiResponse mResponse = null; - + // build a wrapper around the Mail final ReadOnlyMailEnvelope env = new ReadOnlyMailEnvelope(mail); - @SuppressWarnings("unchecked") - Iterator<MailAddress> recipients = mail.getRecipients().iterator(); - - while (recipients.hasNext()) { - MailAddress recipient = recipients.next(); + + for (org.apache.mailet.MailAddress recipient : mail.getRecipients()) { + // TODO: the transformation code between MailAddress is purely to compile. No idea if it does what it's supposed + MailAddress recipientAddress; + try { + recipientAddress = new MailAddress(recipient.getLocalPart(), recipient.getDomain()); + } catch (MailAddressException e) { + throw new RuntimeException(e); + } Response response = null; - for (DeliverToRecipientHook handler: handlers) { - response = AbstractHookableCmdHandler.calcDefaultSMTPResponse(handler.deliver(session, recipient, env)); + for (DeliverToRecipientHook handler : handlers) { + response = AbstractHookableCmdHandler.calcDefaultSMTPResponse(handler.deliver(session, recipientAddress, env)); if (response != null) { break; } @@ -88,7 +92,7 @@ public class DataLineLMTPHandler extends @Override public void wireExtensions(Class interfaceName, List extension) throws WiringException { if (interfaceName.equals(DeliverToRecipientHook.class)) { - handlers.addAll((Collection<? extends DeliverToRecipientHook>) extension); + handlers.addAll((Collection<? extends DeliverToRecipientHook>) extension); } } @@ -97,11 +101,10 @@ public class DataLineLMTPHandler extends public ReadOnlyMailEnvelope(Mail mail) { super(mail, null); } - + @Override - public OutputStream getMessageOutputStream() throws IOException{ + public OutputStream getMessageOutputStream() throws IOException { throw new IOException("Read-only envelope"); } - } } Modified: james/server/trunk/protocols-smtp/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-smtp/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/protocols-smtp/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java (original) +++ james/server/trunk/protocols-smtp/src/main/java/org/apache/james/smtpserver/DataLineJamesMessageHookHandler.java Wed Dec 26 12:11:40 2012 @@ -47,7 +47,6 @@ import org.apache.mailet.Mail; import javax.mail.MessagingException; import javax.mail.internet.AddressException; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -67,7 +66,6 @@ public class DataLineJamesMessageHookHan private List<MessageHook> mHandlers; - @Override public Response onLine(SMTPSession session, ByteBuffer lineByteBuffer, LineHandler<SMTPSession> next) { byte[] line = new byte[lineByteBuffer.remaining()]; @@ -150,12 +148,8 @@ public class DataLineJamesMessageHookHan if (mail != null && messageHandlers != null) { try { MimeMessageInputStreamSource mmiss = (MimeMessageInputStreamSource) session.getAttachment(SMTPConstants.DATA_MIMEMESSAGE_STREAMSOURCE, State.Transaction); - OutputStream out = null; - try { - out = mmiss.getWritableOutputStream(); - } catch (FileNotFoundException e) { - session.getLogger().debug("Unable to obtain OutputStream for Mail " + mail, e); - } + OutputStream out; + out = mmiss.getWritableOutputStream(); for (MessageHook rawHandler : mHandlers) { session.getLogger().debug("executing james message handler " + rawHandler); long start = System.currentTimeMillis(); @@ -182,7 +176,7 @@ public class DataLineJamesMessageHookHan for (JamesMessageHook messageHandler : messageHandlers) { session.getLogger().debug("executing james message handler " + messageHandler); long start = System.currentTimeMillis(); - HookResult hRes = messageHandler.onMessage(session, mail); + HookResult hRes = ((JamesMessageHook) messageHandler).onMessage(session, mail); long executionTime = System.currentTimeMillis() - start; if (rHooks != null) { for (HookResultHook rHook : rHooks) { @@ -261,7 +255,16 @@ public class DataLineJamesMessageHookHan @Override public List<MailAddress> getRecipients() { - return new ArrayList<MailAddress>(mail.getRecipients()); + //TODO: not sure this MailAddress transformation code does the right thing + List<MailAddress> mailAddressList = new ArrayList<MailAddress>(); + for (org.apache.mailet.MailAddress address : mail.getRecipients()) { + try { + mailAddressList.add(new MailAddress(address.getLocalPart(), address.getDomain())); + } catch (MailAddressException ex) { + throw new RuntimeException(ex); + } + } + return mailAddressList; } @Override @@ -282,5 +285,6 @@ public class DataLineJamesMessageHookHan return -1; } } + } -} +} \ No newline at end of file Modified: james/server/trunk/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesDataCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesDataCmdHandler.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesDataCmdHandler.java (original) +++ james/server/trunk/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesDataCmdHandler.java Wed Dec 26 12:11:40 2012 @@ -18,8 +18,6 @@ ****************************************************************/ package org.apache.james.smtpserver; -import javax.mail.MessagingException; - import org.apache.james.core.MailImpl; import org.apache.james.core.MimeMessageInputStreamSource; import org.apache.james.protocols.api.ProtocolSession.State; @@ -36,17 +34,15 @@ public class JamesDataCmdHandler extends /** * Handler method called upon receipt of a DATA command. Reads in message * data, creates header, and delivers to mail server service for delivery. - * - * @param session - * SMTP session object - * @param argument - * the argument passed in with the command by the SMTP client + * + * @param session SMTP session object + * @param argument the argument passed in with the command by the SMTP client */ protected SMTPResponse doDATA(SMTPSession session, String argument) { try { MimeMessageInputStreamSource mmiss = new MimeMessageInputStreamSource(MailImpl.getId()); session.setAttachment(SMTPConstants.DATA_MIMEMESSAGE_STREAMSOURCE, mmiss, State.Transaction); - } catch (MessagingException e) { + } catch (Exception e) { session.getLogger().warn("Error creating mimemessagesource for incoming data", e); return new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unexpected error preparing to receive DATA."); } Modified: james/server/trunk/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/mailet/MockMailContext.java URL: http://svn.apache.org/viewvc/james/server/trunk/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/mailet/MockMailContext.java?rev=1425891&r1=1425890&r2=1425891&view=diff ============================================================================== --- james/server/trunk/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/mailet/MockMailContext.java (original) +++ james/server/trunk/protocols-smtp/src/test/java/org/apache/james/smtpserver/mock/mailet/MockMailContext.java Wed Dec 26 12:11:40 2012 @@ -21,11 +21,15 @@ package org.apache.james.smtpserver.mock import java.util.Collection; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; + +import org.apache.mailet.LookupException; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; import org.apache.mailet.MailetContext; +import org.apache.mailet.TemporaryLookupException; public class MockMailContext implements MailetContext { @@ -42,6 +46,11 @@ public class MockMailContext implements } @Override + public List<String> dnsLookup(String s, RecordType recordType) throws TemporaryLookupException, LookupException { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override public Collection getMailServers(String host) { return null; // trivial implementation } @@ -103,6 +112,16 @@ public class MockMailContext implements } @Override + public void log(LogLevel logLevel, String s) { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override + public void log(LogLevel logLevel, String s, Throwable throwable) { + //To change body of implemented methods use File | Settings | File Templates. + } + + @Override public void removeAttribute(String name) { // trivial implementation } @@ -134,11 +153,6 @@ public class MockMailContext implements } @Override - public void storeMail(MailAddress sender, MailAddress recipient, MimeMessage msg) throws MessagingException { - // trivial implementation - } - - @Override public Iterator getSMTPHostAddresses(String domainName) { return null; // trivial implementation } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org