]> git.argeo.org Git - lgpl/argeo-commons.git/blob - jcr/org.argeo.cms.jcr/src/org/argeo/cms/internal/jcr/JcrInitUtils.java
Disable OSGi configuration admin and LDIF-based deploy config.
[lgpl/argeo-commons.git] / jcr / org.argeo.cms.jcr / src / org / argeo / cms / internal / jcr / JcrInitUtils.java
1 package org.argeo.cms.internal.jcr;
2
3 import java.net.URI;
4 import java.net.URISyntaxException;
5 import java.util.Dictionary;
6 import java.util.HashMap;
7 import java.util.Hashtable;
8 import java.util.Map;
9
10 import javax.jcr.Repository;
11 import javax.jcr.RepositoryException;
12 import javax.jcr.RepositoryFactory;
13
14 import org.argeo.api.cms.CmsDeployment;
15 import org.argeo.api.cms.CmsLog;
16 import org.argeo.api.cms.CmsConstants;
17 import org.argeo.jackrabbit.client.ClientDavexRepositoryFactory;
18 import org.argeo.jcr.JcrException;
19 import org.argeo.util.naming.LdapAttrs;
20 import org.osgi.framework.BundleContext;
21 import org.osgi.framework.Constants;
22 import org.osgi.framework.FrameworkUtil;
23
24 /** JCR specific init utilities. */
25 @Deprecated
26 public class JcrInitUtils {
27 private final static CmsLog log = CmsLog.getLog(JcrInitUtils.class);
28 private final static BundleContext bundleContext = FrameworkUtil.getBundle(JcrInitUtils.class).getBundleContext();
29
30 // public static void addToDeployment(CmsDeployment nodeDeployment) {
31 // // node repository
32 //// Dictionary<String, Object> provided = null;
33 // Dictionary<String, Object> provided = nodeDeployment.getProps(CmsConstants.NODE_REPOS_FACTORY_PID,
34 // CmsConstants.NODE);
35 // Dictionary<String, Object> nodeConfig = JcrInitUtils.getNodeRepositoryConfig(provided);
36 // // node repository is mandatory
37 // nodeDeployment.addFactoryDeployConfig(CmsConstants.NODE_REPOS_FACTORY_PID, nodeConfig);
38 //
39 // // additional repositories
40 //// dataModels: for (DataModels.DataModel dataModel : dataModels.getNonAbstractDataModels()) {
41 //// if (NodeConstants.NODE_REPOSITORY.equals(dataModel.getName()))
42 //// continue dataModels;
43 //// Dictionary<String, Object> config = JcrInitUtils.getRepositoryConfig(dataModel.getName(),
44 //// getProps(NodeConstants.NODE_REPOS_FACTORY_PID, dataModel.getName()));
45 //// if (config.size() != 0)
46 //// putFactoryDeployConfig(NodeConstants.NODE_REPOS_FACTORY_PID, config);
47 //// }
48 //
49 // }
50
51 /** Override the provided config with the framework properties */
52 public static Dictionary<String, Object> getNodeRepositoryConfig(Dictionary<String, Object> provided) {
53 Dictionary<String, Object> props = provided != null ? provided : new Hashtable<String, Object>();
54 for (RepoConf repoConf : RepoConf.values()) {
55 Object value = getFrameworkProp(CmsConstants.NODE_REPO_PROP_PREFIX + repoConf.name());
56 if (value != null) {
57 props.put(repoConf.name(), value);
58 if (log.isDebugEnabled())
59 log.debug("Set node repo configuration " + repoConf.name() + " to " + value);
60 }
61 }
62 props.put(CmsConstants.CN, CmsConstants.NODE_REPOSITORY);
63 return props;
64 }
65
66 // public static Dictionary<String, Object> getRepositoryConfig(String dataModelName,
67 // Dictionary<String, Object> provided) {
68 // if (dataModelName.equals(CmsConstants.NODE_REPOSITORY) || dataModelName.equals(CmsConstants.EGO_REPOSITORY))
69 // throw new IllegalArgumentException("Data model '" + dataModelName + "' is reserved.");
70 // Dictionary<String, Object> props = provided != null ? provided : new Hashtable<String, Object>();
71 // for (RepoConf repoConf : RepoConf.values()) {
72 // Object value = getFrameworkProp(
73 // CmsConstants.NODE_REPOS_PROP_PREFIX + dataModelName + '.' + repoConf.name());
74 // if (value != null) {
75 // props.put(repoConf.name(), value);
76 // if (log.isDebugEnabled())
77 // log.debug("Set " + dataModelName + " repo configuration " + repoConf.name() + " to " + value);
78 // }
79 // }
80 // if (props.size() != 0)
81 // props.put(CmsConstants.CN, dataModelName);
82 // return props;
83 // }
84
85 private static void registerRemoteInit(String uri) {
86 try {
87 Repository repository = createRemoteRepository(new URI(uri));
88 Hashtable<String, Object> properties = new Hashtable<>();
89 properties.put(CmsConstants.CN, CmsConstants.NODE_INIT);
90 properties.put(LdapAttrs.labeledURI.name(), uri);
91 properties.put(Constants.SERVICE_RANKING, -1000);
92 bundleContext.registerService(Repository.class, repository, properties);
93 } catch (RepositoryException e) {
94 throw new JcrException(e);
95 } catch (URISyntaxException e) {
96 throw new IllegalArgumentException(e);
97 }
98 }
99
100 private static Repository createRemoteRepository(URI uri) throws RepositoryException {
101 RepositoryFactory repositoryFactory = new ClientDavexRepositoryFactory();
102 Map<String, String> params = new HashMap<String, String>();
103 params.put(ClientDavexRepositoryFactory.JACKRABBIT_DAVEX_URI, uri.toString());
104 // TODO make it configurable
105 params.put(ClientDavexRepositoryFactory.JACKRABBIT_REMOTE_DEFAULT_WORKSPACE, CmsConstants.SYS_WORKSPACE);
106 return repositoryFactory.getRepository(params);
107 }
108
109 private static String getFrameworkProp(String key, String def) {
110 String value;
111 if (bundleContext != null)
112 value = bundleContext.getProperty(key);
113 else
114 value = System.getProperty(key);
115 if (value == null)
116 return def;
117 return value;
118 }
119
120 private static String getFrameworkProp(String key) {
121 return getFrameworkProp(key, null);
122 }
123
124 }