[exo-jcr-commits] exo-jcr SVN: r5815 - in jcr/branches/1.15.x: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache and 8 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue Mar 6 08:13:38 EST 2012
Author: areshetnyak
Date: 2012-03-06 08:13:36 -0500 (Tue, 06 Mar 2012)
New Revision: 5815
Modified:
jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java
jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java
jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java
jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/TestRepositoryCheckController.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceManagement.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceRestore.java
jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java
Log:
EXOJCR-1758 : The problem with eviction and stoping cache on repository stop was fixed.
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -33,8 +33,8 @@
import org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
import org.exoplatform.services.jcr.impl.storage.jdbc.DBConstants;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
-import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.services.naming.InitialContextInitializer;
@@ -509,7 +509,9 @@
if (shareable)
{
// The cache cannot be stopped since it can be shared so we evict the root node instead
- cache.evict(lockRoot);
+ cache.getNode(lockRoot).setResident(false);
+ cache.evict(lockRoot, true);
+ cache.getRegion(lockRoot, false).processEvictionQueues();
}
else
{
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -32,8 +32,8 @@
import org.exoplatform.services.jcr.impl.core.query.lucene.IndexInfos;
import org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
-import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -281,5 +281,7 @@
{
LOG.warn("Not all JBoss Cache MBeans were unregistered.");
}
+
+ PrivilegedJBossCacheHelper.stop(cache);
}
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -21,6 +21,7 @@
import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter;
+import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.jboss.cache.Cache;
@@ -724,15 +725,7 @@
*/
public void start() throws CacheException
{
- PrivilegedAction<Object> action = new PrivilegedAction<Object>()
- {
- public Object run()
- {
- parentCache.start();
- return null;
- }
- };
- SecurityHelper.doPrivilegedAction(action);
+ PrivilegedJBossCacheHelper.start(parentCache);
}
/* (non-Javadoc)
@@ -748,15 +741,7 @@
*/
public void stop()
{
- PrivilegedAction<Object> action = new PrivilegedAction<Object>()
- {
- public Object run()
- {
- parentCache.stop();
- return null;
- }
- };
- SecurityHelper.doPrivilegedAction(action);
+ PrivilegedJBossCacheHelper.stop(parentCache);
}
public TransactionManager getTransactionManager()
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -51,6 +51,7 @@
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
+import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory.CacheType;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -60,8 +61,8 @@
import org.jboss.cache.CacheStatus;
import org.jboss.cache.Fqn;
import org.jboss.cache.Node;
+import org.jboss.cache.config.EvictionRegionConfig;
import org.jboss.cache.config.Configuration.CacheMode;
-import org.jboss.cache.config.EvictionRegionConfig;
import org.jboss.cache.eviction.ExpirationAlgorithmConfig;
import org.jboss.cache.jmx.JmxRegistrationManager;
import org.picocontainer.Startable;
@@ -124,6 +125,8 @@
private final boolean enabled;
+ private final boolean shareable;
+
public static final String JBOSSCACHE_CONFIG = "jbosscache-configuration";
public static final String JBOSSCACHE_EXPIRATION = "jbosscache-expiration-time";
@@ -568,6 +571,9 @@
enabled = wsConfig.getCache().isEnabled();
+ shareable =
+ wsConfig.getCache().getParameterBoolean(JBOSSCACHE_SHAREABLE, JBOSSCACHE_SHAREABLE_DEFAULT).booleanValue();
+
// create cache using custom factory
ExoJBossCacheFactory<Serializable, Object> factory;
@@ -729,6 +735,51 @@
}
});
}
+
+ if (shareable)
+ {
+ // The cache cannot be stopped since it can be shared so we evict the root node instead
+ cache.getNode(itemsRoot).setResident(false);
+ cache.evict(itemsRoot, true);
+ cache.getRegion(itemsRoot, false).processEvictionQueues();
+
+ cache.getNode(refRoot).setResident(false);;
+ cache.evict(refRoot, true);
+ cache.getRegion(refRoot, false).processEvictionQueues();
+
+ cache.getNode(childNodes).setResident(false);;
+ cache.evict(childNodes, true);
+ cache.getRegion(childNodes, false).processEvictionQueues();
+
+ cache.getNode(childProps).setResident(false);;
+ cache.evict(childProps, true);
+ cache.getRegion(childProps, false).processEvictionQueues();
+
+ cache.getNode(childNodesList).setResident(false);
+ cache.evict(childNodesList, true);
+ cache.getRegion(childNodesList, false).processEvictionQueues();
+
+ cache.getNode(childPropsList).setResident(false);
+ cache.evict(childPropsList, true);
+ cache.getRegion(childPropsList, false).processEvictionQueues();
+
+ cache.getNode(childNodesByPageList).setResident(false);
+ cache.evict(childNodesByPageList, true);
+ cache.getRegion(childNodesByPageList, false).processEvictionQueues();
+
+ cache.getNode(childNodesByPatternList).setResident(false);
+ cache.evict(childNodesByPatternList, true);
+ cache.getRegion(childNodesByPatternList, false).processEvictionQueues();
+
+ cache.getNode(childPropsByPatternList).setResident(false);
+ cache.evict(childPropsByPatternList, true);
+ cache.getRegion(childPropsByPatternList, false).processEvictionQueues();
+
+ }
+ else
+ {
+ PrivilegedJBossCacheHelper.stop(cache);
+ }
}
/**
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -142,7 +142,7 @@
String loginConf = BaseStandaloneTest.class.getResource("/login.conf").toString();
- container = StandaloneContainer.getInstance();
+ container = StandaloneContainer.getInstance();
if (System.getProperty("java.security.auth.login.config") == null)
{
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/TestRepositoryCheckController.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/TestRepositoryCheckController.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/TestRepositoryCheckController.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -128,34 +128,54 @@
private void checkConsistentLocksInDataBase(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- lockNode(node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ Node node = addTestNode(repository);
+ lockNode(node);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:lockIsDeep"));
- removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:lockOwner"));
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:lockIsDeep"));
+ removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:lockOwner"));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
private void checkInconsistentLocksInLockTable(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- lockNode(node);
+ Node node = addTestNode(repository);
+ lockNode(node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- clearLockTable(repository);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ clearLockTable(repository);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testCheckValueStorage() throws Exception
@@ -187,14 +207,25 @@
*/
public void testIndexUsecaseWrongDocumentId() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
-
- Node node = addTestNode(repository);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- removeNodeInDB(repository, node);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ Node node = addTestNode(repository);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+
+ removeNodeInDB(repository, node);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -202,14 +233,25 @@
*/
public void testIndexUsecaseMultipleDocuments() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ Node node = addTestNode(repository);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- indexNode(repository, node, ItemState.ADDED);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ indexNode(repository, node, ItemState.ADDED);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -217,14 +259,25 @@
*/
public void testIndexUsecaseDocumentNotExists() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, SINGLE_DB, CACHE_DISABLED);
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ Node node = addTestNode(repository);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- indexNode(repository, node, ItemState.DELETED);
- assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ indexNode(repository, node, ItemState.DELETED);
+ assertTrue(checkController.checkIndex().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -241,33 +294,52 @@
private void checkDBUsecasesTheParentIdIsIdOfThisNode(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ Node node = addTestNode(repository);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- assingItsOwnParent(repository, (ItemImpl)node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ assingItsOwnParent(repository, (ItemImpl)node);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
-
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
private void checkDBUsecasesTheParentIdIsIdOfThisNode2(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- Property prop = addTestProperty(repository, node);
+ Node node = addTestNode(repository);
+ Property prop = addTestProperty(repository, node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- assingItsOwnParent(repository, (ItemImpl)prop);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ assingItsOwnParent(repository, (ItemImpl)prop);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -281,18 +353,28 @@
private void checkSeveralVersionsOfSameItem(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
+ Node node = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- insertPropertyRecord(repository, prop.getInternalIdentifier(), prop.getParentIdentifier(), prop.getName());
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ insertPropertyRecord(repository, prop.getInternalIdentifier(), prop.getParentIdentifier(), prop.getName());
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -306,14 +388,24 @@
private void checkDBUsecasesPropertyWithoutParent(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- insertPropertyRecord(repository, IdGenerator.generate(), IdGenerator.generate(), "testName");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ insertPropertyRecord(repository, IdGenerator.generate(), IdGenerator.generate(), "testName");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -327,18 +419,28 @@
private void checkDBUsecasesIncorrectValueRecords(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
+ Node node = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- updateValueRecord(repository, prop.getInternalIdentifier());
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ updateValueRecord(repository, prop.getInternalIdentifier());
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -352,18 +454,28 @@
private void checkDBUsecasesValueRecordHasNoItemRecord(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
+ Node node = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removeItemRecord(repository, prop.getInternalIdentifier());
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removeItemRecord(repository, prop.getInternalIdentifier());
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -380,30 +492,50 @@
private void checkDBUsecasesPropertiesHasNoSingleValueRecord(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
+ Node node = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)addTestProperty(repository, node);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removeValueRecord(repository, prop.getInternalIdentifier());
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removeValueRecord(repository, prop.getInternalIdentifier());
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
private void checkDBUsecasesPropertiesHasEmptyMultiValueRecord(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- node.setProperty("prop", new String[]{});
- node.save();
+ Node node = addTestNode(repository);
+ node.setProperty("prop", new String[]{});
+ node.save();
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -420,20 +552,30 @@
private void checkDBUsecasesReferencePropertyWithoutReferenceRecord(ManageableRepository repository)
throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- Node node2 = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)node2.setProperty("prop", node);
- node2.save();
+ Node node = addTestNode(repository);
+ Node node2 = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)node2.setProperty("prop", node);
+ node2.save();
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removeReferenceRecord(repository, prop.getInternalIdentifier());
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removeReferenceRecord(repository, prop.getInternalIdentifier());
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -447,16 +589,26 @@
private void checkDBUsecasesNodeHasNotPrimaryTypeProperties(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ Node node = addTestNode(repository);
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:primaryType"));
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removePropertyInDB(repository, (PropertyImpl)node.getProperty("jcr:primaryType"));
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairDataBase("yes");
- assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairDataBase("yes");
+ assertTrue(checkController.checkDataBase().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
/**
@@ -470,20 +622,30 @@
private void checkValueStorageUsecases(ManageableRepository repository) throws Exception
{
- TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
+ try
+ {
+ TesterRepositoryCheckController checkController = new TesterRepositoryCheckController(repository);
- Node node = addTestNode(repository);
- PropertyImpl prop = (PropertyImpl)node.setProperty("prop", new FileInputStream(createBLOBTempFile(300)));
- node.save();
+ Node node = addTestNode(repository);
+ PropertyImpl prop = (PropertyImpl)node.setProperty("prop", new FileInputStream(createBLOBTempFile(300)));
+ node.save();
- assertTrue(checkController.checkValueStorage().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ assertTrue(checkController.checkValueStorage().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
- removeFileFromVS(repository, prop.getInternalIdentifier());
- assertTrue(checkController.checkValueStorage()
- .startsWith(RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
+ removeFileFromVS(repository, prop.getInternalIdentifier());
+ assertTrue(checkController.checkValueStorage().startsWith(
+ RepositoryCheckController.REPORT_NOT_CONSISTENT_MESSAGE));
- checkController.repairValueStorage("yes");
- assertTrue(checkController.checkValueStorage().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ checkController.repairValueStorage("yes");
+ assertTrue(checkController.checkValueStorage().startsWith(RepositoryCheckController.REPORT_CONSISTENT_MESSAGE));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
private Node addTestNode(ManageableRepository repository) throws LoginException, NoSuchWorkspaceException,
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestRepositoryManagement.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -22,9 +22,12 @@
import org.exoplatform.container.xml.PropertiesParam;
import org.exoplatform.services.jcr.JcrImplBaseTest;
import org.exoplatform.services.jcr.RepositoryService;
+import org.exoplatform.services.jcr.config.CacheEntry;
import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.config.RepositoryServiceConfiguration;
+import org.exoplatform.services.jcr.config.SimpleParameterEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
+import org.exoplatform.services.jcr.core.CredentialsImpl;
import org.exoplatform.services.jcr.core.ManageableRepository;
import org.exoplatform.services.jcr.impl.config.JDBCConfigurationPersister;
import org.exoplatform.services.jcr.util.TesterConfigurationHelper;
@@ -36,8 +39,12 @@
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.CountDownLatch;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.Session;
+
/**
* @author <a href="mailto:Sergey.Kabashnyuk at gmail.com">Sergey Kabashnyuk</a>
* @version $Id: TestRepositoryManagement.java 11907 2008-03-13 15:36:21Z ksm $
@@ -57,6 +64,7 @@
private final TesterConfigurationHelper helper;
+
public TestRepositoryManagement()
{
super();
@@ -65,119 +73,231 @@
public void testAddNewRepository() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
- assertNotNull(repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName()).getRootNode());
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, false, null);
+
+ Session session = null;
+ try
+ {
+ session = repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
+ assertNotNull(session.getRootNode());
+ }
+ finally
+ {
+ if (session != null)
+ {
+ session.logout();
+ }
+ }
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testMarshalUnmarshalRepositoryConfiguration() throws Exception
{
- ManageableRepository newRepository = helper.createRepository(container, false, null);
- // 1st marshal configuration
- File tempFile = PrivilegedFileHelper.createTempFile("test-config", "xml");
- PrivilegedFileHelper.deleteOnExit(tempFile);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, false, null);
- IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
- IMarshallingContext mctx = factory.createMarshallingContext();
+ final long lockManagerTimeOut =
+ repository.getConfiguration().getWorkspaceEntries().get(0).getLockManager().getParameterLong("time-out");
- FileOutputStream saveStream = new FileOutputStream(tempFile);
- ArrayList<RepositoryEntry> repositoryEntries = new ArrayList<RepositoryEntry>();
- repositoryEntries.add(newRepository.getConfiguration());
+ // 1st marshal configuration
+ File tempFile = PrivilegedFileHelper.createTempFile("test-config", "xml");
+ PrivilegedFileHelper.deleteOnExit(tempFile);
- RepositoryServiceConfiguration newRepositoryServiceConfiguration =
- new RepositoryServiceConfiguration(repositoryService.getConfig().getDefaultRepositoryName(), repositoryEntries);
- mctx.marshalDocument(newRepositoryServiceConfiguration, "ISO-8859-1", null, saveStream);
- saveStream.close();
+ IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
+ IMarshallingContext mctx = factory.createMarshallingContext();
- // 1st unmarshal
- factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
- IUnmarshallingContext uctx = factory.createUnmarshallingContext();
- RepositoryServiceConfiguration conf =
- (RepositoryServiceConfiguration)uctx.unmarshalDocument(PrivilegedFileHelper.fileInputStream(tempFile), null);
+ FileOutputStream saveStream = new FileOutputStream(tempFile);
+ ArrayList<RepositoryEntry> repositoryEntries = new ArrayList<RepositoryEntry>();
+ repositoryEntries.add(repository.getConfiguration());
- // 1st check
- RepositoryEntry unmarshledRepositoryEntry =
- conf.getRepositoryConfiguration(newRepository.getConfiguration().getName());
+ RepositoryServiceConfiguration newRepositoryServiceConfiguration =
+ new RepositoryServiceConfiguration(repositoryService.getConfig().getDefaultRepositoryName(),
+ repositoryEntries);
+ mctx.marshalDocument(newRepositoryServiceConfiguration, "ISO-8859-1", null, saveStream);
+ saveStream.close();
-
- // 2nd marshal configuration
- tempFile = PrivilegedFileHelper.createTempFile("test-config", "xml");
- PrivilegedFileHelper.deleteOnExit(tempFile);
+ // 1st unmarshal
+ factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
+ IUnmarshallingContext uctx = factory.createUnmarshallingContext();
+ RepositoryServiceConfiguration conf =
+ (RepositoryServiceConfiguration)uctx
+ .unmarshalDocument(PrivilegedFileHelper.fileInputStream(tempFile), null);
- factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
- mctx = factory.createMarshallingContext();
- saveStream = new FileOutputStream(tempFile);
- repositoryEntries = new ArrayList<RepositoryEntry>();
- repositoryEntries.add(newRepository.getConfiguration());
+ // 1st check
+ RepositoryEntry unmarshledRepositoryEntry =
+ conf.getRepositoryConfiguration(repository.getConfiguration().getName());
+ assertEquals(lockManagerTimeOut, unmarshledRepositoryEntry.getWorkspaceEntries().get(0).getLockManager()
+ .getParameterLong("time-out").longValue());
- newRepositoryServiceConfiguration =
- new RepositoryServiceConfiguration(repositoryService.getConfig().getDefaultRepositoryName(), repositoryEntries);
- mctx.marshalDocument(newRepositoryServiceConfiguration, "ISO-8859-1", null, saveStream);
- saveStream.close();
-
- // 2nd unmarshal
- factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
- uctx = factory.createUnmarshallingContext();
- conf = (RepositoryServiceConfiguration)uctx.unmarshalDocument(PrivilegedFileHelper.fileInputStream(tempFile), null);
+ // 2nd marshal configuration
+ tempFile = PrivilegedFileHelper.createTempFile("test-config", "xml");
+ PrivilegedFileHelper.deleteOnExit(tempFile);
- // 2nd check
- unmarshledRepositoryEntry =
- conf.getRepositoryConfiguration(newRepository.getConfiguration().getName());
+ factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
+ mctx = factory.createMarshallingContext();
+ saveStream = new FileOutputStream(tempFile);
+ repositoryEntries = new ArrayList<RepositoryEntry>();
+ repositoryEntries.add(repository.getConfiguration());
+
+ newRepositoryServiceConfiguration =
+ new RepositoryServiceConfiguration(repositoryService.getConfig().getDefaultRepositoryName(),
+ repositoryEntries);
+ mctx.marshalDocument(newRepositoryServiceConfiguration, "ISO-8859-1", null, saveStream);
+ saveStream.close();
+
+ // 2nd unmarshal
+ factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
+ uctx = factory.createUnmarshallingContext();
+ conf =
+ (RepositoryServiceConfiguration)uctx
+ .unmarshalDocument(PrivilegedFileHelper.fileInputStream(tempFile), null);
+
+ // 2nd check
+ unmarshledRepositoryEntry = conf.getRepositoryConfiguration(repository.getConfiguration().getName());
+ assertEquals(lockManagerTimeOut, unmarshledRepositoryEntry.getWorkspaceEntries().get(0).getLockManager()
+ .getParameterLong("time-out").longValue());
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testAddNewRepositoryWithSameName() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
-
+ ManageableRepository repository = null;
try
{
- RepositoryEntry rEntry = helper.createRepositoryEntry(false, null, null, true);
- rEntry.setName(repository.getConfiguration().getName());
+ repository = helper.createRepository(container, false, null);
- helper.createRepository(container, rEntry);
- fail();
+ try
+ {
+ RepositoryEntry rEntry = helper.createRepositoryEntry(false, null, null, true);
+ rEntry.setName(repository.getConfiguration().getName());
+
+ helper.createRepository(container, rEntry);
+ fail();
+ }
+ catch (Exception e)
+ {
+ // ok
+ }
}
- catch (Exception e)
+ finally
{
- // ok
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testCanRemove() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, false, null);
- RepositoryService service = (RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
+ RepositoryService service = (RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
- SessionImpl session =
- (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
+ SessionImpl session =
+ (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
- assertFalse(service.canRemoveRepository(repository.getConfiguration().getName()));
- session.logout();
- assertTrue(service.canRemoveRepository(repository.getConfiguration().getName()));
+ assertFalse(service.canRemoveRepository(repository.getConfiguration().getName()));
+ session.logout();
+ assertTrue(service.canRemoveRepository(repository.getConfiguration().getName()));
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testInitNameSpaces() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, false, null);
- SessionImpl session =
- (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
+ SessionImpl session = null;
+ try
+ {
+ session =
+ (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
- assertEquals("http://www.apache.org/jackrabbit/test", session.getNamespaceURI("test"));
- assertEquals("http://www.exoplatform.org/jcr/test/1.0", session.getNamespaceURI("exojcrtest"));
+ assertEquals("http://www.apache.org/jackrabbit/test", session.getNamespaceURI("test"));
+ assertEquals("http://www.exoplatform.org/jcr/test/1.0", session.getNamespaceURI("exojcrtest"));
+ }
+ finally
+ {
+ if (session != null)
+ {
+ session.logout();
+ }
+ }
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testInitNodeTypes() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
+ ManageableRepository repository = null;
+ try
+ {
+ repository = helper.createRepository(container, false, null);
- SessionImpl session =
- (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
+ SessionImpl session = null;
+ try
+ {
+ session =
+ (SessionImpl)repository.login(credentials, repository.getConfiguration().getSystemWorkspaceName());
- // check if nt:folder nodetype exists
- session.getRootNode().addNode("folder", "nt:folder");
- session.save();
+ // check if nt:folder nodetype exists
+ session.getRootNode().addNode("folder", "nt:folder");
+ session.save();
+ }
+ finally
+ {
+ if (session != null)
+ {
+ session.logout();
+ }
+ }
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testRemove() throws Exception
@@ -202,57 +322,82 @@
int theadsCount = 10;
RepositoryCreationThread[] threads = new RepositoryCreationThread[theadsCount];
- CountDownLatch latcher = new CountDownLatch(1);
- for (int i = 0; i < theadsCount; i++)
+ try
{
- threads[i] = new RepositoryCreationThread(latcher);
- threads[i].start();
- }
+ CountDownLatch latcher = new CountDownLatch(1);
- latcher.countDown();
+ for (int i = 0; i < theadsCount; i++)
+ {
+ threads[i] = new RepositoryCreationThread(latcher);
+ threads[i].start();
+ }
- for (int i = 0; i < theadsCount; i++)
- {
- threads[i].join();
- }
+ latcher.countDown();
- PropertiesParam props = new PropertiesParam();
- props.setProperty("dialect", "auto");
- props.setProperty("source-name", "jdbcjcr");
+ for (int i = 0; i < theadsCount; i++)
+ {
+ threads[i].join();
+ }
- JDBCConfigurationPersister persiter = new JDBCConfigurationPersister();
- persiter.init(props);
+ PropertiesParam props = new PropertiesParam();
+ props.setProperty("dialect", "auto");
+ props.setProperty("source-name", "jdbcjcr");
- IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
- IUnmarshallingContext uctx = factory.createUnmarshallingContext();
- RepositoryServiceConfiguration storedConf =
- (RepositoryServiceConfiguration)uctx.unmarshalDocument(persiter.read(), null);
+ JDBCConfigurationPersister persiter = new JDBCConfigurationPersister();
+ persiter.init(props);
- for (int i = 0; i < theadsCount; i++)
- {
- // test if respository has been created
- ManageableRepository repository = threads[i].getRepository();
- assertNotNull(repository);
+ IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
+ IUnmarshallingContext uctx = factory.createUnmarshallingContext();
+ RepositoryServiceConfiguration storedConf =
+ (RepositoryServiceConfiguration)uctx.unmarshalDocument(persiter.read(), null);
- // check configuration in persiter
- storedConf.getRepositoryConfiguration(repository.getConfiguration().getName());
-
- // check configuration in RepositoryServic
- assertNotNull(repositoryService.getConfig().getRepositoryConfiguration(repository.getConfiguration().getName()));
-
- // login into newly created repository
- ManageableRepository newRepository = repositoryService.getRepository(repository.getConfiguration().getName());
- assertNotNull(repository.login(credentials, newRepository.getConfiguration().getSystemWorkspaceName())
- .getRootNode());
+ for (int i = 0; i < theadsCount; i++)
+ {
+ // test if respository has been created
+ ManageableRepository repository = threads[i].getRepository();
+ assertNotNull(repository);
+
+ // check configuration in persiter
+ storedConf.getRepositoryConfiguration(repository.getConfiguration().getName());
+
+ // check configuration in RepositoryServic
+ assertNotNull(repositoryService.getConfig().getRepositoryConfiguration(
+ repository.getConfiguration().getName()));
+
+ // login into newly created repository
+ ManageableRepository newRepository =
+ repositoryService.getRepository(repository.getConfiguration().getName());
+
+ Session session = null;
+ try
+ {
+ session = repository.login(credentials, newRepository.getConfiguration().getSystemWorkspaceName());
+ assertNotNull(session.getRootNode());
+ }
+ finally
+ {
+ if (session != null)
+ {
+ session.logout();
+ }
+ }
+ }
}
+ finally
+ {
+ for (int i = 0; i < theadsCount; i++)
+ {
+ helper.removeRepository(container, threads[i].getRepository().getConfiguration().getName());
+ }
+ }
}
private class RepositoryCreationThread extends Thread
{
private CountDownLatch latcher;
- private ManageableRepository repository;
+ private ManageableRepository tRrepository;
RepositoryCreationThread(CountDownLatch latcher)
{
@@ -260,14 +405,15 @@
}
/**
- * {@inheritDoc}
- */
+ * {@inheritDoc}
+ */
+
public void run()
{
try
{
latcher.await();
- repository = helper.createRepository(container, false, null);
+ tRrepository = helper.createRepository(container, false, null);
}
catch (Exception e)
{
@@ -277,7 +423,134 @@
public ManageableRepository getRepository()
{
- return repository;
+ return tRrepository;
}
}
+
+ public void testCreateAterRemoveCheckOldContent() throws Exception
+ {
+ ManageableRepository newRepository = null;
+ try
+ {
+ RepositoryService service = (RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
+ RepositoryEntry repoEntry = helper.createRepositoryEntry(false, null, null, true);
+
+ try
+ {
+ Class
+ .forName("org.exoplatform.services.jcr.impl.dataflow.persistent.infinispan.ISPNCacheWorkspaceStorageCache");
+
+ ArrayList cacheParams = new ArrayList();
+ cacheParams.add(new SimpleParameterEntry("infinispan-configuration",
+ "conf/standalone/test-infinispan-config.xml"));
+ CacheEntry cacheEntry = new CacheEntry(cacheParams);
+ cacheEntry
+ .setType("org.exoplatform.services.jcr.impl.dataflow.persistent.infinispan.ISPNCacheWorkspaceStorageCache");
+ cacheEntry.setEnabled(true);
+
+ ArrayList<WorkspaceEntry> wsList = repoEntry.getWorkspaceEntries();
+
+ wsList.get(0).setCache(cacheEntry);
+ repoEntry.setWorkspaceEntries(wsList);
+ }
+ catch (ClassNotFoundException e)
+ {
+ }
+
+ service.createRepository(repoEntry);
+ service.getConfig().retain();
+
+ ManageableRepository repository = service.getRepository(repoEntry.getName());
+
+ // add content
+ Session session =
+ repository.login(new CredentialsImpl("admin", "admin".toCharArray()), repository.getConfiguration()
+ .getSystemWorkspaceName());
+ session.getRootNode().addNode("test");
+ session.save();
+ session.logout();
+
+ // copy repository configuration
+ RepositoryEntry repositoryEntry = helper.copyRepositoryEntry(repository.getConfiguration());
+
+ String newDatasourceName = helper.createDatasource();
+
+ for (WorkspaceEntry ws : repositoryEntry.getWorkspaceEntries())
+ {
+ List<SimpleParameterEntry> parameters = ws.getContainer().getParameters();
+ for (int i = 0; i <= parameters.size(); i++)
+ {
+ SimpleParameterEntry spe = parameters.get(i);
+ if (spe.getName().equals("source-name"))
+ {
+ parameters.add(i, new SimpleParameterEntry(spe.getName(), newDatasourceName));
+ break;
+ }
+ }
+ ws.getContainer().setParameters(parameters);
+
+ parameters = ws.getLockManager().getParameters();
+ for (int i = 0; i <= parameters.size(); i++)
+ {
+ SimpleParameterEntry spe = parameters.get(i);
+ if (spe.getName().equals("jbosscache-cl-cache.jdbc.datasource")
+ || spe.getName().equals("infinispan-cl-cache.jdbc.datasource"))
+ {
+ parameters.add(i, new SimpleParameterEntry(spe.getName(), newDatasourceName));
+ break;
+ }
+ }
+ ws.getLockManager().setParameters(parameters);
+ }
+
+ service.removeRepository(repository.getConfiguration().getName());
+
+ try
+ {
+ service.getRepository(repository.getConfiguration().getName());
+ fail();
+ }
+ catch (Exception e)
+ {
+ }
+
+ // create new repository
+ service.createRepository(repositoryEntry);
+ service.getConfig().retain();
+
+ newRepository = service.getRepository(repositoryEntry.getName());
+
+ Session newSession = null;
+ try
+ {
+ newSession =
+ newRepository.login(new CredentialsImpl("admin", "admin".toCharArray()), newRepository
+ .getConfiguration().getSystemWorkspaceName());
+
+ try
+ {
+ newSession.getRootNode().getNode("test");
+ fail("Node 'test' should not exists after remove repository and recreate new.");
+ }
+ catch (PathNotFoundException e)
+ {
+ //ok
+ }
+ }
+ finally
+ {
+ if (newSession != null)
+ {
+ newSession.logout();
+ }
+ }
+ }
+ finally
+ {
+ if (newRepository != null)
+ {
+ helper.removeRepository(container, newRepository.getConfiguration().getName());
+ }
+ }
+ }
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceManagement.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceManagement.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceManagement.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -52,146 +52,239 @@
// single db test only
public void testAddWorkspaceWithNewDS() throws Exception
{
- ManageableRepository repository = helper.createRepository(container, false, null);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, "not-existed-ds");
- helper.addWorkspace(repository, wsEntry);
- fail();
+ repository = helper.createRepository(container, false, null);
+
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, "not-existed-ds");
+ helper.addWorkspace(repository, wsEntry);
+ fail();
+ }
+ catch (Exception e)
+ {
+ // ok;
+ }
}
- catch (Exception e)
+ finally
{
- // ok;
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testAddWorkspaceWithExistingName() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
- wsEntry.setName(repository.getConfiguration().getSystemWorkspaceName());
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
- helper.addWorkspace(repository, wsEntry);
- fail();
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
+ wsEntry.setName(repository.getConfiguration().getSystemWorkspaceName());
+
+ helper.addWorkspace(repository, wsEntry);
+ fail();
+ }
+ catch (RepositoryConfigurationException e)
+ {
+ // ok;
+ }
}
- catch (RepositoryConfigurationException e)
+ finally
{
- // ok;
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testAddWorkspaceWithIvalidVs() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
- ValueStorageEntry valueStorageEntry = wsEntry.getContainer().getValueStorages().get(0);
-
- ArrayList<SimpleParameterEntry> spe = new ArrayList<SimpleParameterEntry>();
- spe.add(new SimpleParameterEntry("path", "/unknown/path"));
- valueStorageEntry.setParameters(spe);
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
- wsEntry.getContainer().getValueStorages().set(0, valueStorageEntry);
+ ValueStorageEntry valueStorageEntry = wsEntry.getContainer().getValueStorages().get(0);
- helper.addWorkspace(repository, wsEntry);
+ ArrayList<SimpleParameterEntry> spe = new ArrayList<SimpleParameterEntry>();
+ spe.add(new SimpleParameterEntry("path", "/unknown/path"));
+ valueStorageEntry.setParameters(spe);
+
+ wsEntry.getContainer().getValueStorages().set(0, valueStorageEntry);
+
+ helper.addWorkspace(repository, wsEntry);
+ }
+ catch (RepositoryConfigurationException e)
+ {
+ // ok;
+ }
}
- catch (RepositoryConfigurationException e)
+ finally
{
- // ok;
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testCreateWsNoConfig() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
- wsEntry.setContainer(new ContainerEntry(
- "org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer", new ArrayList()));
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
- helper.addWorkspace(repository, wsEntry);
- fail();
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
+ wsEntry.setContainer(new ContainerEntry(
+ "org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer", new ArrayList()));
+
+ helper.addWorkspace(repository, wsEntry);
+ fail();
+ }
+ catch (Exception e)
+ {
+ // ok;
+ }
}
- catch (Exception e)
+ finally
{
- // ok;
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testInitNewWS() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
- helper.addWorkspace(repository, wsEntry);
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
- SessionImpl session = (SessionImpl)repository.login(credentials, wsEntry.getName());
- assertNotNull(session.getRootNode());
+ SessionImpl session = null;
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
+ helper.addWorkspace(repository, wsEntry);
+
+ session = (SessionImpl)repository.login(credentials, wsEntry.getName());
+ assertNotNull(session.getRootNode());
+ }
+ catch (RepositoryException e)
+ {
+ e.printStackTrace();
+ fail();
+ }
+ finally
+ {
+ session.logout();
+ }
}
- catch (RepositoryException e)
+ finally
{
- e.printStackTrace();
- fail();
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testMixMultiAndSingleDbWs() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, dsName);
- helper.addWorkspace(repository, wsEntry);
- fail();
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
+
+ try
+ {
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, dsName);
+ helper.addWorkspace(repository, wsEntry);
+ fail();
+ }
+ catch (Exception e)
+ {
+ // ok;
+ }
}
- catch (Exception e)
+ finally
{
- // ok;
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testRemoveSystemWorkspace() throws Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
-
+ ManageableRepository repository = null;
try
{
- repository.removeWorkspace(repository.getConfiguration().getSystemWorkspaceName());
- fail();
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
+
+ try
+ {
+ repository.removeWorkspace(repository.getConfiguration().getSystemWorkspaceName());
+ fail();
+ }
+ catch (RepositoryException e)
+ {
+ }
}
- catch (RepositoryException e)
+ finally
{
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
}
public void testRemoveWorkspace() throws Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, false, dsName);
- WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
+ ManageableRepository repository = null;
+ try
+ {
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, false, dsName);
+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
- helper.addWorkspace(repository, wsEntry);
- assertEquals(2, repository.getWorkspaceNames().length);
+ helper.addWorkspace(repository, wsEntry);
+ assertEquals(2, repository.getWorkspaceNames().length);
- repository.removeWorkspace(wsEntry.getName());
- assertEquals(1, repository.getWorkspaceNames().length);
+ repository.removeWorkspace(wsEntry.getName());
+ assertEquals(1, repository.getWorkspaceNames().length);
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceRestore.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceRestore.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestWorkspaceRestore.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -62,52 +62,74 @@
public void testRestore() throws RepositoryConfigurationException, Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, isDefaultWsMultiDb, dsName);
+ ManageableRepository repository = null;
+ try
+ {
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, isDefaultWsMultiDb, dsName);
- WorkspaceEntry workspaceEntry =
- helper.createWorkspaceEntry(isDefaultWsMultiDb, isDefaultWsMultiDb ? helper.createDatasource() : dsName);
- helper.addWorkspace(repository, workspaceEntry);
+ WorkspaceEntry workspaceEntry =
+ helper.createWorkspaceEntry(isDefaultWsMultiDb, isDefaultWsMultiDb ? helper.createDatasource() : dsName);
+ helper.addWorkspace(repository, workspaceEntry);
- InputStream is = TestWorkspaceManagement.class.getResourceAsStream("/import-export/db1_ws1-20071220_0430.xml");
- repository.importWorkspace(workspaceEntry.getName(), is);
+ InputStream is = TestWorkspaceManagement.class.getResourceAsStream("/import-export/db1_ws1-20071220_0430.xml");
+ repository.importWorkspace(workspaceEntry.getName(), is);
+ }
+ finally
+ {
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
+ }
}
public void testRestoreBadXml() throws Exception
{
- String dsName = helper.createDatasource();
- ManageableRepository repository = helper.createRepository(container, isDefaultWsMultiDb, dsName);
+ ManageableRepository repository = null;
+ try
+ {
+ String dsName = helper.createDatasource();
+ repository = helper.createRepository(container, isDefaultWsMultiDb, dsName);
- WorkspaceEntry workspaceEntry =
- helper.createWorkspaceEntry(isDefaultWsMultiDb, isDefaultWsMultiDb ? helper.createDatasource() : dsName);
- helper.addWorkspace(repository, workspaceEntry);
+ WorkspaceEntry workspaceEntry =
+ helper.createWorkspaceEntry(isDefaultWsMultiDb, isDefaultWsMultiDb ? helper.createDatasource() : dsName);
+ helper.addWorkspace(repository, workspaceEntry);
- Session defSession = repository.login(this.credentials, workspaceEntry.getName());
- Node defRoot = defSession.getRootNode();
+ Session defSession = repository.login(this.credentials, workspaceEntry.getName());
+ Node defRoot = defSession.getRootNode();
- Node node1 = defRoot.addNode("node1");
- node1.setProperty("p1", 2);
- defSession.save();
+ Node node1 = defRoot.addNode("node1");
+ node1.setProperty("p1", 2);
+ defSession.save();
- File content = File.createTempFile("data", ".xml");
- content.deleteOnExit();
- OutputStream os = new BufferedOutputStream(new FileOutputStream(content));
- defSession.exportSystemView(node1.getPath(), os, false, false);
- os.close();
- defSession.logout();
-
- try
- {
- InputStream is = TestWorkspaceManagement.class.getResourceAsStream("/import-export/db1_ws1-20071220_0430.xml");
- repository.importWorkspace(workspaceEntry.getName(), new BufferedInputStream(new FileInputStream(content)));
+ File content = File.createTempFile("data", ".xml");
+ content.deleteOnExit();
+ OutputStream os = new BufferedOutputStream(new FileOutputStream(content));
+ defSession.exportSystemView(node1.getPath(), os, false, false);
+ os.close();
+ defSession.logout();
- fail();
+ try
+ {
+ InputStream is =
+ TestWorkspaceManagement.class.getResourceAsStream("/import-export/db1_ws1-20071220_0430.xml");
+ repository.importWorkspace(workspaceEntry.getName(), new BufferedInputStream(new FileInputStream(content)));
+
+ fail();
+ }
+ catch (RepositoryException e)
+ {
+ // ok
+ }
}
- catch (RepositoryException e)
+ finally
{
- // ok
+ if (repository != null)
+ {
+ helper.removeRepository(container, repository.getConfiguration().getName());
+ }
}
-
}
private void doTestOnWorkspace(String wsName) throws RepositoryException, RepositoryConfigurationException
Modified: jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -32,6 +32,8 @@
import org.exoplatform.services.jcr.config.ValueStorageFilterEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.core.ManageableRepository;
+import org.exoplatform.services.jcr.core.WorkspaceContainerFacade;
+import org.exoplatform.services.jcr.impl.core.SessionRegistry;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -62,6 +64,26 @@
}
/**
+ * Remove repository.
+ * @throws RepositoryConfigurationException
+ */
+ public void removeRepository(ExoContainer container, String repositoryName) throws RepositoryException,
+ RepositoryConfigurationException
+ {
+ RepositoryService service = (RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
+
+ ManageableRepository mr = service.getRepository(repositoryName);
+ for (String wsName : mr.getWorkspaceNames())
+ {
+ WorkspaceContainerFacade wc = mr.getWorkspaceContainer(wsName);
+ SessionRegistry sessionRegistry = (SessionRegistry)wc.getComponent(SessionRegistry.class);
+ sessionRegistry.closeSessions(wsName);
+ }
+
+ service.removeRepository(repositoryName);
+ }
+
+ /**
* Add new workspace to repository.
*/
public void addWorkspace(ManageableRepository repository, WorkspaceEntry workspaceEntry)
@@ -249,13 +271,33 @@
new QueryHandlerEntry("org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex", params);
// Cache
- ArrayList cacheParams = new ArrayList();
- cacheParams.add(new SimpleParameterEntry("maxSize", "2000"));
- cacheParams.add(new SimpleParameterEntry("liveTime", "20m"));
- CacheEntry cacheEntry = new CacheEntry(cacheParams);
- cacheEntry.setEnabled(cacheEnabled);
- cacheEntry.setType("org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl");
+ CacheEntry cacheEntry = null;
+ try
+ {
+ Class
+ .forName("org.exoplatform.services.jcr.impl.dataflow.persistent.infinispan.ISPNCacheWorkspaceStorageCache");
+
+ //TODO EXOJCR-1784
+ ArrayList cacheParams = new ArrayList();
+ cacheParams.add(new SimpleParameterEntry("maxSize", "2000"));
+ cacheParams.add(new SimpleParameterEntry("liveTime", "20m"));
+ cacheEntry = new CacheEntry(cacheParams);
+ cacheEntry.setEnabled(cacheEnabled);
+ cacheEntry.setType("org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl");
+ }
+ catch (ClassNotFoundException e)
+ {
+ ArrayList cacheParams = new ArrayList();
+ cacheParams.add(new SimpleParameterEntry("jbosscache-configuration",
+ "conf/standalone/test-jbosscache-config.xml"));
+ cacheParams.add(new SimpleParameterEntry("jbosscache-shareable", Boolean.toString(cacheShared)));
+ cacheEntry = new CacheEntry(cacheParams);
+ cacheEntry
+ .setType("org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache");
+ cacheEntry.setEnabled(cacheEnabled);
+ }
+
LockManagerEntry lockManagerEntry = new LockManagerEntry();
lockManagerEntry.putParameterValue("time-out", "15m");
@@ -305,6 +347,103 @@
return workspaceEntry;
}
+ public RepositoryEntry copyRepositoryEntry(RepositoryEntry configuration)
+ {
+ ArrayList<WorkspaceEntry> workspases = new ArrayList<WorkspaceEntry>();
+
+ for (WorkspaceEntry ws : configuration.getWorkspaceEntries())
+ {
+ workspases.add(copyWorkspaceEntry(ws));
+ }
+
+ RepositoryEntry repository = new RepositoryEntry();
+ repository.setSystemWorkspaceName(configuration.getSystemWorkspaceName());
+ repository.setDefaultWorkspaceName(configuration.getDefaultWorkspaceName());
+ repository.setName(configuration.getName());
+ repository.setSessionTimeOut(configuration.getSessionTimeOut());
+ repository.setAuthenticationPolicy(configuration.getAuthenticationPolicy());
+ repository.setSecurityDomain(configuration.getSecurityDomain());
+
+ for (WorkspaceEntry ws : workspases)
+ {
+ repository.addWorkspace(ws);
+ }
+
+ return repository;
+ }
+
+ private WorkspaceEntry copyWorkspaceEntry(WorkspaceEntry wsEntry)
+ {
+ // container entry
+ ArrayList<SimpleParameterEntry> params = new ArrayList();
+ params.addAll(wsEntry.getContainer().getParameters());
+
+ ContainerEntry containerEntry = new ContainerEntry(wsEntry.getContainer().getType(), (ArrayList)params);
+ containerEntry.setParameters(params);
+
+ // value storage
+ ArrayList<ValueStorageEntry> list = new ArrayList<ValueStorageEntry>();
+ if (wsEntry.getContainer().getValueStorages() != null)
+ {
+ for (ValueStorageEntry vse : wsEntry.getContainer().getValueStorages())
+ {
+ ArrayList<ValueStorageFilterEntry> vsparams = new ArrayList<ValueStorageFilterEntry>();
+
+ for (ValueStorageFilterEntry vsfe : vse.getFilters())
+ {
+ ValueStorageFilterEntry filterEntry = new ValueStorageFilterEntry();
+ filterEntry.setPropertyType(vsfe.getPropertyType());
+ filterEntry.setPropertyName(vsfe.getPropertyName());
+ filterEntry.setMinValueSize(vsfe.getMinValueSize());
+ filterEntry.setAncestorPath(vsfe.getAncestorPath());
+ vsparams.add(filterEntry);
+ }
+
+ ValueStorageEntry valueStorageEntry = new ValueStorageEntry(vse.getType(), vsparams);
+ ArrayList<SimpleParameterEntry> spe = new ArrayList<SimpleParameterEntry>();
+ spe.addAll(vse.getParameters());
+ valueStorageEntry.setId(vse.getId());
+ valueStorageEntry.setParameters(spe);
+ valueStorageEntry.setFilters(vsparams);
+
+ // containerEntry.setValueStorages();
+ containerEntry.setParameters(params);
+ list.add(valueStorageEntry);
+ }
+ }
+
+ containerEntry.setValueStorages(list);
+
+ // Indexer
+ params = new ArrayList();
+ params.addAll(wsEntry.getQueryHandler().getParameters());
+ QueryHandlerEntry qEntry = new QueryHandlerEntry(wsEntry.getQueryHandler().getType(), params);
+
+ // Cache
+ ArrayList cacheParams = new ArrayList();
+ cacheParams.addAll(wsEntry.getCache().getParameters());
+ CacheEntry cacheEntry = new CacheEntry(cacheParams);
+ cacheEntry.setEnabled(wsEntry.getCache().getEnabled());
+ cacheEntry.setType(wsEntry.getCache().getType());
+
+ // Lock
+ LockManagerEntry lockManagerEntry = new LockManagerEntry();
+ lockManagerEntry.setType(wsEntry.getLockManager().getType());
+ ArrayList lockParams = new ArrayList();
+ lockParams.addAll(wsEntry.getLockManager().getParameters());
+ lockManagerEntry.setParameters(lockParams);
+
+ WorkspaceEntry workspaceEntry = new WorkspaceEntry();
+ workspaceEntry.setContainer(containerEntry);
+ workspaceEntry.setCache(cacheEntry);
+ workspaceEntry.setQueryHandler(qEntry);
+ workspaceEntry.setLockManager(lockManagerEntry);
+ workspaceEntry.setName(wsEntry.getName());
+ workspaceEntry.setUniqueName(wsEntry.getUniqueName());
+
+ return workspaceEntry;
+ }
+
public boolean ispnCacheEnabled()
{
try
Modified: jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -120,6 +120,7 @@
configureJDBCCacheLoader(config.getLockManager());
cache = factory.createCache("L" + config.getUniqueName().replace("_", ""), config.getLockManager());
+ PrivilegedISPNCacheHelper.start(cache);
}
else
{
Modified: jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -30,6 +30,7 @@
import org.exoplatform.services.jcr.impl.core.query.lucene.IndexInfos;
import org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex;
import org.exoplatform.services.jcr.infinispan.ISPNCacheFactory;
+import org.exoplatform.services.jcr.infinispan.PrivilegedISPNCacheHelper;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -98,6 +99,7 @@
ISPNCacheFactory<Serializable, Object> factory = new ISPNCacheFactory<Serializable, Object>(cfm);
config.putParameterValue(PARAM_INFINISPAN_CACHESTORE_CLASS, IndexerCacheStore.class.getName());
this.cache = factory.createCache("Indexer_" + searchManager.getWsId(), config);
+ PrivilegedISPNCacheHelper.start(this.cache);
CacheLoaderManager cacheLoaderManager =
cache.getAdvancedCache().getComponentRegistry().getComponent(CacheLoaderManager.class);
@@ -176,4 +178,12 @@
{
return true;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void close()
+ {
+ PrivilegedISPNCacheHelper.stop(cache);
+ }
}
Modified: jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -18,9 +18,9 @@
*/
package org.exoplatform.services.jcr.impl.dataflow.persistent.infinispan;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter;
+import org.exoplatform.services.jcr.infinispan.PrivilegedISPNCacheHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.infinispan.AdvancedCache;
@@ -33,7 +33,6 @@
import org.infinispan.util.concurrent.NotifyingFuture;
import org.infinispan.util.concurrent.locks.LockManager;
-import java.security.PrivilegedAction;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -953,15 +952,7 @@
*/
public void start()
{
- PrivilegedAction<Object> action = new PrivilegedAction<Object>()
- {
- public Object run()
- {
- parentCache.start();
- return null;
- }
- };
- SecurityHelper.doPrivilegedAction(action);
+ PrivilegedISPNCacheHelper.start((Cache)parentCache);
}
/**
@@ -969,15 +960,7 @@
*/
public void stop()
{
- PrivilegedAction<Object> action = new PrivilegedAction<Object>()
- {
- public Object run()
- {
- parentCache.stop();
- return null;
- }
- };
- SecurityHelper.doPrivilegedAction(action);
+ PrivilegedISPNCacheHelper.stop((Cache)parentCache);
}
/**
Modified: jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java
===================================================================
--- jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java 2012-03-06 12:44:11 UTC (rev 5814)
+++ jcr/branches/1.15.x/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java 2012-03-06 13:13:36 UTC (rev 5815)
@@ -58,6 +58,7 @@
import org.infinispan.notifications.Listener;
import org.infinispan.notifications.cachelistener.annotation.CacheEntryModified;
import org.infinispan.notifications.cachelistener.event.CacheEntryModifiedEvent;
+import org.picocontainer.Startable;
import java.io.File;
import java.io.IOException;
@@ -98,7 +99,7 @@
* @author <a href="anatoliy.bazko at exoplatform.org">Anatoliy Bazko</a>
* @version $Id: ISPNCacheWorkspaceStorageCache.java 3514 2010-11-22 16:14:36Z nzamosenchuk $
*/
-public class ISPNCacheWorkspaceStorageCache implements WorkspaceStorageCache, Backupable
+public class ISPNCacheWorkspaceStorageCache implements WorkspaceStorageCache, Backupable, Startable
{
private static final Log LOG = ExoLogger.getLogger("exo.jcr.component.core.impl.infinispan.v5.ISPNCacheWorkspaceStorageCache");
@@ -477,6 +478,8 @@
}
this.cache = new BufferedISPNCache(parentCache, allowLocalChanges);
cache.addListener(new CacheEventListener());
+
+ this.cache.start();
}
/**
@@ -1647,5 +1650,20 @@
onCacheEntryUpdated(value);
}
}
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void start()
+ {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void stop()
+ {
+ cache.stop();
}
}
More information about the exo-jcr-commits
mailing list