diff --git a/.gitignore b/.gitignore index e1031bcbb47..ad802eab571 100644 --- a/.gitignore +++ b/.gitignore @@ -6,18 +6,21 @@ appserver/packager/pkg_conf.py .project .settings/ .factorypath -.vscode/ target/ *~ *.iml -nbactions.xml +*nbactions.xml +.vscode/ .idea +.DS_Store gfbuild.log -/nucleus/payara-modules/requesttracing-core/nbproject/ nb-configuration.xml -/nucleus/payara-modules/nucleus-microprofile/config-service/nbproject/ +/appserver/tests/quicklook/classes/ +/appserver/tests/quicklook/dist/ +/appserver/tests/quicklook/test-output/ +/appserver/tests/quicklook/*.output +/appserver/tests/quicklook/**/*.war +*.log appserver/extras/arquillian-containers/payara-common/dependency-reduced-pom.xml -/appserver/tests/quicklook/cluster/clustersetup/nbproject/ -/nucleus/payara-modules/service-exemplar/nbproject/ -/nucleus/admin/server-mgmt/nbproject/ appserver/tests/quicklook/quicklook_summary.txt +**/nbproject diff --git a/nucleus/admin/rest/rest-service/pom.xml b/nucleus/admin/rest/rest-service/pom.xml index 0a58e502a29..e418ceb8dab 100644 --- a/nucleus/admin/rest/rest-service/pom.xml +++ b/nucleus/admin/rest/rest-service/pom.xml @@ -54,7 +54,7 @@ GlassFish Admin REST Service Rest Interface for GlassFish Management and Monitoring - + javax.ws.rs diff --git a/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/resources/CollectionLeafResource.java b/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/resources/CollectionLeafResource.java index 3eeb3336326..aecdfe509ee 100644 --- a/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/resources/CollectionLeafResource.java +++ b/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/resources/CollectionLeafResource.java @@ -37,8 +37,7 @@ * only if the new code is made subject to such option by the copyright * holder. */ - -// Portions Copyright [2016-2018] [Payara Foundation and/or its affiliates] +// Portions Copyright [2016-2019] [Payara Foundation and/or its affiliates] package org.glassfish.admin.rest.resources; @@ -323,8 +322,9 @@ private String getErrorMessage(Map data, ActionReport ar) { return message; } - // Ugly, temporary hack - private Map processData(Map data) { + // Ugly, temporary hack + //"There's nothing more permanent than a temporary solution" - Russian Proverb + protected Map processData(Map data) { Map results = new HashMap(); StringBuilder options = new StringBuilder(); String sep = ""; @@ -336,8 +336,19 @@ private Map processData(Map data) { options.append(sep).append(entry.getKey()); String value = entry.getValue(); - if (value != null && !value.isEmpty() || key != null && key.startsWith("-D")) { - options.append("=").append(entry.getValue()); + + if (key != null && !key.trim().isEmpty() && key.startsWith("-D")) { + if (value == null) { + value = ""; + } else if(value.contains("=")) { + value = value.replaceAll("=", ""); + } + + if (key.endsWith("=")) { + options.append(value); + } else if(!key.contains("=")) { + options.append("=").append(value); + } } sep = ":"; } diff --git a/nucleus/admin/rest/rest-service/src/test/java/fish/payara/admin/rest/resources/CollectionLeafResourceTest.java b/nucleus/admin/rest/rest-service/src/test/java/fish/payara/admin/rest/resources/CollectionLeafResourceTest.java new file mode 100644 index 00000000000..9e0ca2ea6f4 --- /dev/null +++ b/nucleus/admin/rest/rest-service/src/test/java/fish/payara/admin/rest/resources/CollectionLeafResourceTest.java @@ -0,0 +1,125 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) [2019] Payara Foundation and/or its affiliates. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can + * obtain a copy of the License at + * https://github.com/payara/Payara/blob/master/LICENSE.txt + * See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at glassfish/legal/LICENSE.txt. + * + * GPL Classpath Exception: + * The Payara Foundation designates this particular file as subject to the "Classpath" + * exception as provided by the Payara Foundation in the GPL Version 2 section of the License + * file that accompanied this code. + * + * Modifications: + * If applicable, add the following below the License Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyright [year] [name of copyright owner]" + * + * Contributor(s): + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + */ + +package fish.payara.admin.rest.resources; + +import java.util.HashMap; +import java.util.Map; +import org.glassfish.admin.rest.resources.CollectionLeafResource; + +import static org.testng.Assert.assertEquals; +import org.testng.annotations.Test; + +/** + * + * @author asroth + */ +public class CollectionLeafResourceTest { + + class Wrapper extends CollectionLeafResource { + public Map getProcessedData(Map data) { + return processData(data); + } + }; + + @Test + public void when_property_has_value_given_with_key_expect_add_to_map(){ + Wrapper wrapper = new Wrapper(); + Map data1 = new HashMap<>(); + data1.put("-Dproduct.name=XXX", ""); + assertEquals(wrapper.getProcessedData(data1).get("id"), "-Dproduct.name=XXX"); + } + + @Test + public void when_property_has_no_equals_sign_and_empty_value_expect_add_to_map(){ + Wrapper wrapper = new Wrapper(); + Map data2 = new HashMap<>(); + data2.put("-Dproduct.name", ""); + assertEquals(wrapper.getProcessedData(data2).get("id"), "-Dproduct.name="); + } + + @Test + public void when_property_has_empty_value_export_add_to_map(){ + Wrapper wrapper = new Wrapper(); + Map data3 = new HashMap<>(); + data3.put("-Dproduct.name=", ""); + assertEquals(wrapper.getProcessedData(data3).get("id"), "-Dproduct.name="); + } + + @Test + public void when_property_has_no_equals_sign_with_value_expect_add_to_map(){ + Wrapper wrapper = new Wrapper(); + Map data4 = new HashMap<>(); + data4.put("-Dproduct.name", "XXX"); + assertEquals(wrapper.getProcessedData(data4).get("id"), "-Dproduct.name=XXX"); + } + + @Test + public void when_property_has_no_equals_sign_and_null_value_expect_add_to_map(){ + Wrapper wrapper = new Wrapper(); + Map data5 = new HashMap<>(); + data5.put("-Dproduct.name", null); + assertEquals(wrapper.getProcessedData(data5).get("id"), "-Dproduct.name="); + } + + @Test + public void when_property_has_null_value_expect_add_to_map(){ + Wrapper wrapper = new Wrapper(); + Map data6 = new HashMap<>(); + data6.put("-Dproduct.name=", null); + assertEquals(wrapper.getProcessedData(data6).get("id"), "-Dproduct.name="); + } + + @Test + public void when_property_is_client_empty_value_expect_add_to_map(){ + Wrapper wrapper = new Wrapper(); + Map data7 = new HashMap<>(); + data7.put("-client", ""); + assertEquals(wrapper.getProcessedData(data7).get("id"), "-client"); + } + + @Test + public void when_property_is_client_null_value_expect_add_to_map(){ + Wrapper wrapper = new Wrapper(); + Map data8 = new HashMap<>(); + data8.put("-client", null); + assertEquals(wrapper.getProcessedData(data8).get("id"), "-client"); + } +}