Author: dongxu Date: Thu Sep 12 02:03:24 2013 New Revision: 1522108 URL: http://svn.apache.org/r1522108 Log: constantly changed by manolo
Modified: james/hupa/trunk/client/pom.xml james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/LoginView.java james/hupa/trunk/client/src/main/webapp/Hupa.html james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/MessageUtils.java james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/MessageUtilsTest.java james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ContactsResult.java Modified: james/hupa/trunk/client/pom.xml URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/pom.xml?rev=1522108&r1=1522107&r2=1522108&view=diff ============================================================================== --- james/hupa/trunk/client/pom.xml (original) +++ james/hupa/trunk/client/pom.xml Thu Sep 12 02:03:24 2013 @@ -17,9 +17,7 @@ specific language governing permissions and limitations under the License. --> -<project - xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> @@ -77,10 +75,10 @@ <groupId>com.google.gwt</groupId> <artifactId>gwt-user</artifactId> <exclusions> - <exclusion> - <groupId>javax.validation</groupId> - <artifactId>validation-api</artifactId> - </exclusion> + <exclusion> + <groupId>javax.validation</groupId> + <artifactId>validation-api</artifactId> + </exclusion> </exclusions> </dependency> <dependency> @@ -97,9 +95,9 @@ <scope>provided</scope> </dependency> <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-validator</artifactId> - <version>4.2.0.Final</version> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-validator</artifactId> + <version>4.2.0.Final</version> </dependency> <dependency> <groupId>org.json</groupId> @@ -117,14 +115,14 @@ <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-server</artifactId> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-webapp</artifactId> - </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-server</artifactId> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-webapp</artifactId> + </dependency> </dependencies> <build> <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory> @@ -135,7 +133,7 @@ <configuration> <runTarget>Hupa.html</runTarget> <extraJvmArgs> - -Xmx512M -Xss128M -Dhupa.config.file=${project.parent.basedir}/server/src/main/webapp/WEB-INF/conf/config.properties + -Xmx512M -Xss128M </extraJvmArgs> <localWorkers>1</localWorkers> <compileReport>true</compileReport> @@ -187,11 +185,11 @@ </resource> </webResources> <warName>${project.artifactId}-${project.version}</warName> - <archive> - <manifest> - <mainClass>org.apache.hupa.Launcher</mainClass> - </manifest> - </archive> + <archive> + <manifest> + <mainClass>org.apache.hupa.Launcher</mainClass> + </manifest> + </archive> </configuration> </plugin> <plugin> @@ -246,7 +244,7 @@ </executions> </plugin> <plugin> - <groupId>org.apache.maven.plugins</groupId> + <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> @@ -275,33 +273,33 @@ <resources> <resource> <directory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</directory> - <include>org/apache/hupa/Launcher.class</include> + <include>org/apache/hupa/Launcher.class</include> </resource> </resources> </configuration> </execution> </executions> </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <id>jetty-classpath</id> - <phase>prepare-package</phase> - <goals> - <goal>unpack-dependencies</goal> - </goals> - <configuration> - <includeGroupIds>org.eclipse.jetty,javax.servlet</includeGroupIds> - <excludeArtifactIds>jsp-api,jstl</excludeArtifactIds> - <outputDirectory> - ${project.build.directory}/${project.artifactId}-${project.version} - </outputDirectory> - </configuration> - </execution> - </executions> - </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>jetty-classpath</id> + <phase>prepare-package</phase> + <goals> + <goal>unpack-dependencies</goal> + </goals> + <configuration> + <includeGroupIds>org.eclipse.jetty,javax.servlet</includeGroupIds> + <excludeArtifactIds>jsp-api,jstl</excludeArtifactIds> + <outputDirectory> + ${project.build.directory}/${project.artifactId}-${project.version} + </outputDirectory> + </configuration> + </execution> + </executions> + </plugin> </plugins> </build> </project> Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java?rev=1522108&r1=1522107&r2=1522108&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java Thu Sep 12 02:03:24 2013 @@ -49,8 +49,6 @@ import com.google.inject.Inject; public class LoginPresenter extends WidgetPresenter<LoginPresenter.Display>{ private HupaConstants constants = GWT.create(HupaConstants.class); - private int minUsernameLength = 1; - private int minPasswordLength = 1; public interface Display extends WidgetDisplay{ public HasClickHandlers getLoginClick(); @@ -73,10 +71,10 @@ public class LoginPresenter extends Widg * Try to login the user */ private void doLogin() { - String user = display.getUserNameValue().getValue(); - String pass = display.getPasswordValue().getValue(); + String user = display.getUserNameValue().getValue().trim(); + String pass = display.getPasswordValue().getValue().trim(); - if (user.length() < minUsernameLength || pass.length() < minPasswordLength) + if (user.isEmpty() || pass.isEmpty()) return; display.setLoading(true); Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/LoginView.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/LoginView.java?rev=1522108&r1=1522107&r2=1522108&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/LoginView.java (original) +++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/LoginView.java Thu Sep 12 02:03:24 2013 @@ -81,9 +81,7 @@ public class LoginView extends Composite mainContainer.setStyleName(HupaCSS.C_login_container); flexTable.addStyleName(HupaCSS.C_login_form); usernameTextBox.addStyleName(HupaCSS.C_login_box); - usernameTextBox.setName("user"); passwordTextBox.addStyleName(HupaCSS.C_login_box); - usernameTextBox.setName("password"); buttonBar.add(submitButton); buttonBar.add(resetButton); @@ -112,8 +110,10 @@ public class LoginView extends Composite // stores the presenter clickHandler. formPanel.addSubmitHandler(new FormPanel.SubmitHandler() { public void onSubmit(SubmitEvent event) { - event.cancel(); - loginButton.click(); + if (!usernameTextBox.getValue().trim().isEmpty() && !passwordTextBox.getValue().trim().isEmpty()) { + loginButton.click(); + } +// event.cancel(); } }); // loginButton must be in the document to handle the click() method @@ -134,6 +134,7 @@ public class LoginView extends Composite passwordTextBox.setFocus(true); } else if (event.getSource().equals(passwordTextBox)) { submitButton.click(); +// formPanel.submit(); } } } Modified: james/hupa/trunk/client/src/main/webapp/Hupa.html URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/webapp/Hupa.html?rev=1522108&r1=1522107&r2=1522108&view=diff ============================================================================== --- james/hupa/trunk/client/src/main/webapp/Hupa.html (original) +++ james/hupa/trunk/client/src/main/webapp/Hupa.html Thu Sep 12 02:03:24 2013 @@ -88,7 +88,7 @@ <!-- We need this because passwords in forms rendered by js are not saved in browsers --> <div id="login"> - <form id="loginForm" action="hupa/hupa.nocache.js" method="post"> + <form id="loginForm" action="hupa/clear.cache.gif" method="post"> <input id="email" name="email" type="text"> <input id="password" name="password" type="password"> </form> Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java?rev=1522108&r1=1522107&r2=1522108&view=diff ============================================================================== --- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java (original) +++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java Thu Sep 12 02:03:24 2013 @@ -19,9 +19,18 @@ package org.apache.hupa.server.handler; -import com.google.inject.Provider; +import java.io.IOException; +import java.util.ArrayList; -import com.sun.mail.imap.IMAPStore; +import javax.mail.Address; +import javax.mail.FetchProfile; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.Multipart; +import javax.mail.Part; +import javax.mail.UIDFolder; +import javax.mail.internet.MimeMessage.RecipientType; +import javax.servlet.http.HttpSession; import net.customware.gwt.dispatch.server.ExecutionContext; import net.customware.gwt.dispatch.shared.ActionException; @@ -29,27 +38,16 @@ import net.customware.gwt.dispatch.share import org.apache.commons.logging.Log; import org.apache.hupa.server.IMAPStoreCache; import org.apache.hupa.server.preferences.UserPreferencesStorage; +import org.apache.hupa.server.utils.MessageUtils; import org.apache.hupa.shared.data.IMAPFolder; +import org.apache.hupa.shared.data.Message.IMAPFlag; import org.apache.hupa.shared.data.Tag; import org.apache.hupa.shared.data.User; -import org.apache.hupa.shared.data.Message.IMAPFlag; import org.apache.hupa.shared.rpc.FetchMessages; import org.apache.hupa.shared.rpc.FetchMessagesResult; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; - -import javax.mail.Address; -import javax.mail.FetchProfile; -import javax.mail.Message; -import javax.mail.MessagingException; -import javax.mail.Multipart; -import javax.mail.Part; -import javax.mail.UIDFolder; -import javax.mail.internet.MimeUtility; -import javax.mail.internet.MimeMessage.RecipientType; -import javax.servlet.http.HttpSession; +import com.google.inject.Provider; +import com.sun.mail.imap.IMAPStore; public abstract class AbstractFetchMessagesHandler <A extends FetchMessages> extends AbstractSessionHandler<A, FetchMessagesResult>{ @@ -128,13 +126,13 @@ public abstract class AbstractFetchMessa Message m = messages[i]; String from = null; if (m.getFrom() != null && m.getFrom().length >0 ) { - from = decodeText(m.getFrom()[0].toString()); + from = MessageUtils.decodeText(m.getFrom()[0].toString()); } msg.setFrom(from); String replyto = null; if (m.getReplyTo() != null && m.getReplyTo().length >0 ) { - replyto = decodeText(m.getReplyTo()[0].toString()); + replyto = MessageUtils.decodeText(m.getReplyTo()[0].toString()); } msg.setReplyto(replyto); @@ -143,7 +141,7 @@ public abstract class AbstractFetchMessa Address[] toArray = m.getRecipients(RecipientType.TO); if (toArray != null) { for (Address addr : toArray) { - String mailTo = decodeText(addr.toString()); + String mailTo = MessageUtils.decodeText(addr.toString()); to.add(mailTo); } } @@ -152,7 +150,7 @@ public abstract class AbstractFetchMessa // Check if a subject exist and if so decode it String subject = m.getSubject(); if (subject != null) { - subject = decodeText(subject); + subject = MessageUtils.decodeText(subject); } msg.setSubject(subject); @@ -161,7 +159,7 @@ public abstract class AbstractFetchMessa ArrayList<String> cc = new ArrayList<String>(); if (ccArray != null) { for (Address addr : ccArray) { - String mailCc = decodeText(addr.toString()); + String mailCc = MessageUtils.decodeText(addr.toString()); cc.add(mailCc); } } @@ -247,20 +245,5 @@ public abstract class AbstractFetchMessa } } - /** - * Decode iso-xxxx strings present in subjects and emails like: - * - * =?ISO-8859-1?Q?No=20hay=20ma=F1ana?= <he...@hupa.org> - */ - private String decodeText(String s) { - String ret = s; - try { - ret = MimeUtility.decodeText(s); - } catch (UnsupportedEncodingException e) { - logger.debug("Unable to decode text " + s + " " + e.getMessage()); - } - // Remove quotes around names in email addresses - ret = ret.replaceFirst("^[\"' ]+([^\"]*)[\"' ]+<", "$1 <"); - return ret; - } + } Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java?rev=1522108&r1=1522107&r2=1522108&view=diff ============================================================================== --- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java (original) +++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java Thu Sep 12 02:03:24 2013 @@ -147,7 +147,7 @@ public abstract class AbstractSendMessag message.setRecipients(RecipientType.TO, MessageUtils.getRecipients(m.getTo())); message.setRecipients(RecipientType.CC, MessageUtils.getRecipients(m.getCc())); message.setRecipients(RecipientType.BCC, MessageUtils.getRecipients(m.getBcc())); - message.setSubject(m.getSubject()); + message.setSubject(MessageUtils.encodeTexts(m.getSubject())); message.saveChanges(); return message; } Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/MessageUtils.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/MessageUtils.java?rev=1522108&r1=1522107&r2=1522108&view=diff ============================================================================== --- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/MessageUtils.java (original) +++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/MessageUtils.java Thu Sep 12 02:03:24 2013 @@ -22,20 +22,26 @@ package org.apache.hupa.server.utils; <<<<<<< HEAD import java.io.File; import java.io.IOException; +<<<<<<< HEAD import java.io.InputStream; import java.io.OutputStream; +======= +>>>>>>> constantly changed by manolo import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; +<<<<<<< HEAD ======= import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; >>>>>>> first commit +======= +>>>>>>> constantly changed by manolo import javax.activation.DataHandler; import javax.activation.DataSource; @@ -88,10 +94,14 @@ public class MessageUtils { Address[] array = new Address[recipients.size()]; for (int i = 0; i < recipients.size(); i++) { <<<<<<< HEAD +<<<<<<< HEAD array[i] = new InternetAddress(encodeEmail(recipients.get(i))); ======= array[i] = new InternetAddress(recipients.get(i)); >>>>>>> first commit +======= + array[i] = new InternetAddress(encodeEmail(recipients.get(i))); +>>>>>>> constantly changed by manolo } return array; } @@ -301,5 +311,53 @@ public class MessageUtils { } ======= +<<<<<<< HEAD >>>>>>> first commit +======= + /** + * Decode iso-xxxx strings present in subjects and emails like: + * + * =?ISO-8859-1?Q?No=20hay=20ma=F1ana?= <he...@hupa.org> + */ + public static String decodeText(String s) { + String ret = s; + try { + ret = MimeUtility.decodeText(s); + } catch (UnsupportedEncodingException e) { + System.out.println(e.getMessage()); + } + ret = ret + // Remove quotes around names in email addresses + .replaceFirst("^[<\"' ]+([^\"<>]*)[>\"' ]+<", "$1 <"); + return ret; + } + + /** + * Encode non ascii characters present in emails like: + * + * =?ISO-8859-1?Q?No=20hay=20ma=F1ana?= <he...@hupa.org> + */ + public static String encodeEmail(String s) { + if (s == null) { + return s; + } + Pattern p = Pattern.compile("^\\s*(.*?)\\s*(<[^>]+>)\\s*"); + Matcher m = p.matcher(s); + return m.matches() ? encodeTexts(m.group(1)) + " " + m.group(2) : s; + } + + /** + * Encode non ascii characters present in email headers + */ + public static String encodeTexts(String s) { + String ret = s; + if (s != null) { + try { + ret = MimeUtility.encodeText(s, "ISO-8859-1", null); + } catch (UnsupportedEncodingException e) { + } + } + return ret; + } +>>>>>>> constantly changed by manolo } \ No newline at end of file Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java?rev=1522108&r1=1522107&r2=1522108&view=diff ============================================================================== --- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java (original) +++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java Thu Sep 12 02:03:24 2013 @@ -40,6 +40,7 @@ public class ContactsHandlerTest extends userPreferences.addContact("<someb...@foo.com>"); userPreferences.addContact("someb...@foo.com"); userPreferences.addContact("\"someb...@foo.com\" <someb...@foo.com>"); + userPreferences.addContact("<someb...@foo.com> <someb...@foo.com>"); Assert.assertEquals(2, getContacts().length); } Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java?rev=1522108&r1=1522107&r2=1522108&view=diff ============================================================================== --- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java (original) +++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java Thu Sep 12 02:03:24 2013 @@ -44,7 +44,7 @@ public class FetchMessagesHandlerTest ex MimeMessage m1 = new MimeMessage(session, is); is = new ByteArrayInputStream("From: \"=?ISO-8859-1?Q?Manolo_Pe=F1a?=\" <pe...@foo.com>\nTo: b...@foo.com\nSubject: something\n\ndata".getBytes()); MimeMessage m2 = new MimeMessage(session, is); - is = new ByteArrayInputStream("From: a...@foo.com\nTo: b...@foo.com\nSubject: =?ISO-8859-1?Q?Monta=F1a?=\n\ndata".getBytes()); + is = new ByteArrayInputStream("From: a...@foo.com\nTo: \"<b...@foo.com>\" <b...@foo.com>\nSubject: =?ISO-8859-1?Q?Monta=F1a?=\n\ndata".getBytes()); MimeMessage m3 = new MimeMessage(session, is); ArrayList<org.apache.hupa.shared.data.Message> msgs = fetchMessagesHandler.convert(2, f, new Message[]{m1, m2, m3}); @@ -61,6 +61,8 @@ public class FetchMessagesHandlerTest ex msgs = fetchMessagesHandler.convert(10, f, new Message[]{m3}); assertEquals("Monta\u00F1a", msgs.get(0).getSubject()); + assertEquals("b...@foo.com <b...@foo.com>", msgs.get(0).getTo().get(0)); + } public void testFetchMessages() throws Exception { Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/MessageUtilsTest.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/MessageUtilsTest.java?rev=1522108&r1=1522107&r2=1522108&view=diff ============================================================================== --- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/MessageUtilsTest.java (original) +++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/MessageUtilsTest.java Thu Sep 12 02:03:24 2013 @@ -39,6 +39,7 @@ import org.apache.hupa.server.HupaGuiceT import java.util.List; +import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; @@ -78,8 +79,13 @@ public class MessageUtilsTest extends Hu assertEquals(1, inlineImgs.size()); } <<<<<<< HEAD +<<<<<<< HEAD @Test public void getRecipients () throws Exception { +======= + + public void testGetRecipients () throws Exception { +>>>>>>> constantly changed by manolo String encodedEmail = "=?ISO-8859-1?Q?Manolo_Pe=F1a?= <he...@hupa.org>"; String decodedEmail = MessageUtils.decodeText(encodedEmail); assertFalse(encodedEmail.equals(decodedEmail)); @@ -87,6 +93,9 @@ public class MessageUtilsTest extends Hu Address[] addr = MessageUtils.getRecipients(encodedEmail, decodedEmail); assertEquals(addr[0].toString(), addr[1].toString()); } +<<<<<<< HEAD ======= >>>>>>> first commit +======= +>>>>>>> constantly changed by manolo } \ No newline at end of file Modified: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ContactsResult.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ContactsResult.java?rev=1522108&r1=1522107&r2=1522108&view=diff ============================================================================== --- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ContactsResult.java (original) +++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ContactsResult.java Thu Sep 12 02:03:24 2013 @@ -148,12 +148,16 @@ public class ContactsResult implements R } public Contact(String address) { - mail = address.replaceAll("^.*<([^>]+)>", "$1"); + mail = address.replaceAll("^.*<([^>]+)>\\s*$", "$1"); realname = mail.equals(address) ? mail : address - .replaceAll("<.+$", "") - .replaceAll("^[\\s\"']+", "") - .replaceAll("[\\s\"']+$", ""); + // remove the email part + .replaceAll("<[^<>]+>\\s*$", "") + // remove start symbols in the name + .replaceAll("^[\\s\"'<]+", "") + // remove end symbols in the name + .replaceAll("[\\s\"'>]+$", "") + ; if (realname.isEmpty()) realname = mail; --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org