This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 62a95e0927fa3ef316bf0d067dddc42db71500c5 Author: Rémi Kowalski <rkowal...@linagora.com> AuthorDate: Fri Aug 30 17:00:18 2019 +0200 JAMES-2813 Extract MigrationTaskDTO --- .../cassandra/migration/MigrationTask.java | 38 ++------------- .../cassandra/migration/MigrationTaskDTO.java | 56 ++++++++++++++++++++++ .../migration/MigrationTaskSerializationTest.java | 4 +- 3 files changed, 62 insertions(+), 36 deletions(-) diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/migration/MigrationTask.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/migration/MigrationTask.java index 538a6f5..dabc884 100644 --- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/migration/MigrationTask.java +++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/migration/MigrationTask.java @@ -22,23 +22,18 @@ package org.apache.james.backends.cassandra.migration; import static org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager.DEFAULT_VERSION; import java.util.Optional; -import java.util.function.Function; import javax.inject.Inject; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO; import org.apache.james.backends.cassandra.versions.SchemaTransition; import org.apache.james.backends.cassandra.versions.SchemaVersion; -import org.apache.james.json.DTOModule; -import org.apache.james.server.task.json.dto.TaskDTO; -import org.apache.james.server.task.json.dto.TaskDTOModule; import org.apache.james.task.Task; import org.apache.james.task.TaskExecutionDetails; import org.apache.james.task.TaskType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.fasterxml.jackson.annotation.JsonProperty; import com.github.fge.lambdas.Throwing; import com.google.common.annotations.VisibleForTesting; import reactor.util.function.Tuple2; @@ -46,35 +41,6 @@ import reactor.util.function.Tuples; public class MigrationTask implements Task { - @VisibleForTesting - static final Function<Factory, TaskDTOModule<MigrationTask, MigrationTaskDTO>> SERIALIZATION_MODULE = - factory -> DTOModule.forDomainObject(MigrationTask.class) - .convertToDTO(MigrationTaskDTO.class) - .toDomainObjectConverter(dto -> factory.create(new SchemaVersion(dto.targetVersion))) - .toDTOConverter((task, type) -> new MigrationTaskDTO(type, task.target.getValue())) - .typeName("cassandra-migration-task") - .withFactory(TaskDTOModule::new); - - private static class MigrationTaskDTO implements TaskDTO { - - private final String type; - private final int targetVersion; - - MigrationTaskDTO(@JsonProperty("type") String type, @JsonProperty("targetVersion") int targetVersion) { - this.type = type; - this.targetVersion = targetVersion; - } - - @Override - public String getType() { - return type; - } - - public int getTargetVersion() { - return targetVersion; - } - } - public interface Factory { MigrationTask create(SchemaVersion target); } @@ -170,6 +136,10 @@ public class MigrationTask implements Task { "Please check logs for cause of failure and re-run this migration.", newVersion.getValue()); } + SchemaVersion getTarget() { + return target; + } + @Override public TaskType type() { return CASSANDRA_MIGRATION; diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/migration/MigrationTaskDTO.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/migration/MigrationTaskDTO.java new file mode 100644 index 0000000..ea08b09 --- /dev/null +++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/migration/MigrationTaskDTO.java @@ -0,0 +1,56 @@ +/**************************************************************** + * 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.backends.cassandra.migration; + +import java.util.function.Function; + +import org.apache.james.backends.cassandra.versions.SchemaVersion; +import org.apache.james.json.DTOModule; +import org.apache.james.server.task.json.dto.TaskDTO; +import org.apache.james.server.task.json.dto.TaskDTOModule; + +import com.fasterxml.jackson.annotation.JsonProperty; + +class MigrationTaskDTO implements TaskDTO { + + static final Function<MigrationTask.Factory, TaskDTOModule<MigrationTask, MigrationTaskDTO>> SERIALIZATION_MODULE = + factory -> DTOModule.forDomainObject(MigrationTask.class) + .convertToDTO(MigrationTaskDTO.class) + .toDomainObjectConverter(dto -> factory.create(new SchemaVersion(dto.targetVersion))) + .toDTOConverter((task, type) -> new MigrationTaskDTO(type, task.getTarget().getValue())) + .typeName(MigrationTask.CASSANDRA_MIGRATION.asString()) + .withFactory(TaskDTOModule::new); + + private final int targetVersion; + private final String type; + + MigrationTaskDTO(@JsonProperty("type") String type, @JsonProperty("targetVersion") int targetVersion) { + this.type = type; + this.targetVersion = targetVersion; + } + + @Override + public String getType() { + return type; + } + + public int getTargetVersion() { + return targetVersion; + } +} diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/MigrationTaskSerializationTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/MigrationTaskSerializationTest.java index 9fde422..ecf395d 100644 --- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/MigrationTaskSerializationTest.java +++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/migration/MigrationTaskSerializationTest.java @@ -34,12 +34,12 @@ import com.fasterxml.jackson.core.JsonProcessingException; class MigrationTaskSerializationTest { private static final int SCHEMA_VERSION = 12; - private static final String SERIALIZED_TASK = "{\"type\": \"cassandra-migration-task\", \"targetVersion\": 12}"; + private static final String SERIALIZED_TASK = "{\"type\": \"CassandraMigration\", \"targetVersion\": 12}"; private final CassandraSchemaVersionDAO cassandraSchemaVersionDAO = mock(CassandraSchemaVersionDAO.class); private final CassandraSchemaTransitions transitions = mock(CassandraSchemaTransitions.class); private final MigrationTask.Factory factory = target -> new MigrationTask(cassandraSchemaVersionDAO, transitions, target); - private final JsonTaskSerializer taskSerializer = new JsonTaskSerializer(MigrationTask.SERIALIZATION_MODULE.apply(factory)); + private final JsonTaskSerializer taskSerializer = new JsonTaskSerializer(MigrationTaskDTO.SERIALIZATION_MODULE.apply(factory)); @Test void taskShouldBeSerializable() throws JsonProcessingException { --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org