[exo-jcr-commits] exo-jcr SVN: r2173 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Mar 26 11:17:34 EDT 2010


Author: areshetnyak
Date: 2010-03-26 11:17:34 -0400 (Fri, 26 Mar 2010)
New Revision: 2173

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java
Log:
EXOJCR-616 : The remove repository container from repositoryContainers map when repository container start fail.

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java	2010-03-26 14:57:09 UTC (rev 2172)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryServiceImpl.java	2010-03-26 15:17:34 UTC (rev 2173)
@@ -143,15 +143,28 @@
    public void createRepository(RepositoryEntry rEntry) throws RepositoryConfigurationException, RepositoryException
    {
       if (repositoryContainers.containsKey(rEntry.getName()))
+      {
          throw new RepositoryConfigurationException("Repository container " + rEntry.getName() + " already started");
+      }
 
       RepositoryContainer repositoryContainer = new RepositoryContainer(parentContainer, rEntry);
 
       // Storing and starting the repository container under
       // key=repository_name
-      repositoryContainers.put(rEntry.getName(), repositoryContainer);
-      managerStartChanges.registerListeners(repositoryContainer);
-      repositoryContainer.start();
+      try
+      {
+         repositoryContainers.put(rEntry.getName(), repositoryContainer);
+         managerStartChanges.registerListeners(repositoryContainer);
+         repositoryContainer.start();
+      }
+      catch (Throwable t)
+      {
+         //TODO will be implemented unregistration in managerStartChanges
+         //managerStartChanges.removeListeners(repositoryContainer);
+         repositoryContainers.remove(rEntry.getName());
+         
+         throw new RepositoryConfigurationException("Repository conatainer " + rEntry.getName() + " was not started.", t);
+      }
 
       if (!config.getRepositoryConfigurations().contains(rEntry))
       {



More information about the exo-jcr-commits mailing list