01: package org.drools.repository;
02:
03: import java.io.File;
04:
05: import javax.jcr.Repository;
06: import javax.jcr.Session;
07: import javax.jcr.SimpleCredentials;
08:
09: import org.apache.log4j.Logger;
10:
11: //import junit.framework.Assert;
12:
13: /**
14: * This is a utility to simulate session behavior for the test suite.
15: * @author Michael Neale
16: *
17: */
18: public class RepositorySessionUtil {
19:
20: private static ThreadLocal repo = new ThreadLocal();
21:
22: private static final Logger log = Logger
23: .getLogger(RepositorySessionUtil.class);
24:
25: public static boolean deleteDir(File dir) {
26:
27: if (dir.isDirectory()) {
28: String[] children = dir.list();
29: for (int i = 0; i < children.length; i++) {
30: boolean success = deleteDir(new File(dir, children[i]));
31: if (!success) {
32: return false;
33: }
34: }
35: }
36:
37: // The directory is now empty so delete it
38: return dir.delete();
39: }
40:
41: public static RulesRepository getRepository()
42: throws RulesRepositoryException {
43: Object repoInstance = repo.get();
44: if (repoInstance == null) {
45:
46: File dir = new File("repository");
47: log.debug("DELETING test repo: " + dir.getAbsolutePath());
48: deleteDir(dir);
49: log.debug("TEST repo was deleted.");
50:
51: JCRRepositoryConfigurator config = new JackrabbitRepositoryConfigurator();
52:
53: //create a repo instance (startup)
54: Repository repository = config.getJCRRepository(null);
55:
56: //create a session
57: Session session;
58: try {
59: session = repository.login(new SimpleCredentials(
60: "alan_parsons", "password".toCharArray()));
61: RulesRepositoryAdministrator admin = new RulesRepositoryAdministrator(
62: session);
63: //clear out and setup
64: if (admin.isRepositoryInitialized()) {
65: admin.clearRulesRepository();
66: }
67: config.setupRulesRepository(session);
68:
69: repoInstance = new RulesRepository(session);
70: repo.set(repoInstance);
71: } catch (Exception e) {
72: throw new RulesRepositoryException();
73: //Assert.fail("Unable to initialise repository :" + e.getMessage());
74: }
75:
76: }
77: return (RulesRepository) repoInstance;
78: }
79:
80: }
|