noel 2003/06/03 17:38:18 Modified: src/java/org/apache/james/transport/mailets Tag: branch_2_1_fcs AbstractRedirect.java Log: Correct output format and loop boundary condition Revision Changes Path No revision No revision 1.1.2.4 +57 -54 jakarta-james/src/java/org/apache/james/transport/mailets/AbstractRedirect.java Index: AbstractRedirect.java =================================================================== RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/transport/mailets/AbstractRedirect.java,v retrieving revision 1.1.2.3 retrieving revision 1.1.2.4 diff -u -r1.1.2.3 -r1.1.2.4 --- AbstractRedirect.java 3 Jun 2003 03:38:06 -0000 1.1.2.3 +++ AbstractRedirect.java 4 Jun 2003 00:38:18 -0000 1.1.2.4 @@ -164,7 +164,7 @@ */ public abstract class AbstractRedirect extends GenericMailet { - + /** * Controls certain log messages. */ @@ -174,7 +174,7 @@ * Holds the value of the <CODE>static</CODE> init parameter. */ protected boolean isStatic = false; - + private static class AddressMarker { public static MailAddress SENDER; public static MailAddress RETURN_PATH; @@ -183,7 +183,7 @@ public static MailAddress DELETE; public static MailAddress UNALTERED; public static MailAddress NULL; - + static { try { SENDER = new MailAddress("sender","address.marker"); @@ -246,7 +246,7 @@ /* ******************************************************************** */ /* ****************** Begin of getX and setX methods ****************** */ /* ******************************************************************** */ - + /** * <P>Gets the <CODE>static</CODE> property.</P> * <P>Return true to reduce calls to getTo, getSender, getRecipients, getReplyTo, getReturnPath amd getMessage @@ -257,7 +257,7 @@ * is to use "getX()" methods statically, and use instead "getX(Mail)" methods for dynamic situations. * A false value is now meaningful only for subclasses of [EMAIL PROTECTED] Redirect} older than version 2.2 * that were relying on this.</P> - * + * * <P>Is a "getX()" method.</P> * * @return true, as normally "getX()" methods shouls be static @@ -378,7 +378,7 @@ String messageText = (isStatic()) ? this.messageText : getMessage(); return messageText; } - + /** * Gets the <CODE>recipients</CODE> property. * Returns the collection of recipients of the new message, @@ -420,7 +420,7 @@ } return recipients; } - + /** * Sets the recipients of <I>newMail</I> to <I>recipients</I>. */ @@ -432,7 +432,7 @@ } } } - + /** * Gets the <CODE>to</CODE> property. * Returns the "To:" recipients of the new message. @@ -475,7 +475,7 @@ } return apparentlyTo; } - + /** * Sets the "To:" header of <I>newMail</I> to <I>to</I>. */ @@ -487,14 +487,14 @@ } } } - + /** * Gets the <CODE>replyto</CODE> property. * Returns the Reply-To address of the new message, * or null if no change is requested. * Is a "getX()" method. * - * @return + * @return */ protected MailAddress getReplyTo() throws MessagingException { return null; @@ -511,7 +511,7 @@ MailAddress replyTo = (isStatic()) ? this.replyTo : getReplyTo(); return replyTo; } - + /** * Sets the "Reply-To:" header of <I>newMail</I> to <I>replyTo</I>. */ @@ -525,7 +525,7 @@ } } } - + /** * Gets the <CODE>returnPath</CODE> property. * Returns the Return-Path of the new message, @@ -554,7 +554,7 @@ } return returnPath; } - + /** * Sets the "Return-Path:" header of <I>newMail</I> to <I>returnPath</I>. */ @@ -572,7 +572,7 @@ } } } - + /** * Gets the <CODE>sender</CODE> property. * Returns the new sender as a MailAddress, @@ -596,7 +596,7 @@ MailAddress sender = (isStatic()) ? this.sender : getSender(); return sender; } - + /** * Sets the sender and the "From:" header of <I>newMail</I> to <I>sender</I>. * If sender is null will set such values to the ones in <I>originalMail</I>. @@ -614,7 +614,7 @@ } } } - + /** * Gets the <CODE>prefix</CODE> property. * Returns a prefix for the new message subject. @@ -637,7 +637,7 @@ String subjectPrefix = (isStatic()) ? this.subjectPrefix : getSubjectPrefix(); return subjectPrefix; } - + /** * Builds the subject of <I>newMail</I> appending the subject * of <I>originalMail</I> to <I>subjectPrefix</I>. @@ -652,7 +652,7 @@ log("subjectPrefix set to: " + subjectPrefix); } } - + /** * Gets the <CODE>attachError</CODE> property. * Returns a boolean indicating whether to append a description of any error to the main body part @@ -701,7 +701,7 @@ boolean isReply = (isStatic()) ? this.isReply : isReply(); return isReply; } - + /** * Sets the "In-Reply-To:" header of <I>newMail</I> to the "Message-Id:" of * <I>originalMail</I>, if <I>isReply</I> is true. @@ -717,11 +717,11 @@ } } } - + /* ******************************************************************** */ /* ******************* End of getX and setX methods ******************* */ /* ******************************************************************** */ - + /** * Mailet initialization routine. * Will setup static values for each "x" initialization parameter in config.xml, @@ -733,7 +733,7 @@ log("Redirect init"); } isDebug = (getInitParameter("debug") == null) ? false : new Boolean(getInitParameter("debug")).booleanValue(); - + isStatic = (getInitParameter("static") == null) ? false : new Boolean(getInitParameter("static")).booleanValue(); if(isStatic()) { @@ -778,12 +778,12 @@ * @throws MessagingException if a problem arises formulating the redirected mail */ public void service(Mail originalMail) throws MessagingException { - + boolean keepMessageId = false; // duplicates the Mail object, to be able to modify the new mail keeping the original untouched Mail newMail = ((MailImpl) originalMail).duplicate(newName((MailImpl)originalMail)); - + if (isDebug) { MailImpl newMailImpl = (MailImpl) newMail; log("New mail - sender: " + newMailImpl.getSender() @@ -795,7 +795,7 @@ + ", lastUpdated: " + newMailImpl.getLastUpdated() + ", errorMessage: " + newMailImpl.getErrorMessage()); } - + //Create the message if(getInLineType(originalMail) != UNALTERED) { if (isDebug) { @@ -803,12 +803,12 @@ } newMail.setMessage(new MimeMessage(Session.getDefaultInstance(System.getProperties(), null))); - + // handle the new message if altered buildAlteredMessage(newMail, originalMail); - + setTo(newMail, getTo(originalMail), originalMail); - + } else { // if we need the original, create a copy of this message to redirect if (getPassThrough(originalMail)) { @@ -819,46 +819,46 @@ } keepMessageId = true; } - + //Set additional headers - + setRecipients(newMail, getRecipients(originalMail), originalMail); - + setSubjectPrefix(newMail, getSubjectPrefix(originalMail), originalMail); - + if(newMail.getMessage().getHeader(RFC2822Headers.DATE) == null) { newMail.getMessage().setHeader(RFC2822Headers.DATE, rfc822DateFormat.format(new Date())); } - + setReplyTo(newMail, getReplyTo(originalMail), originalMail); setReturnPath(newMail, getReturnPath(originalMail), originalMail); setSender(newMail, getSender(originalMail), originalMail); - + setIsReply(newMail, isReply(originalMail), originalMail); newMail.getMessage().saveChanges(); - + if (keepMessageId) { setMessageId(newMail, originalMail); } //Send it off... getMailetContext().sendMail(newMail); - + if(!getPassThrough(originalMail)) { originalMail.setState(Mail.GHOST); } } private static final java.util.Random random = new java.util.Random(); // Used to generate new mail names - + /** * Create a unique new primary key name. * * @param mail the mail to use as the basis for the new mail name - * + * * @return a new name */ private String newName(MailImpl mail) { @@ -922,7 +922,7 @@ } return mailAddress; } - + /** * Utility method for obtaining a string representation of an array of Objects. */ @@ -930,6 +930,9 @@ StringBuffer sb = new StringBuffer(1024); sb.append("["); for (int i = 0; i < array.length; i++) { + if (i > 0) { + sb.append(","); + } sb.append(array[i]); } sb.append("]"); @@ -1022,7 +1025,7 @@ return bodyOs.toString(); } finally { - bis.close(); + bis.close(); } } @@ -1035,17 +1038,17 @@ protected void buildAlteredMessage(Mail newMail, Mail originalMail) throws MessagingException { MimeMessage message = originalMail.getMessage(); - + StringWriter sout = new StringWriter(); PrintWriter out = new PrintWriter(sout, true); String head = getMessageHeaders(message); boolean all = false; - + String messageText = getMessage(originalMail); if(messageText != null) { out.println(messageText); } - + switch(getInLineType(originalMail)) { case ALL: //ALL: all = true; @@ -1100,7 +1103,7 @@ StringBuffer textBuffer = new StringBuffer(1024) .append(head) - .append("r\n\r\n") + .append("\r\nMessage:\r\n") .append(getMessageBody(message)); part.setText(textBuffer.toString()); break; @@ -1127,12 +1130,12 @@ } newMail.getMessage().setContent(multipart); newMail.getMessage().setHeader(RFC2822Headers.CONTENT_TYPE, multipart.getContentType()); - + } catch (Exception ioe) { throw new MessagingException("Unable to create multipart body", ioe); } } - + /** * Sets the message id of originalMail into newMail. */ @@ -1145,7 +1148,7 @@ } } } - + /** * Returns the [EMAIL PROTECTED] SpecialAddress} that corresponds to an init parameter value. * The init parameter value is checked against a String[] of allowed values. @@ -1160,12 +1163,12 @@ if (addressString == null) { return null; } - + addressString = addressString.toLowerCase(Locale.US); addressString = addressString.trim(); - + MailAddress specialAddress = null; - + if(addressString.compareTo("postmaster") == 0) { specialAddress = getMailetContext().getPostmaster(); } @@ -1190,12 +1193,12 @@ if(addressString.compareTo("null") == 0) { specialAddress = SpecialAddress.NULL; } - + // if is a special address, must be in the allowedSpecials array if (specialAddress != null) { // check if is an allowed special boolean allowed = false; - for (int i = 0; i <= allowedSpecials.length; i++) { + for (int i = 0; i < allowedSpecials.length; i++) { String allowedSpecial = allowedSpecials[i]; allowedSpecial = allowedSpecial.toLowerCase(Locale.US); allowedSpecial = allowedSpecial.trim(); @@ -1209,7 +1212,7 @@ ", allowed values are \"" + arrayToString(allowedSpecials) + "\""); } } - + return specialAddress; } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]