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 an...@apache.org on 2013/05/03 21:35:14 UTC

svn commit: r1478947 - in /james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching: ./ guava/

Author: andrzej
Date: Fri May  3 19:34:57 2013
New Revision: 1478947

URL: http://svn.apache.org/r1478947
Log:
[IMAP-373] small fixes and some comments

Modified:
    james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CacheInvalidatingMailboxListener.java
    james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMailboxMapper.java
    james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMailboxSessionMapperFactory.java
    james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMessageMapper.java
    james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/MailboxByPathCache.java
    james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/MailboxMetadataCache.java
    james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/guava/GuavaMailboxByPathCache.java
    james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/guava/GuavaMailboxMetadataCache.java

Modified: james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CacheInvalidatingMailboxListener.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CacheInvalidatingMailboxListener.java?rev=1478947&r1=1478946&r2=1478947&view=diff
==============================================================================
--- james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CacheInvalidatingMailboxListener.java (original)
+++ james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CacheInvalidatingMailboxListener.java Fri May  3 19:34:57 2013
@@ -3,7 +3,11 @@ package org.apache.mailbox.caching;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxListenerSupport;
 import org.apache.james.mailbox.exception.MailboxException;
-
+/**
+ * A MailboxListener that invalidates the configured caches in response to Events
+ * 
+ * @param <Id>
+ */
 public class CacheInvalidatingMailboxListener<Id> implements MailboxListener {
 
 	private MailboxByPathCache<Id> mailboxCacheByPath;
@@ -14,6 +18,13 @@ public class CacheInvalidatingMailboxLis
 		this.mailboxMetadataCache = mailboxMetadataCache;
 	}
 	
+	/**
+	 * Used to register the CacheInvalidatingMailboxListener as a global listener 
+	 * into the main MailboxListener
+	 * 
+	 * @param listener
+	 * @throws MailboxException
+	 */
 	public void register(MailboxListenerSupport listener) throws MailboxException {
 		listener.addGlobalListener(this, null);
 	}

Modified: james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMailboxMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMailboxMapper.java?rev=1478947&r1=1478946&r2=1478947&view=diff
==============================================================================
--- james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMailboxMapper.java (original)
+++ james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMailboxMapper.java Fri May  3 19:34:57 2013
@@ -7,6 +7,12 @@ import org.apache.james.mailbox.model.Ma
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
+/**
+ * A MailboxMapper implementation that uses a MailboxByPathCache to cache the information
+ * from the underlying MailboxMapper
+ * 
+ * @param <Id>
+ */
 
 public class CachingMailboxMapper<Id> implements MailboxMapper<Id> {
 
@@ -36,7 +42,7 @@ public class CachingMailboxMapper<Id> im
 
 	@Override
 	public void delete(Mailbox<Id> mailbox) throws MailboxException {
-		cache.invalidate(mailbox);
+		invalidate(mailbox);
 		underlying.delete(mailbox);
 	}
 
@@ -62,7 +68,7 @@ public class CachingMailboxMapper<Id> im
 	public boolean hasChildren(Mailbox<Id> mailbox, char delimiter)
 			throws MailboxException, MailboxNotFoundException {
 		// TODO possible to meaningfully cache it?
-		return hasChildren(mailbox, delimiter);
+		return underlying.hasChildren(mailbox, delimiter);
 	}
 
 	@Override

Modified: james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMailboxSessionMapperFactory.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMailboxSessionMapperFactory.java?rev=1478947&r1=1478946&r2=1478947&view=diff
==============================================================================
--- james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMailboxSessionMapperFactory.java (original)
+++ james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMailboxSessionMapperFactory.java Fri May  3 19:34:57 2013
@@ -8,6 +8,13 @@ import org.apache.james.mailbox.store.ma
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.user.SubscriptionMapper;
 
+/**
+ * A MailboxSessionMapperFactory that uses the underlying MailboxSessionMapperFactory to provide
+ * caching variants of MessageMapper and MailboxMapper built around the MessageMapper and MailboxMapper
+ * provided by it
+ * 
+ * @param <Id>
+ */
 public class CachingMailboxSessionMapperFactory<Id> extends
 		MailboxSessionMapperFactory<Id> {
 
@@ -24,14 +31,13 @@ public class CachingMailboxSessionMapper
 	@Override
 	public MessageMapper<Id> createMessageMapper(MailboxSession session)
 			throws MailboxException {
-		return new CachingMessageMapper<Id>(underlying.createMessageMapper(session), mailboxByPathCache);
+		return new CachingMessageMapper<Id>(underlying.createMessageMapper(session), mailboxMetadataCache);
 	}
 
 	@Override
 	public MailboxMapper<Id> createMailboxMapper(MailboxSession session)
 			throws MailboxException {
-	    //TODO(eric) this cast will not work!!! Temporary adding it to compile the project...
-		return (MailboxMapper<Id>) new CachingMessageMapper<Id>(underlying.createMailboxMapper(session), mailboxMetadataCache);
+		return new CachingMailboxMapper<Id>(underlying.createMailboxMapper(session), mailboxByPathCache);
 	}
 
 	@Override

Modified: james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMessageMapper.java?rev=1478947&r1=1478946&r2=1478947&view=diff
==============================================================================
--- james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMessageMapper.java (original)
+++ james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/CachingMessageMapper.java Fri May  3 19:34:57 2013
@@ -9,12 +9,18 @@ import org.apache.james.mailbox.exceptio
 import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.UpdatedFlags;
-import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.Message;
 
+/**
+ * A MessageMapper implementation that uses a MailboxMetadataCache to cache the information
+ * from the underlying MessageMapper
+ * 
+ * @param <Id>
+ */
 public class CachingMessageMapper<Id> implements MessageMapper<Id> {
+
 	
 	private MessageMapper<Id> underlying;
 	private MailboxMetadataCache<Id> cache;
@@ -24,15 +30,7 @@ public class CachingMessageMapper<Id> im
 		this.cache = cache;
 	}
 	
-    public CachingMessageMapper(MessageMapper<Id> createMessageMapper, MailboxByPathCache<Id> mailboxByPathCache) {
-        // TODO(eric) Auto-generated constructor stub
-    }
-
-    public CachingMessageMapper(MailboxMapper<Id> mailboxMapper, MailboxMetadataCache<Id> mailboxMetadataCache) {
-        // TODO(eric) Auto-generated constructor stub
-    }
-
-    @Override
+	@Override
 	public void endRequest() {
 		underlying.endRequest();
 	}

Modified: james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/MailboxByPathCache.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/MailboxByPathCache.java?rev=1478947&r1=1478946&r2=1478947&view=diff
==============================================================================
--- james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/MailboxByPathCache.java (original)
+++ james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/MailboxByPathCache.java Fri May  3 19:34:57 2013
@@ -6,6 +6,11 @@ import org.apache.james.mailbox.model.Ma
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
+/**
+ * Caches the MailboxPath -> Mailbox mapping
+ * 
+ * @param <Id>
+ */
 public interface MailboxByPathCache<Id> {
 
 	public abstract Mailbox<Id> findMailboxByPath(MailboxPath mailboxName,

Modified: james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/MailboxMetadataCache.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/MailboxMetadataCache.java?rev=1478947&r1=1478946&r2=1478947&view=diff
==============================================================================
--- james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/MailboxMetadataCache.java (original)
+++ james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/MailboxMetadataCache.java Fri May  3 19:34:57 2013
@@ -4,6 +4,12 @@ import org.apache.james.mailbox.exceptio
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
+/**
+ * Caches the simple yet possibly expensive to compute metadata info 
+ * about a Mailbox like all/unseen messages count and similar
+ * 
+ * @param <Id>
+ */
 public interface MailboxMetadataCache<Id> {
 
 	public abstract long countMessagesInMailbox(Mailbox<Id> mailbox,

Modified: james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/guava/GuavaMailboxByPathCache.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/guava/GuavaMailboxByPathCache.java?rev=1478947&r1=1478946&r2=1478947&view=diff
==============================================================================
--- james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/guava/GuavaMailboxByPathCache.java (original)
+++ james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/guava/GuavaMailboxByPathCache.java Fri May  3 19:34:57 2013
@@ -9,12 +9,20 @@ import org.apache.mailbox.caching.Mailbo
 
 import com.google.common.cache.Cache;
 
+/**
+ * Guava-based implementation of MailboxByPathCache.
+ * Note: for efficiency/simplicity reasons the cache key is MailboxPath.toString()
+ * That may help also make it compatible with other cache backends in the future.
+ *
+ * @param <Id>
+ */
 public class GuavaMailboxByPathCache<Id> extends AbstractGuavaCache implements MailboxByPathCache<Id> {
 	
 	private final Cache<String, Mailbox<Id>> findMailboxByPathCache = BUILDER.build();
 
 	private final MailboxByPathCacheWrapper wrapper;
 
+	
 	public GuavaMailboxByPathCache() {
 		this.wrapper = new MailboxByPathCacheWrapper(findMailboxByPathCache);
 	}

Modified: james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/guava/GuavaMailboxMetadataCache.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/guava/GuavaMailboxMetadataCache.java?rev=1478947&r1=1478946&r2=1478947&view=diff
==============================================================================
--- james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/guava/GuavaMailboxMetadataCache.java (original)
+++ james/mailbox/trunk/caching/src/main/java/org/apache/mailbox/caching/guava/GuavaMailboxMetadataCache.java Fri May  3 19:34:57 2013
@@ -6,6 +6,12 @@ import org.apache.james.mailbox.store.ma
 import org.apache.mailbox.caching.MailboxMetadataCache;
 
 import com.google.common.cache.Cache;
+/**
+ * Guava-based implementation of MailboxMetadataCache.
+ * Note: for efficiency/simplicity reasons the cache key is Mailbox.getMailboxId()
+ *
+ * @param <Id>
+ */
 
 public class GuavaMailboxMetadataCache<Id> extends AbstractGuavaCache implements MailboxMetadataCache<Id> {
 



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