From 0bbd825a465ba6cf3c1c86039f9230b639e6b387 Mon Sep 17 00:00:00 2001 From: taskain7 Date: Tue, 23 Aug 2022 10:53:02 +0200 Subject: [PATCH] [FINERACT-1678] API for Business Step configuration fix --- .../BusinessStepConfigUpdateHandler.java | 3 +- ...essStepNotBelongsToJobExceptionMapper.java | 45 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BusinessStepNotBelongsToJobExceptionMapper.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/cob/service/BusinessStepConfigUpdateHandler.java b/fineract-provider/src/main/java/org/apache/fineract/cob/service/BusinessStepConfigUpdateHandler.java index a59199179..d113ff26e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/cob/service/BusinessStepConfigUpdateHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/cob/service/BusinessStepConfigUpdateHandler.java @@ -21,6 +21,7 @@ package org.apache.fineract.cob.service; import com.google.common.base.Splitter; import java.util.List; import lombok.RequiredArgsConstructor; +import org.apache.fineract.cob.exceptions.BusinessStepNotBelongsToJobException; import org.apache.fineract.commands.annotation.CommandType; import org.apache.fineract.commands.handler.NewCommandSourceHandler; import org.apache.fineract.infrastructure.core.api.JsonCommand; @@ -37,7 +38,7 @@ public class BusinessStepConfigUpdateHandler implements NewCommandSourceHandler @Override @Transactional - public CommandProcessingResult processCommand(JsonCommand command) { + public CommandProcessingResult processCommand(JsonCommand command) throws BusinessStepNotBelongsToJobException { List split = Splitter.on("/").splitToList(command.getUrl()); String jobName = split.get(split.size() - 2); if ("null".equals(jobName)) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BusinessStepNotBelongsToJobExceptionMapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BusinessStepNotBelongsToJobExceptionMapper.java new file mode 100644 index 000000000..cf4d1f959 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BusinessStepNotBelongsToJobExceptionMapper.java @@ -0,0 +1,45 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.infrastructure.core.exceptionmapper; + +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.ExceptionMapper; +import javax.ws.rs.ext.Provider; +import lombok.extern.slf4j.Slf4j; +import org.apache.fineract.cob.exceptions.BusinessStepNotBelongsToJobException; +import org.apache.fineract.infrastructure.core.data.ApiParameterError; +import org.springframework.stereotype.Component; + +@Provider +@Component +@Slf4j +public class BusinessStepNotBelongsToJobExceptionMapper implements ExceptionMapper { + + @Override + public Response toResponse(BusinessStepNotBelongsToJobException exception) { + final String globalisationMessageCode = "error.msg.invalid.request.body"; + final String defaultUserMessage = "One of the provided Business Steps does not belong to the provided Job Name."; + log.warn("Exception: {}, Message: {}", exception.getClass().getName(), defaultUserMessage); + + final ApiParameterError error = ApiParameterError.generalError(globalisationMessageCode, defaultUserMessage); + + return Response.status(Response.Status.BAD_REQUEST).entity(error).type(MediaType.APPLICATION_JSON).build(); + } +}