Improve and simplify OSGi Boot
[lgpl/argeo-commons.git] / org.argeo.server.jcr / src / org / argeo / jackrabbit / unit / AbstractJackrabbitTestCase.java
index 1f3ff307a1c93926f981284be870f20453751fa2..1523c835d7c76abdb4941103ba5858204cb535cd 100644 (file)
  */
 package org.argeo.jackrabbit.unit;
 
-import java.io.File;
+import java.net.URL;
 
 import javax.jcr.Repository;
 
-import org.apache.jackrabbit.core.TransientRepository;
+import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.core.RepositoryImpl;
+import org.apache.jackrabbit.core.config.RepositoryConfig;
 import org.argeo.jcr.unit.AbstractJcrTestCase;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
 
 /** Factorizes configuration of an in memory transient repository */
-public abstract class AbstractJackrabbitTestCase extends
-               AbstractJcrTestCase {
-       protected File getRepositoryFile() throws Exception {
-               Resource res = new ClassPathResource(
-                               "org/argeo/server/jcr/repository-memory.xml");
-               return res.getFile();
+public abstract class AbstractJackrabbitTestCase extends AbstractJcrTestCase {
+       protected RepositoryImpl repositoryImpl;
+
+       // protected File getRepositoryFile() throws Exception {
+       // Resource res = new ClassPathResource(
+       // "org/argeo/jackrabbit/unit/repository-memory.xml");
+       // return res.getFile();
+       // }
+
+       public AbstractJackrabbitTestCase() {
+               URL url = AbstractJackrabbitTestCase.class.getResource("jaas.config");
+               assert url != null;
+               System.setProperty("java.security.auth.login.config", url.toString());
        }
 
        protected Repository createRepository() throws Exception {
-               Repository repository = new TransientRepository(getRepositoryFile(),
-                               getHomeDir());
-               return repository;
+               // Repository repository = new TransientRepository(getRepositoryFile(),
+               // getHomeDir());
+               RepositoryConfig repositoryConfig = RepositoryConfig.create(
+                               AbstractJackrabbitTestCase.class
+                                               .getResourceAsStream(getRepositoryConfigResource()),
+                               getHomeDir().getAbsolutePath());
+               RepositoryImpl repositoryImpl = RepositoryImpl.create(repositoryConfig);
+               return repositoryImpl;
+       }
+
+       protected String getRepositoryConfigResource() {
+               return "repository-memory.xml";
+       }
+
+       @Override
+       protected void clearRepository(Repository repository) throws Exception {
+               RepositoryImpl repositoryImpl = (RepositoryImpl) repository;
+               if (repositoryImpl != null)
+                       repositoryImpl.shutdown();
+               FileUtils.deleteDirectory(getHomeDir());
        }
 
 }