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 2018/12/05 09:44:39 UTC

[08/14] james-project git commit: MAILBOX-355 Delete Event serialization

MAILBOX-355 Delete Event serialization

A new scala based version will be proposed.

Removing previous code makes subsequent changes easier.


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e877c0b2
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e877c0b2
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e877c0b2

Branch: refs/heads/master
Commit: e877c0b2215e53c455c4f9f883c4369dd3770ad9
Parents: 9494a11
Author: Benoit Tellier <bt...@linagora.com>
Authored: Tue Dec 4 10:30:27 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Dec 5 16:34:24 2018 +0700

----------------------------------------------------------------------
 .../resources/META-INF/spring/event-system.xml  |   4 -
 .../store/json/JacksonEventSerializer.java      | 227 ------------------
 .../mailbox/store/json/JsonEventSerializer.java |  32 ---
 .../store/json/event/EventConverter.java        | 232 -------------------
 .../json/event/EventNotValidException.java      |  26 ---
 .../store/json/event/MailboxConverter.java      |  91 --------
 .../json/event/dto/EventDataTransferObject.java | 203 ----------------
 .../mailbox/store/json/event/dto/EventType.java |  32 ---
 .../json/event/dto/FlagsDataTransferObject.java |  83 -------
 .../event/dto/LocaleDataTransferObject.java     |  49 ----
 .../event/dto/MailboxDataTransferObject.java    | 143 ------------
 .../dto/MailboxPathDataTransferObject.java      |  49 ----
 .../dto/MailboxSessionDataTransferObject.java   | 111 ---------
 .../dto/MessageMetaDataDataTransferObject.java  |  95 --------
 .../dto/UpdatedFlagsDataTransferObject.java     |  56 -----
 .../mailbox/store/json/EventSerializerTest.java | 165 -------------
 .../store/json/JsonEventSerializerTest.java     |  37 ---
 17 files changed, 1635 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/spring/src/main/resources/META-INF/spring/event-system.xml
----------------------------------------------------------------------
diff --git a/mailbox/spring/src/main/resources/META-INF/spring/event-system.xml b/mailbox/spring/src/main/resources/META-INF/spring/event-system.xml
index 44eace7..2bdc06e 100644
--- a/mailbox/spring/src/main/resources/META-INF/spring/event-system.xml
+++ b/mailbox/spring/src/main/resources/META-INF/spring/event-system.xml
@@ -28,10 +28,6 @@
         <constructor-arg index="1" ref="event-registry"/>
     </bean>
 
-    <bean id="event-converter" class="org.apache.james.mailbox.store.json.event.EventConverter" lazy-init="true">
-        <constructor-arg index="0" ref="mailbox-converter"/>
-    </bean>
-
     <bean id="synchronous-event-delivery" class="org.apache.james.mailbox.store.event.SynchronousEventDelivery" lazy-init="true">
         <constructor-arg index="0" ref="metricFactory"/>
     </bean>

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java
deleted file mode 100644
index 6710b58..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/****************************************************************
- * 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.json;
-
-import java.io.IOException;
-import java.util.Optional;
-
-import org.apache.james.core.Domain;
-import org.apache.james.core.quota.QuotaCount;
-import org.apache.james.core.quota.QuotaSize;
-import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.model.MessageId.Factory;
-import org.apache.james.mailbox.model.QuotaRoot;
-import org.apache.james.mailbox.store.event.EventSerializer;
-import org.apache.james.mailbox.store.json.event.EventConverter;
-import org.apache.james.mailbox.store.json.event.dto.EventDataTransferObject;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.ObjectCodec;
-import com.fasterxml.jackson.core.TreeNode;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.KeyDeserializer;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.module.SimpleModule;
-import com.fasterxml.jackson.databind.node.TextNode;
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
-import com.github.fge.lambdas.Throwing;
-
-public class JacksonEventSerializer implements EventSerializer {
-
-    private final EventConverter eventConverter;
-    private final ObjectMapper objectMapper;
-
-    public JacksonEventSerializer(EventConverter eventConverter, ObjectMapper objectMapper) {
-        this.eventConverter = eventConverter;
-        this.objectMapper = objectMapper;
-    }
-
-    @Override
-    public byte[] serializeEvent(MailboxListener.MailboxEvent event) throws Exception {
-        return objectMapper.writeValueAsBytes(eventConverter.convertToDataTransferObject(event));
-    }
-
-    @Override
-    public MailboxListener.MailboxEvent deSerializeEvent(byte[] serializedEvent) throws Exception {
-        EventDataTransferObject eventDataTransferObject = objectMapper.readValue(serializedEvent, EventDataTransferObject.class);
-        return eventConverter.retrieveEvent(eventDataTransferObject);
-    }
-
-    public static ObjectMapper configureObjectMapper(ObjectMapper objectMapper, MessageId.Factory messageIdFactory) {
-        SimpleModule module = new SimpleModule();
-        module.addDeserializer(MessageUid.class, new MessageUidDeserializer());
-        module.addKeyDeserializer(MessageUid.class, new MessageUidKeyDeserializer());
-        module.addSerializer(MessageUid.class, new MessageUidSerializer());
-        module.addKeySerializer(MessageUid.class, new MessageUidKeySerializer());
-        module.addSerializer(MessageId.class, new MessageIdSerializer());
-        module.addDeserializer(MessageId.class, new MessageIdDeserializer(messageIdFactory));
-        module.addSerializer(QuotaRoot.class, new QuotaRootSerializer());
-        module.addDeserializer(QuotaRoot.class, new QuotaRootDeserializer());
-        module.addSerializer(QuotaCount.class, new QuotaCountSerializer());
-        module.addDeserializer(QuotaCount.class, new QuotaCountDeserializer());
-        module.addSerializer(QuotaSize.class, new QuotaSizeSerializer());
-        module.addDeserializer(QuotaSize.class, new QuotaSizeDeserializer());
-        objectMapper.registerModules(module, new Jdk8Module());
-        return objectMapper;
-    }
-
-    public static class MessageUidDeserializer extends JsonDeserializer<MessageUid> {
-
-        @Override
-        public MessageUid deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
-            return MessageUid.of(Long.parseLong(parser.getValueAsString()));
-        }
-        
-    }
-
-    public static class MessageUidSerializer extends JsonSerializer<MessageUid> {
-
-        @Override
-        public void serialize(MessageUid value, JsonGenerator generator, SerializerProvider serializers) throws IOException, JsonProcessingException {
-            generator.writeString(String.valueOf(value.asLong()));
-        }
-        
-    }
-
-    public static class MessageUidKeyDeserializer extends KeyDeserializer {
-
-        @Override
-        public Object deserializeKey(String key, DeserializationContext context) throws IOException, JsonProcessingException {
-            return MessageUid.of(Long.parseLong(key));
-        }
-        
-    }
-
-    public static class MessageUidKeySerializer extends JsonSerializer<MessageUid> {
-
-        @Override
-        public void serialize(MessageUid value, JsonGenerator generator, SerializerProvider serializers) throws IOException, JsonProcessingException {
-            generator.writeFieldName(String.valueOf(value.asLong()));
-        }
-        
-    }
-
-    public static class MessageIdSerializer extends JsonSerializer<MessageId> {
-
-        @Override
-        public void serialize(MessageId value, JsonGenerator generator, SerializerProvider serializers) throws IOException, JsonProcessingException {
-            generator.writeString(String.valueOf(value.serialize()));
-        }
-        
-    }
-
-    public static class MessageIdDeserializer extends JsonDeserializer<MessageId> {
-        private final Factory factory;
-
-        public MessageIdDeserializer(MessageId.Factory factory) {
-            this.factory = factory;
-        }
-
-        @Override
-        public MessageId deserialize(JsonParser p, DeserializationContext context) throws IOException, JsonProcessingException {
-            return factory.fromString(p.getValueAsString());
-        }
-        
-    }
-
-    private static final String QUOTA_ROOT_VALUE_FIELD = "value";
-    private static final String QUOTA_ROOT_DOMAIN_FIELD = "domain";
-
-    public static class QuotaRootSerializer extends JsonSerializer<QuotaRoot> {
-
-        @Override
-        public void serialize(QuotaRoot value, JsonGenerator generator, SerializerProvider serializers) throws IOException, JsonProcessingException {
-            generator.writeStartObject();
-            generator.writeStringField(QUOTA_ROOT_VALUE_FIELD, value.getValue());
-            value.getDomain()
-                .ifPresent(Throwing.consumer(domain -> generator.writeStringField(QUOTA_ROOT_DOMAIN_FIELD, domain.asString())));
-            generator.writeEndObject();
-        }
-        
-    }
-
-    public static class QuotaRootDeserializer extends JsonDeserializer<QuotaRoot> {
-
-        @Override
-        public QuotaRoot deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
-            ObjectCodec codec = parser.getCodec();
-            TreeNode node = codec.readTree(parser);
-            return QuotaRoot.quotaRoot(value(node), domain(node));
-        }
-
-        private String value(TreeNode node) throws IOException, JsonParseException {
-            TextNode value = (TextNode) node.get(QUOTA_ROOT_VALUE_FIELD);
-            return value.asText();
-        }
-
-        private Optional<Domain> domain(TreeNode node) throws IOException, JsonParseException {
-            TreeNode value = node.get(QUOTA_ROOT_DOMAIN_FIELD);
-            if (value == null || value.isMissingNode()) {
-                return Optional.empty();
-            }
-            return Optional.ofNullable(node.asToken().asString()).map(Domain::of);
-        }
-        
-    }
-
-    public static class QuotaCountSerializer extends JsonSerializer<QuotaCount> {
-
-        @Override
-        public void serialize(QuotaCount value, JsonGenerator generator, SerializerProvider serializers) throws IOException, JsonProcessingException {
-            generator.writeNumber(value.asLong());
-        }
-        
-    }
-
-    public static class QuotaCountDeserializer extends JsonDeserializer<QuotaCount> {
-
-        @Override
-        public QuotaCount deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
-            return QuotaCount.count(parser.getLongValue());
-        }
-        
-    }
-
-    public static class QuotaSizeSerializer extends JsonSerializer<QuotaSize> {
-
-        @Override
-        public void serialize(QuotaSize value, JsonGenerator generator, SerializerProvider serializers) throws IOException, JsonProcessingException {
-            generator.writeNumber(value.asLong());
-        }
-        
-    }
-
-    public static class QuotaSizeDeserializer extends JsonDeserializer<QuotaSize> {
-
-        @Override
-        public QuotaSize deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
-            return QuotaSize.size(parser.getLongValue());
-        }
-        
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JsonEventSerializer.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JsonEventSerializer.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JsonEventSerializer.java
deleted file mode 100644
index 5ec4ff4..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JsonEventSerializer.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/****************************************************************
- * 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.json;
-
-import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.store.json.event.EventConverter;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-public class JsonEventSerializer extends JacksonEventSerializer {
-
-    public JsonEventSerializer(EventConverter eventConverter, MessageId.Factory messageIdFactory) {
-        super(eventConverter, configureObjectMapper(new ObjectMapper(), messageIdFactory));
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java
deleted file mode 100644
index d92d077..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/****************************************************************
- * 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.json.event;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.apache.james.core.quota.QuotaCount;
-import org.apache.james.core.quota.QuotaSize;
-import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.model.MessageMetaData;
-import org.apache.james.mailbox.model.QuotaRoot;
-import org.apache.james.mailbox.model.UpdatedFlags;
-import org.apache.james.mailbox.store.event.EventFactory;
-import org.apache.james.mailbox.store.json.event.dto.EventDataTransferObject;
-import org.apache.james.mailbox.store.json.event.dto.EventType;
-import org.apache.james.mailbox.store.json.event.dto.MailboxDataTransferObject;
-import org.apache.james.mailbox.store.json.event.dto.MailboxPathDataTransferObject;
-import org.apache.james.mailbox.store.json.event.dto.MailboxSessionDataTransferObject;
-import org.apache.james.mailbox.store.json.event.dto.MessageMetaDataDataTransferObject;
-import org.apache.james.mailbox.store.json.event.dto.UpdatedFlagsDataTransferObject;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.github.steveash.guavate.Guavate;
-import com.google.common.collect.ImmutableMap;
-
-public class EventConverter {
-
-    private static final Logger LOG = LoggerFactory.getLogger(EventConverter.class);
-
-    private final EventFactory eventFactory;
-    private final MailboxConverter mailboxConverter;
-
-    public EventConverter(MailboxConverter mailboxConverter) {
-        this.eventFactory = new EventFactory();
-        this.mailboxConverter = mailboxConverter;
-    }
-
-    public EventDataTransferObject convertToDataTransferObject(MailboxListener.MailboxEvent event) throws Exception {
-        MailboxDataTransferObject mailboxDataTransferObject = mailboxConverter.extractMailboxDataTransferObject(event);
-        if (event instanceof MailboxListener.Added) {
-            return constructMeteDataHoldingEventProxy(EventType.ADDED,
-                event.getSession(),
-                mailboxDataTransferObject,
-                ((MailboxListener.Added) event).getUids(),
-                (MailboxListener.Added) event);
-        } else if (event instanceof MailboxListener.Expunged) {
-            return constructMeteDataHoldingEventProxy(EventType.DELETED,
-                event.getSession(), mailboxDataTransferObject,
-                ((MailboxListener.Expunged) event).getUids(),
-                (MailboxListener.Expunged) event);
-        } else if (event instanceof MailboxListener.FlagsUpdated) {
-            return constructFalgsUpdatedProxy(event.getSession(),
-                mailboxDataTransferObject,
-                ((MailboxListener.FlagsUpdated) event).getUids(),
-                ((MailboxListener.FlagsUpdated) event).getUpdatedFlags());
-        } else if (event instanceof MailboxListener.MailboxRenamed) {
-            return constructMailboxRenamedProxy(event.getSession(),
-                mailboxDataTransferObject,
-                event.getMailboxPath());
-        } else if (event instanceof MailboxListener.MailboxDeletion) {
-            MailboxListener.MailboxDeletion deletionEvent = (MailboxListener.MailboxDeletion) event;
-            return constructMailboxDeletionProxy(EventType.MAILBOX_DELETED,
-                event.getSession(),
-                mailboxDataTransferObject,
-                deletionEvent.getQuotaRoot(),
-                deletionEvent.getDeletedMessageCount(),
-                deletionEvent.getTotalDeletedSize());
-        } else if (event instanceof MailboxListener.MailboxAdded) {
-            return constructMailboxAddedProxy(EventType.MAILBOX_ADDED,
-                event.getSession(),
-                mailboxDataTransferObject);
-        } else {
-            throw new Exception("You are trying to serialize an event that can't be serialized");
-        }
-    }
-
-    public MailboxListener.MailboxEvent retrieveEvent(EventDataTransferObject eventDataTransferObject) throws Exception {
-        Mailbox mailbox = mailboxConverter.retrieveMailbox(eventDataTransferObject.getMailbox());
-        switch (eventDataTransferObject.getType()) {
-            case ADDED:
-                return eventFactory.added(eventDataTransferObject.getSession().getMailboxSession(),
-                    retrieveMetadata(eventDataTransferObject.getMetaDataProxyMap()),
-                    mailbox,
-                    ImmutableMap.<MessageUid, MailboxMessage>of());
-            case DELETED:
-                return eventFactory.expunged(eventDataTransferObject.getSession().getMailboxSession(),
-                    retrieveMetadata(eventDataTransferObject.getMetaDataProxyMap()),
-                    mailbox);
-            case FLAGS:
-                return eventFactory.flagsUpdated(eventDataTransferObject.getSession().getMailboxSession(),
-                    eventDataTransferObject.getUids(),
-                    mailbox,
-                    retrieveUpdatedFlags(eventDataTransferObject.getUpdatedFlags()));
-            case MAILBOX_ADDED:
-                return eventFactory.mailboxAdded(eventDataTransferObject.getSession().getMailboxSession(), mailbox);
-            case MAILBOX_DELETED:
-                return eventFactory.mailboxDeleted(eventDataTransferObject.getSession().getMailboxSession(), mailbox, 
-                    eventDataTransferObject.getQuotaRoot().orElseThrow(() -> new EventNotValidException("Not a Deletion event, missing quotaRoot")),
-                    eventDataTransferObject.getDeletedMessageCount().orElseThrow(() -> new EventNotValidException("Not a Deletion event, missing quotaCount")),
-                    eventDataTransferObject.getTotalDeletedSize().orElseThrow(() -> new EventNotValidException("Not a Deletion event, missing quotaSize")));
-            case MAILBOX_RENAMED:
-                return eventFactory.mailboxRenamed(eventDataTransferObject.getSession().getMailboxSession(),
-                    eventDataTransferObject.getFrom().getPath(),
-                    mailbox);
-            default:
-                throw new Exception("Can not deserialize unknown event");
-        }
-    }
-
-    private EventDataTransferObject constructMailboxAddedProxy(EventType eventType,
-                                                               MailboxSession mailboxSession,
-                                                               MailboxDataTransferObject mailboxIntermediate) {
-        return EventDataTransferObject.builder()
-            .type(eventType)
-            .session(new MailboxSessionDataTransferObject(mailboxSession))
-            .mailbox(mailboxIntermediate)
-            .build();
-    }
-
-    private EventDataTransferObject constructMailboxDeletionProxy(EventType eventType,
-                                                               MailboxSession mailboxSession,
-                                                               MailboxDataTransferObject mailboxIntermediate, 
-                                                               QuotaRoot quotaRoot, 
-                                                               QuotaCount deletedMessageCount,
-                                                               QuotaSize totalDeletedSize) {
-        return EventDataTransferObject.builder()
-            .type(eventType)
-            .session(new MailboxSessionDataTransferObject(mailboxSession))
-            .mailbox(mailboxIntermediate)
-            .quotaRoot(Optional.of(quotaRoot))
-            .deletedMessageCount(Optional.of(deletedMessageCount))
-            .totalDeletedSize(Optional.of(totalDeletedSize))
-            .build();
-    }
-
-    private EventDataTransferObject constructMailboxRenamedProxy(MailboxSession mailboxSession,
-                                                                 MailboxDataTransferObject mailboxIntermediate,
-                                                                 MailboxPath from) {
-        return EventDataTransferObject.builder()
-            .type(EventType.MAILBOX_RENAMED)
-            .session(new MailboxSessionDataTransferObject(mailboxSession))
-            .mailbox(mailboxIntermediate)
-            .from(new MailboxPathDataTransferObject(from))
-            .build();
-    }
-
-    private EventDataTransferObject constructFalgsUpdatedProxy(MailboxSession session,
-                                                               MailboxDataTransferObject mailboxIntermediate,
-                                                               List<MessageUid> uids,
-                                                               List<UpdatedFlags> updatedFlagsList) {
-        List<UpdatedFlagsDataTransferObject> updatedFlagsDataTransferObjects = updatedFlagsList.stream()
-            .map(UpdatedFlagsDataTransferObject::new)
-            .collect(Guavate.toImmutableList());
-        return EventDataTransferObject.builder()
-            .type(EventType.FLAGS)
-            .session(new MailboxSessionDataTransferObject(session))
-            .mailbox(mailboxIntermediate)
-            .uids(uids)
-            .updatedFlags(updatedFlagsDataTransferObjects)
-            .build();
-    }
-
-    private EventDataTransferObject constructMeteDataHoldingEventProxy(EventType eventType,
-                                                                       MailboxSession mailboxSession,
-                                                                       MailboxDataTransferObject mailboxIntermediate,
-                                                                       List<MessageUid> uids,
-                                                                       MailboxListener.MetaDataHoldingEvent event) {
-        HashMap<MessageUid, MessageMetaDataDataTransferObject> metaDataProxyMap = new HashMap<>();
-        for (MessageUid uid : uids) {
-            metaDataProxyMap.put(uid, new MessageMetaDataDataTransferObject(
-                event.getMetaData(uid)
-            ));
-        }
-        return EventDataTransferObject.builder()
-            .type(eventType)
-            .session(new MailboxSessionDataTransferObject(mailboxSession))
-            .mailbox(mailboxIntermediate)
-            .uids(uids)
-            .metaData(metaDataProxyMap)
-            .build();
-    }
-
-    private SortedMap<MessageUid, MessageMetaData> retrieveMetadata(Map<MessageUid, MessageMetaDataDataTransferObject> metaDataProxyMap) {
-        if (metaDataProxyMap != null) {
-            TreeMap<MessageUid, MessageMetaData> result = new TreeMap<>();
-            Set<Map.Entry<MessageUid, MessageMetaDataDataTransferObject>> entrySet = metaDataProxyMap.entrySet();
-            for (Map.Entry<MessageUid, MessageMetaDataDataTransferObject> entry : entrySet) {
-                result.put(entry.getKey(), entry.getValue().getMetadata());
-            }
-            return result;
-        } else {
-            LOG.warn("Event serialization problem : No metadata");
-            return null;
-        }
-    }
-
-    private List<UpdatedFlags> retrieveUpdatedFlags(List<UpdatedFlagsDataTransferObject> updatedFlagsDataTransferObject) {
-        return updatedFlagsDataTransferObject.stream()
-            .map(UpdatedFlagsDataTransferObject::retrieveUpdatedFlags)
-            .collect(Guavate.toImmutableList());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventNotValidException.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventNotValidException.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventNotValidException.java
deleted file mode 100644
index f4536be..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventNotValidException.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/****************************************************************
- * 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.json.event;
-
-public class EventNotValidException extends Exception {
-
-    public EventNotValidException(String message) {
-        super(message);
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/MailboxConverter.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/MailboxConverter.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/MailboxConverter.java
deleted file mode 100644
index e2273fd..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/MailboxConverter.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************
- * 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.json.event;
-
-import java.io.IOException;
-
-import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.store.event.EventFactory;
-import org.apache.james.mailbox.store.json.MailboxACLJsonConverter;
-import org.apache.james.mailbox.store.json.event.dto.MailboxDataTransferObject;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.MailboxIdDeserialisationException;
-import org.apache.james.mailbox.store.mail.model.MailboxIdDeserializer;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-
-public class MailboxConverter {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(MailboxConverter.class);
-
-    private final MailboxIdDeserializer mailboxIdDeserializer;
-
-    public MailboxConverter(MailboxIdDeserializer mailboxIdDeserializer) {
-        this.mailboxIdDeserializer = mailboxIdDeserializer;
-    }
-
-    public Mailbox retrieveMailbox(MailboxDataTransferObject mailboxDataTransferObject) {
-        SimpleMailbox mailbox = new SimpleMailbox(new MailboxPath(mailboxDataTransferObject.getNamespace(),
-            mailboxDataTransferObject.getUser(),
-            mailboxDataTransferObject.getName()),
-            mailboxDataTransferObject.getUidValidity());
-        try {
-            mailbox.setACL(MailboxACLJsonConverter.toACL(mailboxDataTransferObject.getSerializedACL()));
-            mailbox.setMailboxId(mailboxIdDeserializer.deserialize(mailboxDataTransferObject.getSerializedMailboxId()));
-        } catch (IOException e) {
-            LOGGER.warn("Failed to deserialize ACL", e);
-        } catch (MailboxIdDeserialisationException e) {
-            LOGGER.warn("Failed to deserialize mailbox ID", e);
-        }
-        return mailbox;
-    }
-
-    public MailboxDataTransferObject convertMailboxDataTransferObject(Mailbox mailbox) {
-        return MailboxDataTransferObject.builder()
-            .serializedMailboxId(mailbox.getMailboxId().serialize())
-            .namespace(mailbox.getNamespace())
-            .user(mailbox.getUser())
-            .name(mailbox.getName())
-            .uidValidity(mailbox.getUidValidity())
-            .serializedACL(getSerializedACL(mailbox))
-            .build();
-    }
-
-    public MailboxDataTransferObject extractMailboxDataTransferObject(MailboxListener.MailboxEvent event) {
-        if (event instanceof EventFactory.MailboxAware) {
-            return convertMailboxDataTransferObject(((EventFactory.MailboxAware) event).getMailbox());
-        } else {
-            throw new RuntimeException("Unsupported event class : " + event.getClass().getCanonicalName());
-        }
-    }
-
-    private String getSerializedACL(Mailbox mailbox) {
-        try {
-            return MailboxACLJsonConverter.toJson(mailbox.getACL());
-        } catch (JsonProcessingException e) {
-            return "{\"entries\":{}}";
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java
deleted file mode 100644
index 0041a21..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/****************************************************************
- * 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.json.event.dto;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import org.apache.james.core.quota.QuotaCount;
-import org.apache.james.core.quota.QuotaSize;
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.model.QuotaRoot;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class EventDataTransferObject {
-
-    public static class Builder {
-
-        private EventType type;
-        private MailboxDataTransferObject mailbox;
-        private MailboxSessionDataTransferObject session;
-        private List<MessageUid> uids;
-        private Map<MessageUid, MessageMetaDataDataTransferObject> metaData;
-        private List<UpdatedFlagsDataTransferObject> updatedFlags;
-        private MailboxPathDataTransferObject from;
-        private Optional<QuotaRoot> quotaRoot;
-        private Optional<QuotaCount> deletedMessageCount;
-        private Optional<QuotaSize> totalDeletedSize;
-
-        public Builder type(EventType type) {
-            this.type = type;
-            return this;
-        }
-
-        public Builder mailbox(MailboxDataTransferObject mailbox) {
-            this.mailbox = mailbox;
-            return this;
-        }
-
-        public Builder session(MailboxSessionDataTransferObject session) {
-            this.session = session;
-            return this;
-        }
-
-        public Builder from(MailboxPathDataTransferObject from) {
-            this.from = from;
-            return this;
-        }
-
-        public Builder uids(List<MessageUid> uids) {
-            this.uids = uids;
-            return this;
-        }
-
-        public Builder metaData(Map<MessageUid, MessageMetaDataDataTransferObject> metaData) {
-            this.metaData = metaData;
-            return this;
-        }
-
-        public Builder updatedFlags(List<UpdatedFlagsDataTransferObject> updatedFlagsList) {
-            this.updatedFlags = updatedFlagsList;
-            return this;
-        }
-
-        public Builder quotaRoot(Optional<QuotaRoot> quotaRoot) {
-            this.quotaRoot = quotaRoot;
-            return this;
-        }
-
-        public Builder deletedMessageCount(Optional<QuotaCount> deletedMessageCount) {
-            this.deletedMessageCount = deletedMessageCount;
-            return this;
-        }
-
-        public Builder totalDeletedSize(Optional<QuotaSize> totalDeletedSize) {
-            this.totalDeletedSize = totalDeletedSize;
-            return this;
-        }
-
-        public EventDataTransferObject build() {
-            return new EventDataTransferObject(type, mailbox, session, uids, metaData, updatedFlags, from, quotaRoot, deletedMessageCount, totalDeletedSize);
-        }
-
-    }
-
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    @JsonProperty()
-    private EventType type;
-    @JsonProperty()
-    private MailboxDataTransferObject mailbox;
-    @JsonProperty()
-    private MailboxSessionDataTransferObject session;
-    @JsonProperty()
-    private List<MessageUid> uids;
-    @JsonProperty()
-    private Map<MessageUid, MessageMetaDataDataTransferObject> metaData;
-    @JsonProperty()
-    private List<UpdatedFlagsDataTransferObject> updatedFlags;
-    @JsonProperty()
-    private MailboxPathDataTransferObject from;
-    @JsonProperty()
-    private Optional<QuotaRoot> quotaRoot;
-    @JsonProperty()
-    private Optional<QuotaCount> deletedMessageCount;
-    @JsonProperty()
-    private Optional<QuotaSize> totalDeletedSize;
-
-    public EventDataTransferObject() {}
-
-    public EventDataTransferObject(EventType type,
-                                   MailboxDataTransferObject mailbox,
-                                   MailboxSessionDataTransferObject session,
-                                   List<MessageUid> uids,
-                                   Map<MessageUid, MessageMetaDataDataTransferObject> metaData,
-                                   List<UpdatedFlagsDataTransferObject> updatedFlags,
-                                   MailboxPathDataTransferObject from, 
-                                   Optional<QuotaRoot> quotaRoot, 
-                                   Optional<QuotaCount> deletedMessageCount,
-                                   Optional<QuotaSize> totalDeletedSize) {
-        this.type = type;
-        this.mailbox = mailbox;
-        this.session = session;
-        this.uids = uids;
-        this.metaData = metaData;
-        this.updatedFlags = updatedFlags;
-        this.from = from;
-        this.quotaRoot = quotaRoot;
-        this.deletedMessageCount = deletedMessageCount;
-        this.totalDeletedSize = totalDeletedSize;
-    }
-
-    @JsonIgnore
-    public EventType getType() {
-        return type;
-    }
-
-    @JsonIgnore
-    public MailboxDataTransferObject getMailbox() {
-        return mailbox;
-    }
-
-    @JsonIgnore
-    public MailboxSessionDataTransferObject getSession() {
-        return session;
-    }
-
-    @JsonIgnore
-    public List<MessageUid> getUids() {
-        return uids;
-    }
-
-    @JsonIgnore
-    public Map<MessageUid, MessageMetaDataDataTransferObject> getMetaDataProxyMap() {
-        return metaData;
-    }
-
-    @JsonIgnore
-    public List<UpdatedFlagsDataTransferObject> getUpdatedFlags() {
-        return updatedFlags;
-    }
-
-    @JsonIgnore
-    public MailboxPathDataTransferObject getFrom() {
-        return from;
-    }
-
-    @JsonIgnore
-    public Optional<QuotaRoot> getQuotaRoot() {
-        return quotaRoot;
-    }
-
-    @JsonIgnore
-    public Optional<QuotaCount> getDeletedMessageCount() {
-        return deletedMessageCount;
-    }
-
-    @JsonIgnore
-    public Optional<QuotaSize> getTotalDeletedSize() {
-        return totalDeletedSize;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventType.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventType.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventType.java
deleted file mode 100644
index d3beae3..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventType.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/****************************************************************
- * 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.json.event.dto;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-
-@JsonFormat(shape = JsonFormat.Shape.NUMBER)
-public enum EventType {
-    ADDED,
-    DELETED,
-    FLAGS,
-    MAILBOX_RENAMED,
-    MAILBOX_ADDED,
-    MAILBOX_DELETED
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/FlagsDataTransferObject.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/FlagsDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/FlagsDataTransferObject.java
deleted file mode 100644
index 08515ab..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/FlagsDataTransferObject.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/****************************************************************
- * 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.json.event.dto;
-
-import javax.mail.Flags;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class FlagsDataTransferObject {
-    @JsonProperty()
-    private boolean answered;
-    @JsonProperty()
-    private boolean flagged;
-    @JsonProperty()
-    private boolean recent;
-    @JsonProperty()
-    private boolean deleted;
-    @JsonProperty()
-    private boolean draft;
-    @JsonProperty()
-    private boolean seen;
-    @JsonProperty()
-    private String[] userFlags;
-
-    public FlagsDataTransferObject() {
-
-    }
-
-    public FlagsDataTransferObject(Flags flags) {
-        this.answered = flags.contains(Flags.Flag.ANSWERED);
-        this.flagged = flags.contains(Flags.Flag.FLAGGED);
-        this.recent = flags.contains(Flags.Flag.RECENT);
-        this.deleted = flags.contains(Flags.Flag.DELETED);
-        this.draft = flags.contains(Flags.Flag.DRAFT);
-        this.seen = flags.contains(Flags.Flag.SEEN);
-        this.userFlags = flags.getUserFlags();
-    }
-
-    @JsonIgnore
-    public Flags getFlags() {
-        Flags result = new Flags();
-        if (answered) {
-            result.add(Flags.Flag.ANSWERED);
-        }
-        if (flagged) {
-            result.add(Flags.Flag.FLAGGED);
-        }
-        if (recent) {
-            result.add(Flags.Flag.RECENT);
-        }
-        if (deleted) {
-            result.add(Flags.Flag.DELETED);
-        }
-        if (draft) {
-            result.add(Flags.Flag.DRAFT);
-        }
-        if (seen) {
-            result.add(Flags.Flag.SEEN);
-        }
-        for (String flag : userFlags) {
-            result.add(flag);
-        }
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/LocaleDataTransferObject.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/LocaleDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/LocaleDataTransferObject.java
deleted file mode 100644
index dfbf307..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/LocaleDataTransferObject.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/****************************************************************
- * 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.json.event.dto;
-
-import java.util.Locale;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class LocaleDataTransferObject {
-    @JsonProperty()
-    private String country;
-    @JsonProperty()
-    private String variant;
-    @JsonProperty()
-    private String language;
-
-    public LocaleDataTransferObject() {
-
-    }
-
-    public LocaleDataTransferObject(Locale locale) {
-        this.country = locale.getCountry();
-        this.variant = locale.getVariant();
-        this.language = locale.getLanguage();
-    }
-
-    @JsonIgnore
-    public Locale getLocale() {
-        return new Locale(language, country, variant);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxDataTransferObject.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxDataTransferObject.java
deleted file mode 100644
index f7fdfa5..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxDataTransferObject.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/****************************************************************
- * 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.json.event.dto;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class MailboxDataTransferObject {
-
-    public static class Builder {
-        private String serializedMailboxId;
-        private String namespace;
-        private String user;
-        private String name;
-        private long uidValidity;
-        private String serializedACL;
-
-        private Builder() {
-
-        }
-
-        public Builder serializedMailboxId(String serializedMailboxId) {
-            this.serializedMailboxId = serializedMailboxId;
-            return this;
-        }
-
-        public Builder namespace(String namespace) {
-            this.namespace = namespace;
-            return this;
-        }
-
-        public Builder user(String user) {
-            this.user = user;
-            return this;
-        }
-
-        public Builder name(String name) {
-            this.name = name;
-            return this;
-        }
-
-        public Builder uidValidity(long uidValidity) {
-            this.uidValidity = uidValidity;
-            return this;
-        }
-
-        public Builder serializedACL(String serializedACL) {
-            this.serializedACL = serializedACL;
-            return this;
-        }
-
-        public MailboxDataTransferObject build() {
-            return new MailboxDataTransferObject(serializedMailboxId,
-                namespace,
-                user,
-                name,
-                uidValidity,
-                serializedACL);
-        }
-    }
-
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    @JsonProperty()
-    private String serializedMailboxId;
-    @JsonProperty()
-    private String namespace;
-    @JsonProperty()
-    private String user;
-    @JsonProperty()
-    private String name;
-    @JsonProperty()
-    private long uidValidity;
-    @JsonProperty()
-    private String serializedACL;
-
-    public MailboxDataTransferObject() {
-
-    }
-
-    private MailboxDataTransferObject(String serializedMailboxId,
-                                      String namespace,
-                                      String user,
-                                      String name,
-                                      long uidValidity,
-                                      String serializedACL) {
-        this.serializedMailboxId = serializedMailboxId;
-        this.namespace = namespace;
-        this.user = user;
-        this.name = name;
-        this.uidValidity = uidValidity;
-        this.serializedACL = serializedACL;
-    }
-
-    @JsonIgnore
-    public String getSerializedMailboxId() {
-        return serializedMailboxId;
-    }
-
-    @JsonIgnore
-    public String getNamespace() {
-        return namespace;
-    }
-
-    @JsonIgnore
-    public String getUser() {
-        return user;
-    }
-
-    @JsonIgnore
-    public String getName() {
-        return name;
-    }
-
-    @JsonIgnore
-    public long getUidValidity() {
-        return uidValidity;
-    }
-
-    @JsonIgnore
-    public String getSerializedACL() {
-        return serializedACL;
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxPathDataTransferObject.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxPathDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxPathDataTransferObject.java
deleted file mode 100644
index f2755bb..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxPathDataTransferObject.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/****************************************************************
- * 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.json.event.dto;
-
-import org.apache.james.mailbox.model.MailboxPath;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class MailboxPathDataTransferObject {
-    @JsonProperty()
-    private String user;
-    @JsonProperty()
-    private String namespace;
-    @JsonProperty()
-    private String name;
-
-    public MailboxPathDataTransferObject() {
-
-    }
-
-    public MailboxPathDataTransferObject(MailboxPath path) {
-        this.user = path.getUser();
-        this.name = path.getName();
-        this.namespace = path.getNamespace();
-    }
-
-    @JsonIgnore
-    public MailboxPath getPath() {
-        return new MailboxPath(namespace, user, name);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java
deleted file mode 100644
index 2c59ba0..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/****************************************************************
- * 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.json.event.dto;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.store.SimpleMailboxSession;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.collect.Lists;
-
-public class MailboxSessionDataTransferObject {
-    @JsonProperty()
-    private long sessionId;
-    @JsonProperty()
-    private String username;
-    @JsonProperty()
-    private List<String> sharedSpaces;
-    @JsonProperty()
-    private String otherUserSpace;
-    @JsonProperty()
-    private char separator;
-    @JsonProperty()
-    private List<LocaleDataTransferObject> locales;
-    @JsonProperty("r")
-    private int sessionType;
-
-    private static final Logger LOG = LoggerFactory.getLogger(MailboxSessionDataTransferObject.class);
-
-    public MailboxSessionDataTransferObject() {
-
-    }
-
-    public MailboxSessionDataTransferObject(MailboxSession session) {
-        username = session.getUser().getUserName();
-        sharedSpaces = new ArrayList<>(session.getSharedSpaces());
-        otherUserSpace = session.getOtherUsersSpace();
-        separator = session.getPathDelimiter();
-        sessionType = extractSessionType(session);
-        sessionId = session.getSessionId();
-        locales = Lists.transform(session.getUser().getLocalePreferences(), LocaleDataTransferObject::new);
-    }
-
-    @JsonIgnore
-    public MailboxSession getMailboxSession() {
-        return new SimpleMailboxSession(sessionId,
-            username,
-            "",
-            retrieveLocales(),
-            sharedSpaces,
-            otherUserSpace,
-            separator,
-            retrieveSessionType());
-    }
-
-    private List<Locale> retrieveLocales() {
-        if (locales != null) {
-            return Lists.transform(locales, LocaleDataTransferObject::getLocale);
-        } else {
-            return new ArrayList<>();
-        }
-    }
-
-    private MailboxSession.SessionType retrieveSessionType() {
-        switch (this.sessionType) {
-            case 0:
-                return MailboxSession.SessionType.User;
-            case 1:
-                return MailboxSession.SessionType.System;
-            default:
-                LOG.warn("Unknown session type number while deserializing. Assuming user instead");
-                return MailboxSession.SessionType.User;
-        }
-    }
-
-    private int extractSessionType(MailboxSession session) {
-        switch (session.getType()) {
-            case User:
-                return 0;
-            case System:
-                return 1;
-            default:
-                LOG.warn("Unknow session type while serializing mailbox session");
-                return 0;
-        }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java
deleted file mode 100644
index 91c36e0..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/****************************************************************
- * 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.json.event.dto;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.model.MessageMetaData;
-import org.apache.james.mailbox.store.SimpleMessageMetaData;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class MessageMetaDataDataTransferObject {
-    @JsonProperty()
-    private long uid;
-    @JsonProperty()
-    private long modseq;
-    @JsonProperty()
-    private FlagsDataTransferObject flags;
-    @JsonProperty()
-    private long size;
-    @JsonProperty()
-    private String date;
-    @JsonProperty
-    private MessageId messageId;
-
-    private static final Logger LOG = LoggerFactory.getLogger(MessageMetaDataDataTransferObject.class);
-
-    private static final ThreadLocal<SimpleDateFormat> simpleDateFormat = ThreadLocal.withInitial(
-        () -> new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"));
-
-    private static Date parse(String date) throws ParseException {
-        if (date != null) {
-            return simpleDateFormat.get().parse(date);
-        } else {
-            return null;
-        }
-    }
-
-    private static String format(Date date) {
-        if (date != null) {
-            return simpleDateFormat.get().format(date);
-        } else {
-            return null;
-        }
-    }
-
-
-    public MessageMetaDataDataTransferObject() {
-
-    }
-
-    public MessageMetaDataDataTransferObject(MessageMetaData metadata) {
-        this.uid = metadata.getUid().asLong();
-        this.modseq = metadata.getModSeq();
-        this.flags = new FlagsDataTransferObject(metadata.getFlags());
-        this.size = metadata.getSize();
-        this.date = format(metadata.getInternalDate());
-        this.messageId = metadata.getMessageId();
-    }
-
-    @JsonIgnore
-    public SimpleMessageMetaData getMetadata() {
-        try {
-            return new SimpleMessageMetaData(MessageUid.of(uid), modseq, flags.getFlags(), size, parse(date), messageId);
-        } catch (ParseException parseException) {
-            LOG.error("Parse exception while parsing date while deserializing metadata upon event serialization. Using nowadays date instead.", parseException);
-            return new SimpleMessageMetaData(MessageUid.of(uid), modseq, flags.getFlags(), size, new Date(), messageId);
-        }
-
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/UpdatedFlagsDataTransferObject.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/UpdatedFlagsDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/UpdatedFlagsDataTransferObject.java
deleted file mode 100644
index b5cdda0..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/UpdatedFlagsDataTransferObject.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************
- * 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.json.event.dto;
-
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.model.UpdatedFlags;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class UpdatedFlagsDataTransferObject {
-    @JsonProperty("uid")
-    private long uid;
-    @JsonProperty("modseq")
-    private long modseq;
-    @JsonProperty("oldFlags")
-    private FlagsDataTransferObject oldFlags;
-    @JsonProperty("newFlags")
-    private FlagsDataTransferObject newFlags;
-
-    public UpdatedFlagsDataTransferObject() {
-    }
-
-    public UpdatedFlagsDataTransferObject(UpdatedFlags updatedFlags) {
-        this.uid = updatedFlags.getUid().asLong();
-        this.modseq = updatedFlags.getModSeq();
-        this.oldFlags = new FlagsDataTransferObject(updatedFlags.getOldFlags());
-        this.newFlags = new FlagsDataTransferObject(updatedFlags.getNewFlags());
-    }
-
-    public UpdatedFlags retrieveUpdatedFlags() {
-        return UpdatedFlags.builder()
-            .uid(MessageUid.of(uid))
-            .modSeq(modseq)
-            .oldFlags(oldFlags.getFlags())
-            .newFlags(newFlags.getFlags())
-            .build();
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
deleted file mode 100644
index f6d68b8..0000000
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/****************************************************************
- * 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.json;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.Optional;
-import java.util.TreeMap;
-
-import javax.mail.Flags;
-
-import org.apache.james.core.quota.QuotaCount;
-import org.apache.james.core.quota.QuotaSize;
-import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.model.MessageMetaData;
-import org.apache.james.mailbox.model.QuotaRoot;
-import org.apache.james.mailbox.model.TestId;
-import org.apache.james.mailbox.model.TestMessageId;
-import org.apache.james.mailbox.model.UpdatedFlags;
-import org.apache.james.mailbox.store.SimpleMessageMetaData;
-import org.apache.james.mailbox.store.event.EventFactory;
-import org.apache.james.mailbox.store.event.EventSerializer;
-import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-
-public abstract class EventSerializerTest {
-
-    public static final MessageUid UID = MessageUid.of(42);
-    public static final long MOD_SEQ = 24L;
-    public static final Flags FLAGS = new Flags();
-    public static final UpdatedFlags UPDATED_FLAGS = UpdatedFlags.builder()
-        .uid(UID)
-        .modSeq(MOD_SEQ)
-        .oldFlags(FLAGS)
-        .newFlags(new Flags(Flags.Flag.SEEN))
-        .build();
-    public static final long SIZE = 45L;
-    private static final MessageId MESSAGE_ID = new TestMessageId.Factory().generate();
-    public static final SimpleMessageMetaData MESSAGE_META_DATA = new SimpleMessageMetaData(UID, MOD_SEQ, FLAGS, SIZE, null, MESSAGE_ID);
-    public static final MailboxPath FROM = new MailboxPath("namespace", "user", "name");
-
-    private EventSerializer serializer;
-    private EventFactory eventFactory;
-    private MailboxSession mailboxSession;
-    private SimpleMailbox mailbox;
-
-    abstract EventSerializer createSerializer();
-
-    @Before
-    public void setUp() {
-        eventFactory = new EventFactory();
-        serializer = createSerializer();
-        mailboxSession = new MockMailboxSession("benwa");
-        mailbox = new SimpleMailbox(MailboxPath.forUser("benwa", "name"), 42);
-        mailbox.setMailboxId(TestId.of(28L));
-    }
-
-    @Test
-    public void addedEventShouldBeWellConverted() throws Exception {
-        TreeMap<MessageUid, MessageMetaData> treeMap = new TreeMap<>();
-        treeMap.put(UID, MESSAGE_META_DATA);
-        MailboxListener.MailboxEvent event = eventFactory.added(mailboxSession, treeMap, mailbox, ImmutableMap.<MessageUid, MailboxMessage>of());
-        byte[] serializedEvent = serializer.serializeEvent(event);
-        MailboxListener.MailboxEvent deserializedEvent = serializer.deSerializeEvent(serializedEvent);
-        assertThat(deserializedEvent.getMailboxPath()).isEqualTo(event.getMailboxPath());
-        assertThat(deserializedEvent.getSession().getSessionId()).isEqualTo(event.getSession().getSessionId());
-        assertThat(deserializedEvent).isInstanceOf(MailboxListener.Added.class);
-        assertThat(((MailboxListener.Added)deserializedEvent).getUids()).containsOnly(UID);
-        MessageMetaData messageMetaData = ((MailboxListener.Added)deserializedEvent).getMetaData(UID);
-        assertThat(messageMetaData).isEqualTo(MESSAGE_META_DATA);
-        assertThat(messageMetaData.getMessageId()).isEqualTo(MESSAGE_ID);
-    }
-
-    @Test
-    public void expungedEventShouldBeWellConverted() throws Exception {
-        TreeMap<MessageUid, MessageMetaData> treeMap = new TreeMap<>();
-        treeMap.put(UID, MESSAGE_META_DATA);
-        MailboxListener.MailboxEvent event = eventFactory.expunged(mailboxSession, treeMap, mailbox);
-        byte[] serializedEvent = serializer.serializeEvent(event);
-        MailboxListener.MailboxEvent deserializedEvent = serializer.deSerializeEvent(serializedEvent);
-        assertThat(deserializedEvent.getMailboxPath()).isEqualTo(event.getMailboxPath());
-        assertThat(deserializedEvent.getSession().getSessionId()).isEqualTo(event.getSession().getSessionId());
-        assertThat(deserializedEvent).isInstanceOf(MailboxListener.Expunged.class);
-        assertThat(((MailboxListener.Expunged)deserializedEvent).getUids()).containsOnly(UID);
-        MessageMetaData messageMetaData = ((MailboxListener.Expunged)deserializedEvent).getMetaData(UID);
-        assertThat(messageMetaData).isEqualTo(MESSAGE_META_DATA);
-        assertThat(messageMetaData.getMessageId()).isEqualTo(MESSAGE_ID);
-    }
-
-    @Test
-    public void flagsUpdatedEventShouldBeWellConverted() throws Exception {
-        MailboxListener.MailboxEvent event = eventFactory.flagsUpdated(mailboxSession, Lists.newArrayList(UID), mailbox, Lists.newArrayList(UPDATED_FLAGS));
-        byte[] serializedEvent = serializer.serializeEvent(event);
-        MailboxListener.MailboxEvent deserializedEvent = serializer.deSerializeEvent(serializedEvent);
-        assertThat(deserializedEvent.getMailboxPath()).isEqualTo(event.getMailboxPath());
-        assertThat(deserializedEvent.getSession().getSessionId()).isEqualTo(event.getSession().getSessionId());
-        assertThat(deserializedEvent).isInstanceOf(MailboxListener.FlagsUpdated.class);
-        assertThat(((MailboxListener.FlagsUpdated)event).getUpdatedFlags()).containsOnly(UPDATED_FLAGS);
-    }
-
-    @Test
-    public void mailboxAddedShouldBeWellConverted() throws Exception {
-        MailboxListener.MailboxEvent event = eventFactory.mailboxAdded(mailboxSession, mailbox);
-        byte[] serializedEvent = serializer.serializeEvent(event);
-        MailboxListener.MailboxEvent deserializedEvent = serializer.deSerializeEvent(serializedEvent);
-        assertThat(deserializedEvent.getMailboxPath()).isEqualTo(event.getMailboxPath());
-        assertThat(deserializedEvent.getSession().getSessionId()).isEqualTo(event.getSession().getSessionId());
-        assertThat(deserializedEvent).isInstanceOf(MailboxListener.MailboxAdded.class);
-    }
-
-    @Test
-    public void mailboxDeletionShouldBeWellConverted() throws Exception {
-        QuotaRoot quotaRoot = QuotaRoot.quotaRoot("root", Optional.empty());
-        QuotaCount quotaCount = QuotaCount.count(123);
-        QuotaSize quotaSize = QuotaSize.size(456);
-        MailboxListener.MailboxDeletion event = eventFactory.mailboxDeleted(mailboxSession, mailbox, quotaRoot, quotaCount, quotaSize);
-        byte[] serializedEvent = serializer.serializeEvent(event);
-        MailboxListener.MailboxDeletion deserializedEvent = (MailboxListener.MailboxDeletion) serializer.deSerializeEvent(serializedEvent);
-        assertThat(deserializedEvent.getMailboxPath()).isEqualTo(event.getMailboxPath());
-        assertThat(deserializedEvent.getSession().getSessionId()).isEqualTo(event.getSession().getSessionId());
-        assertThat(deserializedEvent).isInstanceOf(MailboxListener.MailboxDeletion.class);
-        assertThat(deserializedEvent.getQuotaRoot()).isEqualTo(quotaRoot);
-        assertThat(deserializedEvent.getDeletedMessageCount()).isEqualTo(quotaCount);
-        assertThat(deserializedEvent.getTotalDeletedSize()).isEqualTo(quotaSize);
-    }
-
-    @Test
-    public void mailboxRenamedShouldBeWellConverted() throws Exception {
-        MailboxListener.MailboxEvent event = eventFactory.mailboxRenamed(mailboxSession, FROM, mailbox);
-        byte[] serializedEvent = serializer.serializeEvent(event);
-        MailboxListener.MailboxEvent deserializedEvent = serializer.deSerializeEvent(serializedEvent);
-        assertThat(deserializedEvent.getMailboxPath()).isEqualTo(event.getMailboxPath());
-        assertThat(deserializedEvent.getSession().getSessionId()).isEqualTo(event.getSession().getSessionId());
-        assertThat(deserializedEvent).isInstanceOf(MailboxListener.MailboxRenamed.class);
-        assertThat(deserializedEvent.getMailboxPath()).isEqualTo(event.getMailboxPath());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/e877c0b2/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/JsonEventSerializerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/JsonEventSerializerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/JsonEventSerializerTest.java
deleted file mode 100644
index ac7a6c9..0000000
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/JsonEventSerializerTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/****************************************************************
- * 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.json;
-
-import org.apache.james.mailbox.model.TestMessageId;
-import org.apache.james.mailbox.store.TestIdDeserializer;
-import org.apache.james.mailbox.store.event.EventSerializer;
-import org.apache.james.mailbox.store.json.event.EventConverter;
-import org.apache.james.mailbox.store.json.event.MailboxConverter;
-
-public class JsonEventSerializerTest extends EventSerializerTest {
-
-    @Override
-    EventSerializer createSerializer() {
-        return new JsonEventSerializer(
-            new EventConverter(
-                new MailboxConverter(new TestIdDeserializer())),
-            new TestMessageId.Factory());
-    }
-}


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