From 3e810bb869b119e93ef1a18c15e1e8c20b8d3f8d Mon Sep 17 00:00:00 2001 From: andypower Date: Fri, 3 Apr 2015 11:54:02 +0200 Subject: [PATCH 1/2] Improve on appending the raw parameter on existing query string for publish and update SLDs --- .../manager/GeoServerRESTStyleManager.java | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/main/java/it/geosolutions/geoserver/rest/manager/GeoServerRESTStyleManager.java b/src/main/java/it/geosolutions/geoserver/rest/manager/GeoServerRESTStyleManager.java index c6c4989..00dc28d 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/manager/GeoServerRESTStyleManager.java +++ b/src/main/java/it/geosolutions/geoserver/rest/manager/GeoServerRESTStyleManager.java @@ -294,15 +294,15 @@ public class GeoServerRESTStyleManager extends GeoServerRESTAbstractManager { if (sldBody == null || sldBody.isEmpty()) { throw new IllegalArgumentException("The style body may not be null or empty"); } - - String sUrl = buildPostUrl(null, name); - sUrl += "&raw=" + raw; - LOGGER.debug("POSTing new style " + name + " to " + sUrl); + + StringBuilder sUrl = new StringBuilder(buildPostUrl(null, name)); + Util.appendParameter(sUrl, "raw", ""+raw); String contentType = GeoServerRESTPublisher.Format.SLD.getContentType(); if(!this.checkSLD10Version(sldBody)){ contentType = GeoServerRESTPublisher.Format.SLD_1_1_0.getContentType(); } - String result = HTTPUtils.post(sUrl, sldBody, contentType, gsuser, gspass); + LOGGER.debug("POSTing new style " + name + " to " + sUrl + " using version: " + contentType); + String result = HTTPUtils.post(sUrl.toString(), sldBody, contentType, gsuser, gspass); return result != null; } @@ -323,14 +323,14 @@ public class GeoServerRESTStyleManager extends GeoServerRESTAbstractManager { * {@code curl -u admin:geoserver -XPOST \ -H 'Content-type: application/vnd.ogc.sld+xml' \ -d @$FULLSLD \ * http://$GSIP:$GSPORT/$SERVLET/rest/styles?name=$name&raw=$raw} */ - String sUrl = buildPostUrl(null, name); - sUrl += "&raw=" + raw; - LOGGER.debug("POSTing new style " + name + " to " + sUrl); + StringBuilder sUrl = new StringBuilder(buildPostUrl(null, name)); + Util.appendParameter(sUrl, "raw", ""+raw); String contentType = GeoServerRESTPublisher.Format.SLD.getContentType(); if(!this.checkSLD10Version(sldFile)){ contentType = GeoServerRESTPublisher.Format.SLD_1_1_0.getContentType(); } - String result = HTTPUtils.post(sUrl, sldFile, contentType, gsuser, gspass); + LOGGER.debug("POSTing new style " + name + " to " + sUrl + " using version: " + contentType); + String result = HTTPUtils.post(sUrl.toString(), sldFile, contentType, gsuser, gspass); return result != null; } @@ -358,14 +358,14 @@ public class GeoServerRESTStyleManager extends GeoServerRESTAbstractManager { throw new IllegalArgumentException("The style name may not be null or empty"); } - String sUrl = buildUrl(null, name, null); - sUrl += "?raw=" + raw; - LOGGER.debug("POSTing style " + name + " to " + sUrl); + StringBuilder sUrl = new StringBuilder(buildUrl(null, name, null)); + Util.appendParameter(sUrl, "raw", ""+raw); String contentType = GeoServerRESTPublisher.Format.SLD.getContentType(); if(!this.checkSLD10Version(sldFile)){ contentType = GeoServerRESTPublisher.Format.SLD_1_1_0.getContentType(); } - String result = HTTPUtils.put(sUrl, sldFile, contentType, gsuser, gspass); + LOGGER.debug("PUTting style " + name + " to " + sUrl + " using version: " + contentType); + String result = HTTPUtils.put(sUrl.toString(), sldFile, contentType, gsuser, gspass); return result != null; } @@ -393,14 +393,14 @@ public class GeoServerRESTStyleManager extends GeoServerRESTAbstractManager { throw new IllegalArgumentException("The style name may not be null or empty"); } - String sUrl = buildUrl(null, name, null); - sUrl += "&raw=" + raw; - LOGGER.debug("POSTing style " + name + " to " + sUrl); + StringBuilder sUrl = new StringBuilder(buildUrl(null, name, null)); + Util.appendParameter(sUrl, "raw", ""+raw); String contentType = GeoServerRESTPublisher.Format.SLD.getContentType(); if(!this.checkSLD10Version(sldBody)){ contentType = GeoServerRESTPublisher.Format.SLD_1_1_0.getContentType(); } - String result = HTTPUtils.put(sUrl, sldBody, contentType, gsuser, gspass); + LOGGER.debug("PUTting style " + name + " to " + sUrl + " using version: " + contentType); + String result = HTTPUtils.put(sUrl.toString(), sldBody, contentType, gsuser, gspass); return result != null; } From 1533c7bec41cf99e6087775782e4b907f3a0085c Mon Sep 17 00:00:00 2001 From: andypower Date: Tue, 12 Nov 2013 18:24:33 +0100 Subject: [PATCH 2/2] Added utility methods to add query string params to an existing URL --- .../it/geosolutions/geoserver/rest/Util.java | 49 +++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/src/main/java/it/geosolutions/geoserver/rest/Util.java b/src/main/java/it/geosolutions/geoserver/rest/Util.java index 20a5175..56419bf 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/Util.java +++ b/src/main/java/it/geosolutions/geoserver/rest/Util.java @@ -1,7 +1,7 @@ /* * GeoServer-Manager - Simple Manager Library for GeoServer * - * Copyright (C) 2007,2013 GeoSolutions S.A.S. + * Copyright (C) 2007,2015 GeoSolutions S.A.S. * http://www.geo-solutions.it * * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -27,15 +27,18 @@ package it.geosolutions.geoserver.rest; import it.geosolutions.geoserver.rest.decoder.RESTStyle; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; +import java.util.Map; /** * * @author ETj (etj at geo-solutions.it) */ public class Util { - - public static final String QUIET_ON_NOT_FOUND_PARAM = "quietOnNotFound="; + +public static final String QUIET_ON_NOT_FOUND_PARAM = "quietOnNotFound="; public static final boolean DEFAULT_QUIET_ON_NOT_FOUND = true; @@ -70,4 +73,44 @@ public class Util { String composed = url + (contains ? "&":"?") + QUIET_ON_NOT_FOUND_PARAM + quietOnNotFound; return composed; } + + public static List safeList(List list) { + return list == null ? Collections.EMPTY_LIST : list; + } + + public static Collection safeCollection(Collection collection) { + return collection == null ? Collections.EMPTY_SET : collection; + } + + public static Map safeMap(Map map) { + return map == null ? Collections.EMPTY_MAP : map; + } + + public static char getParameterSeparator(String url) { + char parameterSeparator = '?'; + if (url.contains("?")) { + parameterSeparator = '&'; + } + return parameterSeparator; + } + + public static char getParameterSeparator(StringBuilder url) { + char parameterSeparator = '?'; + if (url.indexOf("?") != -1) { + parameterSeparator = '&'; + } + return parameterSeparator; + } + + public static boolean appendParameter(StringBuilder url, String parameterName, + String parameterValue) { + boolean result = false; + if (parameterName != null && !parameterName.isEmpty() + && parameterValue != null && !parameterValue.isEmpty()) { + char parameterSeparator = getParameterSeparator(url); + url.append(parameterSeparator).append(parameterName.trim()) + .append('=').append(parameterValue.trim()); + } + return result; + } }