From 02439fa27778ea6608c42e71a32267ba31009d92 Mon Sep 17 00:00:00 2001 From: etj Date: Tue, 31 Mar 2015 17:02:38 +0200 Subject: [PATCH] Add the PURGE param to the delete store methods. --- .../rest/GeoServerRESTPublisher.java | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java index 374bc8b..85b0119 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java +++ b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java @@ -2006,7 +2006,12 @@ public class GeoServerRESTPublisher { */ public boolean removeDatastore(String workspace, String storename, final boolean recurse) throws IllegalArgumentException { - return removeStore(workspace, storename, StoreType.DATASTORES, recurse); + return removeStore(workspace, storename, StoreType.DATASTORES, recurse, Purge.NONE); + } + + public boolean removeDatastore(String workspace, String storename, final boolean recurse, final Purge purge) + throws IllegalArgumentException { + return removeStore(workspace, storename, StoreType.DATASTORES, recurse, purge); } /** @@ -2031,9 +2036,27 @@ public class GeoServerRESTPublisher { */ public boolean removeCoverageStore(final String workspace, final String storename, final boolean recurse) throws IllegalArgumentException { - return removeStore(workspace, storename, StoreType.COVERAGESTORES, recurse); + return removeStore(workspace, storename, StoreType.COVERAGESTORES, recurse, Purge.NONE); } + /** + * Remove a given CoverageStore in a given Workspace. + * + * Note that purging may not work when deleting mosaics (https://jira.codehaus.org/browse/GEOT-4613). + * + * @param workspace The name of the workspace + * @param storename The name of the CoverageStore to remove. + * @param recurse if remove should be performed recursively + * @param purge the purge method + * @return true if the CoverageStore was successfully removed. + */ + public boolean removeCoverageStore(final String workspace, final String storename, + final boolean recurse, final Purge purge) throws IllegalArgumentException { + return removeStore(workspace, storename, StoreType.COVERAGESTORES, recurse, purge); + } + + public enum Purge {NONE, METADATA, ALL}; + /** * Remove a given Datastore in a given Workspace. * @@ -2041,11 +2064,12 @@ public class GeoServerRESTPublisher { * @param storename The name of the Datastore to remove. * @param the {@link StoreType} type * @param recurse if remove should be performed recursively + * @param purge the purge method * @throws IllegalArgumentException if workspace or storename are null or empty * @return true if the store was successfully removed. */ private boolean removeStore(String workspace, String storename, StoreType type, - final boolean recurse) throws IllegalArgumentException { + final boolean recurse, final Purge purge) throws IllegalArgumentException { try { if (workspace == null || storename == null) throw new IllegalArgumentException("Arguments may not be null!"); @@ -2055,8 +2079,10 @@ public class GeoServerRESTPublisher { final StringBuilder url = new StringBuilder(restURL); url.append("/rest/workspaces/").append(workspace).append("/").append(type).append("/") .append(storename); - if (recurse) - url.append("?recurse=true"); + url.append("?recurse=").append(recurse); + if(purge != null) + url.append("&purge=").append(purge); + final URL deleteStore = new URL(url.toString()); boolean deleted = HTTPUtils.delete(deleteStore.toExternalForm(), gsuser, gspass);