]> git.argeo.org Git - lgpl/argeo-commons.git/blob - jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/JackrabbitLocalRepository.java
Improve migration
[lgpl/argeo-commons.git] / jcr / org.argeo.cms.jcr / src / org / argeo / cms / jcr / internal / JackrabbitLocalRepository.java
1 package org.argeo.cms.jcr.internal;
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.jackrabbit.core.RepositoryImpl;
10 import org.argeo.api.cms.CmsConstants;
11 import org.argeo.api.cms.CmsLog;
12
13 class JackrabbitLocalRepository extends LocalRepository {
14 private final static CmsLog log = CmsLog.getLog(JackrabbitLocalRepository.class);
15 final String SECURITY_WORKSPACE = "security";
16
17 private Map<String, CmsWorkspaceIndexer> workspaceMonitors = new TreeMap<>();
18
19 public JackrabbitLocalRepository(RepositoryImpl repository, String cn) {
20 super(repository, cn);
21 // Session session = KernelUtils.openAdminSession(repository);
22 // try {
23 // if (NodeConstants.NODE.equals(cn))
24 // for (String workspaceName : session.getWorkspace().getAccessibleWorkspaceNames()) {
25 // addMonitor(workspaceName);
26 // }
27 // } catch (RepositoryException e) {
28 // throw new IllegalStateException(e);
29 // } finally {
30 // JcrUtils.logoutQuietly(session);
31 // }
32 }
33
34 protected RepositoryImpl getJackrabbitrepository(String workspaceName) {
35 return (RepositoryImpl) getRepository(workspaceName);
36 }
37
38 @Override
39 protected synchronized void processNewSession(Session session, String workspaceName) {
40 // String realWorkspaceName = session.getWorkspace().getName();
41 // addMonitor(realWorkspaceName);
42 }
43
44 private void addMonitor(String realWorkspaceName) {
45 if (realWorkspaceName.equals(SECURITY_WORKSPACE))
46 return;
47 if (!CmsConstants.NODE_REPOSITORY.equals(getCn()))
48 return;
49
50 if (!workspaceMonitors.containsKey(realWorkspaceName)) {
51 try {
52 CmsWorkspaceIndexer workspaceMonitor = new CmsWorkspaceIndexer(
53 getJackrabbitrepository(realWorkspaceName), getCn(), realWorkspaceName);
54 workspaceMonitors.put(realWorkspaceName, workspaceMonitor);
55 workspaceMonitor.init();
56 if (log.isDebugEnabled())
57 log.debug("Registered " + workspaceMonitor);
58 } catch (RepositoryException e) {
59 // TODO Auto-generated catch block
60 e.printStackTrace();
61 }
62 }
63 }
64
65 public void destroy() {
66 for (String workspaceName : workspaceMonitors.keySet()) {
67 workspaceMonitors.get(workspaceName).destroy();
68 }
69 }
70
71 }