Author: tolusha
Date: 2010-09-09 09:24:12 -0400 (Thu, 09 Sep 2010)
New Revision: 3099
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java
Log:
EXOJCR-940: special method for removing system workspace
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java 2010-09-09
13:21:59 UTC (rev 3098)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java 2010-09-09
13:24:12 UTC (rev 3099)
@@ -181,17 +181,7 @@
*/
public boolean canRemoveWorkspace(String workspaceName) throws
NoSuchWorkspaceException
{
- if (repositoryContainer.getWorkspaceEntry(workspaceName) == null)
- throw new NoSuchWorkspaceException("No such workspace " +
workspaceName);
-
- if (workspaceName.equals(config.getSystemWorkspaceName()))
- return false;
-
- SessionRegistry sessionRegistry =
-
(SessionRegistry)repositoryContainer.getComponentInstance(SessionRegistry.class);
-
- return sessionRegistry != null && !sessionRegistry.isInUse(workspaceName);
-
+ return canRemoveWorkspace(workspaceName, false);
}
/**
@@ -637,13 +627,7 @@
*/
public void removeWorkspace(String workspaceName) throws RepositoryException
{
- if (!canRemoveWorkspace(workspaceName))
-
- throw new RepositoryException("Workspace " + workspaceName + " in
use. If you want to "
- + " remove workspace close all open sessions");
-
- internalRemoveWorkspace(workspaceName);
-
config.getWorkspaceEntries().remove(repositoryContainer.getWorkspaceEntry(workspaceName));
+ removeWorkspace(workspaceName, false);
}
/**
@@ -654,23 +638,7 @@
*/
protected void removeSystemWorkspace() throws RepositoryException
{
-
- //check system workspace
- String sysWSName = config.getSystemWorkspaceName();
- if (repositoryContainer.getWorkspaceEntry(sysWSName) == null)
- throw new NoSuchWorkspaceException("No system workspace " +
sysWSName);
-
- SessionRegistry sessionRegistry =
-
(SessionRegistry)repositoryContainer.getComponentInstance(SessionRegistry.class);
-
- if (sessionRegistry != null && !sessionRegistry.isInUse(sysWSName))
- {
- throw new RepositoryException("Workspace " + sysWSName + " in
use. If you want to "
- + " remove workspace close all open sessions");
- }
-
- internalRemoveWorkspace(sysWSName);
-
config.getWorkspaceEntries().remove(repositoryContainer.getWorkspaceEntry(sysWSName));
+ removeWorkspace(config.getSystemWorkspaceName(), true);
}
/**
@@ -735,6 +703,55 @@
}
}
+ /**
+ * Remove workspace.
+ *
+ * @param workspaceName
+ * workspace name
+ * @param allowRemoveSystemWorkspacew
+ * allow to remove system workspace
+ * @throws RepositoryException
+ * if any Exception is occurred
+ */
+ private void removeWorkspace(String workspaceName, boolean
allowRemoveSystemWorkspacew) throws RepositoryException
+ {
+ if (!canRemoveWorkspace(workspaceName, allowRemoveSystemWorkspacew))
+
+ throw new RepositoryException("Workspace " + workspaceName + " in
use. If you want to "
+ + " remove workspace close all open sessions");
+
+ internalRemoveWorkspace(workspaceName);
+
config.getWorkspaceEntries().remove(repositoryContainer.getWorkspaceEntry(workspaceName));
+ }
+
+ /**
+ * Indicates if specific workspace can be removed.
+ *
+ * @param workspaceName
+ * workspace name
+ * @param allowRemoveSystemWorkspace
+ * allow to remove system workspacw
+ * @return
+ * true if workspace can be removed or false in ather case
+ * @throws NoSuchWorkspaceException
+ * if any Exception is occured
+ */
+ private boolean canRemoveWorkspace(String workspaceName, boolean
allowRemoveSystemWorkspace)
+ throws NoSuchWorkspaceException
+ {
+ if (repositoryContainer.getWorkspaceEntry(workspaceName) == null)
+ throw new NoSuchWorkspaceException("No such workspace " +
workspaceName);
+
+ if (!allowRemoveSystemWorkspace &&
workspaceName.equals(config.getSystemWorkspaceName()))
+ return false;
+
+ SessionRegistry sessionRegistry =
+
(SessionRegistry)repositoryContainer.getComponentInstance(SessionRegistry.class);
+
+ return sessionRegistry != null && !sessionRegistry.isInUse(workspaceName);
+
+ }
+
@Override
public String toString()
{