diff -r 74139325d305 -r c713ca00a4a7 src/org/sonews/mlgw/Dispatcher.java
--- a/src/org/sonews/mlgw/Dispatcher.java Sun Aug 29 18:17:37 2010 +0200
+++ b/src/org/sonews/mlgw/Dispatcher.java Tue Sep 13 19:08:15 2011 +0200
@@ -15,12 +15,12 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-
package org.sonews.mlgw;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.logging.Level;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.mail.Address;
@@ -43,19 +43,16 @@
* @author Christian Lins
* @since sonews/0.5.0
*/
-public class Dispatcher
-{
+public class Dispatcher {
- static class PasswordAuthenticator extends Authenticator
- {
+ static class PasswordAuthenticator extends Authenticator {
@Override
- public PasswordAuthentication getPasswordAuthentication()
- {
+ public PasswordAuthentication getPasswordAuthentication() {
final String username =
- Config.inst().get(Config.MLSEND_USER, "user");
+ Config.inst().get(Config.MLSEND_USER, "user");
final String password =
- Config.inst().get(Config.MLSEND_PASSWORD, "mysecret");
+ Config.inst().get(Config.MLSEND_PASSWORD, "mysecret");
return new PasswordAuthentication(username, password);
}
@@ -66,8 +63,7 @@
* @param listPostValue
* @return The matching email address or null
*/
- private static String chunkListPost(String listPostValue)
- {
+ private static String chunkListPost(String listPostValue) {
// listPostValue is of form ""
Pattern mailPattern = Pattern.compile("(\\w+[-|.])*\\w+@(\\w+.)+\\w+");
Matcher mailMatcher = mailPattern.matcher(listPostValue);
@@ -87,8 +83,7 @@
* @return null or fitting group name for the given message.
*/
private static List getGroupFor(final Message msg, final boolean fallback)
- throws MessagingException, StorageBackendException
- {
+ throws MessagingException, StorageBackendException {
List groups = null;
// Is there a List-Post header?
@@ -101,13 +96,16 @@
}
if (listPost != null && listPost.length > 0
- && !"".equals(listPost[0]) && chunkListPost(listPost[0]) != null) {
+ && !"".equals(listPost[0]) && chunkListPost(listPost[0]) != null) {
// listPost[0] is of form ""
listPost[0] = chunkListPost(listPost[0]);
listPostAddr = new InternetAddress(listPost[0], false);
groups = StorageManager.current().getGroupsForList(listPostAddr.getAddress());
} else if (fallback) {
- Log.get().info("Using fallback recipient discovery for: " + msg.getSubject());
+ StringBuilder strBuf = new StringBuilder();
+ strBuf.append("Using fallback recipient discovery for: ");
+ strBuf.append(msg.getSubject());
+ Log.get().info(strBuf.toString());
groups = new ArrayList();
// Fallback to TO/CC/BCC addresses
Address[] to = msg.getAllRecipients();
@@ -131,8 +129,7 @@
* crosspostings in different mailing lists.
* @param msg
*/
- public static boolean toGroup(final Message msg)
- {
+ public static boolean toGroup(final Message msg) {
if (msg == null) {
throw new IllegalArgumentException("Argument 'msg' must not be null!");
}
@@ -144,7 +141,7 @@
// Check if this mail is already existing the storage
boolean updateReq =
- StorageManager.current().isArticleExisting(article.getMessageID());
+ StorageManager.current().isArticleExisting(article.getMessageID());
List newsgroups = getGroupFor(msg, !updateReq);
List oldgroups = new ArrayList();
@@ -170,7 +167,11 @@
groups.append(',');
}
}
- Log.get().info("Posting to group " + groups.toString());
+
+ StringBuilder strBuf = new StringBuilder();
+ strBuf.append("Posting to group ");
+ strBuf.append(groups.toString());
+ Log.get().info(strBuf.toString());
article.setGroup(groups.toString());
//article.removeHeader(Headers.REPLY_TO);
@@ -179,15 +180,15 @@
// Write article to database
if (updateReq) {
Log.get().info("Updating " + article.getMessageID()
- + " with additional groups");
+ + " with additional groups");
StorageManager.current().delete(article.getMessageID());
StorageManager.current().addArticle(article);
} else {
Log.get().info("Gatewaying " + article.getMessageID() + " to "
- + article.getHeader(Headers.NEWSGROUPS)[0]);
+ + article.getHeader(Headers.NEWSGROUPS)[0]);
StorageManager.current().addArticle(article);
Stats.getInstance().mailGatewayed(
- article.getHeader(Headers.NEWSGROUPS)[0]);
+ article.getHeader(Headers.NEWSGROUPS)[0]);
}
posted = true;
} else {
@@ -196,12 +197,13 @@
buf.append(' ');
buf.append(toa.toString());
}
- buf.append(" " + article.getHeader(Headers.LIST_POST)[0]);
+ buf.append(" ");
+ buf.append(article.getHeader(Headers.LIST_POST)[0]);
Log.get().warning("No group for" + buf.toString());
}
return posted;
} catch (Exception ex) {
- ex.printStackTrace();
+ Log.get().log(Level.WARNING, ex.getLocalizedMessage(), ex);
return false;
}
}
@@ -211,15 +213,17 @@
* This method MAY be called several times by PostCommand for the same
* article.
*/
- public static void toList(Article article, String group)
- throws IOException, MessagingException, StorageBackendException
- {
+ public static boolean toList(Article article, String group)
+ throws IOException, MessagingException, StorageBackendException {
// Get mailing lists for the group of this article
List rcptAddresses = StorageManager.current().getListsForGroup(group);
- if (rcptAddresses == null || rcptAddresses.size() == 0) {
- Log.get().warning("No ML-address for " + group + " found.");
- return;
+ if (rcptAddresses == null || rcptAddresses.isEmpty()) {
+ StringBuilder strBuf = new StringBuilder();
+ strBuf.append("No ML address found for group ");
+ strBuf.append(group);
+ Log.get().warning(strBuf.toString());
+ return false;
}
for (String rcptAddress : rcptAddresses) {
@@ -229,7 +233,7 @@
String smtpUser = Config.inst().get(Config.MLSEND_USER, "user");
String smtpPw = Config.inst().get(Config.MLSEND_PASSWORD, "mysecret");
String smtpFrom = Config.inst().get(
- Config.MLSEND_ADDRESS, article.getHeader(Headers.FROM)[0]);
+ Config.MLSEND_ADDRESS, article.getHeader(Headers.FROM)[0]);
// TODO: Make Article cloneable()
article.getMessageID(); // Make sure an ID is existing
@@ -251,8 +255,9 @@
Stats.getInstance().mailGatewayed(group);
Log.get().info("MLGateway: Mail " + article.getHeader("Subject")[0]
- + " was delivered to " + rcptAddress + ".");
+ + " was delivered to " + rcptAddress + ".");
}
+ return true;
}
/**
@@ -262,8 +267,7 @@
* @throws javax.mail.MessagingException
*/
private static void rewriteSenderAddress(Article msg)
- throws MessagingException
- {
+ throws MessagingException {
String mlAddress = Config.inst().get(Config.MLSEND_ADDRESS, null);
if (mlAddress != null) {