001: /*******************************************************************************
002: * Copyright (c) 2000, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.pde.core.plugin;
011:
012: import org.eclipse.core.runtime.CoreException;
013: import org.eclipse.pde.core.IIdentifiable;
014:
015: /**
016: * A model object that represents the content of a plug-in or
017: * fragment manifest. This object contains data that is common
018: * for bo plug-ins and fragments.
019: */
020: public interface IPluginBase extends IExtensions, IIdentifiable {
021: /**
022: * A property that will be used to notify that
023: * the provider name has changed.
024: */
025: String P_PROVIDER = "provider-name"; //$NON-NLS-1$
026: /**
027: * A property that will be used to notify
028: * that a version has changed.
029: */
030: String P_VERSION = "version"; //$NON-NLS-1$
031:
032: /**
033: * A property that will be used to notify
034: * that library order in a plug-in has changed.
035: */
036: String P_LIBRARY_ORDER = "library_order"; //$NON-NLS-1$
037:
038: /**
039: * A property that will be used to notify
040: * that import order in a plug-in has changed.
041: */
042: String P_IMPORT_ORDER = "import_order"; //$NON-NLS-1$
043:
044: /**
045: * A property that will be used to notify
046: * that 3.0 release compatibility flag has been changed.
047: */
048: String P_SCHEMA_VERSION = "schema-version"; //$NON-NLS-1$
049:
050: /**
051: * Adds a new library to this plugin.
052: * This method will throw a CoreException if
053: * model is not editable.
054: *
055: * @param library the new library
056: */
057: void add(IPluginLibrary library) throws CoreException;
058:
059: /**
060: * Adds a new plug-in import to this plugin.
061: * This method will throw a CoreException if
062: * model is not editable.
063: *
064: * @param pluginImport the new import object
065: */
066: void add(IPluginImport pluginImport) throws CoreException;
067:
068: /**
069: * Removes an import from the plugin. This
070: * method will throw a CoreException if
071: * the model is not editable.
072: *
073: * @param pluginImport the import object
074: */
075: void remove(IPluginImport pluginImport) throws CoreException;
076:
077: /**
078: * Returns libraries referenced in this plug-in.
079: *
080: * @return an array of libraries
081: */
082: IPluginLibrary[] getLibraries();
083:
084: /**
085: * Returns imports defined in this plug-in.
086: *
087: * @return an array of import objects
088: */
089: IPluginImport[] getImports();
090:
091: /**
092: * Returns a name of the plug-in provider.
093: *
094: * @return plug-in provider name
095: */
096: String getProviderName();
097:
098: /**
099: * Returns this plug-in's version
100: * @return the version of the plug-in
101: */
102: String getVersion();
103:
104: /**
105: * Removes a library from the plugin. This
106: * method will throw a CoreException if
107: * the model is not editable.
108: *
109: * @param library the library object
110: */
111: void remove(IPluginLibrary library) throws CoreException;
112:
113: /**
114: * Sets the name of the plug-in provider.
115: * This method will throw a CoreException
116: * if the model is not editable.
117: *
118: * @param providerName the new provider name
119: */
120: void setProviderName(String providerName) throws CoreException;
121:
122: /**
123: * Sets the version of the plug-in.
124: * This method will throw a CoreException
125: * if the model is not editable.
126: *
127: * @param version the new plug-in version
128: */
129: void setVersion(String version) throws CoreException;
130:
131: /**
132: * Swaps the positions of the provided libraries
133: * in the list of libraries. Libraries are looked up
134: * by the class loader in the order of declaration.
135: * If two libraries contain classes with the same
136: * name, library order will determine which one is
137: * encountered first.
138: *
139: * @param l1 the first library object
140: * @param l2 the second library object
141: */
142: void swap(IPluginLibrary l1, IPluginLibrary l2)
143: throws CoreException;
144:
145: /**
146: * Swaps the positions of the plug-ins provided in
147: * in the dependency list. This order is the one used
148: * used by the classloader when loading classes.
149: *
150: * @param import1 the first import object
151: * @param import2 the second import object
152: */
153: void swap(IPluginImport import1, IPluginImport import2)
154: throws CoreException;
155:
156: /**
157: * Returns version of the manifest grammar
158: * @return version of the manifest grammar, or <samp>null</samp>
159: */
160: String getSchemaVersion();
161:
162: /**
163: * Sets the R3.0 compatibility flag
164: * @param schemaVersion version of the manifest grammar
165: */
166: void setSchemaVersion(String schemaVersion) throws CoreException;
167:
168: }
|