]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeRepository.java
[maven-release-plugin] prepare for next development iteration
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / NodeRepository.java
1 package org.argeo.cms.internal.kernel;
2
3 import org.argeo.jackrabbit.JackrabbitWrapper;
4 import org.argeo.jcr.ArgeoJcrConstants;
5
6 /** Jacrabbit based data layer */
7 class NodeRepository extends JackrabbitWrapper implements KernelConstants,
8 ArgeoJcrConstants {
9 // private static Log log = LogFactory.getLog(NodeRepository.class);
10 //
11 // private RepositoryContext repositoryContext;
12 //
13 // public NodeRepository() {
14 // setBundleContext(Activator.getBundleContext());
15 // JackrabbitNodeType type = JackrabbitNodeType.valueOf(prop(REPO_TYPE,
16 // h2.name()));
17 // try {
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);
24 // }
25 // }
26 //
27 // public void destroy() {
28 // ((RepositoryImpl) getRepository()).shutdown();
29 // }
30 //
31 // RepositoryStatisticsImpl getRepositoryStatistics() {
32 // return repositoryContext.getRepositoryStatistics();
33 // }
34 //
35 // private RepositoryConfig getConfiguration(JackrabbitNodeType type,
36 // Hashtable<String, Object> vars) throws RepositoryException {
37 // ClassLoader cl = getClass().getClassLoader();
38 // InputStream in = null;
39 // try {
40 // final String base = "/org/argeo/cms/internal/kernel";
41 // switch (type) {
42 // case h2:
43 // in = cl.getResourceAsStream(base + "/repository-h2.xml");
44 // break;
45 // case postgresql:
46 // in = cl.getResourceAsStream(base + "/repository-postgresql.xml");
47 // break;
48 // case memory:
49 // in = cl.getResourceAsStream(base + "/repository-memory.xml");
50 // break;
51 // case localfs:
52 // in = cl.getResourceAsStream(base + "/repository-localfs.xml");
53 // break;
54 // default:
55 // throw new CmsException("Unsupported node type " + type);
56 // }
57 //
58 // if (in == null)
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,
64 // jackrabbitProps);
65 // return repositoryConfig;
66 // } finally {
67 // IOUtils.closeQuietly(in);
68 // }
69 // }
70 //
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>();
75 //
76 // // home
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());
82 //
83 // // common
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");
92 //
93 // // specific
94 // String dburl;
95 // switch (type) {
96 // case h2:
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, "");
101 // break;
102 // case postgresql:
103 // dburl = "jdbc:postgresql://localhost/demo";
104 // setProp(defaults, REPO_DBURL, dburl);
105 // setProp(defaults, REPO_DBUSER, "argeo");
106 // setProp(defaults, REPO_DBPASSWORD, "argeo");
107 // break;
108 // case memory:
109 // break;
110 // case localfs:
111 // break;
112 // default:
113 // throw new CmsException("Unsupported node type " + type);
114 // }
115 // return defaults;
116 // }
117 //
118 // private void setProp(Dictionary<String, Object> props, String key,
119 // String defaultValue) {
120 // String value = prop(key, defaultValue);
121 // props.put(key, value);
122 // }
123 //
124 // private String prop(String key, String defaultValue) {
125 // // TODO use OSGi CM instead of Framework/System properties
126 // return KernelUtils.getFrameworkProp(key, defaultValue);
127 // }
128 //
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();
135 //
136 // // cache
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);
143 // }
144 //
145 // // wrap the repository
146 // setRepository(repository);
147 // return repositoryContext;
148 // }
149 //
150 // private RepositoryContext createJackrabbitRepository(
151 // RepositoryConfig repositoryConfig) throws RepositoryException {
152 // long begin = System.currentTimeMillis();
153 // //
154 // // Actual repository creation
155 // //
156 // RepositoryContext repositoryContext = RepositoryContext
157 // .create(repositoryConfig);
158 //
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());
163 //
164 // return repositoryContext;
165 // }
166 }