1 package org
.argeo
.cms
.jcr
.internal
;
4 import java
.util
.TreeMap
;
6 import javax
.jcr
.RepositoryException
;
7 import javax
.jcr
.Session
;
9 import org
.apache
.jackrabbit
.core
.RepositoryImpl
;
10 import org
.argeo
.api
.cms
.CmsConstants
;
11 import org
.argeo
.api
.cms
.CmsLog
;
13 class JackrabbitLocalRepository
extends LocalRepository
{
14 private final static CmsLog log
= CmsLog
.getLog(JackrabbitLocalRepository
.class);
15 final String SECURITY_WORKSPACE
= "security";
17 private Map
<String
, CmsWorkspaceIndexer
> workspaceMonitors
= new TreeMap
<>();
19 public JackrabbitLocalRepository(RepositoryImpl repository
, String cn
) {
20 super(repository
, cn
);
21 // Session session = KernelUtils.openAdminSession(repository);
23 // if (NodeConstants.NODE.equals(cn))
24 // for (String workspaceName : session.getWorkspace().getAccessibleWorkspaceNames()) {
25 // addMonitor(workspaceName);
27 // } catch (RepositoryException e) {
28 // throw new IllegalStateException(e);
30 // JcrUtils.logoutQuietly(session);
34 protected RepositoryImpl
getJackrabbitrepository(String workspaceName
) {
35 return (RepositoryImpl
) getRepository(workspaceName
);
39 protected synchronized void processNewSession(Session session
, String workspaceName
) {
40 // String realWorkspaceName = session.getWorkspace().getName();
41 // addMonitor(realWorkspaceName);
44 private void addMonitor(String realWorkspaceName
) {
45 if (realWorkspaceName
.equals(SECURITY_WORKSPACE
))
47 if (!CmsConstants
.NODE_REPOSITORY
.equals(getCn()))
50 if (!workspaceMonitors
.containsKey(realWorkspaceName
)) {
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
65 public void destroy() {
66 for (String workspaceName
: workspaceMonitors
.keySet()) {
67 workspaceMonitors
.get(workspaceName
).destroy();