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 bt...@apache.org on 2015/09/22 12:42:38 UTC
svn commit: r1704568 - in /james/protocols/trunk/imap/src:
main/java/org/apache/james/imap/encode/
main/java/org/apache/james/imap/encode/main/
test/java/org/apache/james/imap/encode/
Author: btellier
Date: Tue Sep 22 10:42:34 2015
New Revision: 1704568
URL: http://svn.apache.org/viewvc?rev=1704568&view=rev
Log:
PROTOCOLS-108 Adding Quota responses encoders
Added:
james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java
james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/QuotaRootResponseEncoder.java
james/protocols/trunk/imap/src/test/java/org/apache/james/imap/encode/QuotaResponseEncoderTest.java
james/protocols/trunk/imap/src/test/java/org/apache/james/imap/encode/QuotaRootResponseEncoderTest.java
Modified:
james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java
Added: james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java?rev=1704568&view=auto
==============================================================================
--- james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java (added)
+++ james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/QuotaResponseEncoder.java Tue Sep 22 10:42:34 2015
@@ -0,0 +1,76 @@
+/****************************************************************
+ * 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;
+
+import org.apache.james.imap.api.ImapConstants;
+import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.process.ImapSession;
+import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
+import org.apache.james.imap.message.response.QuotaResponse;
+import org.apache.james.mailbox.model.Quota;
+
+import java.io.IOException;
+
+/**
+ * Quota response encoder
+ */
+public class QuotaResponseEncoder extends AbstractChainedImapEncoder {
+
+ public QuotaResponseEncoder(ImapEncoder next) {
+ super(next);
+ }
+
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
+
+ QuotaResponse quotaResponse = (QuotaResponse) acceptableMessage;
+
+ String quotaRoot = quotaResponse.getQuotaRoot();
+ Quota quota = quotaResponse.getQuota();
+
+ composer.untagged();
+ composer.commandName(ImapConstants.QUOTA_RESPONSE_NAME);
+ composer.message(quotaRoot == null ? "" : quotaRoot);
+ composer.openParen();
+ composer.message(quotaResponse.getResourceName());
+ // See RFC 2087 : response for STORAGE should be in KB. For more accuracy, we stores B, so conversion should be made
+ if (quotaResponse.getResourceName().equalsIgnoreCase(ImapConstants.STORAGE_QUOTA_RESOURCE)) {
+ composer.message(quota.getUsed()/1024);
+ composer.message(quota.getMax()/1024);
+ } else {
+ composer.message(quota.getUsed());
+ composer.message(quota.getMax());
+ }
+ composer.closeParen();
+
+ composer.end();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.james.imap.encode.base.AbstractChainedImapEncoder#isAcceptable
+ * (org.apache.james.imap.api.ImapMessage)
+ */
+ public boolean isAcceptable(ImapMessage message) {
+ return message instanceof QuotaResponse;
+ }
+
+}
Added: james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/QuotaRootResponseEncoder.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/QuotaRootResponseEncoder.java?rev=1704568&view=auto
==============================================================================
--- james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/QuotaRootResponseEncoder.java (added)
+++ james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/QuotaRootResponseEncoder.java Tue Sep 22 10:42:34 2015
@@ -0,0 +1,65 @@
+/****************************************************************
+ * 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;
+
+import org.apache.james.imap.api.ImapConstants;
+import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.process.ImapSession;
+import org.apache.james.imap.encode.base.AbstractChainedImapEncoder;
+import org.apache.james.imap.message.response.QuotaRootResponse;
+
+import java.io.IOException;
+
+/**
+ * QUOTAROOT response encoder
+ */
+public class QuotaRootResponseEncoder extends AbstractChainedImapEncoder {
+
+ public QuotaRootResponseEncoder(ImapEncoder next) {
+ super(next);
+ }
+
+ protected void doEncode(ImapMessage acceptableMessage, ImapResponseComposer composer, ImapSession session) throws IOException {
+
+ QuotaRootResponse quotaRootResponse = (QuotaRootResponse) acceptableMessage;
+
+ String quotaRoot = quotaRootResponse.getQuotaRoot();
+ String mailbox = quotaRootResponse.getMailboxName();
+
+
+ composer.untagged();
+ composer.commandName(ImapConstants.QUOTAROOT_RESPONSE_NAME);
+ composer.mailbox(mailbox == null ? "" : mailbox);
+ composer.message(quotaRoot == null ? "" : quotaRoot);
+ composer.end();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.james.imap.encode.base.AbstractChainedImapEncoder#isAcceptable
+ * (org.apache.james.imap.api.ImapMessage)
+ */
+ public boolean isAcceptable(ImapMessage message) {
+ return message instanceof QuotaRootResponse;
+ }
+
+}
\ No newline at end of file
Modified: james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java?rev=1704568&r1=1704567&r2=1704568&view=diff
==============================================================================
--- james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java (original)
+++ james/protocols/trunk/imap/src/main/java/org/apache/james/imap/encode/main/DefaultImapEncoderFactory.java Tue Sep 22 10:42:34 2015
@@ -43,6 +43,8 @@ import org.apache.james.imap.encode.Sear
import org.apache.james.imap.encode.StatusResponseEncoder;
import org.apache.james.imap.encode.VanishedResponseEncoder;
import org.apache.james.imap.encode.XListResponseEncoder;
+import org.apache.james.imap.encode.QuotaResponseEncoder;
+import org.apache.james.imap.encode.QuotaRootResponseEncoder;
import org.apache.james.imap.encode.base.EndImapEncoder;
/**
@@ -84,7 +86,9 @@ public class DefaultImapEncoderFactory i
final AuthenticateResponseEncoder authResponseEncoder = new AuthenticateResponseEncoder(continuationResponseEncoder);
final ESearchResponseEncoder esearchResponseEncoder = new ESearchResponseEncoder(authResponseEncoder);
final VanishedResponseEncoder vanishedResponseEncoder = new VanishedResponseEncoder(esearchResponseEncoder);
- return vanishedResponseEncoder;
+ final QuotaResponseEncoder quotaResponseEncoder = new QuotaResponseEncoder(vanishedResponseEncoder);
+ final QuotaRootResponseEncoder quotaRootResponseEncoder = new QuotaRootResponseEncoder(quotaResponseEncoder);
+ return quotaRootResponseEncoder;
}
private final Localizer localizer;
Added: james/protocols/trunk/imap/src/test/java/org/apache/james/imap/encode/QuotaResponseEncoderTest.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/imap/src/test/java/org/apache/james/imap/encode/QuotaResponseEncoderTest.java?rev=1704568&view=auto
==============================================================================
--- james/protocols/trunk/imap/src/test/java/org/apache/james/imap/encode/QuotaResponseEncoderTest.java (added)
+++ james/protocols/trunk/imap/src/test/java/org/apache/james/imap/encode/QuotaResponseEncoderTest.java Tue Sep 22 10:42:34 2015
@@ -0,0 +1,58 @@
+/****************************************************************
+ * 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;
+
+import org.apache.james.imap.encode.base.ByteImapResponseWriter;
+import org.apache.james.imap.encode.base.EndImapEncoder;
+import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
+import org.apache.james.imap.message.response.QuotaResponse;
+import org.apache.james.mailbox.store.quota.QuotaImpl;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * QUOTA Response encoder test
+ */
+public class QuotaResponseEncoderTest {
+
+ @Test
+ public void quotaMessageResponseShouldBeWellFormatted() throws Exception {
+ QuotaResponse response = new QuotaResponse("MESSAGE", "root", QuotaImpl.quota(231, 1024));
+ ByteImapResponseWriter byteImapResponseWriter = new ByteImapResponseWriter();
+ ImapResponseComposer composer = new ImapResponseComposerImpl(byteImapResponseWriter, 1024);
+ QuotaResponseEncoder encoder = new QuotaResponseEncoder(new EndImapEncoder());
+ encoder.encode(response, composer, null);
+ String responseString = byteImapResponseWriter.getString();
+ assertEquals("* QUOTA root (MESSAGE 231 1024)\r\n", responseString);
+ }
+
+ @Test
+ public void quotaStorageResponseShouldBeWellFormatted() throws Exception {
+ QuotaResponse response = new QuotaResponse("STORAGE", "root", QuotaImpl.quota(231*1024, 1024*1024));
+ ByteImapResponseWriter byteImapResponseWriter = new ByteImapResponseWriter();
+ ImapResponseComposer composer = new ImapResponseComposerImpl(byteImapResponseWriter, 1024);
+ QuotaResponseEncoder encoder = new QuotaResponseEncoder(new EndImapEncoder());
+ encoder.encode(response, composer, null);
+ String responseString = byteImapResponseWriter.getString();
+ assertEquals("* QUOTA root (STORAGE 231 1024)\r\n", responseString);
+ }
+
+}
Added: james/protocols/trunk/imap/src/test/java/org/apache/james/imap/encode/QuotaRootResponseEncoderTest.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/imap/src/test/java/org/apache/james/imap/encode/QuotaRootResponseEncoderTest.java?rev=1704568&view=auto
==============================================================================
--- james/protocols/trunk/imap/src/test/java/org/apache/james/imap/encode/QuotaRootResponseEncoderTest.java (added)
+++ james/protocols/trunk/imap/src/test/java/org/apache/james/imap/encode/QuotaRootResponseEncoderTest.java Tue Sep 22 10:42:34 2015
@@ -0,0 +1,46 @@
+/****************************************************************
+ * 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;
+
+import org.apache.james.imap.encode.base.ByteImapResponseWriter;
+import org.apache.james.imap.encode.base.EndImapEncoder;
+import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
+import org.apache.james.imap.message.response.QuotaRootResponse;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * QUOTAROOT response encoder
+ */
+public class QuotaRootResponseEncoderTest {
+
+ @Test
+ public void test() throws Exception {
+ QuotaRootResponse response = new QuotaRootResponse("INBOX", "root");
+ ByteImapResponseWriter byteImapResponseWriter = new ByteImapResponseWriter();
+ ImapResponseComposer composer = new ImapResponseComposerImpl(byteImapResponseWriter, 1024);
+ QuotaRootResponseEncoder encoder = new QuotaRootResponseEncoder(new EndImapEncoder());
+ encoder.encode(response, composer, null);
+ String responseString = byteImapResponseWriter.getString();
+ assertEquals("* QUOTAROOT \"INBOX\" root\r\n", responseString);
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org