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

com.katalon.platform.internal.util.PluginManifestParsingUtil Maven / Gradle / Ivy

There is a newer version: 1.0.5
Show newest version
package com.katalon.platform.internal.util;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.InvalidRegistryObjectException;
import org.osgi.framework.Bundle;

import com.katalon.platform.api.Extension;
import com.katalon.platform.api.ExtensionPoint;
import com.katalon.platform.api.Plugin;
import com.katalon.platform.api.lifecycle.ExtensionConstants;
import com.katalon.platform.api.lifecycle.ExtensionListener;
import com.katalon.platform.api.service.ApplicationManager;
import com.katalon.platform.internal.ExtensionImpl;
import com.katalon.platform.internal.ExtensionManagerImpl;
import com.katalon.platform.internal.ExtensionPointImpl;
import com.katalon.platform.internal.KatalonPluginImpl;

public class PluginManifestParsingUtil {

    public static Plugin parsePlugin(Bundle bundle, IExtensionRegistry extensionRegistry) {
        ExtensionManagerImpl extensionManager = (ExtensionManagerImpl) ApplicationManager.getInstance()
                .getExtensionManager();
        String symbolicName = bundle.getSymbolicName();
        KatalonPluginImpl pluginImpl = new KatalonPluginImpl(symbolicName);

        IExtension[] extensions = extensionRegistry.getExtensions(symbolicName);
        for (IExtension e : extensions) {
            if (e.getExtensionPointUniqueIdentifier().equals(ExtensionConstants.EXTENSION_ID)) {
                try {
                    String pluginId = e.getNamespaceIdentifier();
                    String extensionId = e.getConfigurationElements()[0].getAttribute(ExtensionConstants.ATTR_ID);
                    String extensionPointId = e.getConfigurationElements()[0]
                            .getAttribute(ExtensionConstants.ATTR_EXTENSION_POINT_ID);
                    Object implementationClass = e.getConfigurationElements()[0]
                            .createExecutableExtension(ExtensionConstants.ATTR_IMPLEMENTATION_CLASS);

                    Extension newExtension = new ExtensionImpl(pluginId, extensionId, extensionPointId,
                            implementationClass);

                    pluginImpl.addExtension(newExtension);

                    extensionManager.addExtension(extensionPointId, newExtension);
                } catch (InvalidRegistryObjectException | CoreException ex) {
                    ex.printStackTrace(System.out);
                }
            }

            if (e.getExtensionPointUniqueIdentifier().equals(ExtensionConstants.EXTENSION_POINT_ID)) {
                try {
                    String pluginId = e.getNamespaceIdentifier();
                    String extensionPointId = e.getConfigurationElements()[0].getAttribute(ExtensionConstants.ATTR_ID);
                    String interfaceClassName = e.getConfigurationElements()[0]
                            .getAttribute(ExtensionConstants.ATTR_INTERFACE_CLASS);

                    ExtensionListener serviceClass = null;
                    if (e.getConfigurationElements()[0].getAttribute(ExtensionConstants.ATTR_SERVICE_CLASS) != null) {
                        serviceClass = (ExtensionListener) e.getConfigurationElements()[0]
                                .createExecutableExtension(ExtensionConstants.ATTR_SERVICE_CLASS);
                    }

                    ExtensionPoint newExtensionPoint = new ExtensionPointImpl(pluginId, extensionPointId,
                            interfaceClassName, serviceClass);

                    pluginImpl.addExtensionPoint(newExtensionPoint);

                    extensionManager.addExtensionPoint(extensionPointId, newExtensionPoint);
                } catch (InvalidRegistryObjectException | CoreException ex) {
                    ex.printStackTrace(System.out);
                }
            }
        }
        return pluginImpl;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy