]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryService.java
Re-add org.argeo.cms.util.useradmin
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / RepositoryService.java
1 package org.argeo.cms.internal.kernel;
2
3 import java.util.Dictionary;
4 import java.util.Hashtable;
5 import java.util.List;
6 import java.util.Locale;
7
8 import org.apache.jackrabbit.core.RepositoryContext;
9 import org.argeo.ArgeoException;
10 import org.argeo.jcr.ArgeoJcrConstants;
11 import org.argeo.node.RepoConf;
12 import org.osgi.framework.BundleContext;
13 import org.osgi.framework.FrameworkUtil;
14 import org.osgi.framework.ServiceRegistration;
15 import org.osgi.service.cm.ConfigurationException;
16 import org.osgi.service.cm.ManagedService;
17 import org.osgi.service.metatype.MetaTypeProvider;
18 import org.osgi.service.metatype.ObjectClassDefinition;
19
20 public class RepositoryService implements ManagedService, MetaTypeProvider {
21 private BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
22 // private RepositoryContext repositoryContext = null;
23 private ServiceRegistration<RepositoryContext> repositoryContextReg;
24
25 @Override
26 public void updated(Dictionary<String, ?> properties) throws ConfigurationException {
27 if (properties == null)
28 return;
29
30 if (repositoryContextReg != null) {
31 shutdown();
32 }
33
34 // for (String key : LangUtils.keys(properties)) {
35 // Object value = properties.get(key);
36 // System.out.println(key + " : " + value.getClass().getName());
37 // }
38
39 try {
40 RepositoryBuilder repositoryBuilder = new RepositoryBuilder();
41 RepositoryContext repositoryContext = repositoryBuilder.createRepositoryContext(properties);
42 Dictionary<String, Object> props = new Hashtable<>();
43 props.put(ArgeoJcrConstants.JCR_REPOSITORY_URI, properties.get(RepoConf.labeledUri.name()));
44 Object cn = properties.get(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS);
45 if (cn != null) {
46 props.put(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS, cn);
47 }
48 repositoryContextReg = bc.registerService(RepositoryContext.class, repositoryContext, props);
49 } catch (Exception e) {
50 throw new ArgeoException("Cannot create Jackrabbit repository", e);
51 }
52
53 }
54
55 public void shutdown() {
56 if (repositoryContextReg == null)
57 return;
58 RepositoryContext repositoryContext = bc.getService(repositoryContextReg.getReference());
59 repositoryContext.getRepository().shutdown();
60 repositoryContextReg.unregister();
61 repositoryContextReg = null;
62 }
63
64 /*
65 * METATYPE
66 */
67 @Override
68 public ObjectClassDefinition getObjectClassDefinition(String id, String locale) {
69 return new RepoConf.OCD(locale);
70 // return new EnumOCD<>(RepoConf.class);
71 // return new JcrRepositoryOCD(locale);
72 }
73
74 @Override
75 public String[] getLocales() {
76 // TODO optimize?
77 List<Locale> locales = Activator.getNodeState().getLocales();
78 String[] res = new String[locales.size()];
79 for (int i = 0; i < locales.size(); i++)
80 res[i] = locales.get(i).toString();
81 return res;
82 }
83
84 /*
85 * JACKRABBIT REPOSITORY
86 */
87
88 // private RepositoryImpl repo() {
89 // return repositoryContext.getRepository();
90 // }
91 //
92 // @Override
93 // public String[] getDescriptorKeys() {
94 // return repo().getDescriptorKeys();
95 // }
96 //
97 // @Override
98 // public boolean isStandardDescriptor(String key) {
99 // return repo().isStandardDescriptor(key);
100 // }
101 //
102 // @Override
103 // public boolean isSingleValueDescriptor(String key) {
104 // return repo().isSingleValueDescriptor(key);
105 // }
106 //
107 // @Override
108 // public Value getDescriptorValue(String key) {
109 // return repo().getDescriptorValue(key);
110 // }
111 //
112 // @Override
113 // public Value[] getDescriptorValues(String key) {
114 // return repo().getDescriptorValues(key);
115 // }
116 //
117 // @Override
118 // public String getDescriptor(String key) {
119 // return repo().getDescriptor(key);
120 // }
121 //
122 // @Override
123 // public Session login(Credentials credentials, String workspaceName)
124 // throws LoginException, NoSuchWorkspaceException, RepositoryException {
125 // return repo().login();
126 // }
127 //
128 // @Override
129 // public Session login(Credentials credentials) throws LoginException,
130 // RepositoryException {
131 // return repo().login(credentials);
132 // }
133 //
134 // @Override
135 // public Session login(String workspaceName) throws LoginException,
136 // NoSuchWorkspaceException, RepositoryException {
137 // return repo().login(workspaceName);
138 // }
139 //
140 // @Override
141 // public Session login() throws LoginException, RepositoryException {
142 // return repo().login();
143 // }
144 //
145 // @Override
146 // public Session login(Credentials credentials, String workspaceName,
147 // Map<String, Object> attributes)
148 // throws LoginException, NoSuchWorkspaceException, RepositoryException {
149 // return repo().login(credentials, workspaceName, attributes);
150 // }
151
152 }