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 rd...@apache.org on 2009/05/15 16:58:23 UTC

svn commit: r775171 - in /james/imap/trunk/message/src: main/java/org/apache/james/imap/encode/ main/java/org/apache/james/imap/encode/main/ test/java/org/apache/james/imap/encode/

Author: rdonkin
Date: Fri May 15 14:58:23 2009
New Revision: 775171

URL: http://svn.apache.org/viewvc?rev=775171&view=rev
Log:
IMAP-89 Inject Localizer. https://issues.apache.org/jira/browse/IMAP-89

Added:
    james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultLocalizer.java   (with props)
Modified:
    james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/StatusResponseEncoder.java
    james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java
    james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/StatusResponseEncoderTest.java

Modified: james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/StatusResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/StatusResponseEncoder.java?rev=775171&r1=775170&r2=775171&view=diff
==============================================================================
--- james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/StatusResponseEncoder.java (original)
+++ james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/StatusResponseEncoder.java Fri May 15 14:58:23 2009
@@ -21,10 +21,13 @@
 
 import java.io.IOException;
 import java.util.Collection;
+import java.util.Collections;
 
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapMessage;
 import org.apache.james.imap.api.display.HumanReadableText;
+import org.apache.james.imap.api.display.Locales;
+import org.apache.james.imap.api.display.Localizer;
 import org.apache.james.imap.api.message.response.StatusResponse;
 import org.apache.james.imap.api.message.response.StatusResponse.ResponseCode;
 import org.apache.james.imap.api.message.response.StatusResponse.Type;
@@ -33,8 +36,11 @@
 
 public class StatusResponseEncoder extends AbstractChainedImapEncoder {
 
-    public StatusResponseEncoder(ImapEncoder next) {
+    private final Localizer localizer;
+    
+    public StatusResponseEncoder(ImapEncoder next, final Localizer localizer) {
         super(next);
+        this.localizer = localizer;
     }
 
     protected void doEncode(ImapMessage acceptableMessage,
@@ -47,7 +53,7 @@
         final String tag = response.getTag();
         final ImapCommand command = response.getCommand();
         final HumanReadableText textKey = response.getTextKey();
-        final String text = asString(textKey);
+        final String text = asString(textKey, session);
         final Collection parameters;
         final long number;
         if (responseCode == null) {
@@ -61,14 +67,10 @@
                 text);
     }
 
-    private String asString(HumanReadableText text) {
-        final String result;
-        if (text == null) {
-            result = null;
-        } else {
-            result = text.getDefaultValue();
-        }
-        return result;
+    @SuppressWarnings("unchecked")
+    private String asString(HumanReadableText text, ImapSession session) {
+        // TODO: calculate locales
+        return localizer.localize(text, new Locales(Collections.EMPTY_LIST, null));
     }
 
     private String asString(StatusResponse.ResponseCode code) {

Modified: james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java?rev=775171&r1=775170&r2=775171&view=diff
==============================================================================
--- james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java (original)
+++ james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java Fri May 15 14:58:23 2009
@@ -19,6 +19,7 @@
 
 package org.apache.james.imap.encode.main;
 
+import org.apache.james.imap.api.display.Localizer;
 import org.apache.james.imap.encode.CapabilityResponseEncoder;
 import org.apache.james.imap.encode.ExistsResponseEncoder;
 import org.apache.james.imap.encode.ExpungeResponseEncoder;
@@ -40,11 +41,11 @@
  */
 public class DefaultImapEncoderFactory implements ImapEncoderFactory {
 
-    public static final ImapEncoder createDefaultEncoder() {
+    public static final ImapEncoder createDefaultEncoder(final Localizer localizer) {
         final EndImapEncoder endImapEncoder = new EndImapEncoder();
         final NamespaceResponseEncoder namespaceEncoder = new NamespaceResponseEncoder(endImapEncoder);
         final StatusResponseEncoder statusResponseEncoder = new StatusResponseEncoder(
-                namespaceEncoder);
+                namespaceEncoder, localizer);
         final RecentResponseEncoder recentResponseEncoder = new RecentResponseEncoder(
                 statusResponseEncoder);
         final FetchResponseEncoder fetchResponseEncoder = new FetchResponseEncoder(
@@ -68,8 +69,19 @@
         return capabilityResponseEncoder;
     }
 
+    private final Localizer localizer;
+    
+    public DefaultImapEncoderFactory() {
+        this(new DefaultLocalizer());
+    }
+    
+    public DefaultImapEncoderFactory(final Localizer localizer) {
+        super();
+        this.localizer = localizer;
+    }
+
     public ImapEncoder buildImapEncoder() {
-        return createDefaultEncoder();
+        return createDefaultEncoder(localizer);
     }
 
 }

Added: james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultLocalizer.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultLocalizer.java?rev=775171&view=auto
==============================================================================
--- james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultLocalizer.java (added)
+++ james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultLocalizer.java Fri May 15 14:58:23 2009
@@ -0,0 +1,45 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.imap.encode.main;
+
+import org.apache.james.imap.api.display.HumanReadableText;
+import org.apache.james.imap.api.display.Locales;
+import org.apache.james.imap.api.display.Localizer;
+
+/**
+ * Just uses {@link HumanReadableText#getDefaultValue()}.
+ * This implementation is independent of user, client and system locale.
+ */
+public class DefaultLocalizer implements Localizer {
+
+    /**
+     * @see Localizer#localize(HumanReadableText, Locales)
+     */
+    public String localize(HumanReadableText text, Locales locales) {
+        final String result;
+        if (text == null) {
+            result = null;
+        } else {
+            result = text.getDefaultValue();
+        }
+        return result;
+    }
+
+}

Propchange: james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/main/DefaultLocalizer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/StatusResponseEncoderTest.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/StatusResponseEncoderTest.java?rev=775171&r1=775170&r2=775171&view=diff
==============================================================================
--- james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/StatusResponseEncoderTest.java (original)
+++ james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/StatusResponseEncoderTest.java Fri May 15 14:58:23 2009
@@ -27,6 +27,7 @@
 import org.apache.james.imap.encode.ImapResponseComposer;
 import org.apache.james.imap.encode.StatusResponseEncoder;
 import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
+import org.apache.james.imap.encode.main.DefaultLocalizer;
 import org.jmock.Expectations;
 import org.jmock.integration.junit3.MockObjectTestCase;
 
@@ -57,7 +58,7 @@
         response = new ImapResponseComposerImpl(writer);
         mockNextEncoder = mock(ImapEncoder.class);
         mockStatusResponse = mock(StatusResponse.class);
-        encoder = new StatusResponseEncoder(mockNextEncoder);
+        encoder = new StatusResponseEncoder(mockNextEncoder, new DefaultLocalizer());
         stubCommand = ImapCommand.anyStateCommand(COMMAND);
     }
 



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