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  }