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

step.functions.packages.FunctionPackagePlugin Maven / Gradle / Ivy

The newest version!
package step.functions.packages;

import ch.exense.commons.app.Configuration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import step.attachments.FileResolver;
import step.core.GlobalContext;
import step.core.collections.Collection;
import step.core.deployment.ObjectHookControllerPlugin;
import step.core.objectenricher.ObjectHookRegistry;
import step.core.plugins.AbstractControllerPlugin;
import step.core.plugins.AbstractWebPlugin;
import step.core.plugins.Ng2WebPlugin;
import step.core.plugins.Plugin;
import step.framework.server.tables.Table;
import step.framework.server.tables.TableRegistry;
import step.functions.manager.FunctionManager;
import step.functions.packages.handlers.JavaFunctionPackageHandler;
import step.functions.packages.handlers.RepositoryArtifactFunctionPackageHandler;
import step.functions.plugin.FunctionControllerPlugin;
import step.plugins.java.GeneralScriptFunctionControllerPlugin;
import step.plugins.screentemplating.ScreenTemplatePlugin;
import step.resources.ResourceManager;
import step.resources.ResourceManagerControllerPlugin;

import java.io.IOException;

@Plugin(dependencies= {ObjectHookControllerPlugin.class, ResourceManagerControllerPlugin.class, FunctionControllerPlugin.class, ScreenTemplatePlugin.class, GeneralScriptFunctionControllerPlugin.class})
public class FunctionPackagePlugin extends AbstractControllerPlugin {

	private static final Logger logger = LoggerFactory.getLogger(FunctionPackagePlugin.class);
	private FunctionPackageManager packageManager;
	private FunctionManager functionManager;
	private FunctionPackageAccessor packageAccessor;

	@Override
	public void serverStart(GlobalContext context) throws Exception {
		FileResolver fileResolver = context.getFileResolver();
		ResourceManager resourceManager = context.getResourceManager();

		packageAccessor = new FunctionPackageAccessorImpl(
				context.getCollectionFactory().getCollection("functionPackage", FunctionPackage.class));

		Configuration configuration = context.getConfiguration();
		functionManager = context.get(FunctionManager.class);
		ObjectHookRegistry objectHookRegistry = context.require(ObjectHookRegistry.class);
		packageManager = new FunctionPackageManager(packageAccessor, functionManager, resourceManager, fileResolver, configuration, objectHookRegistry);
		packageManager.registerFunctionPackageHandler(new JavaFunctionPackageHandler(fileResolver, configuration));
		packageManager.registerFunctionPackageHandler(new RepositoryArtifactFunctionPackageHandler(resourceManager, fileResolver, configuration));

		packageManager.start();

		context.put(FunctionPackageManager.class, packageManager);

		Collection functionPackageCollection = context.getCollectionFactory().getCollection("functionPackage", FunctionPackage.class);
		Table collection = new Table<>(functionPackageCollection, "kw-read", true);
		context.get(TableRegistry.class).register("functionPackage", collection);

		context.getServiceRegistrationCallback().registerService(FunctionPackageServices.class);

		context.getEntityManager().register(new FunctionPackageEntity(FunctionPackageEntity.entityName, packageAccessor, context));

		//registerWebapp(context, "/functionpackages/");
	}



	@Override
	public void initializeData(GlobalContext context) throws Exception {

		Configuration configuration = context.getConfiguration();
		String embeddedPackageFolder = configuration.getProperty("plugins.FunctionPackagePlugin.embeddedpackages.folder");
		if(embeddedPackageFolder != null) {
			EmbeddedFunctionPackageImporter embeddedFunctionPackageImporter = new EmbeddedFunctionPackageImporter(packageAccessor, packageManager);
			embeddedFunctionPackageImporter.importEmbeddedFunctionPackages(embeddedPackageFolder);
		}
	}

	@Override
	public void serverStop(GlobalContext context) {
		try {
			if (packageManager != null) {
				packageManager.close();
			}
		} catch (IOException e) {
			logger.error("Error while closing package manager", e);
		}
	}

	@Override
	public AbstractWebPlugin getWebPlugin() {
		Ng2WebPlugin webPlugin = new Ng2WebPlugin();
		webPlugin.setName("functionPackages");
		webPlugin.setEntryPoint("default");
		return webPlugin;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy