CatalogImpl does not remove default namespace and workspace
-----------------------------------------------------------
Key: GEOS-3520
URL: http://jira.codehaus.org/browse/GEOS-3520
Project: GeoServer
Issue Type: Bug
Components: Configuration
Affects Versions: 2.0-RC1
Reporter: Gabriel Roldán
Assignee: Justin Deoliveira
Priority: Critical
Fix For: 2.0-RC2
CatalogImpl does not remove default namespace and workspace, leaving them hanging until geoserver shuts downs. Problem is newly created stores might get confused by which one is the default workspace, when it does no longer exist but is available through getDefaultWorkspace()
The following is a patch with test cases. Justin I'm assigning to you to notice, feel free to reassign to me if the patch seems appropriate:
{code}
Index: src/main/java/org/geoserver/catalog/impl/CatalogImpl.java
--- src/main/java/org/geoserver/catalog/impl/CatalogImpl.java (revision 13354)
+++ src/main/java/org/geoserver/catalog/impl/CatalogImpl.java (working copy)
@@ -973,6 +973,12 @@
if ( !getResourcesByNamespace(namespace, ResourceInfo.class ).isEmpty() ) {
throw new IllegalArgumentException( "Unable to delete non-empty namespace.");
}
+
+ NamespaceInfo defaultNamespace = getDefaultNamespace();
+ if (namespace.equals(defaultNamespace)) {
+ namespaces.remove(null);
+ }
+
namespaces.remove(namespace.getPrefix());
removed(namespace);
}
@@ -1048,6 +1054,11 @@
if ( !getStoresByWorkspace( workspace, StoreInfo.class).isEmpty() ) {
throw new IllegalArgumentException( "Cannot delete non-empty workspace.");
}
+
+ WorkspaceInfo defaultWorkspace = getDefaultWorkspace();
+ if (workspace.equals(defaultWorkspace)) {
+ workspaces.remove(null);
+ }
workspaces.remove( workspace.getName() );
removed( workspace );
}
Index: src/test/java/org/geoserver/catalog/impl/CatalogImplTest.java
--- src/test/java/org/geoserver/catalog/impl/CatalogImplTest.java (revision 13354)
+++ src/test/java/org/geoserver/catalog/impl/CatalogImplTest.java (working copy)
@@ -266,6 +266,30 @@
assertTrue( catalog.getWorkspaces().isEmpty() );
}
+ public void testAutoSetDefaultWorkspace() {
+ catalog.add( ws );
+ assertEquals( 1, catalog.getWorkspaces().size() );
+ assertEquals(ws, catalog.getDefaultWorkspace());
+ }
+
+ public void testRemoveDefaultWorkspace() {
+ catalog.add( ws );
+ catalog.remove( ws );
+ assertNull(catalog.getDefaultWorkspace());
+ }
+
+ public void testAutoSetDefaultNamespace() {
+ catalog.add( ns );
+ assertEquals( 1, catalog.getNamespaces().size() );
+ assertEquals(ns, catalog.getDefaultNamespace());
+ }
+
+ public void testRemoveDefaultNamespace() {
+ catalog.add( ns );
+ catalog.remove( ns );
+ assertNull(catalog.getDefaultNamespace());
+ }
+
public void testGetWorkspaceById() {
catalog.add( ws );
WorkspaceInfo ws2 = catalog.getWorkspace(ws.getId());
{code}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira