You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/07/16 09:29:23 UTC
[shardingsphere-elasticjob] branch master updated: Use
CloudAppConfigurationPOJO instead of CloudAppConfiguration (#1084)
This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere-elasticjob.git
The following commit(s) were added to refs/heads/master by this push:
new 160dd9d Use CloudAppConfigurationPOJO instead of CloudAppConfiguration (#1084)
160dd9d is described below
commit 160dd9dda88d94f40e9fa8efb76806b7d9a1bcff
Author: 于玉桔 <zh...@apache.org>
AuthorDate: Thu Jul 16 17:29:15 2020 +0800
Use CloudAppConfigurationPOJO instead of CloudAppConfiguration (#1084)
* Use CloudAppConfigurationPOJO instead of CloudAppConfiguration for CloudAppRestfulApi
---
.../app/CloudAppConfigurationGsonFactory.java | 120 ---------------------
.../config/app/CloudAppConfigurationService.java | 18 ++--
.../scheduler/mesos/AppConstraintEvaluator.java | 10 +-
.../cloud/scheduler/mesos/FacadeService.java | 4 +-
.../mesos/TaskLaunchScheduledService.java | 10 +-
.../cloud/scheduler/producer/ProducerManager.java | 4 +-
.../scheduler/restful/CloudAppRestfulApi.java | 15 ++-
.../app/CloudAppConfigurationServiceTest.java | 9 +-
.../fixture/CloudAppConfigurationBuilder.java | 6 +-
.../cloud/scheduler/mesos/FacadeServiceTest.java | 3 +-
.../scheduler/producer/ProducerManagerTest.java | 4 +-
11 files changed, 42 insertions(+), 161 deletions(-)
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/app/CloudAppConfigurationGsonFactory.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/app/CloudAppConfigurationGsonFactory.java
deleted file mode 100755
index 5232418..0000000
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/app/CloudAppConfigurationGsonFactory.java
+++ /dev/null
@@ -1,120 +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.shardingsphere.elasticjob.cloud.scheduler.config.app;
-
-import org.apache.shardingsphere.elasticjob.cloud.util.json.CloudConfigurationConstants;
-import org.apache.shardingsphere.elasticjob.cloud.util.json.GsonFactory;
-import com.google.gson.TypeAdapter;
-import com.google.gson.stream.JsonReader;
-import com.google.gson.stream.JsonWriter;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-import java.io.IOException;
-
-/**
- * Cloud app configuration gson factory.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class CloudAppConfigurationGsonFactory {
-
- static {
- GsonFactory.registerTypeAdapter(CloudAppConfiguration.class, new CloudAppConfigurationGsonTypeAdapter());
- }
-
- /**
- * Convert cloud app configuration to json string.
- *
- * @param cloudAppConfig cloud app config
- * @return json string
- */
- public static String toJson(final CloudAppConfiguration cloudAppConfig) {
- return GsonFactory.getGson().toJson(cloudAppConfig);
- }
-
- /**
- * Convert json string to cloud app configuration.
- *
- * @param cloudAppConfigJson json string of the cloud app configuration
- * @return cloud app configuration
- */
- public static CloudAppConfiguration fromJson(final String cloudAppConfigJson) {
- return GsonFactory.getGson().fromJson(cloudAppConfigJson, CloudAppConfiguration.class);
- }
-
- /**
- * Json adapter of the cloud app configuration.
- */
- public static final class CloudAppConfigurationGsonTypeAdapter extends TypeAdapter<CloudAppConfiguration> {
-
- @Override
- public CloudAppConfiguration read(final JsonReader in) throws IOException {
- String appURL = "";
- String appName = "";
- String bootstrapScript = "";
- double cpuCount = 1.0d;
- double memoryMB = 128.0d;
- boolean appCacheEnable = true;
- int eventTraceSamplingCount = 0;
- in.beginObject();
- while (in.hasNext()) {
- String jsonName = in.nextName();
- switch (jsonName) {
- case CloudConfigurationConstants.APP_NAME:
- appName = in.nextString();
- break;
- case CloudConfigurationConstants.APP_URL:
- appURL = in.nextString();
- break;
- case CloudConfigurationConstants.BOOTSTRAP_SCRIPT:
- bootstrapScript = in.nextString();
- break;
- case CloudConfigurationConstants.CPU_COUNT:
- cpuCount = in.nextDouble();
- break;
- case CloudConfigurationConstants.MEMORY_MB:
- memoryMB = in.nextDouble();
- break;
- case CloudConfigurationConstants.APP_CACHE_ENABLE:
- appCacheEnable = in.nextBoolean();
- break;
- case CloudConfigurationConstants.EVENT_TRACE_SAMPLING_COUNT:
- eventTraceSamplingCount = in.nextInt();
- break;
- default:
- break;
- }
- }
- in.endObject();
- return new CloudAppConfiguration(appName, appURL, bootstrapScript, cpuCount, memoryMB, appCacheEnable, eventTraceSamplingCount);
- }
-
- @Override
- public void write(final JsonWriter out, final CloudAppConfiguration value) throws IOException {
- out.beginObject();
- out.name(CloudConfigurationConstants.APP_NAME).value(value.getAppName());
- out.name(CloudConfigurationConstants.APP_URL).value(value.getAppURL());
- out.name(CloudConfigurationConstants.BOOTSTRAP_SCRIPT).value(value.getBootstrapScript());
- out.name(CloudConfigurationConstants.CPU_COUNT).value(value.getCpuCount());
- out.name(CloudConfigurationConstants.MEMORY_MB).value(value.getMemoryMB());
- out.name(CloudConfigurationConstants.APP_CACHE_ENABLE).value(value.isAppCacheEnable());
- out.name(CloudConfigurationConstants.EVENT_TRACE_SAMPLING_COUNT).value(value.getEventTraceSamplingCount());
- out.endObject();
- }
- }
-}
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/app/CloudAppConfigurationService.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/app/CloudAppConfigurationService.java
index f2bdd2a..589df88 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/app/CloudAppConfigurationService.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/app/CloudAppConfigurationService.java
@@ -42,8 +42,8 @@ public final class CloudAppConfigurationService {
*
* @param appConfig cloud app configuration
*/
- public void add(final CloudAppConfiguration appConfig) {
- regCenter.persist(CloudAppConfigurationNode.getRootNodePath(appConfig.getAppName()), YamlEngine.marshal(CloudAppConfigurationPOJO.fromCloudAppConfiguration(appConfig)));
+ public void add(final CloudAppConfigurationPOJO appConfig) {
+ regCenter.persist(CloudAppConfigurationNode.getRootNodePath(appConfig.getAppName()), YamlEngine.marshal(appConfig));
}
/**
@@ -51,8 +51,8 @@ public final class CloudAppConfigurationService {
*
* @param appConfig cloud app configuration
*/
- public void update(final CloudAppConfiguration appConfig) {
- regCenter.update(CloudAppConfigurationNode.getRootNodePath(appConfig.getAppName()), YamlEngine.marshal(CloudAppConfigurationPOJO.fromCloudAppConfiguration(appConfig)));
+ public void update(final CloudAppConfigurationPOJO appConfig) {
+ regCenter.update(CloudAppConfigurationNode.getRootNodePath(appConfig.getAppName()), YamlEngine.marshal(appConfig));
}
/**
@@ -61,9 +61,9 @@ public final class CloudAppConfigurationService {
* @param appName application name
* @return cloud app configuration
*/
- public Optional<CloudAppConfiguration> load(final String appName) {
+ public Optional<CloudAppConfigurationPOJO> load(final String appName) {
String configContent = regCenter.get(CloudAppConfigurationNode.getRootNodePath(appName));
- return Strings.isNullOrEmpty(configContent) ? Optional.empty() : Optional.of(YamlEngine.unmarshal(configContent, CloudAppConfigurationPOJO.class).toCloudAppConfiguration());
+ return Strings.isNullOrEmpty(configContent) ? Optional.empty() : Optional.of(YamlEngine.unmarshal(configContent, CloudAppConfigurationPOJO.class));
}
/**
@@ -71,14 +71,14 @@ public final class CloudAppConfigurationService {
*
* @return collection of the registered cloud app configuration
*/
- public Collection<CloudAppConfiguration> loadAll() {
+ public Collection<CloudAppConfigurationPOJO> loadAll() {
if (!regCenter.isExisted(CloudAppConfigurationNode.ROOT)) {
return Collections.emptyList();
}
List<String> appNames = regCenter.getChildrenKeys(CloudAppConfigurationNode.ROOT);
- Collection<CloudAppConfiguration> result = new ArrayList<>(appNames.size());
+ Collection<CloudAppConfigurationPOJO> result = new ArrayList<>(appNames.size());
for (String each : appNames) {
- Optional<CloudAppConfiguration> config = load(each);
+ Optional<CloudAppConfigurationPOJO> config = load(each);
config.ifPresent(result::add);
}
return result;
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluator.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluator.java
index e83a4cf..e4c16e0 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluator.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/AppConstraintEvaluator.java
@@ -29,8 +29,8 @@ import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.elasticjob.cloud.config.CloudJobConfiguration;
+import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.pojo.CloudAppConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.config.pojo.CloudJobConfigurationPOJO;
-import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfiguration;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.mesos.MesosStateService.ExecutorStateInfo;
import org.apache.shardingsphere.elasticjob.infra.context.TaskContext;
import org.codehaus.jettison.json.JSONException;
@@ -107,7 +107,7 @@ public final class AppConstraintEvaluator implements ConstraintEvaluator {
if (isAppRunningOnSlave(each.getId(), slaveId)) {
continue;
}
- CloudAppConfiguration assigningAppConfig = getAppConfiguration(each.getId());
+ CloudAppConfigurationPOJO assigningAppConfig = getAppConfiguration(each.getId());
if (!calculatedApps.add(assigningAppConfig.getAppName())) {
continue;
}
@@ -138,15 +138,15 @@ public final class AppConstraintEvaluator implements ConstraintEvaluator {
return runningApps.contains(taskContext.getExecutorId(getJobConfiguration(taskContext).getAppName()));
}
- private CloudAppConfiguration getAppConfiguration(final String taskId) throws LackConfigException {
+ private CloudAppConfigurationPOJO getAppConfiguration(final String taskId) throws LackConfigException {
CloudJobConfiguration cloudJobConfig = getJobConfiguration(TaskContext.from(taskId));
- Optional<CloudAppConfiguration> appConfigOptional = facadeService.loadAppConfig(cloudJobConfig.getAppName());
+ Optional<CloudAppConfigurationPOJO> appConfigOptional = facadeService.loadAppConfig(cloudJobConfig.getAppName());
if (!appConfigOptional.isPresent()) {
throw new LackConfigException("APP", cloudJobConfig.getAppName());
}
return appConfigOptional.get();
}
-
+
private CloudJobConfiguration getJobConfiguration(final TaskContext taskContext) throws LackConfigException {
Optional<CloudJobConfigurationPOJO> cloudJobConfig = facadeService.load(taskContext.getMetaInfo().getJobName());
if (!cloudJobConfig.isPresent()) {
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeService.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeService.java
index a61f62d..116d207 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeService.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeService.java
@@ -20,8 +20,8 @@ package org.apache.shardingsphere.elasticjob.cloud.scheduler.mesos;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.elasticjob.cloud.config.CloudJobExecutionType;
import org.apache.shardingsphere.elasticjob.cloud.config.pojo.CloudJobConfigurationPOJO;
-import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfiguration;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfigurationService;
+import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.pojo.CloudAppConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.job.CloudJobConfigurationService;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.context.JobContext;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.mesos.MesosStateService.ExecutorStateInfo;
@@ -201,7 +201,7 @@ public final class FacadeService {
* @param appName app name
* @return cloud app config
*/
- public Optional<CloudAppConfiguration> loadAppConfig(final String appName) {
+ public Optional<CloudAppConfigurationPOJO> loadAppConfig(final String appName) {
return appConfigService.load(appName);
}
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/TaskLaunchScheduledService.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/TaskLaunchScheduledService.java
index c9bc110..86bc173 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/TaskLaunchScheduledService.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/TaskLaunchScheduledService.java
@@ -35,8 +35,8 @@ import org.apache.mesos.SchedulerDriver;
import org.apache.shardingsphere.elasticjob.api.listener.ShardingContexts;
import org.apache.shardingsphere.elasticjob.cloud.config.CloudJobConfiguration;
import org.apache.shardingsphere.elasticjob.cloud.config.CloudJobExecutionType;
+import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.pojo.CloudAppConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.config.pojo.CloudJobConfigurationPOJO;
-import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfiguration;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.env.BootstrapEnvironment;
import org.apache.shardingsphere.elasticjob.cloud.util.config.ShardingItemParameters;
import org.apache.shardingsphere.elasticjob.cloud.util.json.GsonFactory;
@@ -156,7 +156,7 @@ public final class TaskLaunchScheduledService extends AbstractScheduledService {
if (!cloudJobConfig.isPresent()) {
return null;
}
- Optional<CloudAppConfiguration> appConfig = facadeService.loadAppConfig(cloudJobConfig.get().getAppName());
+ Optional<CloudAppConfigurationPOJO> appConfig = facadeService.loadAppConfig(cloudJobConfig.get().getAppName());
if (!appConfig.isPresent()) {
return null;
}
@@ -177,7 +177,7 @@ public final class TaskLaunchScheduledService extends AbstractScheduledService {
}
}
- private ShardingContexts getShardingContexts(final TaskContext taskContext, final CloudAppConfiguration appConfig, final CloudJobConfiguration cloudJobConfig) {
+ private ShardingContexts getShardingContexts(final TaskContext taskContext, final CloudAppConfigurationPOJO appConfig, final CloudJobConfiguration cloudJobConfig) {
Map<Integer, String> shardingItemParameters = new ShardingItemParameters(cloudJobConfig.getJobConfig().getShardingItemParameters()).getMap();
Map<Integer, String> assignedShardingItemParameters = new HashMap<>(1, 1);
int shardingItem = taskContext.getMetaInfo().getShardingItems().get(0);
@@ -196,7 +196,7 @@ public final class TaskLaunchScheduledService extends AbstractScheduledService {
return result.setCommand(command).build();
}
- private Protos.TaskInfo buildCustomizedExecutorTaskInfo(final TaskContext taskContext, final CloudAppConfiguration appConfig, final CloudJobConfiguration cloudJobConfig,
+ private Protos.TaskInfo buildCustomizedExecutorTaskInfo(final TaskContext taskContext, final CloudAppConfigurationPOJO appConfig, final CloudJobConfiguration cloudJobConfig,
final ShardingContexts shardingContexts, final Protos.Offer offer, final Protos.CommandInfo command) {
Protos.TaskInfo.Builder result = Protos.TaskInfo.newBuilder().setTaskId(Protos.TaskID.newBuilder().setValue(taskContext.getId()).build())
.setName(taskContext.getTaskName()).setSlaveId(offer.getSlaveId())
@@ -213,7 +213,7 @@ public final class TaskLaunchScheduledService extends AbstractScheduledService {
return result.setExecutor(executorBuilder.build()).build();
}
- private Protos.CommandInfo.URI buildURI(final CloudAppConfiguration appConfig, final boolean isCommandExecutor) {
+ private Protos.CommandInfo.URI buildURI(final CloudAppConfigurationPOJO appConfig, final boolean isCommandExecutor) {
Protos.CommandInfo.URI.Builder result = Protos.CommandInfo.URI.newBuilder().setValue(appConfig.getAppURL()).setCache(appConfig.isAppCacheEnable());
if (isCommandExecutor && !SupportedExtractionType.isExtraction(appConfig.getAppURL())) {
result.setExecutable(true);
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerManager.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerManager.java
index 8b20925..152961d 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerManager.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerManager.java
@@ -25,8 +25,8 @@ import org.apache.mesos.SchedulerDriver;
import org.apache.shardingsphere.elasticjob.cloud.config.CloudJobExecutionType;
import org.apache.shardingsphere.elasticjob.cloud.config.pojo.CloudJobConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.exception.AppConfigurationException;
-import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfiguration;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfigurationService;
+import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.pojo.CloudAppConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.job.CloudJobConfigurationService;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.state.disable.app.DisableAppService;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.state.disable.job.DisableJobService;
@@ -92,7 +92,7 @@ public final class ProducerManager {
if (disableJobService.isDisabled(cloudJobConfig.getJobName())) {
throw new JobConfigurationException("Job '%s' has been disable.", cloudJobConfig.getJobName());
}
- Optional<CloudAppConfiguration> appConfigFromZk = appConfigService.load(cloudJobConfig.getAppName());
+ Optional<CloudAppConfigurationPOJO> appConfigFromZk = appConfigService.load(cloudJobConfig.getAppName());
if (!appConfigFromZk.isPresent()) {
throw new AppConfigurationException("Register app '%s' firstly.", cloudJobConfig.getAppName());
}
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/restful/CloudAppRestfulApi.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/restful/CloudAppRestfulApi.java
index 8e6b28e..3475486 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/restful/CloudAppRestfulApi.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/main/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/restful/CloudAppRestfulApi.java
@@ -21,15 +21,13 @@ import org.apache.mesos.Protos.ExecutorID;
import org.apache.mesos.Protos.SlaveID;
import org.apache.shardingsphere.elasticjob.cloud.config.pojo.CloudJobConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.exception.AppConfigurationException;
-import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfiguration;
-import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfigurationGsonFactory;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfigurationService;
+import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.pojo.CloudAppConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.job.CloudJobConfigurationService;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.mesos.MesosStateService;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.mesos.MesosStateService.ExecutorStateInfo;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.producer.ProducerManager;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.state.disable.app.DisableAppService;
-import org.apache.shardingsphere.elasticjob.cloud.util.json.GsonFactory;
import org.apache.shardingsphere.elasticjob.infra.exception.JobSystemException;
import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
import org.codehaus.jettison.json.JSONException;
@@ -81,7 +79,6 @@ public final class CloudAppRestfulApi {
public static void init(final CoordinatorRegistryCenter regCenter, final ProducerManager producerManager) {
CloudAppRestfulApi.regCenter = regCenter;
CloudAppRestfulApi.producerManager = producerManager;
- GsonFactory.registerTypeAdapter(CloudAppConfiguration.class, new CloudAppConfigurationGsonFactory.CloudAppConfigurationGsonTypeAdapter());
}
/**
@@ -91,8 +88,8 @@ public final class CloudAppRestfulApi {
*/
@POST
@Consumes(MediaType.APPLICATION_JSON)
- public void register(final CloudAppConfiguration appConfig) {
- Optional<CloudAppConfiguration> appConfigFromZk = appConfigService.load(appConfig.getAppName());
+ public void register(final CloudAppConfigurationPOJO appConfig) {
+ Optional<CloudAppConfigurationPOJO> appConfigFromZk = appConfigService.load(appConfig.getAppName());
if (appConfigFromZk.isPresent()) {
throw new AppConfigurationException("app '%s' already existed.", appConfig.getAppName());
}
@@ -106,7 +103,7 @@ public final class CloudAppRestfulApi {
*/
@PUT
@Consumes(MediaType.APPLICATION_JSON)
- public void update(final CloudAppConfiguration appConfig) {
+ public void update(final CloudAppConfigurationPOJO appConfig) {
appConfigService.update(appConfig);
}
@@ -120,7 +117,7 @@ public final class CloudAppRestfulApi {
@Path("/{appName}")
@Consumes(MediaType.APPLICATION_JSON)
public Response detail(@PathParam("appName") final String appName) {
- Optional<CloudAppConfiguration> appConfig = appConfigService.load(appName);
+ Optional<CloudAppConfigurationPOJO> appConfig = appConfigService.load(appName);
if (!appConfig.isPresent()) {
return Response.status(Response.Status.NOT_FOUND).build();
}
@@ -135,7 +132,7 @@ public final class CloudAppRestfulApi {
@GET
@Path("/list")
@Produces(MediaType.APPLICATION_JSON)
- public Collection<CloudAppConfiguration> findAllApps() {
+ public Collection<CloudAppConfigurationPOJO> findAllApps() {
return appConfigService.loadAll();
}
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/app/CloudAppConfigurationServiceTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/app/CloudAppConfigurationServiceTest.java
index f9ebd5f..f5a84c3 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/app/CloudAppConfigurationServiceTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/config/app/CloudAppConfigurationServiceTest.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app;
+import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.pojo.CloudAppConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.fixture.CloudAppConfigurationBuilder;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.fixture.CloudAppJsonConstants;
import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
@@ -56,14 +57,14 @@ public final class CloudAppConfigurationServiceTest {
@Test
public void assertAdd() {
- CloudAppConfiguration appConfig = CloudAppConfigurationBuilder.createCloudAppConfiguration("test_app");
+ CloudAppConfigurationPOJO appConfig = CloudAppConfigurationBuilder.createCloudAppConfiguration("test_app");
configService.add(appConfig);
verify(regCenter).persist("/config/app/test_app", YAML);
}
@Test
public void assertUpdate() {
- CloudAppConfiguration appConfig = CloudAppConfigurationBuilder.createCloudAppConfiguration("test_app");
+ CloudAppConfigurationPOJO appConfig = CloudAppConfigurationBuilder.createCloudAppConfiguration("test_app");
configService.update(appConfig);
verify(regCenter).update("/config/app/test_app", YAML);
}
@@ -80,7 +81,7 @@ public final class CloudAppConfigurationServiceTest {
when(regCenter.isExisted("/config/app")).thenReturn(true);
when(regCenter.getChildrenKeys(CloudAppConfigurationNode.ROOT)).thenReturn(Arrays.asList("test_app_1", "test_app_2"));
when(regCenter.get("/config/app/test_app_1")).thenReturn(CloudAppJsonConstants.getAppJson("test_app_1"));
- Collection<CloudAppConfiguration> actual = configService.loadAll();
+ Collection<CloudAppConfigurationPOJO> actual = configService.loadAll();
assertThat(actual.size(), is(1));
assertThat(actual.iterator().next().getAppName(), is("test_app_1"));
verify(regCenter).isExisted("/config/app");
@@ -97,7 +98,7 @@ public final class CloudAppConfigurationServiceTest {
@Test
public void assertLoadWithConfig() {
when(regCenter.get("/config/app/test_app")).thenReturn(CloudAppJsonConstants.getAppJson("test_app"));
- Optional<CloudAppConfiguration> actual = configService.load("test_app");
+ Optional<CloudAppConfigurationPOJO> actual = configService.load("test_app");
assertTrue(actual.isPresent());
assertThat(actual.get().getAppName(), is("test_app"));
}
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/fixture/CloudAppConfigurationBuilder.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/fixture/CloudAppConfigurationBuilder.java
index dafb25f..f414717 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/fixture/CloudAppConfigurationBuilder.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/fixture/CloudAppConfigurationBuilder.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.elasticjob.cloud.scheduler.fixture;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfiguration;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.pojo.CloudAppConfigurationPOJO;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class CloudAppConfigurationBuilder {
@@ -29,7 +30,8 @@ public final class CloudAppConfigurationBuilder {
* @param appName app name
* @return CloudAppConfiguration
*/
- public static CloudAppConfiguration createCloudAppConfiguration(final String appName) {
- return new CloudAppConfiguration(appName, "http://localhost/app.jar", "bin/start.sh");
+ public static CloudAppConfigurationPOJO createCloudAppConfiguration(final String appName) {
+ return CloudAppConfigurationPOJO.fromCloudAppConfiguration(new CloudAppConfiguration(appName,
+ "http://localhost/app.jar", "bin/start.sh"));
}
}
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeServiceTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeServiceTest.java
index 368dfcc..25900a6 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeServiceTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/mesos/FacadeServiceTest.java
@@ -24,6 +24,7 @@ import org.apache.shardingsphere.elasticjob.cloud.config.CloudJobExecutionType;
import org.apache.shardingsphere.elasticjob.cloud.config.pojo.CloudJobConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfiguration;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfigurationService;
+import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.pojo.CloudAppConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.job.CloudJobConfigurationService;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.context.JobContext;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.fixture.CloudAppConfigurationBuilder;
@@ -200,7 +201,7 @@ public final class FacadeServiceTest {
@Test
public void assertLoadAppConfig() {
- Optional<CloudAppConfiguration> appConfigOptional = Optional.of(CloudAppConfigurationBuilder.createCloudAppConfiguration("test_app"));
+ Optional<CloudAppConfigurationPOJO> appConfigOptional = Optional.of(CloudAppConfigurationBuilder.createCloudAppConfiguration("test_app"));
when(appConfigService.load("test_app")).thenReturn(appConfigOptional);
assertThat(facadeService.loadAppConfig("test_app"), is(appConfigOptional));
}
diff --git a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerManagerTest.java b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerManagerTest.java
index 5b4a573..a72f6fe 100755
--- a/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerManagerTest.java
+++ b/elasticjob-cloud/elasticjob-cloud-scheduler/src/test/java/org/apache/shardingsphere/elasticjob/cloud/scheduler/producer/ProducerManagerTest.java
@@ -23,8 +23,8 @@ import org.apache.shardingsphere.elasticjob.cloud.ReflectionUtils;
import org.apache.shardingsphere.elasticjob.cloud.config.CloudJobExecutionType;
import org.apache.shardingsphere.elasticjob.cloud.config.pojo.CloudJobConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.exception.AppConfigurationException;
-import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfiguration;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.CloudAppConfigurationService;
+import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.app.pojo.CloudAppConfigurationPOJO;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.config.job.CloudJobConfigurationService;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.fixture.CloudAppConfigurationBuilder;
import org.apache.shardingsphere.elasticjob.cloud.scheduler.fixture.CloudJobConfigurationBuilder;
@@ -78,7 +78,7 @@ public final class ProducerManagerTest {
private ProducerManager producerManager;
- private final CloudAppConfiguration appConfig = CloudAppConfigurationBuilder.createCloudAppConfiguration("test_app");
+ private final CloudAppConfigurationPOJO appConfig = CloudAppConfigurationBuilder.createCloudAppConfiguration("test_app");
private final CloudJobConfigurationPOJO transientJobConfig = CloudJobConfigurationBuilder.createCloudJobConfiguration("transient_test_job");