- public void stop(BundleContext context) throws Exception {
- kernel.destroy();
- kernel = null;
- bundleContext = null;
- }
-
- /**
- * Singleton interface to the {@link BundleContext} related to the calling
- * thread. Can be used only within the CMS bundle.
- */
- public static BundleContext getBundleContext() {
- return bundleContext;
- }
-
- /**
- * @return a String which is guaranteed to be unique between and constant
- * within a Java static context (typically a VM launch)
- */
- public final static String getSystemKey() {
- return systemKey;
+ public void stop(BundleContext bundleContext) throws Exception {
+ try {
+ if (nodeInstance != null)
+ nodeInstance.shutdown();
+ if (nodeDeployment != null)
+ nodeDeployment.shutdown();
+ if (nodeState != null)
+ nodeState.shutdown();
+
+ if (userAdminSt != null)
+ userAdminSt.close();
+
+ instance = null;
+ this.bc = null;
+ this.logReaderService = null;
+ // this.configurationAdmin = null;
+ } catch (Exception e) {
+ log.error("CMS activator shutdown failed", e);
+ }
+ }
+
+ private <T> T getService(Class<T> clazz) {
+ ServiceReference<T> sr = bc.getServiceReference(clazz);
+ if (sr == null)
+ throw new CmsException("No service available for " + clazz);
+ return bc.getService(sr);
+ }
+
+ public static NodeState getNodeState() {
+ return instance.nodeState;
+ }
+
+ public static GSSCredential getAcceptorCredentials() {
+ return getNodeUserAdmin().getAcceptorCredentials();
+ }
+
+ public static boolean isSingleUser() {
+ return getNodeUserAdmin().isSingleUser();
+ }
+
+ public static UserAdmin getUserAdmin() {
+ return (UserAdmin) getNodeUserAdmin();
+ }
+
+ private static NodeUserAdmin getNodeUserAdmin() {
+ NodeUserAdmin res;
+ try {
+ res = instance.userAdminSt.waitForService(60000);
+ } catch (InterruptedException e) {
+ throw new CmsException("Cannot retrieve Node user admin", e);
+ }
+ if (res == null)
+ throw new CmsException("No Node user admin found");
+
+ return res;
+ // ServiceReference<UserAdmin> sr =
+ // instance.bc.getServiceReference(UserAdmin.class);
+ // NodeUserAdmin userAdmin = (NodeUserAdmin) instance.bc.getService(sr);
+ // return userAdmin;
+
+ }
+
+ // static CmsSecurity getCmsSecurity() {
+ // return instance.nodeSecurity;
+ // }
+
+ public String[] getLocales() {
+ // TODO optimize?
+ List<Locale> locales = getNodeState().getLocales();
+ String[] res = new String[locales.size()];
+ for (int i = 0; i < locales.size(); i++)
+ res[i] = locales.get(i).toString();
+ return res;