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");
+ }
+}