This is an automated email from the ASF dual-hosted git repository. adoroszlai pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push: new 66b6f7f AMBARI-25039. Parse error should be reported as Bad Request (#2718) 66b6f7f is described below commit 66b6f7f7f061b8d19589378e7d0876a1495bfb62 Author: Doroszlai, Attila <6454655+adorosz...@users.noreply.github.com> AuthorDate: Thu Dec 13 16:07:36 2018 +0100 AMBARI-25039. Parse error should be reported as Bad Request (#2718) --- .../server/controller/internal/ServiceResourceProvider.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java index 48b77af..751ca0e 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java @@ -17,6 +17,7 @@ */ package org.apache.ambari.server.controller.internal; +import java.io.UncheckedIOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -79,6 +80,7 @@ import org.apache.ambari.server.state.StackId; import org.apache.ambari.server.state.State; import org.apache.ambari.server.topology.STOMPComponentsDeleteHandler; import org.apache.ambari.server.topology.addservice.AddServiceOrchestrator; +import org.apache.ambari.server.utils.LoggingPreconditions; import org.apache.ambari.spi.RepositoryType; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -96,6 +98,7 @@ import com.google.inject.assistedinject.AssistedInject; public class ServiceResourceProvider extends AbstractControllerResourceProvider { private static final Logger LOG = LoggerFactory.getLogger(ServiceResourceProvider.class); + private static final LoggingPreconditions CHECK = new LoggingPreconditions(LOG); public static final String SERVICE_CLUSTER_NAME_PROPERTY_ID = PropertyHelper.getPropertyId( "ServiceInfo", "cluster_name"); @@ -1246,7 +1249,11 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider } private static AddServiceRequest createAddServiceRequest(Map<String, String> requestInfoProperties) { - return AddServiceRequest.of(requestInfoProperties.get(Request.REQUEST_INFO_BODY_PROPERTY)); + try { + return AddServiceRequest.of(requestInfoProperties.get(Request.REQUEST_INFO_BODY_PROPERTY)); + } catch (UncheckedIOException e) { + return CHECK.wrapInUnchecked(e, IllegalArgumentException::new, "Could not parse input as valid Add Service request: " + e.getCause().getMessage()); + } } }