From 135280abaace48c698f54c82e24d123eb2084847 Mon Sep 17 00:00:00 2001 From: Arpit Mohan Date: Thu, 19 Mar 2020 12:34:24 +0530 Subject: [PATCH] Moving the propertyPane config to generic JSONObject This ensures that the client can change the config at will without depending on the platform team to add the field to the POJO. Also deleting redundant classes and controllers for propertyPane and Widget. These are no longer required and can be removed from the codebase. --- .../server/controllers/ConfigController.java | 7 +++ .../controllers/PropertyPaneController.java | 15 ----- .../server/controllers/WidgetController.java | 29 --------- .../com/appsmith/server/domains/Config.java | 6 +- .../appsmith/server/domains/PropertyPane.java | 22 ------- .../com/appsmith/server/domains/Widget.java | 30 ---------- .../server/domains/WidgetChildProperty.java | 23 -------- .../appsmith/server/domains/WidgetOption.java | 15 ----- .../server/domains/WidgetSectionProperty.java | 18 ------ .../appsmith/server/domains/WidgetType.java | 5 -- .../repositories/PropertyPaneRepository.java | 8 --- .../server/repositories/WidgetRepository.java | 11 ---- .../server/services/ConfigService.java | 2 + .../server/services/ConfigServiceImpl.java | 13 ++++ .../server/services/PropertyPaneService.java | 6 -- .../services/PropertyPaneServiceImpl.java | 59 ------------------- .../server/services/WidgetService.java | 9 --- .../server/services/WidgetServiceImpl.java | 37 ------------ 18 files changed, 24 insertions(+), 291 deletions(-) delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/PropertyPaneController.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/WidgetController.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PropertyPane.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Widget.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetChildProperty.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetOption.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetSectionProperty.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetType.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/PropertyPaneRepository.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/WidgetRepository.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/services/PropertyPaneService.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/services/PropertyPaneServiceImpl.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/services/WidgetService.java delete mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/services/WidgetServiceImpl.java diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ConfigController.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ConfigController.java index 17b6803360..df334a7424 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ConfigController.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ConfigController.java @@ -7,6 +7,8 @@ import com.appsmith.server.services.ConfigService; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Mono; @@ -25,4 +27,9 @@ public class ConfigController extends BaseController new ResponseDTO<>(HttpStatus.OK.value(), resource, null)); } + @PutMapping("/name/{name}") + public Mono> updateByName(@PathVariable String name, @RequestBody Config config) { + return service.updateByName(name, config) + .map(resource -> new ResponseDTO<>(HttpStatus.OK.value(), resource, null)); + } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/PropertyPaneController.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/PropertyPaneController.java deleted file mode 100644 index 84cff74674..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/PropertyPaneController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.appsmith.server.controllers; - -import com.appsmith.server.constants.Url; -import com.appsmith.server.domains.PropertyPane; -import com.appsmith.server.services.PropertyPaneService; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@RequestMapping(Url.PROPERTY_URL) -public class PropertyPaneController extends BaseController { - public PropertyPaneController(PropertyPaneService service) { - super(service); - } -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/WidgetController.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/WidgetController.java deleted file mode 100644 index c96c596a5d..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/WidgetController.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.appsmith.server.controllers; - -import com.appsmith.server.constants.Url; -import com.appsmith.server.domains.Widget; -import com.appsmith.server.dtos.ResponseDTO; -import com.appsmith.server.services.WidgetService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import reactor.core.publisher.Mono; - -@RestController -@RequestMapping(Url.WIDGET_URL) -public class WidgetController extends BaseController { - - @Autowired - public WidgetController(WidgetService service) { - super(service); - } - - @GetMapping("/name/{name}") - public Mono> getByName(@PathVariable String name) { - return service.getByName(name) - .map(widget -> new ResponseDTO<>(HttpStatus.OK.value(), widget, null)); - } -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Config.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Config.java index f628448a66..f8cbd694bd 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Config.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Config.java @@ -5,19 +5,17 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; +import net.minidev.json.JSONObject; import org.springframework.data.mongodb.core.index.Indexed; import org.springframework.data.mongodb.core.mapping.Document; -import java.util.List; -import java.util.Map; - @Getter @Setter @ToString @NoArgsConstructor @Document public class Config extends BaseDomain { - Map> config; + JSONObject config; @Indexed(unique = true) String name; diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PropertyPane.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PropertyPane.java deleted file mode 100644 index e864686aca..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/PropertyPane.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.appsmith.server.domains; - -import com.appsmith.external.models.BaseDomain; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; -import org.springframework.data.mongodb.core.mapping.Document; - -import java.util.List; -import java.util.Map; - -@Getter -@Setter -@ToString -@NoArgsConstructor -@Document -public class PropertyPane extends BaseDomain { - - Map> config; - -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Widget.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Widget.java deleted file mode 100644 index 8750812e7b..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Widget.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.appsmith.server.domains; - -import com.appsmith.external.models.BaseDomain; -import com.appsmith.external.models.Property; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; -import org.springframework.data.mongodb.core.index.Indexed; -import org.springframework.data.mongodb.core.mapping.Document; - -import java.util.List; - - -@Getter -@Setter -@ToString -@NoArgsConstructor -@Document -public class Widget extends BaseDomain { - - @Indexed(unique = true) - private String name; - - private WidgetType type; - - private PricingPlan pricingPlan; - - private List properties; -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetChildProperty.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetChildProperty.java deleted file mode 100644 index 67ab0f923c..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetChildProperty.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.appsmith.server.domains; - -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; - -import java.util.List; - -@Getter -@Setter -@ToString -@NoArgsConstructor -public class WidgetChildProperty { - String id; - String propertyName; - String label; - String controlType; - String placeholderText; - List options; - String inputType; - Boolean isJSConvertible; -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetOption.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetOption.java deleted file mode 100644 index 3a99c676ad..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetOption.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.appsmith.server.domains; - -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; - -@Getter -@Setter -@ToString -@NoArgsConstructor -public class WidgetOption { - String label; - String value; -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetSectionProperty.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetSectionProperty.java deleted file mode 100644 index c8e04116ea..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetSectionProperty.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.appsmith.server.domains; - -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; - -import java.util.List; - -@Getter -@Setter -@ToString -@NoArgsConstructor -public class WidgetSectionProperty { - String sectionName; - String id; - List children; -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetType.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetType.java deleted file mode 100644 index 812406b6db..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/WidgetType.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.appsmith.server.domains; - -public enum WidgetType { - DB, DISPLAY -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/PropertyPaneRepository.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/PropertyPaneRepository.java deleted file mode 100644 index d7f944e7b0..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/PropertyPaneRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.appsmith.server.repositories; - -import com.appsmith.server.domains.PropertyPane; -import org.springframework.stereotype.Repository; - -@Repository -public interface PropertyPaneRepository extends BaseRepository { -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/WidgetRepository.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/WidgetRepository.java deleted file mode 100644 index edd8142c46..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/WidgetRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.appsmith.server.repositories; - -import com.appsmith.server.domains.Widget; -import org.springframework.stereotype.Repository; -import reactor.core.publisher.Mono; - -@Repository -public interface WidgetRepository extends BaseRepository { - - Mono findByName(String name); -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ConfigService.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ConfigService.java index a635da8334..c930844130 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ConfigService.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ConfigService.java @@ -5,4 +5,6 @@ import reactor.core.publisher.Mono; public interface ConfigService extends CrudService { Mono getByName(String name); + + Mono updateByName(String name, Config config); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ConfigServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ConfigServiceImpl.java index 96f4d11f96..88163b2dd1 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ConfigServiceImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ConfigServiceImpl.java @@ -5,6 +5,7 @@ import com.appsmith.server.domains.Config; import com.appsmith.server.exceptions.AppsmithError; import com.appsmith.server.exceptions.AppsmithException; import com.appsmith.server.repositories.ConfigRepository; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.mongodb.core.ReactiveMongoTemplate; import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.stereotype.Service; @@ -13,6 +14,7 @@ import reactor.core.scheduler.Scheduler; import javax.validation.Validator; +@Slf4j @Service public class ConfigServiceImpl extends BaseService implements ConfigService { @@ -30,4 +32,15 @@ public class ConfigServiceImpl extends BaseService updateByName(String name, Config config) { + return repository.findByName(name) + .switchIfEmpty(Mono.error(new AppsmithException(AppsmithError.NO_RESOURCE_FOUND, FieldName.CONFIG, name))) + .flatMap(dbConfig -> { + log.debug("Found config with name: {} and id: {}", name, dbConfig.getId()); + dbConfig.setConfig(config.getConfig()); + return repository.save(dbConfig); + }); + } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/PropertyPaneService.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/PropertyPaneService.java deleted file mode 100644 index fd62caeee0..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/PropertyPaneService.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.appsmith.server.services; - -import com.appsmith.server.domains.PropertyPane; - -public interface PropertyPaneService extends CrudService { -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/PropertyPaneServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/PropertyPaneServiceImpl.java deleted file mode 100644 index e19afa0dc8..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/PropertyPaneServiceImpl.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.appsmith.server.services; - -import com.appsmith.server.domains.PropertyPane; -import com.appsmith.server.domains.WidgetChildProperty; -import com.appsmith.server.domains.WidgetSectionProperty; -import com.appsmith.server.exceptions.AppsmithError; -import com.appsmith.server.exceptions.AppsmithException; -import com.appsmith.server.repositories.PropertyPaneRepository; -import lombok.extern.slf4j.Slf4j; -import org.bson.types.ObjectId; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.ReactiveMongoTemplate; -import org.springframework.data.mongodb.core.convert.MongoConverter; -import org.springframework.stereotype.Service; -import reactor.core.publisher.Mono; -import reactor.core.scheduler.Scheduler; - -import javax.validation.Validator; -import java.util.List; -import java.util.Map; - -@Slf4j -@Service -public class PropertyPaneServiceImpl extends BaseService implements PropertyPaneService { - - @Autowired - public PropertyPaneServiceImpl(Scheduler scheduler, - Validator validator, - MongoConverter mongoConverter, - ReactiveMongoTemplate reactiveMongoTemplate, - PropertyPaneRepository repository, - AnalyticsService analyticsService) { - super(scheduler, validator, mongoConverter, reactiveMongoTemplate, repository, analyticsService); - } - - @Override - public Mono create(PropertyPane propertyPane) { - if (propertyPane.getId() != null) { - return Mono.error(new AppsmithException(AppsmithError.INVALID_PARAMETER, "id")); - } - if (propertyPane.getConfig() != null) { - Map> configMap = propertyPane.getConfig(); - configMap.forEach((key, sectionProperty) -> { - List widgetSectionProperties = sectionProperty; - for (WidgetSectionProperty widgetSectionProperty : widgetSectionProperties) { - widgetSectionProperty.setId(new ObjectId().toString()); - List widgetChildProperties = widgetSectionProperty.getChildren(); - for (WidgetChildProperty widgetChildProperty : widgetChildProperties) { - widgetChildProperty.setId(new ObjectId().toString()); - } - widgetSectionProperty.setChildren(widgetChildProperties); - } - configMap.put(key, widgetSectionProperties); - }); - propertyPane.setConfig(configMap); - } - return super.create(propertyPane); - } -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/WidgetService.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/WidgetService.java deleted file mode 100644 index a0e7b8f1f7..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/WidgetService.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.appsmith.server.services; - -import com.appsmith.server.domains.Widget; -import reactor.core.publisher.Mono; - -public interface WidgetService extends CrudService { - - Mono getByName(String name); -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/WidgetServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/WidgetServiceImpl.java deleted file mode 100644 index 2503da799d..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/WidgetServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.appsmith.server.services; - -import com.appsmith.server.domains.Widget; -import com.appsmith.server.repositories.WidgetRepository; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.ReactiveMongoTemplate; -import org.springframework.data.mongodb.core.convert.MongoConverter; -import org.springframework.stereotype.Service; -import reactor.core.publisher.Mono; -import reactor.core.scheduler.Scheduler; - -import javax.validation.Validator; - -@Service -@Slf4j -public class WidgetServiceImpl extends BaseService implements WidgetService { - - private WidgetRepository widgetRepository; - - @Autowired - public WidgetServiceImpl(Scheduler scheduler, - Validator validator, - MongoConverter mongoConverter, - ReactiveMongoTemplate mongoTemplate, - WidgetRepository widgetRepository, - AnalyticsService analyticsService) { - super(scheduler, validator, mongoConverter, mongoTemplate, widgetRepository, analyticsService); - this.widgetRepository = widgetRepository; - } - - @Override - public Mono getByName(String name) { - return widgetRepository.findByName(name); - } - -}