]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeRepository.java
1 package org
.argeo
.cms
.internal
.kernel
;
3 import org
.argeo
.jackrabbit
.JackrabbitWrapper
;
4 import org
.argeo
.jcr
.ArgeoJcrConstants
;
6 /** Jacrabbit based data layer */
7 class NodeRepository
extends JackrabbitWrapper
implements KernelConstants
,
9 // private static Log log = LogFactory.getLog(NodeRepository.class);
11 // private RepositoryContext repositoryContext;
13 // public NodeRepository() {
14 // setBundleContext(Activator.getBundleContext());
15 // JackrabbitNodeType type = JackrabbitNodeType.valueOf(prop(REPO_TYPE,
18 // repositoryContext = createNode(type);
19 // setCndFiles(Arrays.asList(DEFAULT_CNDS));
20 // prepareDataModel();
21 // } catch (Exception e) {
22 // throw new ArgeoException(
23 // "Cannot create Jackrabbit repository of type " + type, e);
27 // public void destroy() {
28 // ((RepositoryImpl) getRepository()).shutdown();
31 // RepositoryStatisticsImpl getRepositoryStatistics() {
32 // return repositoryContext.getRepositoryStatistics();
35 // private RepositoryConfig getConfiguration(JackrabbitNodeType type,
36 // Hashtable<String, Object> vars) throws RepositoryException {
37 // ClassLoader cl = getClass().getClassLoader();
38 // InputStream in = null;
40 // final String base = "/org/argeo/cms/internal/kernel";
43 // in = cl.getResourceAsStream(base + "/repository-h2.xml");
46 // in = cl.getResourceAsStream(base + "/repository-postgresql.xml");
49 // in = cl.getResourceAsStream(base + "/repository-memory.xml");
52 // in = cl.getResourceAsStream(base + "/repository-localfs.xml");
55 // throw new CmsException("Unsupported node type " + type);
59 // throw new CmsException("Repository configuration not found");
60 // InputSource config = new InputSource(in);
61 // Properties jackrabbitProps = new Properties();
62 // jackrabbitProps.putAll(vars);
63 // RepositoryConfig repositoryConfig = RepositoryConfig.create(config,
65 // return repositoryConfig;
67 // IOUtils.closeQuietly(in);
71 // private Hashtable<String, Object> getConfigurationProperties(
72 // JackrabbitNodeType type) {
73 // // use Hashtable to ease integration with Properties
74 // Hashtable<String, Object> defaults = new Hashtable<String, Object>();
77 // File osgiInstanceDir = KernelUtils.getOsgiInstanceDir();
78 // File homeDir = new File(osgiInstanceDir, DIR_NODE);
79 // // home cannot be overridden
80 // defaults.put(RepositoryConfigurationParser.REPOSITORY_HOME_VARIABLE,
81 // homeDir.getAbsolutePath());
84 // setProp(defaults, REPO_DEFAULT_WORKSPACE, "main");
85 // setProp(defaults, REPO_MAX_POOL_SIZE, "10");
86 // // Jackrabbit defaults
87 // setProp(defaults, REPO_BUNDLE_CACHE_MB, "8");
88 // // See http://wiki.apache.org/jackrabbit/Search
89 // setProp(defaults, REPO_EXTRACTOR_POOL_SIZE, "0");
90 // setProp(defaults, REPO_SEARCH_CACHE_SIZE, "1000");
91 // setProp(defaults, REPO_MAX_VOLATILE_INDEX_SIZE, "1048576");
97 // dburl = "jdbc:h2:" + homeDir.getPath() + "/h2/repository";
98 // setProp(defaults, REPO_DBURL, dburl);
99 // setProp(defaults, REPO_DBUSER, "sa");
100 // setProp(defaults, REPO_DBPASSWORD, "");
103 // dburl = "jdbc:postgresql://localhost/demo";
104 // setProp(defaults, REPO_DBURL, dburl);
105 // setProp(defaults, REPO_DBUSER, "argeo");
106 // setProp(defaults, REPO_DBPASSWORD, "argeo");
113 // throw new CmsException("Unsupported node type " + type);
118 // private void setProp(Dictionary<String, Object> props, String key,
119 // String defaultValue) {
120 // String value = prop(key, defaultValue);
121 // props.put(key, value);
124 // private String prop(String key, String defaultValue) {
125 // // TODO use OSGi CM instead of Framework/System properties
126 // return KernelUtils.getFrameworkProp(key, defaultValue);
129 // private RepositoryContext createNode(JackrabbitNodeType type)
130 // throws RepositoryException {
131 // Hashtable<String, Object> vars = getConfigurationProperties(type);
132 // RepositoryConfig repositoryConfig = getConfiguration(type, vars);
133 // RepositoryContext repositoryContext = createJackrabbitRepository(repositoryConfig);
134 // RepositoryImpl repository = repositoryContext.getRepository();
137 // String maxCacheMbStr = prop(REPO_MAX_CACHE_MB, null);
138 // if (maxCacheMbStr != null) {
139 // Integer maxCacheMB = Integer.parseInt(maxCacheMbStr);
140 // CacheManager cacheManager = repository.getCacheManager();
141 // cacheManager.setMaxMemory(maxCacheMB * 1024l * 1024l);
142 // cacheManager.setMaxMemoryPerCache((maxCacheMB / 4) * 1024l * 1024l);
145 // // wrap the repository
146 // setRepository(repository);
147 // return repositoryContext;
150 // private RepositoryContext createJackrabbitRepository(
151 // RepositoryConfig repositoryConfig) throws RepositoryException {
152 // long begin = System.currentTimeMillis();
154 // // Actual repository creation
156 // RepositoryContext repositoryContext = RepositoryContext
157 // .create(repositoryConfig);
159 // double duration = ((double) (System.currentTimeMillis() - begin)) / 1000;
160 // if (log.isTraceEnabled())
161 // log.trace("Created Jackrabbit repository in " + duration
162 // + " s, home: " + repositoryConfig.getHomeDir());
164 // return repositoryContext;