Package com.dubture.twig.core

Source Code of com.dubture.twig.core.ExtensionManager

/*
* This file is part of the Twig Eclipse Plugin.
*
* (c) Robert Gruendler <r.gruendler@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
package com.dubture.twig.core;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;

import com.dubture.twig.core.log.Logger;
import com.dubture.twig.core.model.ITemplateResolver;

/**
* @author Robert Gruendler <r.gruendler@gmail.com>
*
*/
public class ExtensionManager
{
   
    public static final String TEMPLATE_RESOLVER_ID = "com.dubture.twig.core.templateResolvers";
   
    private Map<String, List<?>> extensions = new HashMap<String, List<?>>();
    private static ExtensionManager instance = null;
   
    private ExtensionManager()
    {
        initResolvers();
    }
   
    private void initResolvers()
    {
       
        IConfigurationElement[] config = Platform.getExtensionRegistry()
                .getConfigurationElementsFor(TEMPLATE_RESOLVER_ID);
       
        ArrayList<ITemplateResolver> resolvers = new ArrayList<ITemplateResolver>();

        try {
            for (IConfigurationElement e : config) {
                final Object object = e.createExecutableExtension("class");
                if (object instanceof ITemplateResolver) {
                    ITemplateResolver provider = (ITemplateResolver) object;
                    resolvers.add(provider);
                }
            }
        } catch (Exception e) {
            Logger.logException(e);
        }
       
        extensions.put(TEMPLATE_RESOLVER_ID, resolvers);
       
    }
   
    public static ExtensionManager getInstance()
    {
        if (instance == null) {
            instance = new ExtensionManager();
        }
       
        return instance;
    }
   
    @SuppressWarnings("unchecked")
    public List<ITemplateResolver> getProposalExtensions()
    {
        return (List<ITemplateResolver>) extensions.get(TEMPLATE_RESOLVER_ID);
    }

    @SuppressWarnings("unchecked")
    public List<ITemplateResolver> getTemplateProviders()
    {
        if (extensions.containsKey(TEMPLATE_RESOLVER_ID)) {
            return (List<ITemplateResolver>) extensions.get(TEMPLATE_RESOLVER_ID);
        }
       
        IConfigurationElement[] config = Platform.getExtensionRegistry()
                .getConfigurationElementsFor(TEMPLATE_RESOLVER_ID);
       
         ArrayList<ITemplateResolver> providers = new ArrayList<ITemplateResolver>();

        try {
            for (IConfigurationElement e : config) {
                final Object object = e.createExecutableExtension("class");
                if (object instanceof ITemplateResolver) {
                    ITemplateResolver provider = (ITemplateResolver) object;
                    providers.add(provider);
                }
            }
        } catch (Exception e) {
            Logger.logException(e);
        }

        extensions.put(TEMPLATE_RESOLVER_ID, providers);
        return providers;
    }

}
TOP

Related Classes of com.dubture.twig.core.ExtensionManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.