1 package org.argeo.cms.internal.kernel;
2
3 import java.util.Map;
4 import java.util.TreeMap;
5
6 import javax.jcr.RepositoryException;
7 import javax.jcr.Session;
8
9 import org.apache.commons.logging.Log;
10 import org.apache.commons.logging.LogFactory;
11 import org.apache.jackrabbit.core.RepositoryImpl;
12 import org.argeo.api.NodeConstants;
13
14 class JackrabbitLocalRepository extends LocalRepository {
15 private final static Log log = LogFactory.getLog(JackrabbitLocalRepository.class);
16 final String SECURITY_WORKSPACE = "security";
17
18 private Map<String, CmsWorkspaceIndexer> workspaceMonitors = new TreeMap<>();
19
20 public JackrabbitLocalRepository(RepositoryImpl repository, String cn) {
21 super(repository, cn);
22
23
24
25
26
27
28
29
30
31
32
33 }
34
35 protected RepositoryImpl getJackrabbitrepository(String workspaceName) {
36 return (RepositoryImpl) getRepository(workspaceName);
37 }
38
39 @Override
40 protected synchronized void processNewSession(Session session, String workspaceName) {
41
42
43 }
44
45 private void addMonitor(String realWorkspaceName) {
46 if (realWorkspaceName.equals(SECURITY_WORKSPACE))
47 return;
48 if (!NodeConstants.NODE_REPOSITORY.equals(getCn()))
49 return;
50
51 if (!workspaceMonitors.containsKey(realWorkspaceName)) {
52 try {
53 CmsWorkspaceIndexer workspaceMonitor = new CmsWorkspaceIndexer(
54 getJackrabbitrepository(realWorkspaceName), getCn(), realWorkspaceName);
55 workspaceMonitors.put(realWorkspaceName, workspaceMonitor);
56 workspaceMonitor.init();
57 if (log.isDebugEnabled())
58 log.debug("Registered " + workspaceMonitor);
59 } catch (RepositoryException e) {
60
61 e.printStackTrace();
62 }
63 }
64 }
65
66 public void destroy() {
67 for (String workspaceName : workspaceMonitors.keySet()) {
68 workspaceMonitors.get(workspaceName).destroy();
69 }
70 }
71
72 }