From cef6946859cfd96fb3b04024fbcaf9f8d9d4ccfb Mon Sep 17 00:00:00 2001 From: Arpit Mohan Date: Sat, 30 Mar 2019 12:22:15 +0530 Subject: [PATCH] Adding the LayoutController that will store the DDL for the page layouts Also adding the getById function in the BaseController so that all CRUD APIs will automatically support that API call. --- .../server/configurations/SecurityConfig.java | 1 + .../com/mobtools/server/constants/Url.java | 1 + .../server/controllers/BaseController.java | 6 +++++ .../server/controllers/IndexController.java | 2 -- .../server/controllers/LayoutController.java | 18 +++++++++++++++ .../server/controllers/WidgetController.java | 2 +- .../mobtools/server/domains/BaseDomain.java | 3 --- .../com/mobtools/server/domains/Layout.java | 18 +++++++++++++++ .../server/repositories/LayoutRepository.java | 8 +++++++ .../mobtools/server/services/BaseService.java | 5 ++++ .../mobtools/server/services/CrudService.java | 2 ++ .../server/services/LayoutService.java | 6 +++++ .../server/services/LayoutServiceImpl.java | 23 +++++++++++++++++++ 13 files changed, 89 insertions(+), 6 deletions(-) create mode 100644 app/server/server/src/main/java/com/mobtools/server/controllers/LayoutController.java create mode 100644 app/server/server/src/main/java/com/mobtools/server/domains/Layout.java create mode 100644 app/server/server/src/main/java/com/mobtools/server/repositories/LayoutRepository.java create mode 100644 app/server/server/src/main/java/com/mobtools/server/services/LayoutService.java create mode 100644 app/server/server/src/main/java/com/mobtools/server/services/LayoutServiceImpl.java diff --git a/app/server/server/src/main/java/com/mobtools/server/configurations/SecurityConfig.java b/app/server/server/src/main/java/com/mobtools/server/configurations/SecurityConfig.java index cf04ffa52a..5dd622ca30 100644 --- a/app/server/server/src/main/java/com/mobtools/server/configurations/SecurityConfig.java +++ b/app/server/server/src/main/java/com/mobtools/server/configurations/SecurityConfig.java @@ -39,6 +39,7 @@ public class SecurityConfig { @Bean public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) { return http + .csrf().disable() .authorizeExchange() .anyExchange() .authenticated() diff --git a/app/server/server/src/main/java/com/mobtools/server/constants/Url.java b/app/server/server/src/main/java/com/mobtools/server/constants/Url.java index ba05d0f6af..ba7abeda8f 100644 --- a/app/server/server/src/main/java/com/mobtools/server/constants/Url.java +++ b/app/server/server/src/main/java/com/mobtools/server/constants/Url.java @@ -5,4 +5,5 @@ public interface Url { String VERSION = "/v1"; String WIDGET_URL = BASE_URL + VERSION + "/widgets"; String TENANT_URL = BASE_URL + VERSION + "/tenants"; + String LAYOUT_URL = BASE_URL + VERSION + "/layouts"; } diff --git a/app/server/server/src/main/java/com/mobtools/server/controllers/BaseController.java b/app/server/server/src/main/java/com/mobtools/server/controllers/BaseController.java index 761c7a8c08..1bdadfceb1 100644 --- a/app/server/server/src/main/java/com/mobtools/server/controllers/BaseController.java +++ b/app/server/server/src/main/java/com/mobtools/server/controllers/BaseController.java @@ -29,6 +29,12 @@ public abstract class BaseController new ResponseDto<>(HttpStatus.OK.value(), resources, null)); } + @GetMapping("/{id}") + public Mono> getById(@PathVariable ID id) { + return service.getById(id) + .map(resources -> new ResponseDto<>(HttpStatus.OK.value(), resources, null)); + } + @PutMapping("/{id}") public Mono> update(@PathVariable ID id, @RequestBody T resource) throws Exception { return service.update(id, resource) diff --git a/app/server/server/src/main/java/com/mobtools/server/controllers/IndexController.java b/app/server/server/src/main/java/com/mobtools/server/controllers/IndexController.java index 161245cadd..c7201e7e7a 100644 --- a/app/server/server/src/main/java/com/mobtools/server/controllers/IndexController.java +++ b/app/server/server/src/main/java/com/mobtools/server/controllers/IndexController.java @@ -1,8 +1,6 @@ package com.mobtools.server.controllers; import lombok.extern.slf4j.Slf4j; -import org.springframework.security.core.annotation.AuthenticationPrincipal; -import org.springframework.security.oauth2.core.user.OAuth2User; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/app/server/server/src/main/java/com/mobtools/server/controllers/LayoutController.java b/app/server/server/src/main/java/com/mobtools/server/controllers/LayoutController.java new file mode 100644 index 0000000000..8c25ede547 --- /dev/null +++ b/app/server/server/src/main/java/com/mobtools/server/controllers/LayoutController.java @@ -0,0 +1,18 @@ +package com.mobtools.server.controllers; + +import com.mobtools.server.constants.Url; +import com.mobtools.server.domains.Layout; +import com.mobtools.server.services.LayoutService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(Url.LAYOUT_URL) +public class LayoutController extends BaseController { + + @Autowired + public LayoutController(LayoutService service) { + super(service); + } +} diff --git a/app/server/server/src/main/java/com/mobtools/server/controllers/WidgetController.java b/app/server/server/src/main/java/com/mobtools/server/controllers/WidgetController.java index 15d025fc37..8967c655a3 100644 --- a/app/server/server/src/main/java/com/mobtools/server/controllers/WidgetController.java +++ b/app/server/server/src/main/java/com/mobtools/server/controllers/WidgetController.java @@ -22,7 +22,7 @@ public class WidgetController extends BaseController> getByName(@PathVariable String name) { return widgetService.getByName(name) .map(widget -> new ResponseDto<>(HttpStatus.OK.value(), widget, null)); diff --git a/app/server/server/src/main/java/com/mobtools/server/domains/BaseDomain.java b/app/server/server/src/main/java/com/mobtools/server/domains/BaseDomain.java index 96c6b9ce9d..5db5e9e9b2 100644 --- a/app/server/server/src/main/java/com/mobtools/server/domains/BaseDomain.java +++ b/app/server/server/src/main/java/com/mobtools/server/domains/BaseDomain.java @@ -32,9 +32,6 @@ public abstract class BaseDomain implements Persistable { protected Boolean deleted = false; -// @Version -// protected Long version; - @Override public boolean isNew() { return this.getId() == null; diff --git a/app/server/server/src/main/java/com/mobtools/server/domains/Layout.java b/app/server/server/src/main/java/com/mobtools/server/domains/Layout.java new file mode 100644 index 0000000000..9677402d9c --- /dev/null +++ b/app/server/server/src/main/java/com/mobtools/server/domains/Layout.java @@ -0,0 +1,18 @@ +package com.mobtools.server.domains; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import net.minidev.json.JSONObject; +import org.springframework.data.mongodb.core.mapping.Document; + +@Getter +@Setter +@ToString +@NoArgsConstructor +@Document +public class Layout extends BaseDomain { + + JSONObject data; +} diff --git a/app/server/server/src/main/java/com/mobtools/server/repositories/LayoutRepository.java b/app/server/server/src/main/java/com/mobtools/server/repositories/LayoutRepository.java new file mode 100644 index 0000000000..5aa415b3e4 --- /dev/null +++ b/app/server/server/src/main/java/com/mobtools/server/repositories/LayoutRepository.java @@ -0,0 +1,8 @@ +package com.mobtools.server.repositories; + +import com.mobtools.server.domains.Layout; +import org.springframework.stereotype.Repository; + +@Repository +public interface LayoutRepository extends BaseRepository{ +} diff --git a/app/server/server/src/main/java/com/mobtools/server/services/BaseService.java b/app/server/server/src/main/java/com/mobtools/server/services/BaseService.java index e7b5df1bd9..27df6b4745 100644 --- a/app/server/server/src/main/java/com/mobtools/server/services/BaseService.java +++ b/app/server/server/src/main/java/com/mobtools/server/services/BaseService.java @@ -59,6 +59,11 @@ public abstract class BaseService getById(ID id) { + return repository.findById(id); + } + @Override public Mono create(T widget) { return repository.save(widget); diff --git a/app/server/server/src/main/java/com/mobtools/server/services/CrudService.java b/app/server/server/src/main/java/com/mobtools/server/services/CrudService.java index 19302a89c2..75a461b05c 100644 --- a/app/server/server/src/main/java/com/mobtools/server/services/CrudService.java +++ b/app/server/server/src/main/java/com/mobtools/server/services/CrudService.java @@ -11,4 +11,6 @@ public interface CrudService { Mono create(T resource); Mono update(ID id, T resource) throws Exception; + + Mono getById(ID id); } diff --git a/app/server/server/src/main/java/com/mobtools/server/services/LayoutService.java b/app/server/server/src/main/java/com/mobtools/server/services/LayoutService.java new file mode 100644 index 0000000000..878953c15a --- /dev/null +++ b/app/server/server/src/main/java/com/mobtools/server/services/LayoutService.java @@ -0,0 +1,6 @@ +package com.mobtools.server.services; + +import com.mobtools.server.domains.Layout; + +public interface LayoutService extends CrudService { +} diff --git a/app/server/server/src/main/java/com/mobtools/server/services/LayoutServiceImpl.java b/app/server/server/src/main/java/com/mobtools/server/services/LayoutServiceImpl.java new file mode 100644 index 0000000000..38574ce1e5 --- /dev/null +++ b/app/server/server/src/main/java/com/mobtools/server/services/LayoutServiceImpl.java @@ -0,0 +1,23 @@ +package com.mobtools.server.services; + +import com.mobtools.server.domains.Layout; +import com.mobtools.server.repositories.LayoutRepository; +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.scheduler.Scheduler; + +@Slf4j +@Service +public class LayoutServiceImpl extends BaseService implements LayoutService { + + @Autowired + public LayoutServiceImpl(Scheduler scheduler, + MongoConverter mongoConverter, + ReactiveMongoTemplate reactiveMongoTemplate, + LayoutRepository repository) { + super(scheduler, mongoConverter, reactiveMongoTemplate, repository); + } +}