import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.wiring.BundleCapability;
import org.osgi.framework.wiring.BundleWire;
import org.osgi.service.useradmin.UserAdmin;
import org.osgi.util.tracker.ServiceTracker;
+/** Implementation of a CMS deployment. */
public class CmsDeployment implements NodeDeployment {
- // private final static String LEGACY_JCR_REPOSITORY_ALIAS =
- // "argeo.jcr.repository.alias";
-
private final Log log = LogFactory.getLog(getClass());
private final BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
private DataModels dataModels;
private DeployConfig deployConfig;
- private HomeRepository homeRepository;
private Long availableSince;
if (nodeHttp != null)
nodeHttp.destroy();
+ try {
+ for (ServiceReference<JackrabbitLocalRepository> sr : bc
+ .getServiceReferences(JackrabbitLocalRepository.class, null)) {
+ bc.getService(sr).destroy();
+ }
+ } catch (InvalidSyntaxException e1) {
+ log.error("Cannot sclean repsoitories", e1);
+ }
+
try {
JettyConfigurator.stopServer(KernelConstants.DEFAULT_JETTY_SERVER);
} catch (Exception e) {
JcrUtils.logoutQuietly(adminSession);
}
- Hashtable<String, String> regProps = new Hashtable<String, String>();
- regProps.put(NodeConstants.CN, NodeConstants.HOME);
- // regProps.put(LEGACY_JCR_REPOSITORY_ALIAS, NodeConstants.HOME);
- homeRepository = new HomeRepository(deployedRepository, false);
- // register
- bc.registerService(Repository.class, homeRepository, regProps);
+ // Publish home with the highest service ranking
+ Hashtable<String, Object> regProps = new Hashtable<>();
+ regProps.put(NodeConstants.CN, NodeConstants.EGO);
+ regProps.put(Constants.SERVICE_RANKING, Integer.MAX_VALUE);
+ Repository egoRepository = new EgoRepository(deployedRepository, false);
+ bc.registerService(Repository.class, egoRepository, regProps);
// Keyring only if Argeo extensions are available
if (argeoDataModelExtensionsAvailable) {
@Override
public CallbackHandler addingService(ServiceReference<CallbackHandler> reference) {
- NodeKeyRing nodeKeyring = new NodeKeyRing(homeRepository);
+ NodeKeyRing nodeKeyring = new NodeKeyRing(egoRepository);
CallbackHandler callbackHandler = bc.getService(reference);
nodeKeyring.setDefaultCallbackHandler(callbackHandler);
bc.registerService(LangUtils.names(Keyring.class, CryptoKeyring.class, ManagedService.class),
private void publishLocalRepo(String dataModelName, Repository repository) {
Hashtable<String, Object> properties = new Hashtable<>();
- // properties.put(LEGACY_JCR_REPOSITORY_ALIAS, name);
properties.put(NodeConstants.CN, dataModelName);
- if (dataModelName.equals(NodeConstants.NODE))
- properties.put(Constants.SERVICE_RANKING, Integer.MAX_VALUE);
LocalRepository localRepository;
- if (repository instanceof RepositoryImpl)
+ String[] classes;
+ if (repository instanceof RepositoryImpl) {
localRepository = new JackrabbitLocalRepository((RepositoryImpl) repository, dataModelName);
- else
+ classes = new String[] { Repository.class.getName(), LocalRepository.class.getName(),
+ JackrabbitLocalRepository.class.getName() };
+ } else {
localRepository = new LocalRepository(repository, dataModelName);
- bc.registerService(Repository.class, localRepository, properties);
+ classes = new String[] { Repository.class.getName(), LocalRepository.class.getName() };
+ }
+ bc.registerService(classes, localRepository, properties);
if (log.isTraceEnabled())
log.trace("Published data model " + dataModelName);
}