src/main/java/kr/wisestone/owl/config/SecurityConfiguration.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/config/SwaggerConfig.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/exception/ApiAuthException.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/exception/ApiParameterException.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/exception/OwlRuntimeException.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/service/impl/ApiTokenServiceImpl.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/web/controller/Api/ApiController.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 | |
src/main/java/kr/wisestone/owl/web/resolver/OwlResponseEntityExceptionHandler.java | ●●●●● 패치 | 보기 | raw | blame | 히스토리 |
src/main/java/kr/wisestone/owl/config/SecurityConfiguration.java
@@ -145,7 +145,6 @@ .antMatchers("/language/change").permitAll() .antMatchers("/security/*").permitAll() .antMatchers("/api/issue").permitAll() .antMatchers("/api/issue/*").permitAll() .antMatchers("/**/*").authenticated(); // http.addFilter(new CustomAuthenticationFilter()); src/main/java/kr/wisestone/owl/config/SwaggerConfig.java
@@ -77,8 +77,7 @@ */ private Set<String> getConsumeContentTypes() { Set<String> consumes = new HashSet<>(); consumes.add("application/json;charset=UTF-8"); consumes.add("application/x-www-form-urlencoded"); consumes.add(""); return consumes; } src/main/java/kr/wisestone/owl/exception/ApiAuthException.java
New file @@ -0,0 +1,40 @@ package kr.wisestone.owl.exception; import kr.wisestone.owl.vo.MessageVo; public class ApiAuthException extends OwlRuntimeException { private static final long serialVersionUID = 1L; public ApiAuthException() { super(); } public ApiAuthException(String code, final String message, final Throwable cause) { super(code, message, cause); this.code = code; } public ApiAuthException(String code, final String message) { super(message); this.code = code; } public ApiAuthException(MessageVo message) { super(message.getMessage()); this.code = message.getCode(); } public ApiAuthException(Exception e) { super(e); } public ApiAuthException(String code) { this.code = code; } public ApiAuthException(String code, Exception e) { super(e); this.code = code; } } src/main/java/kr/wisestone/owl/exception/ApiParameterException.java
New file @@ -0,0 +1,40 @@ package kr.wisestone.owl.exception; import kr.wisestone.owl.vo.MessageVo; public class ApiParameterException extends OwlRuntimeException { private static final long serialVersionUID = 1L; public ApiParameterException() { super(); } public ApiParameterException(String code, final String message, final Throwable cause) { super(code, message, cause); this.code = code; } public ApiParameterException(String code, final String message) { super(message); this.code = code; } public ApiParameterException(MessageVo message) { super(message.getMessage()); this.code = message.getCode(); } public ApiParameterException(Exception e) { super(e); } public ApiParameterException(String code) { this.code = code; } public ApiParameterException(String code, Exception e) { super(e); this.code = code; } } src/main/java/kr/wisestone/owl/exception/OwlRuntimeException.java
@@ -6,7 +6,7 @@ public class OwlRuntimeException extends RuntimeException { private static final long serialVersionUID = 1L; private String code; protected String code; public OwlRuntimeException() { super(); src/main/java/kr/wisestone/owl/service/impl/ApiTokenServiceImpl.java
@@ -7,6 +7,7 @@ import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.domain.ApiToken; import kr.wisestone.owl.domain.User; import kr.wisestone.owl.exception.ApiAuthException; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.repository.ApiTokenRepository; import kr.wisestone.owl.service.ApiTokenService; @@ -145,7 +146,7 @@ { return userVo; } else { throw new OwlRuntimeException( throw new ApiAuthException( this.messageAccessor.getMessage(MsgConstants.ERROR_TOKEN)); } } src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -11,6 +11,8 @@ import kr.wisestone.owl.domain.enumType.EmailType; import kr.wisestone.owl.domain.enumType.IssueHistoryType; import kr.wisestone.owl.domain.enumType.IssueStatusType; import kr.wisestone.owl.exception.ApiAuthException; import kr.wisestone.owl.exception.ApiParameterException; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.mapper.DepartmentMapper; import kr.wisestone.owl.mapper.IssueMapper; @@ -235,14 +237,14 @@ private IssueForm convertToIssueForm(IssueApiForm issueApiForm, User user) { if (issueApiForm.getIssueTypeId() == null) { throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_PARAMETER_ISSUE_TYPE_ERROR)); throw new ApiParameterException(this.messageAccessor.getMessage(MsgConstants.API_PARAMETER_ISSUE_TYPE_ERROR)); } IssueForm issueForm = ConvertUtil.copyProperties(issueApiForm, IssueForm.class); // issueForm.setFiles(issueApiForm.getFiles()); IssueType issueType = this.issueTypeService.getIssueType(issueApiForm.getIssueTypeId()); if (issueType == null){ throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_PARAMETER_ISSUE_TYPE_ERROR)); throw new ApiParameterException(this.messageAccessor.getMessage(MsgConstants.API_PARAMETER_ISSUE_TYPE_ERROR)); } Workflow workflow = issueType.getWorkflow(); @@ -256,13 +258,13 @@ } } } else if (issueApiForm.getIssueStatusId() == null){ throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_ISSUE_STATUS_NOT_EXIST)); throw new ApiParameterException(this.messageAccessor.getMessage(MsgConstants.API_ISSUE_STATUS_NOT_EXIST)); } // 프로젝트 입력 Project project = issueType.getProject(); if (project == null){ throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_PARAMETER_PROJECT_ERROR)); throw new ApiParameterException(this.messageAccessor.getMessage(MsgConstants.API_PARAMETER_PROJECT_ERROR)); } issueForm.setProjectId(project.getId()); @@ -321,7 +323,7 @@ return issueForm; } else { throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_USER_ERROR)); throw new ApiAuthException(this.messageAccessor.getMessage(MsgConstants.API_USER_ERROR)); } } @@ -367,6 +369,7 @@ issueForm.setIssueHostingFields(issueHostingFields); } } return issueForm; } src/main/java/kr/wisestone/owl/web/controller/Api/ApiController.java
@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiOperation; import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.domain.Issue; import kr.wisestone.owl.exception.ApiParameterException; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.service.IssueService; import kr.wisestone.owl.util.ConvertUtil; @@ -12,6 +13,9 @@ import kr.wisestone.owl.web.form.ApiIssueModifyForm; import kr.wisestone.owl.web.form.IssueApiForm; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -42,20 +46,22 @@ */ @PostMapping(value = "/issue") @ApiOperation(value = "이슈 추가", notes = "새로운 이슈를 추가한다.") @ApiImplicitParam(name = "files", required = false, dataType = "file") @ApiImplicitParam(name = "files", dataType = "file") @ResponseStatus(HttpStatus.CREATED) public @ResponseBody Map<String, Object> addIssue(ApiIssueAddForm apiIssueAddForm, @RequestParam("files") List<MultipartFile> files) throws OwlRuntimeException, CloneNotSupportedException { void addIssue(ApiIssueAddForm apiIssueAddForm, @RequestParam("files") List<MultipartFile> files) throws OwlRuntimeException, CloneNotSupportedException { Map<String, Object> resJsonData = new HashMap<>(); IssueApiForm issueApiForm = ConvertUtil.copyProperties(apiIssueAddForm, IssueApiForm.class); // String str = request.getParameter(Constants.REQ_KEY_CONTENT); // String str = request.getParameter(Constants.REQ_KEY_C0NTENT); issueApiForm.setMultipartFiles(files); issueApiForm.parseCustomFields(apiIssueAddForm.getCustomFields()); issueApiForm.setApiType(IssueApiForm.ApiType.add); // 사용자 정의 필드가 없을 경우 검색을 할 수 없기 때문에 예외처리 if (issueApiForm.getCustomFieldValues() == null || issueApiForm.getCustomFieldValues().size() == 0) { throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.API_CUSTOM_FIELD_NOT_EXIST)); throw new ApiParameterException(this.messageAccessor.getMessage(MsgConstants.API_CUSTOM_FIELD_NOT_EXIST)); } List<Issue> issues = this.issueService.addApiIssue(issueApiForm); @@ -63,8 +69,6 @@ for (Issue issue : issues) { this.issueService.addIssueVersion(issue.getId(), issue.getRegisterId()); } return this.setSuccessMessage(resJsonData); } /** @@ -74,11 +78,12 @@ * @throws OwlRuntimeException 파라미터 오류시 발생 * @throws CloneNotSupportedException 이슈 복사 시에 발생 */ @PostMapping(value = "/issue/1") @PutMapping(value = "/issue") @ApiOperation(value = "이슈 상태 수정", notes = "사용자 정의 필드가 동일한 기존 이슈를 변경한다.") @ResponseStatus(HttpStatus.OK) public @ResponseBody Map<String, Object> modifyIssue(ApiIssueModifyForm apiIssueModifyForm) throws OwlRuntimeException, CloneNotSupportedException { void modifyIssue(ApiIssueModifyForm apiIssueModifyForm) throws OwlRuntimeException, CloneNotSupportedException { Map<String, Object> resJsonData = new HashMap<>(); IssueApiForm issueApiForm = ConvertUtil.copyProperties(apiIssueModifyForm, IssueApiForm.class); @@ -90,8 +95,6 @@ } this.issueService.modifyIssue(issueApiForm, new ArrayList<>()); return this.setSuccessMessage(resJsonData); } } src/main/java/kr/wisestone/owl/web/resolver/OwlResponseEntityExceptionHandler.java
@@ -3,6 +3,8 @@ import kr.wisestone.owl.common.MessageAccessor; import kr.wisestone.owl.constant.Constants; import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.exception.ApiAuthException; import kr.wisestone.owl.exception.ApiParameterException; import kr.wisestone.owl.exception.OwlRuntimeException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,6 +36,22 @@ super(); } @ExceptionHandler({ApiParameterException.class }) public ResponseEntity<Object> handleBadRequest(final ApiParameterException ex, final WebRequest request) { Map<String, Object> resJsonData = new HashMap<String, Object>(); resJsonData.put(Constants.RES_KEY_MESSAGE, this.messageAccessor.getResMessage(ex, Constants.RES_KEY_MSG_FAIL)); return this.handleExceptionInternal(ex, resJsonData, new HttpHeaders(), HttpStatus.BAD_REQUEST, request); } @ExceptionHandler({ApiAuthException.class }) public ResponseEntity<Object> handleBadRequest(final ApiAuthException ex, final WebRequest request) { Map<String, Object> resJsonData = new HashMap<String, Object>(); resJsonData.put(Constants.RES_KEY_MESSAGE, this.messageAccessor.getResMessage(ex, Constants.RES_KEY_MSG_FAIL)); return this.handleExceptionInternal(ex, resJsonData, new HttpHeaders(), HttpStatus.UNAUTHORIZED, request); } @ExceptionHandler({OwlRuntimeException.class }) public ResponseEntity<Object> handleBadRequest(final OwlRuntimeException ex, final WebRequest request) { Map<String, Object> resJsonData = new HashMap<String, Object>();