Author: norman
Date: Fri May 14 10:30:02 2010
New Revision: 944194
URL: http://svn.apache.org/viewvc?rev=944194&view=rev
Log:
* Add javadocs
* Some more small layout fixes for JCR to allow better scalling when you have
more the 10000 users
Modified:
james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/AbstractStressTest.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/GlobalMailboxSessionJCRRepository.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRImapConstants.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRUtils.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/Persistent.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAUidConsumer.java
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/MailboxSessionEntityManagerFactory.java
Modified:
james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/AbstractStressTest.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/AbstractStressTest.java?rev=944194&r1=944193&r2=944194&view=diff
==============================================================================
---
james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/AbstractStressTest.java
(original)
+++
james/imap/trunk/deployment/src/test/java/org/apache/james/imap/functional/AbstractStressTest.java
Fri May 14 10:30:02 2010
@@ -36,7 +36,8 @@ import org.junit.Test;
public abstract class AbstractStressTest {
- private final static int APPEND_OPERATIONS = 1000;
+ private final static int APPEND_OPERATIONS = 500;
+
protected abstract StoreMailboxManager<?> getMailboxManager();
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/GlobalMailboxSessionJCRRepository.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/GlobalMailboxSessionJCRRepository.java?rev=944194&r1=944193&r2=944194&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/GlobalMailboxSessionJCRRepository.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/GlobalMailboxSessionJCRRepository.java
Fri May 14 10:30:02 2010
@@ -47,6 +47,9 @@ public class GlobalMailboxSessionJCRRepo
}
}
+ /**
+ * Login in the {...@link Repository} with the global configured user and
password
+ */
@Override
public Session login(MailboxSession session) throws RepositoryException {
Session jcrSession = (Session)
session.getAttributes().get(JCR_SESSION);
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRImapConstants.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRImapConstants.java?rev=944194&r1=944193&r2=944194&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRImapConstants.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRImapConstants.java
Fri May 14 10:30:02 2010
@@ -24,13 +24,6 @@ package org.apache.james.imap.jcr;
*/
public interface JCRImapConstants {
- /**
- * Node path scaling
- */
- public final static int MAX_SCALING = -1;
-
- public final static int MIN_SCALING = 0;
-
/**
* Delimiter for Nodes
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRUtils.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRUtils.java?rev=944194&r1=944193&r2=944194&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRUtils.java
(original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRUtils.java
Fri May 14 10:30:02 2010
@@ -55,14 +55,27 @@ public class JCRUtils implements JCRImap
}
session = repository.login(new SimpleCredentials(username,
pass), workspace);
}
- // Register the custom node types defined in the CND file
- InputStream is = Thread.currentThread().getContextClassLoader()
-
.getResourceAsStream("org/apache/james/imap/jcr/imap.cnd");
- CndImporter.registerNodeTypes(new InputStreamReader(is), session);
+ registerCnd(session);
session.logout();
} catch (Exception e) {
throw new RuntimeException("Unable to register cnd file", e);
}
}
+ /**
+ * Register the imap CND file
+ *
+ * @param session
+ */
+ public static void registerCnd(Session session) {
+ // Register the custom node types defined in the CND file
+ InputStream is = Thread.currentThread().getContextClassLoader()
+
.getResourceAsStream("org/apache/james/imap/jcr/imap.cnd");
+ try {
+ CndImporter.registerNodeTypes(new InputStreamReader(is), session);
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to register cnd file", e);
+ }
+ }
+
}
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/Persistent.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/Persistent.java?rev=944194&r1=944193&r2=944194&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/Persistent.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/Persistent.java
Fri May 14 10:30:02 2010
@@ -23,6 +23,7 @@ import java.io.IOException;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
+
public interface Persistent {
/**
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java?rev=944194&r1=944193&r2=944194&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java
Fri May 14 10:30:02 2010
@@ -243,8 +243,18 @@ public class JCRMailboxMapper extends Ab
//split the name so we can construct a nice node tree
final String nameParts[] = name.split("\\"
+String.valueOf(delimiter),3);
- for (int i = 0; i < nameParts.length; i++) {
- node = JcrUtils.getOrAddNode(node, nameParts[i],
"imap:mailbox");
+ // this loop will create a structure like:
+ // /mailboxes/u/user/INBOX
+ //
+ // This is needed to minimize the child nodes a bit
+ for (int i = 0; i < nameParts.length; i++) {
+ String part = nameParts[i];
+ if (i == 1) {
+ node = JcrUtils.getOrAddNode(node,
String.valueOf(part.charAt(0)), "imap:mailbox");
+
+ }
+ node = JcrUtils.getOrAddNode(node, part,
"imap:mailbox");
+
}
jcrMailbox.merge(node);
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java?rev=944194&r1=944193&r2=944194&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
Fri May 14 10:30:02 2010
@@ -48,6 +48,10 @@ import org.apache.james.imap.mailbox.Sea
import org.apache.james.imap.store.mail.MessageMapper;
import org.apache.james.imap.store.mail.model.MailboxMembership;
+/**
+ * JCR implementation of a {...@link MessageMapper}
+ *
+ */
public class JCRMessageMapper extends AbstractJCRMapper implements
MessageMapper<String> {
private final String uuid;
@@ -402,7 +406,7 @@ public class JCRMessageMapper extends Ab
Calendar cal = Calendar.getInstance();
cal.setTime(date);
final String year = String.valueOf(cal.get(Calendar.YEAR));
- final String month = String.valueOf(cal.get(Calendar.MONTH
+1));
+ final String month = String.valueOf(cal.get(Calendar.MONTH)
+1);
final String day =
String.valueOf(cal.get(Calendar.DAY_OF_MONTH));
Node dayNode = null;
@@ -420,13 +424,13 @@ public class JCRMessageMapper extends Ab
@Override
protected Object run(Node mailboxNode) throws
RepositoryException {
- Node yearNode =
JcrUtils.getOrAddFolder(mailboxNode, String.valueOf(year));
+ Node yearNode =
JcrUtils.getOrAddFolder(mailboxNode, year);
yearNode.addMixin(JcrConstants.MIX_LOCKABLE);
- Node monthNode = JcrUtils.getOrAddFolder(yearNode,
String.valueOf(month));
+ Node monthNode = JcrUtils.getOrAddFolder(yearNode,
month);
monthNode.addMixin(JcrConstants.MIX_LOCKABLE);
- Node dayNode = JcrUtils.getOrAddFolder(monthNode,
String.valueOf(day));
+ Node dayNode = JcrUtils.getOrAddFolder(monthNode,
day);
dayNode.addMixin(JcrConstants.MIX_LOCKABLE);
// save the folders for now
getSession().save();
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java?rev=944194&r1=944193&r2=944194&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
Fri May 14 10:30:02 2010
@@ -151,7 +151,12 @@ public class JCRSubscriptionMapper exten
if (sub == null) {
Node subscriptionsNode =
JcrUtils.getOrAddNode(getSession().getRootNode(), SUBSCRIPTIONS_PATH);
- Node userNode = JcrUtils.getOrAddNode(subscriptionsNode,
username);
+ // this loop will create a structure like:
+ // /mailboxes/u/user/INBOX
+ //
+ // This is needed to minimize the child nodes a bit
+ Node userNode = JcrUtils.getOrAddNode(subscriptionsNode,
String.valueOf(username.charAt(0)));
+ userNode = JcrUtils.getOrAddNode(userNode,
String.valueOf(username));
node = JcrUtils.getOrAddNode(userNode, mailbox,
"imap:subscription");
} else {
node = sub.getNode();
Modified:
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAUidConsumer.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAUidConsumer.java?rev=944194&r1=944193&r2=944194&view=diff
==============================================================================
---
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAUidConsumer.java
(original)
+++
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAUidConsumer.java
Fri May 14 10:30:02 2010
@@ -26,11 +26,16 @@ import org.apache.james.imap.mailbox.Mai
import org.apache.james.imap.store.UidConsumer;
import org.apache.james.imap.store.mail.model.Mailbox;
+/**
+ * Take care of consume/reserve the next uid for a {...@link Mailbox}. This is
done by using database locks
+ *
+ *
+ */
public class JPAUidConsumer implements UidConsumer<Long>{
- private MailboxSessionEntityManagerFactory factory;
+ private final MailboxSessionEntityManagerFactory factory;
- public JPAUidConsumer(MailboxSessionEntityManagerFactory factory) {
+ public JPAUidConsumer(final MailboxSessionEntityManagerFactory factory) {
this.factory = factory;
}
Modified:
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/MailboxSessionEntityManagerFactory.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/MailboxSessionEntityManagerFactory.java?rev=944194&r1=944193&r2=944194&view=diff
==============================================================================
---
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/MailboxSessionEntityManagerFactory.java
(original)
+++
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/MailboxSessionEntityManagerFactory.java
Fri May 14 10:30:02 2010
@@ -31,9 +31,9 @@ import org.apache.james.imap.mailbox.Mai
public class MailboxSessionEntityManagerFactory {
protected final static String ENTITYMANAGER ="ENTITYMANAGER";
- private EntityManagerFactory factory;
+ private final EntityManagerFactory factory;
- public MailboxSessionEntityManagerFactory(EntityManagerFactory factory) {
+ public MailboxSessionEntityManagerFactory(final EntityManagerFactory
factory) {
this.factory = factory;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]