Package org.jnode.build

Source Code of org.jnode.build.AbstractPluginsTask

/*
* $Id$
*
* Copyright (C) 2003-2014 JNode.org
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library 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 Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; If not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.jnode.build;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.tools.ant.Project;
import org.jnode.plugin.PluginDescriptor;
import org.jnode.plugin.PluginException;
import org.jnode.plugin.PluginPrerequisite;
import org.jnode.plugin.PluginRegistry;
import org.jnode.plugin.model.Factory;

/**
* @author epr
*/
public abstract class AbstractPluginsTask extends AbstractPluginTask {

    private PluginList pluginList;

    private File pluginListFile;

    private PluginList systemPluginList;

    private File systemPluginListFile;

    /**
     * Gets the pluginlist.
     *
     * @return The list
     * @throws PluginException
     * @throws MalformedURLException
     */
    public PluginList getPluginList() throws PluginException,
        MalformedURLException {
        if (pluginList == null) {
            pluginList = new PluginList(pluginListFile, pluginDir, targetArch);
        }
        return pluginList;
    }

    /**
     * @return The plugin list file
     */
    protected File getPluginListFile() {
        return pluginListFile;
    }

    /**
     * Get a pluginregistry containing the loaded plugins.
     *
     * @return The registry
     * @throws PluginException
     * @throws MalformedURLException
     */
    protected PluginRegistry getPluginRegistry() throws PluginException,
        MalformedURLException {
        final PluginRegistry piRegistry;
        final URL[] plugins = getPluginList().getPluginList();
        final URL[] systemPlugins = getSystemPluginList().getPluginList();
        final URL[] all = new URL[systemPlugins.length + plugins.length];
        System.arraycopy(systemPlugins, 0, all, 0, systemPlugins.length);
        System.arraycopy(plugins, 0, all, systemPlugins.length, plugins.length);
        piRegistry = Factory.createRegistry(all);
        return piRegistry;
    }

    /**
     * Gets the pluginlist.
     *
     * @return The list
     * @throws PluginException
     * @throws MalformedURLException
     */
    protected PluginList getSystemPluginList() throws PluginException,
        MalformedURLException {
        if (systemPluginList == null) {
            systemPluginList = new PluginList(systemPluginListFile, pluginDir,
                targetArch);
        }
        return systemPluginList;
    }

    /**
     * @return Returns the systemPluginListFile.
     */
    public final File getSystemPluginListFile() {
        return systemPluginListFile;
    }

    /**
     * @param file
     */
    public void setPluginList(File file) {
        pluginListFile = file;
    }

    /**
     * @param systemPluginListFile The systemPluginListFile to set.
     */
    public final void setSystemPluginList(File systemPluginListFile) {
        this.systemPluginListFile = systemPluginListFile;
    }

    /**
     * Ensure that all plugin prerequisites are met.
     *
     * @param registry
     * @throws BuildException
     */
    protected void testPluginPrerequisites(PluginRegistry registry)
        throws BuildException {

        for (PluginDescriptor descr : registry) {
            if (!descr.isSystemPlugin()) {
                log(descr.getId() + " is not a system plugin", Project.MSG_WARN);
            }
            final PluginPrerequisite[] prereqs = descr.getPrerequisites();
            for (int j = 0; j < prereqs.length; j++) {
                if (registry.getPluginDescriptor(prereqs[j].getPluginReference().getId()) == null) {
                    throw new BuildException("Cannot find plugin "
                        + prereqs[j].getPluginReference()
                        + ", which is required by " + descr.getId());
                }
            }
        }
    }

}
TOP

Related Classes of org.jnode.build.AbstractPluginsTask

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.