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/11/28 13:55:45 UTC
svn commit: r1716955 - in
/james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store:
event/EventFactory.java event/MailboxEventDispatcher.java
search/ListeningMessageSearchIndex.java
Author: btellier
Date: Sat Nov 28 12:55:45 2015
New Revision: 1716955
URL: http://svn.apache.org/viewvc?rev=1716955&view=rev
Log:
MAILBOX-211 Introduce event factories
Added:
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
Modified:
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
Added: james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java?rev=1716955&view=auto
==============================================================================
--- james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java (added)
+++ james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java Sat Nov 28 12:55:45 2015
@@ -0,0 +1,176 @@
+
+
+package org.apache.james.mailbox.store.event;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageMetaData;
+import org.apache.james.mailbox.model.UpdatedFlags;
+import org.apache.james.mailbox.store.StoreMailboxPath;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.MailboxId;
+
+import java.util.List;
+import java.util.Map;
+import java.util.SortedMap;
+
+public class EventFactory<Id extends MailboxId> {
+
+ public interface MailboxAware<LocalId extends MailboxId> {
+ Mailbox<LocalId> getMailbox();
+ }
+
+ public final class AddedImpl<LocalId extends MailboxId> extends MailboxListener.Added implements MailboxAware<LocalId> {
+ private final Map<Long, MessageMetaData> added;
+ private final Mailbox<LocalId> mailbox;
+
+ public AddedImpl(final MailboxSession session, final Mailbox<LocalId> mailbox, final SortedMap<Long, MessageMetaData> added) {
+ super(session, new StoreMailboxPath<LocalId>(mailbox));
+ this.added = ImmutableMap.copyOf(added);
+ this.mailbox = mailbox;
+ }
+
+ public List<Long> getUids() {
+ return ImmutableList.copyOf(added.keySet());
+ }
+
+ public MessageMetaData getMetaData(long uid) {
+ return added.get(uid);
+ }
+
+ public Mailbox<LocalId> getMailbox() {
+ return mailbox;
+ }
+ }
+
+ public final class ExpungedImpl<LocalId extends MailboxId> extends MailboxListener.Expunged implements MailboxAware<LocalId> {
+ private final Map<Long, MessageMetaData> uids;
+ private final Mailbox<LocalId> mailbox;
+
+ public ExpungedImpl(MailboxSession session, final Mailbox<LocalId> mailbox, final Map<Long, MessageMetaData> uids) {
+ super(session, new StoreMailboxPath<LocalId>(mailbox));
+ this.uids = ImmutableMap.copyOf(uids);
+ this.mailbox = mailbox;
+ }
+
+ public List<Long> getUids() {
+ return ImmutableList.copyOf(uids.keySet());
+ }
+
+ public MessageMetaData getMetaData(long uid) {
+ return uids.get(uid);
+ }
+
+ public Mailbox<LocalId> getMailbox() {
+ return mailbox;
+ }
+ }
+
+ public final class FlagsUpdatedImpl<LocalId extends MailboxId> extends MailboxListener.FlagsUpdated implements MailboxAware<LocalId> {
+ private final List<Long> uids;
+
+ private final Mailbox<LocalId> mailbox;
+
+ private final List<UpdatedFlags> uFlags;
+
+ public FlagsUpdatedImpl(MailboxSession session, final Mailbox<LocalId> mailbox, final List<Long> uids, final List<UpdatedFlags> uFlags) {
+ super(session, new StoreMailboxPath<LocalId>(mailbox));
+ this.uids = ImmutableList.copyOf(uids);
+ this.uFlags = ImmutableList.copyOf(uFlags);
+ this.mailbox = mailbox;
+ }
+
+ public List<Long> getUids() {
+ return uids;
+ }
+
+ public List<UpdatedFlags> getUpdatedFlags() {
+ return uFlags;
+ }
+
+ public Mailbox<LocalId> getMailbox() {
+ return mailbox;
+ }
+
+ }
+
+ public final class MailboxDeletionImpl<LocalId extends MailboxId> extends MailboxListener.MailboxDeletion implements MailboxAware<LocalId> {
+ private final Mailbox<LocalId> mailbox;
+
+ public MailboxDeletionImpl(MailboxSession session, Mailbox<LocalId> mailbox) {
+ super(session, new StoreMailboxPath<LocalId>(mailbox));
+ this.mailbox = mailbox;
+ }
+
+
+ public Mailbox<LocalId> getMailbox() {
+ return mailbox;
+ }
+
+ }
+
+ public final class MailboxAddedImpl<LocalId extends MailboxId> extends MailboxListener.MailboxAdded implements MailboxAware<LocalId> {
+
+ private final Mailbox<LocalId> mailbox;
+
+ public MailboxAddedImpl(MailboxSession session, Mailbox<LocalId> mailbox) {
+ super(session, new StoreMailboxPath<LocalId>(mailbox));
+ this.mailbox = mailbox;
+ }
+
+
+ public Mailbox<LocalId> getMailbox() {
+ return mailbox;
+ }
+
+ }
+
+ public final class MailboxRenamedEventImpl<LocalId extends MailboxId> extends MailboxListener.MailboxRenamed implements MailboxAware<LocalId> {
+
+ private final MailboxPath newPath;
+ private final Mailbox<LocalId> newMailbox;
+
+ public MailboxRenamedEventImpl(final MailboxSession session, final MailboxPath oldPath, final Mailbox<LocalId> newMailbox) {
+ super(session, oldPath);
+ this.newPath = new StoreMailboxPath<LocalId>(newMailbox);
+ this.newMailbox = newMailbox;
+ }
+
+ public MailboxPath getNewPath() {
+ return newPath;
+ }
+
+ @Override
+ public Mailbox<LocalId> getMailbox() {
+ return newMailbox;
+ }
+ }
+
+ public MailboxListener.Added added(MailboxSession session, SortedMap<Long, MessageMetaData> uids, Mailbox<Id> mailbox) {
+ return new AddedImpl<Id>(session, mailbox, uids);
+ }
+
+ public MailboxListener.Expunged expunged(final MailboxSession session, Map<Long, MessageMetaData> uids, Mailbox<Id> mailbox) {
+ return new ExpungedImpl<Id>(session, mailbox, uids);
+ }
+
+ public MailboxListener.FlagsUpdated flagsUpdated(MailboxSession session, final List<Long> uids, final Mailbox<Id> mailbox, final List<UpdatedFlags> uflags) {
+ return new FlagsUpdatedImpl<Id>(session, mailbox, uids, uflags);
+ }
+
+ public MailboxListener.MailboxRenamed mailboxRenamed(MailboxSession session, MailboxPath from, Mailbox<Id> to) {
+ return new MailboxRenamedEventImpl<Id>(session, from, to);
+ }
+
+ public MailboxListener.MailboxDeletion mailboxDeleted(MailboxSession session, Mailbox<Id> mailbox) {
+ return new MailboxDeletionImpl<Id>(session, mailbox);
+ }
+
+ public MailboxListener.MailboxAdded mailboxAdded(MailboxSession session, Mailbox<Id> mailbox) {
+ return new MailboxAddedImpl<Id>(session, mailbox);
+ }
+
+}
Modified: james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java?rev=1716955&r1=1716954&r2=1716955&view=diff
==============================================================================
--- james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java (original)
+++ james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java Sat Nov 28 12:55:45 2015
@@ -19,19 +19,15 @@
package org.apache.james.mailbox.store.event;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.MailboxListener.MailboxAdded;
-import org.apache.james.mailbox.MailboxListener.MailboxDeletion;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.UpdatedFlags;
-import org.apache.james.mailbox.store.StoreMailboxPath;
import org.apache.james.mailbox.store.mail.model.MailboxId;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -40,260 +36,68 @@ import org.apache.james.mailbox.store.ma
*/
public class MailboxEventDispatcher<Id extends MailboxId> {
-
private final MailboxListener listener;
+ private final EventFactory<Id> eventFactory;
public MailboxEventDispatcher(MailboxListener listener) {
this.listener = listener;
+ this.eventFactory = new EventFactory<Id>();
}
-
/**
* Should get called when a new message was added to a Mailbox. All
* registered MailboxListener will get triggered then
- *
+ *
* @param session The mailbox session
* @param uids Sorted map with uids and message meta data
* @param mailbox The mailbox
*/
public void added(MailboxSession session, SortedMap<Long, MessageMetaData> uids, Mailbox<Id> mailbox) {
- final AddedImpl added = new AddedImpl(session, mailbox, uids);
- listener.event(added);
+ listener.event(eventFactory.added(session, uids, mailbox));
}
/**
* Should get called when a message was expunged from a Mailbox. All
* registered MailboxListener will get triggered then
- *
+ *
* @param session The mailbox session
* @param uids Sorted map with uids and message meta data
* @param mailbox The mailbox
*/
public void expunged(final MailboxSession session, Map<Long, MessageMetaData> uids, Mailbox<Id> mailbox) {
- final ExpungedImpl expunged = new ExpungedImpl(session, mailbox, uids);
- listener.event(expunged);
+ listener.event(eventFactory.expunged(session, uids, mailbox));
}
/**
* Should get called when the message flags were update in a Mailbox. All
* registered MailboxListener will get triggered then
- *
- * @param session
- * @param uids
- * @param mailbox
- * @param uflags
*/
public void flagsUpdated(MailboxSession session, final List<Long> uids, final Mailbox<Id> mailbox, final List<UpdatedFlags> uflags) {
- final FlagsUpdatedImpl flags = new FlagsUpdatedImpl(session, mailbox, uids, uflags);
- listener.event(flags);
+ listener.event(eventFactory.flagsUpdated(session, uids, mailbox, uflags));
}
-
-
/**
* Should get called when a Mailbox was renamed. All registered
* MailboxListener will get triggered then
- *
- * @param session
- * @param from
- * @param to
*/
public void mailboxRenamed(MailboxSession session, MailboxPath from, Mailbox<Id> to) {
- listener.event(new MailboxRenamedEventImpl(session, from, to));
- }
-
- public final class AddedImpl extends MailboxListener.Added {
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private SortedMap<Long, MessageMetaData> added;
- private final Mailbox<Id> mailbox;
-
- public AddedImpl(final MailboxSession session, final Mailbox<Id> mailbox, final SortedMap<Long, MessageMetaData> added) {
- super(session, new StoreMailboxPath<Id>(mailbox));
- this.added = added;
- this.mailbox = mailbox;
- }
-
- /**
- * @see org.apache.james.mailbox.MailboxListener.MessageEvent#getUids()
- */
- public List<Long> getUids() {
- return new ArrayList<Long>(added.keySet());
- }
-
- /**
- * @see org.apache.james.mailbox.MailboxListener.Added#getMetaData(long)
- */
- public MessageMetaData getMetaData(long uid) {
- return added.get(uid);
- }
-
- public Mailbox<Id> getMailbox() {
- return mailbox;
- }
- }
-
- public final class ExpungedImpl extends MailboxListener.Expunged {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private final Map<Long, MessageMetaData> uids;
- private final Mailbox<Id> mailbox;
-
- public ExpungedImpl(MailboxSession session, final Mailbox<Id> mailbox, final Map<Long, MessageMetaData> uids) {
- super(session, new StoreMailboxPath<Id>(mailbox));
- this.uids = uids;
- this.mailbox = mailbox;
- }
-
- /**
- * @see org.apache.james.mailbox.MailboxListener.MessageEvent#getUids()
- */
- public List<Long> getUids() {
- return new ArrayList<Long>(uids.keySet());
- }
-
- /**
- * @see org.apache.james.mailbox.MailboxListener.Expunged#getMetaData(long)
- */
- public MessageMetaData getMetaData(long uid) {
- return uids.get(uid);
- }
-
- public Mailbox<Id> getMailbox() {
- return mailbox;
- }
+ listener.event(eventFactory.mailboxRenamed(session, from, to));
}
- public final class FlagsUpdatedImpl extends MailboxListener.FlagsUpdated {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private final List<Long> uids;
-
- private final Mailbox<Id> mailbox;
-
- private final List<UpdatedFlags> uFlags;
-
- public FlagsUpdatedImpl(MailboxSession session, final Mailbox<Id> mailbox, final List<Long> uids, final List<UpdatedFlags> uFlags) {
- super(session, new StoreMailboxPath<Id>(mailbox));
- this.uids = uids;
- this.uFlags = uFlags;
- this.mailbox = mailbox;
- }
-
- /**
- * @see org.apache.james.mailbox.MailboxListener.MessageEvent#getUids()
- */
- public List<Long> getUids() {
- return uids;
- }
-
- /**
- * @see org.apache.james.mailbox.MailboxListener.FlagsUpdated#getUpdatedFlags()
- */
- public List<UpdatedFlags> getUpdatedFlags() {
- return uFlags;
- }
-
- public Mailbox<Id> getMailbox() {
- return mailbox;
- }
-
- }
-
- public final class MailboxDeletionImpl extends MailboxDeletion {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private final Mailbox<Id> mailbox;
-
- public MailboxDeletionImpl(MailboxSession session, Mailbox<Id> mailbox) {
- super(session, new StoreMailboxPath<Id>(mailbox));
- this.mailbox = mailbox;
- }
-
-
- public Mailbox<Id> getMailbox() {
- return mailbox;
- }
-
- }
-
- public final class MailboxAddedImpl extends MailboxAdded {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- private final Mailbox<Id> mailbox;
-
- public MailboxAddedImpl(MailboxSession session, Mailbox<Id> mailbox) {
- super(session, new StoreMailboxPath<Id>(mailbox));
- this.mailbox = mailbox;
- }
-
-
- public Mailbox<Id> getMailbox() {
- return mailbox;
- }
-
- }
/**
* Should get called when a Mailbox was deleted. All registered
* MailboxListener will get triggered then
- *
- * @param session
- * @param mailbox
*/
public void mailboxDeleted(MailboxSession session, Mailbox<Id> mailbox) {
- final MailboxDeletion event = new MailboxDeletionImpl(session, mailbox);
- listener.event(event);
+ listener.event(eventFactory.mailboxDeleted(session, mailbox));
}
/**
* Should get called when a Mailbox was added. All registered
* MailboxListener will get triggered then
- *
- * @param session
- * @param mailbox
*/
public void mailboxAdded(MailboxSession session, Mailbox<Id> mailbox) {
- final MailboxAdded event = new MailboxAddedImpl(session, mailbox);
- listener.event(event);
+ listener.event(eventFactory.mailboxAdded(session, mailbox));
}
- public final class MailboxRenamedEventImpl extends MailboxListener.MailboxRenamed {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- private final MailboxPath newPath;
- private final Mailbox<Id> newMailbox;
-
- public MailboxRenamedEventImpl(final MailboxSession session, final MailboxPath oldPath, final Mailbox<Id> newMailbox) {
- super(session, oldPath);
- this.newPath = new StoreMailboxPath<Id>(newMailbox);
- this.newMailbox = newMailbox;
- }
-
- /**
- * @see
- * org.apache.james.mailbox.MailboxListener.MailboxRenamed#getNewPath()
- */
- public MailboxPath getNewPath() {
- return newPath;
- }
-
- public Mailbox<Id> getNewMailbox() {
- return newMailbox;
- }
- }
}
Modified: james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
URL: http://svn.apache.org/viewvc/james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java?rev=1716955&r1=1716954&r2=1716955&view=diff
==============================================================================
--- james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java (original)
+++ james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java Sat Nov 28 12:55:45 2015
@@ -28,10 +28,7 @@ import org.apache.james.mailbox.MailboxS
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.UpdatedFlags;
-import org.apache.james.mailbox.store.event.MailboxEventDispatcher.AddedImpl;
-import org.apache.james.mailbox.store.event.MailboxEventDispatcher.ExpungedImpl;
-import org.apache.james.mailbox.store.event.MailboxEventDispatcher.FlagsUpdatedImpl;
-import org.apache.james.mailbox.store.event.MailboxEventDispatcher.MailboxDeletionImpl;
+import org.apache.james.mailbox.store.event.EventFactory;
import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
import org.apache.james.mailbox.store.mail.MessageMapperFactory;
import org.apache.james.mailbox.store.mail.model.MailboxId;
@@ -75,8 +72,8 @@ public abstract class ListeningMessageSe
try {
if (event instanceof MessageEvent) {
- if (event instanceof AddedImpl) {
- AddedImpl added = (AddedImpl) event;
+ if (event instanceof EventFactory.AddedImpl) {
+ EventFactory.AddedImpl added = (EventFactory.AddedImpl) event;
final Mailbox<Id> mailbox = added.getMailbox();
Iterator<Long> uids = added.getUids().iterator();
@@ -93,8 +90,8 @@ public abstract class ListeningMessageSe
}
}
- } else if (event instanceof ExpungedImpl) {
- ExpungedImpl expunged = (ExpungedImpl) event;
+ } else if (event instanceof EventFactory.ExpungedImpl) {
+ EventFactory.ExpungedImpl expunged = (EventFactory.ExpungedImpl) event;
final Mailbox<Id> mailbox = expunged.getMailbox();
List<Long> uids = expunged.getUids();
List<MessageRange> ranges = MessageRange.toRanges(uids);
@@ -106,8 +103,8 @@ public abstract class ListeningMessageSe
session.getLog().debug("Unable to deleted range " + range.toString() + " from index for mailbox " + mailbox, e);
}
}
- } else if (event instanceof FlagsUpdatedImpl) {
- FlagsUpdatedImpl flagsUpdated = (FlagsUpdatedImpl) event;
+ } else if (event instanceof EventFactory.FlagsUpdatedImpl) {
+ EventFactory.FlagsUpdatedImpl flagsUpdated = (EventFactory.FlagsUpdatedImpl) event;
final Mailbox<Id> mailbox = flagsUpdated.getMailbox();
Iterator<UpdatedFlags> flags = flagsUpdated.getUpdatedFlags().iterator();
@@ -120,9 +117,9 @@ public abstract class ListeningMessageSe
}
}
}
- } else if (event instanceof MailboxDeletionImpl) {
+ } else if (event instanceof EventFactory.MailboxDeletionImpl) {
// delete all indexed messages for the mailbox
- delete(session, ((MailboxDeletionImpl) event).getMailbox(), MessageRange.all());
+ delete(session, ((EventFactory.MailboxDeletionImpl) event).getMailbox(), MessageRange.all());
}
} catch (MailboxException e) {
session.getLog().debug("Unable to update index", e);
@@ -139,7 +136,7 @@ public abstract class ListeningMessageSe
/**
* Add the {@link Message} for the given {@link Mailbox} to the index
- *
+ *
* @param session
* @param mailbox
* @param message
@@ -149,7 +146,7 @@ public abstract class ListeningMessageSe
/**
* Delete the {@link MessageRange} for the given {@link Mailbox} from the index
- *
+ *
* @param session
* @param mailbox
* @param range
@@ -160,7 +157,7 @@ public abstract class ListeningMessageSe
/**
* Update the {@link MessageRange} for the given {@link Mailbox} with the new {@link Flags} in the index
- *
+ *
* @param session
* @param mailbox
* @param range
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org