extensionmodel.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 98 行

JAVA
98
字号
/*
 * $Id: ExtensionModel.java,v 1.1 2003/11/25 11:41:49 epr Exp $
 */
package org.jnode.plugin.model;

import java.util.ArrayList;
import java.util.Iterator;

import nanoxml.XMLElement;

import org.jnode.plugin.ConfigurationElement;
import org.jnode.plugin.Extension;
import org.jnode.plugin.PluginException;

/**
 * @author epr
 */
public class ExtensionModel extends PluginModelObject implements Extension {

	private final String id;
	private final String uniqueId;
	private final String point;
	private final ConfigurationElement[] elements;

	/**
	 * Create a new instance
	 * 
	 * @param e
	 */
	public ExtensionModel(PluginDescriptorModel plugin, XMLElement e) 
	throws PluginException {
		super(plugin);
		point = getAttribute(e, "point", true);
		id = getAttribute(e, "id", false);

		final ArrayList list = new ArrayList();
		for (Iterator i = e.getChildren().iterator(); i.hasNext();) {
			final XMLElement ce = (XMLElement) i.next();
			list.add(new ConfigurationElementModel(plugin, ce));
		}
		elements = (ConfigurationElement[]) list.toArray(new ConfigurationElement[list.size()]);

		if (id != null) {
			if (id.indexOf('.') >= 0) {
				throw new PluginException("id cannot contain an '.' character");
			}
			uniqueId = plugin.getId() + "." + id;
		} else {
			uniqueId = null;
		}
	}

	protected void resolve() throws PluginException {
		final ExtensionPointModel ep = (ExtensionPointModel) getDeclaringPluginDescriptor().getPluginRegistry().getExtensionPoint(point);
		if (ep == null) {
			throw new PluginException("Unknown extension-point " + point);
		} else {
			ep.add(this);
		}
	}

	/**
	 * Returns the simple identifier of this extension, or null if this extension does not have an
	 * identifier. This identifier is specified in the plug-in manifest (plugin.xml) file as a
	 * non-empty string containing no period characters ('.') and must be unique within the
	 * defining plug-in.
	 */
	public String getSimpleIdentifier() {
		return id;
	}

	/**
	 * Returns the unique identifier of this extension, or null if this extension does not have an
	 * identifier. If available, this identifier is unique within the plug-in registry, and is
	 * composed of the identifier of the plug-in that declared this extension and this extension's
	 * simple identifier.
	 */
	public String getUniqueIdentifier() {
		return uniqueId;
	}

	/**
	 * Gets all child elements
	 * 
	 * @return List<Element>
	 */
	public ConfigurationElement[] getConfigurationElements() {
		return elements;
	}

	/**
	 * Gets the name of the extension-point this extension connects to.
	 */
	public String getExtensionPointUniqueIdentifier() {
		return point;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?