import 정리

This commit is contained in:
현성필
2024-05-07 14:39:54 +09:00
parent ac88b6388e
commit c3afff535a
79 changed files with 294 additions and 254 deletions
@@ -2,7 +2,6 @@ package com.eactive.testmaster.api.condition;
import com.eactive.testmaster.api.dto.MockRequest; import com.eactive.testmaster.api.dto.MockRequest;
import com.eactive.testmaster.api.entity.MockCondition; import com.eactive.testmaster.api.entity.MockCondition;
import java.util.Map; import java.util.Map;
public interface ConditionMatcher { public interface ConditionMatcher {
@@ -1,11 +1,10 @@
package com.eactive.testmaster.api.condition; package com.eactive.testmaster.api.condition;
import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.springframework.stereotype.Service;
@Service(value = "ConditionMatcherService") @Service(value = "ConditionMatcherService")
public class ConditionMatcherService { public class ConditionMatcherService {
@@ -2,9 +2,8 @@ package com.eactive.testmaster.api.condition;
import com.eactive.testmaster.api.dto.MockRequest; import com.eactive.testmaster.api.dto.MockRequest;
import com.eactive.testmaster.api.entity.MockCondition; import com.eactive.testmaster.api.entity.MockCondition;
import org.springframework.stereotype.Component;
import java.util.Map; import java.util.Map;
import org.springframework.stereotype.Component;
@Component @Component
public class HeaderMatcher implements ConditionMatcher { public class HeaderMatcher implements ConditionMatcher {
@@ -4,9 +4,8 @@ import com.eactive.testmaster.api.dto.MockRequest;
import com.eactive.testmaster.api.entity.MockCondition; import com.eactive.testmaster.api.entity.MockCondition;
import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.PathNotFoundException; import com.jayway.jsonpath.PathNotFoundException;
import org.springframework.stereotype.Component;
import java.util.Map; import java.util.Map;
import org.springframework.stereotype.Component;
@Component @Component
@@ -2,9 +2,8 @@ package com.eactive.testmaster.api.condition;
import com.eactive.testmaster.api.dto.MockRequest; import com.eactive.testmaster.api.dto.MockRequest;
import com.eactive.testmaster.api.entity.MockCondition; import com.eactive.testmaster.api.entity.MockCondition;
import org.springframework.stereotype.Component;
import java.util.Map; import java.util.Map;
import org.springframework.stereotype.Component;
@Component @Component
public class PathMatcher implements ConditionMatcher { public class PathMatcher implements ConditionMatcher {
@@ -2,9 +2,8 @@ package com.eactive.testmaster.api.condition;
import com.eactive.testmaster.api.dto.MockRequest; import com.eactive.testmaster.api.dto.MockRequest;
import com.eactive.testmaster.api.entity.MockCondition; import com.eactive.testmaster.api.entity.MockCondition;
import org.springframework.stereotype.Component;
import java.util.Map; import java.util.Map;
import org.springframework.stereotype.Component;
@Component @Component
@@ -7,6 +7,11 @@ import com.eactive.testmaster.api.entity.MockCondition;
import com.eactive.testmaster.api.entity.MockResponse; import com.eactive.testmaster.api.entity.MockResponse;
import com.eactive.testmaster.api.entity.MockRoute; import com.eactive.testmaster.api.entity.MockRoute;
import com.eactive.testmaster.api.service.MockRouteService; import com.eactive.testmaster.api.service.MockRouteService;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
@@ -15,12 +20,6 @@ import org.springframework.http.ResponseEntity;
import org.springframework.util.AntPathMatcher; import org.springframework.util.AntPathMatcher;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@RestController @RestController
public class MockApiController { public class MockApiController {
@@ -3,6 +3,8 @@ package com.eactive.testmaster.api.controller;
import com.eactive.testmaster.api.entity.MockRoute; import com.eactive.testmaster.api.entity.MockRoute;
import com.eactive.testmaster.api.service.MockRouteService; import com.eactive.testmaster.api.service.MockRouteService;
import com.eactive.testmaster.config.CsrfExclusionService; import com.eactive.testmaster.config.CsrfExclusionService;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -11,9 +13,6 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
@Component @Component
public class MockApiHandlerMapping { public class MockApiHandlerMapping {
@@ -7,6 +7,8 @@ import com.eactive.testmaster.api.dto.MockRouteUpdateDTO;
import com.eactive.testmaster.api.entity.MockRoute; import com.eactive.testmaster.api.entity.MockRoute;
import com.eactive.testmaster.api.mapper.MockRouteMapper; import com.eactive.testmaster.api.mapper.MockRouteMapper;
import com.eactive.testmaster.api.service.MockRouteService; import com.eactive.testmaster.api.service.MockRouteService;
import java.util.List;
import javax.annotation.PostConstruct;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@@ -15,12 +17,13 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.validation.Validator; import org.springframework.validation.Validator;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.annotation.PostConstruct;
import java.util.List;
@Controller @Controller
@RequestMapping("/mgmt/routes") @RequestMapping("/mgmt/routes")
public class MockRouteMgmtController { public class MockRouteMgmtController {
@@ -1,11 +1,11 @@
package com.eactive.testmaster.api.dto; package com.eactive.testmaster.api.dto;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
public class MockRequest { public class MockRequest {
@@ -1,8 +1,8 @@
package com.eactive.testmaster.api.dto; package com.eactive.testmaster.api.dto;
import javax.validation.constraints.Min;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.validation.constraints.Min;
public class MockResponseDTO { public class MockResponseDTO {
@@ -1,11 +1,10 @@
package com.eactive.testmaster.api.dto; package com.eactive.testmaster.api.dto;
import com.eactive.testmaster.common.validator.UniqueRoute; import com.eactive.testmaster.common.validator.UniqueRoute;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
@UniqueRoute(path = "pathPattern", method = "method") @UniqueRoute(path = "pathPattern", method = "method")
public class MockRouteRegisterDTO { public class MockRouteRegisterDTO {
@@ -5,7 +5,6 @@ import com.eactive.testmaster.common.search.BaseSearch;
import com.eactive.testmaster.common.search.ColumnSearchModel; import com.eactive.testmaster.common.search.ColumnSearchModel;
import com.eactive.testmaster.common.search.SearchCondition; import com.eactive.testmaster.common.search.SearchCondition;
import com.eactive.testmaster.common.search.SearchModel; import com.eactive.testmaster.common.search.SearchModel;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -1,9 +1,9 @@
package com.eactive.testmaster.api.dto; package com.eactive.testmaster.api.dto;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
public class MockRouteUpdateDTO { public class MockRouteUpdateDTO {
@@ -1,7 +1,13 @@
package com.eactive.testmaster.api.entity; package com.eactive.testmaster.api.entity;
import javax.persistence.*; import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity @Entity
@Table(name = "MOCK_RESPONSE_CONDITION") @Table(name = "MOCK_RESPONSE_CONDITION")
@@ -1,10 +1,23 @@
package com.eactive.testmaster.api.entity; package com.eactive.testmaster.api.entity;
import javax.persistence.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.persistence.CascadeType;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.MapKeyColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity @Entity
@Table(name = "MOCK_RESPONSE") @Table(name = "MOCK_RESPONSE")
@@ -1,8 +1,15 @@
package com.eactive.testmaster.api.entity; package com.eactive.testmaster.api.entity;
import javax.persistence.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity @Entity
@@ -7,17 +7,16 @@ import com.eactive.testmaster.api.dto.MockRouteUpdateDTO;
import com.eactive.testmaster.api.entity.MockResponse; import com.eactive.testmaster.api.entity.MockResponse;
import com.eactive.testmaster.api.entity.MockRoute; import com.eactive.testmaster.api.entity.MockRoute;
import com.eactive.testmaster.common.mapper.CommonMapper; import com.eactive.testmaster.common.mapper.CommonMapper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import org.mapstruct.Named; import org.mapstruct.Named;
import org.mapstruct.ReportingPolicy; import org.mapstruct.ReportingPolicy;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Mapper(componentModel = "spring", @Mapper(componentModel = "spring",
uses = {CommonMapper.class}, uses = {CommonMapper.class},
unmappedTargetPolicy = ReportingPolicy.IGNORE) unmappedTargetPolicy = ReportingPolicy.IGNORE)
@@ -5,6 +5,10 @@ import com.eactive.testmaster.api.entity.MockResponse;
import com.eactive.testmaster.api.entity.MockRoute; import com.eactive.testmaster.api.entity.MockRoute;
import com.eactive.testmaster.api.repository.MockRouteRepository; import com.eactive.testmaster.api.repository.MockRouteRepository;
import com.eactive.testmaster.common.exception.NotFoundException; import com.eactive.testmaster.common.exception.NotFoundException;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import javax.transaction.Transactional;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -13,11 +17,6 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
@Service @Service
@Transactional @Transactional
public class MockRouteService { public class MockRouteService {
@@ -2,13 +2,12 @@ package com.eactive.testmaster.client.controller;
import com.eactive.testmaster.server.entity.Server; import com.eactive.testmaster.server.entity.Server;
import com.eactive.testmaster.server.repository.ServerRepository; import com.eactive.testmaster.server.repository.ServerRepository;
import java.util.List;
import org.springframework.security.access.annotation.Secured; import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
@Controller @Controller
public class ApiClientPageController { public class ApiClientPageController {
@@ -12,12 +12,14 @@ import com.eactive.testmaster.client.service.ApiRequestMgmtService;
import com.eactive.testmaster.common.util.SecurityUtil; import com.eactive.testmaster.common.util.SecurityUtil;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import com.eactive.testmaster.user.service.UserService; import com.eactive.testmaster.user.service.UserService;
import javax.transaction.Transactional;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import javax.transaction.Transactional;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
public class ApiRequestMgmtController { public class ApiRequestMgmtController {
@@ -7,11 +7,14 @@ import com.eactive.testmaster.client.service.ApiScenarioMgmtService;
import com.eactive.testmaster.common.util.SecurityUtil; import com.eactive.testmaster.common.util.SecurityUtil;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import com.eactive.testmaster.user.service.UserService; import com.eactive.testmaster.user.service.UserService;
import java.util.List;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@RequestMapping("/mgmt/api_scenario") @RequestMapping("/mgmt/api_scenario")
@@ -1,8 +1,8 @@
package com.eactive.testmaster.client.dto; package com.eactive.testmaster.client.dto;
import javax.validation.constraints.NotEmpty;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.validation.constraints.NotEmpty;
public class ApiCollectionDTO { public class ApiCollectionDTO {
@@ -1,6 +1,5 @@
package com.eactive.testmaster.client.dto; package com.eactive.testmaster.client.dto;
import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -253,60 +252,60 @@ public class ApiLayoutItemTreeBuilder {
return siblings.get(closestIndex); return siblings.get(closestIndex);
} }
public static void main(String[] args) { // public static void main(String[] args) {
ApiLayoutItemDTO root = new ApiLayoutItemDTO(); // ApiLayoutItemDTO root = new ApiLayoutItemDTO();
root.setId(1L); // root.setId(1L);
root.setLoutName("ROOT"); // root.setLoutName("ROOT");
root.setLoutItemDepth(0); // root.setLoutItemDepth(0);
root.setChildren(new ArrayList<>(List.of( // root.setChildren(new ArrayList<>(List.of(
new ApiLayoutItemDTO(2L, 1L, "Field", "Child 2", 1, 10, "TEST11"), // new ApiLayoutItemDTO(2L, 1L, "Field", "Child 2", 1, 10, "TEST11"),
new ApiLayoutItemDTO(3L, 1L, "Group", "Child 3", 1, 0, ""), // new ApiLayoutItemDTO(3L, 1L, "Group", "Child 3", 1, 0, ""),
new ApiLayoutItemDTO(4L, 1L, "Field", "Child 4", 1, 10, "TEST21"), // new ApiLayoutItemDTO(4L, 1L, "Field", "Child 4", 1, 10, "TEST21"),
new ApiLayoutItemDTO(5L, 1L, "Field", "Child 5", 1, 10, "TEST22"), // new ApiLayoutItemDTO(5L, 1L, "Field", "Child 5", 1, 10, "TEST22"),
// new ApiLayoutItemDTO(6L, 1L, "Group", "Child 6", 1, 0, ""), //// new ApiLayoutItemDTO(6L, 1L, "Group", "Child 6", 1, 0, ""),
new ApiLayoutItemDTO(7L, 1L, "Field", "Child 7", 1, 10, "TEST31"), // new ApiLayoutItemDTO(7L, 1L, "Field", "Child 7", 1, 10, "TEST31"),
new ApiLayoutItemDTO(8L, 1L, "Field", "Child 8", 1, 10, "TEST33"), // new ApiLayoutItemDTO(8L, 1L, "Field", "Child 8", 1, 10, "TEST33"),
new ApiLayoutItemDTO(9L, 1L, "Group", "Child 9", 1, 0, ""), // new ApiLayoutItemDTO(9L, 1L, "Group", "Child 9", 1, 0, ""),
new ApiLayoutItemDTO(10L, 1L, "Field", "Child 10", 1, 10, "TEST31"), // new ApiLayoutItemDTO(10L, 1L, "Field", "Child 10", 1, 10, "TEST31"),
new ApiLayoutItemDTO(11L, 1L, "Field", "Child 11", 1, 10, "TEST33") // new ApiLayoutItemDTO(11L, 1L, "Field", "Child 11", 1, 10, "TEST33")
))); // )));
//
for (ApiLayoutItemDTO item : root.getChildren()) { // for (ApiLayoutItemDTO item : root.getChildren()) {
item.setChildOccCnt(1); // item.setChildOccCnt(1);
} // }
//
System.out.println("Before moving:"); // System.out.println("Before moving:");
printTree(root);
moveNodeDepth(root, getNodeById(root, 4L), getNodeById(root, 4L).getLoutItemDepth() + 1);
printTree(root);
moveNodeDepth(root, getNodeById(root, 5L), getNodeById(root, 5L).getLoutItemDepth() + 1);
printTree(root);
moveNodeDepth(root, getNodeById(root, 7L), getNodeById(root, 7L).getLoutItemDepth() + 1);
printTree(root);
moveNodeDepth(root, getNodeById(root, 8L), getNodeById(root, 8L).getLoutItemDepth() + 1);
printTree(root);
moveNodeDepth(root, getNodeById(root, 10L), getNodeById(root, 10L).getLoutItemDepth() + 1);
printTree(root);
moveNodeDepth(root, getNodeById(root, 11L), getNodeById(root, 11L).getLoutItemDepth() + 1);
printTree(root);
moveNodeDepth(root, getNodeById(root, 9L), getNodeById(root, 9L).getLoutItemDepth() + 1);
printTree(root);
// moveNodeDepth(root, getNodeById(root, 6L), getNodeById(root, 6L).getLoutItemDepth() + 1);
// printTree(root); // printTree(root);
moveNodeDepth(root, getNodeById(root, 9L), getNodeById(root, 9L).getLoutItemDepth() - 1); //
printTree(root); // moveNodeDepth(root, getNodeById(root, 4L), getNodeById(root, 4L).getLoutItemDepth() + 1);
// printTree(root);
moveNodeDepth(root, getNodeById(root, 9L), getNodeById(root, 9L).getLoutItemDepth() - 1); // moveNodeDepth(root, getNodeById(root, 5L), getNodeById(root, 5L).getLoutItemDepth() + 1);
printTree(root); // printTree(root);
// moveNodeDepth(root, getNodeById(root, 7L), getNodeById(root, 7L).getLoutItemDepth() + 1);
moveNode(root, getNodeById(root, 9L), true); // printTree(root);
// moveNodeDepth(root, getNodeById(root, 8L), getNodeById(root, 8L).getLoutItemDepth() + 1);
moveNodeDepth(root, getNodeById(root, 3L), getNodeById(root, 3L).getLoutItemDepth() + 1); // printTree(root);
printTree(root); // moveNodeDepth(root, getNodeById(root, 10L), getNodeById(root, 10L).getLoutItemDepth() + 1);
// printTree(root);
ApiLayoutDTO layout = new ApiLayoutDTO(); // moveNodeDepth(root, getNodeById(root, 11L), getNodeById(root, 11L).getLoutItemDepth() + 1);
layout.setComputedLayoutItemRoot(root); // printTree(root);
System.out.println(layout.buildMessage()); // moveNodeDepth(root, getNodeById(root, 9L), getNodeById(root, 9L).getLoutItemDepth() + 1);
} // printTree(root);
//// moveNodeDepth(root, getNodeById(root, 6L), getNodeById(root, 6L).getLoutItemDepth() + 1);
//// printTree(root);
// moveNodeDepth(root, getNodeById(root, 9L), getNodeById(root, 9L).getLoutItemDepth() - 1);
// printTree(root);
//
// moveNodeDepth(root, getNodeById(root, 9L), getNodeById(root, 9L).getLoutItemDepth() - 1);
// printTree(root);
//
// moveNode(root, getNodeById(root, 9L), true);
//
// moveNodeDepth(root, getNodeById(root, 3L), getNodeById(root, 3L).getLoutItemDepth() + 1);
// printTree(root);
//
// ApiLayoutDTO layout = new ApiLayoutDTO();
// layout.setComputedLayoutItemRoot(root);
// System.out.println(layout.buildMessage());
// }
} }
@@ -1,9 +1,9 @@
package com.eactive.testmaster.client.dto; package com.eactive.testmaster.client.dto;
import java.io.Serializable; import java.io.Serializable;
import javax.validation.constraints.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.validation.constraints.NotNull;
public class ApiRequestDTO implements Serializable { public class ApiRequestDTO implements Serializable {
@@ -2,7 +2,6 @@ package com.eactive.testmaster.client.dto.internal;
import com.eactive.testmaster.client.dto.ApiRequestDTO; import com.eactive.testmaster.client.dto.ApiRequestDTO;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -1,10 +1,15 @@
package com.eactive.testmaster.client.entity; package com.eactive.testmaster.client.entity;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import javax.persistence.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity @Entity
@Table(name = "API_COLLECTION") @Table(name = "API_COLLECTION")
@@ -2,10 +2,13 @@ package com.eactive.testmaster.client.entity;
import com.eactive.testmaster.server.entity.Server; import com.eactive.testmaster.server.entity.Server;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import org.hibernate.annotations.Type;
import javax.persistence.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import org.hibernate.annotations.Type;
public class ApiRequestHistory { public class ApiRequestHistory {
@Id @Id
@@ -2,9 +2,13 @@ package com.eactive.testmaster.client.entity;
import com.eactive.testmaster.server.entity.Server; import com.eactive.testmaster.server.entity.Server;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import javax.persistence.*;
import java.util.Objects; import java.util.Objects;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity @Entity
@@ -1,8 +1,12 @@
package com.eactive.testmaster.client.entity; package com.eactive.testmaster.client.entity;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import javax.persistence.Entity;
import javax.persistence.*; import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity @Entity
@Table(name = "API_SCENARIO") @Table(name = "API_SCENARIO")
@@ -4,7 +4,6 @@ import com.eactive.testmaster.client.dto.ApiLayoutItemDTO;
import com.eactive.testmaster.client.entity.ApiLayoutItem; import com.eactive.testmaster.client.entity.ApiLayoutItem;
import com.eactive.testmaster.client.repository.ApiLayoutItemRepository; import com.eactive.testmaster.client.repository.ApiLayoutItemRepository;
import com.eactive.testmaster.common.mapper.CommonMapper; import com.eactive.testmaster.common.mapper.CommonMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List; import java.util.List;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy; import org.mapstruct.ReportingPolicy;
@@ -3,13 +3,12 @@ package com.eactive.testmaster.client.mapper;
import com.eactive.testmaster.client.dto.ApiScenarioDTO; import com.eactive.testmaster.client.dto.ApiScenarioDTO;
import com.eactive.testmaster.client.entity.ApiScenario; import com.eactive.testmaster.client.entity.ApiScenario;
import com.eactive.testmaster.client.repository.ApiScenarioRepository; import com.eactive.testmaster.client.repository.ApiScenarioRepository;
import java.util.List;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy; import org.mapstruct.ReportingPolicy;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
@Component @Component
public abstract class ApiScenarioMapper { public abstract class ApiScenarioMapper {
@@ -2,11 +2,10 @@ package com.eactive.testmaster.client.repository;
import com.eactive.testmaster.client.entity.ApiCollection; import com.eactive.testmaster.client.entity.ApiCollection;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
public interface ApiCollectionRepository extends JpaRepository<ApiCollection, String>, JpaSpecificationExecutor<ApiCollection> { public interface ApiCollectionRepository extends JpaRepository<ApiCollection, String>, JpaSpecificationExecutor<ApiCollection> {
List<ApiCollection> findAllByOwner(StaffUser owner); List<ApiCollection> findAllByOwner(StaffUser owner);
@@ -2,11 +2,10 @@ package com.eactive.testmaster.client.repository;
import com.eactive.testmaster.client.entity.ApiScenario; import com.eactive.testmaster.client.entity.ApiScenario;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
public interface ApiScenarioRepository extends JpaRepository<ApiScenario, String>, JpaSpecificationExecutor<ApiScenario> { public interface ApiScenarioRepository extends JpaRepository<ApiScenario, String>, JpaSpecificationExecutor<ApiScenario> {
List<ApiScenario> findAllByOwner(StaffUser owner); List<ApiScenario> findAllByOwner(StaffUser owner);
@@ -6,14 +6,13 @@ import com.eactive.testmaster.client.repository.ApiCollectionRepository;
import com.eactive.testmaster.client.repository.ApiRequestRepository; import com.eactive.testmaster.client.repository.ApiRequestRepository;
import com.eactive.testmaster.common.exception.NotFoundException; import com.eactive.testmaster.common.exception.NotFoundException;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import java.util.List;
import java.util.UUID;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.thymeleaf.util.StringUtils; import org.thymeleaf.util.StringUtils;
import javax.transaction.Transactional;
import java.util.List;
import java.util.UUID;
@Service @Service
@Transactional @Transactional
public class ApiRequestMgmtService { public class ApiRequestMgmtService {
@@ -1,17 +1,16 @@
package com.eactive.testmaster.client.service; package com.eactive.testmaster.client.service;
import com.eactive.testmaster.client.repository.ApiRequestRepository; import com.eactive.testmaster.client.repository.ApiRequestRepository;
import java.sql.Connection;
import java.sql.Statement;
import javax.sql.DataSource;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.sql.DataSource;
import javax.transaction.Transactional;
import java.sql.Connection;
import java.sql.Statement;
@Service @Service
@Transactional @Transactional
@@ -2,12 +2,11 @@ package com.eactive.testmaster.client.service;
import com.eactive.testmaster.client.entity.ApiScenario; import com.eactive.testmaster.client.entity.ApiScenario;
import com.eactive.testmaster.client.repository.ApiScenarioRepository; import com.eactive.testmaster.client.repository.ApiScenarioRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service @Service
@Transactional @Transactional
@@ -7,7 +7,6 @@ import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.handler.codec.http.FullHttpResponse; import io.netty.handler.codec.http.FullHttpResponse;
import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpHeaders;
import io.netty.util.CharsetUtil; import io.netty.util.CharsetUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -15,20 +15,29 @@ import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup; import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.http.*; import io.netty.handler.codec.http.DefaultFullHttpRequest;
import io.netty.handler.codec.http.DefaultHttpHeaders;
import io.netty.handler.codec.http.HttpClientCodec;
import io.netty.handler.codec.http.HttpContentDecompressor;
import io.netty.handler.codec.http.HttpHeaderNames;
import io.netty.handler.codec.http.HttpHeaderValues;
import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpMethod;
import io.netty.handler.codec.http.HttpObjectAggregator;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpVersion;
import io.netty.handler.ssl.SslContext; import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.SslContextBuilder; import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory; import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
import io.netty.util.CharsetUtil; import io.netty.util.CharsetUtil;
import java.util.concurrent.CompletableFuture;
import javax.net.ssl.SSLException;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.net.ssl.SSLException;
import java.util.concurrent.CompletableFuture;
@Service @Service
public class NettyHttpApiClient implements ApiClient { public class NettyHttpApiClient implements ApiClient {
@@ -1,5 +1,9 @@
package com.eactive.testmaster.common.entity; package com.eactive.testmaster.common.entity;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import org.hibernate.annotations.Type; import org.hibernate.annotations.Type;
import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.CreatedDate;
@@ -7,11 +11,6 @@ import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener; import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@MappedSuperclass @MappedSuperclass
@EntityListeners(AuditingEntityListener.class) @EntityListeners(AuditingEntityListener.class)
public abstract class Auditable { public abstract class Auditable {
@@ -1,5 +1,6 @@
package com.eactive.testmaster.common.exception; package com.eactive.testmaster.common.exception;
import java.time.LocalDateTime;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@@ -9,8 +10,6 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.request.WebRequest; import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
import java.time.LocalDateTime;
@Order(1) @Order(1)
@RestControllerAdvice(annotations = RestController.class) @RestControllerAdvice(annotations = RestController.class)
public class CustomGlobalExceptionHandler extends ResponseEntityExceptionHandler { public class CustomGlobalExceptionHandler extends ResponseEntityExceptionHandler {
@@ -1,14 +1,13 @@
package com.eactive.testmaster.common.exception; package com.eactive.testmaster.common.exception;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import org.springframework.boot.web.servlet.error.ErrorController; import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
@Controller @Controller
public class PortalErrorController implements ErrorController { public class PortalErrorController implements ErrorController {
@@ -1,6 +1,7 @@
package com.eactive.testmaster.common.exception; package com.eactive.testmaster.common.exception;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
@@ -9,8 +10,6 @@ import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
@ControllerAdvice(annotations = Controller.class) @ControllerAdvice(annotations = Controller.class)
@Order(2) @Order(2)
public class PortalGlobalExceptionHandler { public class PortalGlobalExceptionHandler {
@@ -1,17 +1,16 @@
package com.eactive.testmaster.common.mapper; package com.eactive.testmaster.common.mapper;
import com.eactive.testmaster.client.dto.ApiRequestKeyValueDTO; import com.eactive.testmaster.client.dto.ApiRequestKeyValueDTO;
import org.mapstruct.Mapper;
import org.mapstruct.Named;
import org.mapstruct.ReportingPolicy;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.util.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.mapstruct.Mapper;
import org.mapstruct.Named;
import org.mapstruct.ReportingPolicy;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.util.StringUtils;
@Mapper(componentModel = "spring", @Mapper(componentModel = "spring",
unmappedTargetPolicy = ReportingPolicy.IGNORE) unmappedTargetPolicy = ReportingPolicy.IGNORE)
@@ -1,13 +1,12 @@
package com.eactive.testmaster.common.message; package com.eactive.testmaster.common.message;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
public class PortalReloadableResourceBundleMessageSource extends org.springframework.context.support.ReloadableResourceBundleMessageSource { public class PortalReloadableResourceBundleMessageSource extends org.springframework.context.support.ReloadableResourceBundleMessageSource {
private static final String CLASSPATH_PREFIX = "classpath:"; private static final String CLASSPATH_PREFIX = "classpath:";
@@ -1,8 +1,7 @@
package com.eactive.testmaster.common.search; package com.eactive.testmaster.common.search;
import org.springframework.data.jpa.domain.Specification;
import java.util.List; import java.util.List;
import org.springframework.data.jpa.domain.Specification;
/** /**
* Overview: * Overview:
@@ -1,11 +1,10 @@
package com.eactive.testmaster.common.search; package com.eactive.testmaster.common.search;
import com.eactive.testmaster.common.util.SpecificationUtil; import com.eactive.testmaster.common.util.SpecificationUtil;
import java.util.Collection;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.Collection;
public class ColumnSearchModel implements SearchModel { public class ColumnSearchModel implements SearchModel {
private String column; private String column;
@@ -1,8 +1,7 @@
package com.eactive.testmaster.common.search; package com.eactive.testmaster.common.search;
import org.springframework.data.jpa.domain.Specification;
import java.io.Serializable; import java.io.Serializable;
import org.springframework.data.jpa.domain.Specification;
public interface SearchModel extends Serializable { public interface SearchModel extends Serializable {
@@ -1,11 +1,10 @@
package com.eactive.testmaster.common.util; package com.eactive.testmaster.common.util;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
/** /**
* @author * @author
@@ -1,11 +1,14 @@
package com.eactive.testmaster.common.util; package com.eactive.testmaster.common.util;
import java.util.Collection;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Root;
import org.hibernate.query.criteria.internal.path.PluralAttributePath; import org.hibernate.query.criteria.internal.path.PluralAttributePath;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import javax.persistence.criteria.*;
import java.util.Collection;
public class SpecificationUtil { public class SpecificationUtil {
@@ -1,8 +1,12 @@
package com.eactive.testmaster.common.validator; package com.eactive.testmaster.common.validator;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint; import javax.validation.Constraint;
import javax.validation.Payload; import javax.validation.Payload;
import java.lang.annotation.*;
@Constraint(validatedBy = PasswordMatchValidator.class) @Constraint(validatedBy = PasswordMatchValidator.class)
@Target({ElementType.TYPE}) @Target({ElementType.TYPE})
@@ -1,14 +1,13 @@
package com.eactive.testmaster.common.validator; package com.eactive.testmaster.common.validator;
import com.eactive.testmaster.common.util.ApplicationContextUtil; import com.eactive.testmaster.common.util.ApplicationContextUtil;
import java.util.Objects;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.context.MessageSource; import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.Objects;
public class PasswordMatchValidator implements ConstraintValidator<PasswordMatch, Object> { public class PasswordMatchValidator implements ConstraintValidator<PasswordMatch, Object> {
private String field1; private String field1;
@@ -1,8 +1,12 @@
package com.eactive.testmaster.common.validator; package com.eactive.testmaster.common.validator;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint; import javax.validation.Constraint;
import javax.validation.Payload; import javax.validation.Payload;
import java.lang.annotation.*;
@Constraint(validatedBy = UniqueUserIdValidator.class) @Constraint(validatedBy = UniqueUserIdValidator.class)
@Target({ElementType.FIELD}) @Target({ElementType.FIELD})
@@ -1,8 +1,12 @@
package com.eactive.testmaster.common.validator; package com.eactive.testmaster.common.validator;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint; import javax.validation.Constraint;
import javax.validation.Payload; import javax.validation.Payload;
import java.lang.annotation.*;
@Constraint(validatedBy = UniqueRouteValidator.class) @Constraint(validatedBy = UniqueRouteValidator.class)
@Target({ElementType.TYPE}) @Target({ElementType.TYPE})
@@ -2,10 +2,9 @@ package com.eactive.testmaster.common.validator;
import com.eactive.testmaster.api.repository.MockRouteRepository; import com.eactive.testmaster.api.repository.MockRouteRepository;
import com.eactive.testmaster.common.util.ApplicationContextUtil; import com.eactive.testmaster.common.util.ApplicationContextUtil;
import org.apache.commons.beanutils.PropertyUtils;
import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext; import javax.validation.ConstraintValidatorContext;
import org.apache.commons.beanutils.PropertyUtils;
public class UniqueRouteValidator implements ConstraintValidator<UniqueRoute, Object> { public class UniqueRouteValidator implements ConstraintValidator<UniqueRoute, Object> {
@@ -3,7 +3,6 @@ package com.eactive.testmaster.common.validator;
import com.eactive.testmaster.common.exception.UserNotFoundException; import com.eactive.testmaster.common.exception.UserNotFoundException;
import com.eactive.testmaster.common.util.ApplicationContextUtil; import com.eactive.testmaster.common.util.ApplicationContextUtil;
import com.eactive.testmaster.user.service.UserService; import com.eactive.testmaster.user.service.UserService;
import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext; import javax.validation.ConstraintValidatorContext;
@@ -1,9 +1,8 @@
package com.eactive.testmaster.config; package com.eactive.testmaster.config;
import com.eactive.testmaster.common.util.SecurityUtil; import com.eactive.testmaster.common.util.SecurityUtil;
import org.springframework.data.domain.AuditorAware;
import java.util.Optional; import java.util.Optional;
import org.springframework.data.domain.AuditorAware;
public class AuditorAwareImpl implements AuditorAware<String> { public class AuditorAwareImpl implements AuditorAware<String> {
@@ -7,6 +7,9 @@ import com.eactive.testmaster.user.entity.StaffUser;
import com.eactive.testmaster.user.entity.User; import com.eactive.testmaster.user.entity.User;
import com.eactive.testmaster.user.repository.StaffUserRepository; import com.eactive.testmaster.user.repository.StaffUserRepository;
import com.eactive.testmaster.user.service.UserService; import com.eactive.testmaster.user.service.UserService;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.AuthenticationException;
@@ -15,10 +18,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Service @Service
@Transactional @Transactional
public class PortalAuthenticationFailureHandler implements AuthenticationFailureHandler { public class PortalAuthenticationFailureHandler implements AuthenticationFailureHandler {
@@ -5,7 +5,11 @@ import com.eactive.testmaster.common.util.EncryptionUtil;
import com.eactive.testmaster.user.entity.User; import com.eactive.testmaster.user.entity.User;
import com.eactive.testmaster.user.service.UserService; import com.eactive.testmaster.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.*; import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.DisabledException;
import org.springframework.security.authentication.LockedException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
@@ -2,6 +2,11 @@ package com.eactive.testmaster.config;
import com.eactive.testmaster.user.entity.User; import com.eactive.testmaster.user.entity.User;
import com.eactive.testmaster.user.service.UserService; import com.eactive.testmaster.user.service.UserService;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
@@ -9,12 +14,6 @@ import org.springframework.security.web.authentication.AuthenticationSuccessHand
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Service @Service
@Transactional @Transactional
@@ -1,6 +1,5 @@
package com.eactive.testmaster.config; package com.eactive.testmaster.config;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@@ -1,12 +1,6 @@
package com.eactive.testmaster.loadtest.dto; package com.eactive.testmaster.loadtest.dto;
import com.eactive.testmaster.client.entity.ApiScenario;
import com.eactive.testmaster.user.entity.StaffUser;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
public class LoadTestDTO { public class LoadTestDTO {
private String id; private String id;
@@ -3,7 +3,6 @@ package com.eactive.testmaster.loadtest.service;
import com.eactive.testmaster.loadtest.dto.LoadTestDTO; import com.eactive.testmaster.loadtest.dto.LoadTestDTO;
import java.util.Map; import java.util.Map;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -1,6 +1,10 @@
package com.eactive.testmaster.login.controller; package com.eactive.testmaster.login.controller;
import com.eactive.testmaster.user.service.UserService; import com.eactive.testmaster.user.service.UserService;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
@@ -12,11 +16,6 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Map;
/** /**
* 일반 로그인을 처리하는 컨트롤러 클래스 * 일반 로그인을 처리하는 컨트롤러 클래스
* *
@@ -5,6 +5,7 @@ import com.eactive.testmaster.server.dto.ServerSearch;
import com.eactive.testmaster.server.entity.Server; import com.eactive.testmaster.server.entity.Server;
import com.eactive.testmaster.server.mapper.ServerMapper; import com.eactive.testmaster.server.mapper.ServerMapper;
import com.eactive.testmaster.server.service.ServerMgmtService; import com.eactive.testmaster.server.service.ServerMgmtService;
import java.util.List;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@@ -13,9 +14,11 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.validation.Validator; import org.springframework.validation.Validator;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import java.util.List; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller @Controller
@@ -5,10 +5,9 @@ import com.eactive.testmaster.common.search.ColumnSearchModel;
import com.eactive.testmaster.common.search.SearchCondition; import com.eactive.testmaster.common.search.SearchCondition;
import com.eactive.testmaster.common.search.SearchModel; import com.eactive.testmaster.common.search.SearchModel;
import com.eactive.testmaster.server.entity.Server; import com.eactive.testmaster.server.entity.Server;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.StringUtils;
public class ServerSearch implements BaseSearch<Server> { public class ServerSearch implements BaseSearch<Server> {
@@ -1,11 +1,10 @@
package com.eactive.testmaster.server.repository; package com.eactive.testmaster.server.repository;
import com.eactive.testmaster.server.entity.Server; import com.eactive.testmaster.server.entity.Server;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
public interface ServerRepository extends JpaRepository<Server, Long>, JpaSpecificationExecutor<Server> { public interface ServerRepository extends JpaRepository<Server, Long>, JpaSpecificationExecutor<Server> {
@@ -3,14 +3,13 @@ package com.eactive.testmaster.server.service;
import com.eactive.testmaster.common.exception.NotFoundException; import com.eactive.testmaster.common.exception.NotFoundException;
import com.eactive.testmaster.server.entity.Server; import com.eactive.testmaster.server.entity.Server;
import com.eactive.testmaster.server.repository.ServerRepository; import com.eactive.testmaster.server.repository.ServerRepository;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
@Service @Service
@Transactional @Transactional
public class ServerMgmtService { public class ServerMgmtService {
@@ -15,7 +15,11 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.validation.Validator; import org.springframework.validation.Validator;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller @Controller
@RequestMapping("/mgmt/users") @RequestMapping("/mgmt/users")
@@ -1,7 +1,6 @@
package com.eactive.testmaster.user.dto; package com.eactive.testmaster.user.dto;
import com.eactive.testmaster.common.validator.PasswordMatch; import com.eactive.testmaster.common.validator.PasswordMatch;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
@PasswordMatch(input = "newPassword", confirm = "newPassword2") @PasswordMatch(input = "newPassword", confirm = "newPassword2")
@@ -3,10 +3,9 @@ package com.eactive.testmaster.user.dto;
import com.eactive.testmaster.common.validator.PasswordMatch; import com.eactive.testmaster.common.validator.PasswordMatch;
import com.eactive.testmaster.common.validator.UniqueId; import com.eactive.testmaster.common.validator.UniqueId;
import com.eactive.testmaster.user.entity.UserStatus; import com.eactive.testmaster.user.entity.UserStatus;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable; import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import org.hibernate.validator.constraints.Length;
@PasswordMatch(input = "password", confirm = "password2") @PasswordMatch(input = "password", confirm = "password2")
public class UserRegisterDTO implements Serializable { public class UserRegisterDTO implements Serializable {
@@ -6,7 +6,6 @@ import com.eactive.testmaster.common.search.SearchCondition;
import com.eactive.testmaster.common.search.SearchModel; import com.eactive.testmaster.common.search.SearchModel;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import com.eactive.testmaster.user.entity.UserStatus; import com.eactive.testmaster.user.entity.UserStatus;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -2,10 +2,9 @@ package com.eactive.testmaster.user.dto;
import com.eactive.testmaster.common.entity.EnabledStatus; import com.eactive.testmaster.common.entity.EnabledStatus;
import com.eactive.testmaster.user.entity.UserStatus; import com.eactive.testmaster.user.entity.UserStatus;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.Serializable;
public class UserUpdateDTO implements Serializable { public class UserUpdateDTO implements Serializable {
@@ -1,7 +1,14 @@
package com.eactive.testmaster.user.entity; package com.eactive.testmaster.user.entity;
import javax.persistence.*;
import java.util.Objects; import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
/** /**
* PT_USER 내부사용자정보 * PT_USER 내부사용자정보
@@ -2,20 +2,22 @@ package com.eactive.testmaster.user.entity;
import com.eactive.testmaster.common.entity.Auditable; import com.eactive.testmaster.common.entity.Auditable;
import com.eactive.testmaster.common.entity.EnabledStatus; import com.eactive.testmaster.common.entity.EnabledStatus;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Objects; import javax.persistence.Column;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Transient;
import org.hibernate.annotations.Type; import org.hibernate.annotations.Type;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Collection;
@MappedSuperclass @MappedSuperclass
public abstract class User extends Auditable implements Serializable, UserDetails { public abstract class User extends Auditable implements Serializable, UserDetails {
@@ -1,8 +1,12 @@
package com.eactive.testmaster.user.entity; package com.eactive.testmaster.user.entity;
import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity @Entity
@Table(name = "PT_USER_GROUP") @Table(name = "PT_USER_GROUP")
@@ -1,12 +1,11 @@
package com.eactive.testmaster.user.repository; package com.eactive.testmaster.user.repository;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository @Repository
public interface StaffUserRepository extends JpaRepository<StaffUser, String>, JpaSpecificationExecutor<StaffUser> { public interface StaffUserRepository extends JpaRepository<StaffUser, String>, JpaSpecificationExecutor<StaffUser> {
@@ -1,10 +1,13 @@
package com.eactive.testmaster.user.service; package com.eactive.testmaster.user.service;
import static com.eactive.testmaster.user.service.UserService.USER_NOT_FOUND_MESSAGE;
import com.eactive.testmaster.common.entity.EnabledStatus; import com.eactive.testmaster.common.entity.EnabledStatus;
import com.eactive.testmaster.common.exception.UserNotFoundException; import com.eactive.testmaster.common.exception.UserNotFoundException;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import com.eactive.testmaster.user.entity.UserStatus; import com.eactive.testmaster.user.entity.UserStatus;
import com.eactive.testmaster.user.repository.StaffUserRepository; import com.eactive.testmaster.user.repository.StaffUserRepository;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@@ -12,10 +15,6 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.UUID;
import static com.eactive.testmaster.user.service.UserService.USER_NOT_FOUND_MESSAGE;
@Service @Service
@Transactional @Transactional
public class StaffUserService { public class StaffUserService {
@@ -6,14 +6,13 @@ import com.eactive.testmaster.common.util.EncryptionUtil;
import com.eactive.testmaster.user.entity.StaffUser; import com.eactive.testmaster.user.entity.StaffUser;
import com.eactive.testmaster.user.entity.User; import com.eactive.testmaster.user.entity.User;
import com.eactive.testmaster.user.repository.StaffUserRepository; import com.eactive.testmaster.user.repository.StaffUserRepository;
import java.time.LocalDateTime;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@Service @Service
//@Transactional(propagation = Propagation.NESTED) //@Transactional(propagation = Propagation.NESTED)
public class UserService implements UserDetailsService { public class UserService implements UserDetailsService {