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 ie...@apache.org on 2012/03/02 14:29:38 UTC
svn commit: r1296197 - in /james/mailbox/trunk/zoo-seq-provider: ./
src/main/java/org/apache/james/mailbox/store/mail/ src/main/resources/
src/test/java/org/ src/test/java/org/apache/
src/test/java/org/apache/james/ src/test/java/org/apache/james/mailb...
Author: ieugen
Date: Fri Mar 2 13:29:38 2012
New Revision: 1296197
URL: http://svn.apache.org/viewvc?rev=1296197&view=rev
Log:
Issue #MAILBOX-103 - Design and implement Distributed UID generation
MAILBOX-103
- added curator as a zookeeper client
- implement java.io.Closeable
- added stub tests
Added:
james/mailbox/trunk/zoo-seq-provider/src/main/resources/
james/mailbox/trunk/zoo-seq-provider/src/test/java/org/
james/mailbox/trunk/zoo-seq-provider/src/test/java/org/apache/
james/mailbox/trunk/zoo-seq-provider/src/test/java/org/apache/james/
james/mailbox/trunk/zoo-seq-provider/src/test/java/org/apache/james/mailbox/
james/mailbox/trunk/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/
james/mailbox/trunk/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/
james/mailbox/trunk/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java (with props)
Modified:
james/mailbox/trunk/zoo-seq-provider/ (props changed)
james/mailbox/trunk/zoo-seq-provider/pom.xml
james/mailbox/trunk/zoo-seq-provider/src/main/java/org/apache/james/mailbox/store/mail/ZooUidProvider.java
Propchange: james/mailbox/trunk/zoo-seq-provider/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Fri Mar 2 13:29:38 2012
@@ -0,0 +1 @@
+target
Modified: james/mailbox/trunk/zoo-seq-provider/pom.xml
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/zoo-seq-provider/pom.xml?rev=1296197&r1=1296196&r2=1296197&view=diff
==============================================================================
--- james/mailbox/trunk/zoo-seq-provider/pom.xml (original)
+++ james/mailbox/trunk/zoo-seq-provider/pom.xml Fri Mar 2 13:29:38 2012
@@ -32,6 +32,10 @@
<name>Apache James Zookeeper Sequence Provider</name>
<description>High performance distribuited sequence provider based on ZooKeepr </description>
+ <properties>
+ <curator.version>1.1.2</curator.version>
+ </properties>
+
<dependencies>
<dependency>
<groupId>junit</groupId>
@@ -55,5 +59,15 @@
<groupId>${project.groupId}</groupId>
<artifactId>apache-james-mailbox-store</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.netflix.curator</groupId>
+ <artifactId>curator-recipes</artifactId>
+ <version>${curator.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.netflix.curator</groupId>
+ <artifactId>curator-framework</artifactId>
+ <version>${curator.version}</version>
+ </dependency>
</dependencies>
</project>
Modified: james/mailbox/trunk/zoo-seq-provider/src/main/java/org/apache/james/mailbox/store/mail/ZooUidProvider.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/zoo-seq-provider/src/main/java/org/apache/james/mailbox/store/mail/ZooUidProvider.java?rev=1296197&r1=1296196&r2=1296197&view=diff
==============================================================================
--- james/mailbox/trunk/zoo-seq-provider/src/main/java/org/apache/james/mailbox/store/mail/ZooUidProvider.java (original)
+++ james/mailbox/trunk/zoo-seq-provider/src/main/java/org/apache/james/mailbox/store/mail/ZooUidProvider.java Fri Mar 2 13:29:38 2012
@@ -18,6 +18,9 @@
****************************************************************/
package org.apache.james.mailbox.store.mail;
+import com.netflix.curator.framework.CuratorFramework;
+import java.io.Closeable;
+import java.io.IOException;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -25,17 +28,38 @@ import org.apache.james.mailbox.store.ma
/**
* ZooKeepr based implementation of a distribuited sequential UID generator.
*/
-public class ZooUidProvider<E> implements UidProvider<E> {
+public class ZooUidProvider<E> implements UidProvider<E>, Closeable {
+
+ /** Inject the curator client using srping */
+ private final CuratorFramework client;
+
+ public ZooUidProvider(CuratorFramework client) {
+ this.client = client;
+ client.start();
+ }
@Override
public long nextUid(MailboxSession session,
Mailbox<E> mailbox) throws MailboxException {
- throw new UnsupportedOperationException("Not supported yet.");
+ if (client.isStarted()) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ } else {
+ throw new IllegalStateException("Curator client is closed.");
+ }
}
@Override
public long lastUid(MailboxSession session,
Mailbox<E> mailbox) throws MailboxException {
- throw new UnsupportedOperationException("Not supported yet.");
+ if (client.isStarted()) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ } else {
+ throw new IllegalStateException("Curator client is closed.");
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ client.close();
}
}
Added: james/mailbox/trunk/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java?rev=1296197&view=auto
==============================================================================
--- james/mailbox/trunk/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java (added)
+++ james/mailbox/trunk/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java Fri Mar 2 13:29:38 2012
@@ -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.mailbox.store.mail;
+
+import java.util.UUID;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+import org.junit.Test;
+
+/**
+ * Test for UID provider.
+ */
+public class ZooUidProviderTest {
+
+ /**
+ * Test of nextUid method, of class ZooUidProvider.
+ */
+ @Test
+ public void testNextUid() throws Exception {
+ System.out.println("nextUid");
+ MailboxSession session = null;
+ Mailbox<UUID> mailbox = null;
+ ZooUidProvider instance = null;
+ long expResult = 0L;
+ long result = instance.nextUid(session, mailbox);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of lastUid method, of class ZooUidProvider.
+ */
+ @Test
+ public void testLastUid() throws Exception {
+ System.out.println("lastUid");
+ MailboxSession session = null;
+ Mailbox<UUID> mailbox = null;
+ ZooUidProvider instance = null;
+ long expResult = 0L;
+ long result = instance.lastUid(session, mailbox);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of close method, of class ZooUidProvider.
+ */
+ @Test
+ public void testClose() throws Exception {
+ System.out.println("close");
+ ZooUidProvider instance = null;
+ instance.close();
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+}
Propchange: james/mailbox/trunk/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
------------------------------------------------------------------------------
svn:keywords = Id Author Revision HeadURL
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org