+++ /dev/null
-package org.argeo.cms.internal.kernel;
-
-import java.util.Dictionary;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.jackrabbit.core.RepositoryContext;
-import org.argeo.ArgeoException;
-import org.argeo.jcr.ArgeoJcrConstants;
-import org.argeo.node.RepoConf;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.service.cm.ConfigurationException;
-import org.osgi.service.cm.ManagedService;
-import org.osgi.service.metatype.MetaTypeProvider;
-import org.osgi.service.metatype.ObjectClassDefinition;
-
-public class RepositoryService implements ManagedService, MetaTypeProvider {
- private BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
- // private RepositoryContext repositoryContext = null;
- private ServiceRegistration<RepositoryContext> repositoryContextReg;
-
- @Override
- public void updated(Dictionary<String, ?> properties) throws ConfigurationException {
- if (properties == null)
- return;
-
- if (repositoryContextReg != null) {
- shutdown();
- }
-
-// for (String key : LangUtils.keys(properties)) {
-// Object value = properties.get(key);
-// System.out.println(key + " : " + value.getClass().getName());
-// }
-
- try {
- RepositoryBuilder repositoryBuilder = new RepositoryBuilder();
- RepositoryContext repositoryContext = repositoryBuilder.createRepositoryContext(properties);
- Dictionary<String, Object> props = new Hashtable<>();
- props.put(ArgeoJcrConstants.JCR_REPOSITORY_URI, properties.get(RepoConf.labeledUri.name()));
- Object cn = properties.get(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS);
- if (cn != null) {
- props.put(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS, cn);
- }
- repositoryContextReg = bc.registerService(RepositoryContext.class, repositoryContext, props);
- } catch (Exception e) {
- throw new ArgeoException("Cannot create Jackrabbit repository", e);
- }
-
- }
-
- public void shutdown() {
- if (repositoryContextReg == null)
- return;
- RepositoryContext repositoryContext = bc.getService(repositoryContextReg.getReference());
- repositoryContext.getRepository().shutdown();
- repositoryContextReg.unregister();
- repositoryContextReg = null;
- }
-
- /*
- * METATYPE
- */
- @Override
- public ObjectClassDefinition getObjectClassDefinition(String id, String locale) {
- return new RepoConf.OCD(locale);
- // return new EnumOCD<>(RepoConf.class);
- // return new JcrRepositoryOCD(locale);
- }
-
- @Override
- public String[] getLocales() {
- // TODO optimize?
- List<Locale> locales = Activator.getNodeState().getLocales();
- String[] res = new String[locales.size()];
- for (int i = 0; i < locales.size(); i++)
- res[i] = locales.get(i).toString();
- return res;
- }
-
- /*
- * JACKRABBIT REPOSITORY
- */
-
- // private RepositoryImpl repo() {
- // return repositoryContext.getRepository();
- // }
- //
- // @Override
- // public String[] getDescriptorKeys() {
- // return repo().getDescriptorKeys();
- // }
- //
- // @Override
- // public boolean isStandardDescriptor(String key) {
- // return repo().isStandardDescriptor(key);
- // }
- //
- // @Override
- // public boolean isSingleValueDescriptor(String key) {
- // return repo().isSingleValueDescriptor(key);
- // }
- //
- // @Override
- // public Value getDescriptorValue(String key) {
- // return repo().getDescriptorValue(key);
- // }
- //
- // @Override
- // public Value[] getDescriptorValues(String key) {
- // return repo().getDescriptorValues(key);
- // }
- //
- // @Override
- // public String getDescriptor(String key) {
- // return repo().getDescriptor(key);
- // }
- //
- // @Override
- // public Session login(Credentials credentials, String workspaceName)
- // throws LoginException, NoSuchWorkspaceException, RepositoryException {
- // return repo().login();
- // }
- //
- // @Override
- // public Session login(Credentials credentials) throws LoginException,
- // RepositoryException {
- // return repo().login(credentials);
- // }
- //
- // @Override
- // public Session login(String workspaceName) throws LoginException,
- // NoSuchWorkspaceException, RepositoryException {
- // return repo().login(workspaceName);
- // }
- //
- // @Override
- // public Session login() throws LoginException, RepositoryException {
- // return repo().login();
- // }
- //
- // @Override
- // public Session login(Credentials credentials, String workspaceName,
- // Map<String, Object> attributes)
- // throws LoginException, NoSuchWorkspaceException, RepositoryException {
- // return repo().login(credentials, workspaceName, attributes);
- // }
-
-}
+++ /dev/null
-package org.argeo.osgi.useradmin.internal;
-
-import java.util.Dictionary;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Map;
-
-import org.argeo.osgi.useradmin.LdapUserAdmin;
-import org.argeo.osgi.useradmin.LdifUserAdmin;
-import org.argeo.osgi.useradmin.UserAdminConf;
-import org.argeo.osgi.useradmin.UserDirectory;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.service.cm.ConfigurationException;
-import org.osgi.service.cm.ManagedServiceFactory;
-
-public class UserDirectoryFactory implements ManagedServiceFactory {
- private final BundleContext bc = FrameworkUtil.getBundle(UserDirectoryFactory.class).getBundleContext();
-
- private Map<String, UserDirectory> userDirectories = new HashMap<>();
-
- @Override
- public String getName() {
- return "User Directories Factory";
- }
-
- @Override
- public void updated(String pid, Dictionary<String, ?> properties) throws ConfigurationException {
- String uri = (String) properties.get(UserAdminConf.uri.name());
- UserDirectory userDirectory = uri.startsWith("ldap:") ? new LdapUserAdmin(properties)
- : new LdifUserAdmin(properties);
- Dictionary<String, Object> regProps = new Hashtable<>();
- regProps.put(Constants.SERVICE_PID, pid);
- regProps.put(UserAdminConf.uri.name(), uri);
- bc.registerService(UserDirectory.class, userDirectory, regProps);
- userDirectories.put(pid, userDirectory);
- }
-
- @Override
- public void deleted(String pid) {
- userDirectories.remove(pid);
- }
-
-}