All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ogema.frameworkadministration.FrameworkAdministration Maven / Gradle / Ivy

/**
 * This file is part of OGEMA.
 *
 * OGEMA is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 3
 * as published by the Free Software Foundation.
 *
 * OGEMA is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with OGEMA. If not, see .
 */
package org.ogema.frameworkadministration;

import org.ogema.frameworkadministration.servlet.FAServletAppStore;
import org.ogema.accesscontrol.AccessManager;
import org.ogema.accesscontrol.PermissionManager;
import org.ogema.core.administration.AdministrationManager;
import org.ogema.core.application.Application;
import org.ogema.core.application.ApplicationManager;
import org.ogema.core.logging.OgemaLogger;
import org.ogema.core.resourcemanager.ResourceAccess;
import org.ogema.core.resourcemanager.ResourceManagement;
import org.ogema.frameworkadministration.controller.AppStoreController;
import org.ogema.frameworkadministration.controller.LoggerController;
import org.ogema.frameworkadministration.controller.UserController;
import org.ogema.frameworkadministration.servlet.FAServletLogger;
import org.ogema.frameworkadministration.servlet.FAServletUser;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.useradmin.UserAdmin;

@Component(service = Application.class)
public class FrameworkAdministration implements Application {

	protected OgemaLogger logger;
	protected ApplicationManager appMan;
	protected ResourceManagement resMan;
	protected ResourceAccess resAcc;
    
	private AppStoreController appStoreController;

	private AdministrationManager administrationManager;

	private PermissionManager permissionManager;

	UserAdmin userAdmin;

	private FAServletAppStore appStoreServlet;

	private long bundleID;
	private BundleContext bundleContext;
    
    @Activate
    public void activate(BundleContext ctx) {
        this.bundleContext = ctx;
    }

	@Override
	public void start(ApplicationManager appManager) {
		// Store references to the application manager and common services for future use.
		this.appMan = appManager;
		this.logger = appManager.getLogger();
		this.resMan = appManager.getResourceManagement();
		this.resAcc = appManager.getResourceAccess();

		logger.debug("{} started", getClass().getName());
		AccessManager accessManager = permissionManager.getAccessManager();

		LoggerController.getInstance().setAdministrationManager(administrationManager);

		UserController.getInstance().setAccessManager(accessManager);
		UserController.getInstance().setPermissionManager(permissionManager);
//		UserController.getInstance().setBundleContext(bundleContext);
		UserController.getInstance().setAdministrationManager(administrationManager);
		UserController.getInstance().setAppManager(appManager);
//		UserController.getInstance().setUserAdmin(userAdmin);

		bundleID = bundleContext.getBundle().getBundleId();

		String aliasHtml = appManager.getWebAccessManager().registerWebResource("/ogema/frameworkadminindex",
				"org/ogema/frameworkadministration/gui");
		appManager.getWebAccessManager().registerStartUrl("/ogema/frameworkadminindex/index.html");
		String aliasLoggerServlet = appManager.getWebAccessManager().registerWebResource("/apps/ogema/frameworkadmin",
				new FAServletLogger());

		String aliasUserServlet = appManager.getWebAccessManager().registerWebResource(
				"/apps/ogema/frameworkadminuser", new FAServletUser());

		appStoreServlet = new FAServletAppStore(permissionManager, bundleContext, bundleID, administrationManager,
				appStoreController);
		appStoreServlet.register(appManager.getWebAccessManager());

		logger.debug("registered html on {}", aliasHtml);
		logger.debug("registered logger servlet on {}", aliasLoggerServlet);
		logger.debug("registered user servlet on {}", aliasUserServlet);

	}

	// release resources
	@Override
	public void stop(AppStopReason reason) {
		if (appMan == null)
			return;
		appMan.getWebAccessManager().unregisterWebResource("/ogema/frameworkadminindex");
		appMan.getWebAccessManager().unregisterWebResource("/apps/ogema/frameworkadmin");
		appMan.getWebAccessManager().unregisterWebResource("/apps/ogema/frameworkadminuser");
		appStoreServlet.unregister(appMan.getWebAccessManager());
		logger.debug("{} stopped", getClass().getName());
		appMan = null;
		resAcc = null;
		resMan = null;
		logger = null;
		appStoreServlet = null;
		UserController.getInstance().setAccessManager(null);
		UserController.getInstance().setPermissionManager(null);
//		UserController.getInstance().setBundleContext(bundleContext);
		UserController.getInstance().setAdministrationManager(null);
		UserController.getInstance().setAppManager(null);
	}
    
    @Deactivate
    public void deactivate(BundleContext ctx) {
    }
    
    @Reference
    void setAdministrationManager(AdministrationManager administrationManager) {
        this.administrationManager = administrationManager;
    }

    @Reference
    void setPermissionManager(PermissionManager permissionManager) {
        this.permissionManager = permissionManager;
    }

    @Reference
    void setUserAdmin(UserAdmin userAdmin) {
        this.userAdmin = userAdmin;
    }
    
    @Reference
    void setAppStoreController(AppStoreController asc) {
        this.appStoreController = asc;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy