# Interface IPluginBase

All Superinterfaces:
  `IAdaptable, IExtensions, IIdentifiable, IPluginObject, IWritable`

All Known Subinterfaces:
  `IFragment, IPlugin`

public interface IPluginBase extends IExtensions, IIdentifiable
A model object that represents the content of a plug-in or fragment manifest. This object contains data that is common for both plug-ins and fragments.

Restriction:
  This interface is not intended to be implemented by clients.
Restriction:
  This interface is not intended to be extended by clients.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`P_IMPORT_ORDER`
A property that will be used to notify that import order in a plug-in has changed.
`static final String`
`P_LIBRARY_ORDER`
A property that will be used to notify that library order in a plug-in has changed.
`static final String`
`P_PROVIDER`
A property that will be used to notify that the provider name has changed.
`static final String`
`P_SCHEMA_VERSION`
A property that will be used to notify that 3.0 release compatibility flag has been changed.
`static final String`
`P_VERSION`
A property that will be used to notify that a version has changed.

### Fields inherited from interface IExtensions

`P_EXTENSION_ORDER`

### Fields inherited from interface IIdentifiable

`P_ID`

### Fields inherited from interface IPluginObject

`P_NAME`

## Method Summary

Modifier and Type
Method
Description
`void`
`add(IPluginImport pluginImport)`
Adds a new plug-in import to this plugin.
`void`
`add(IPluginLibrary library)`
Adds a new library to this plugin.
`default boolean`
`exportsExternalAnnotations()`
Returns whether this plugin exports its external annotations (.eea files) to be considered by clients performing annotation based null analysis.
`IPluginImport[]`
`getImports()`
Returns imports defined in this plug-in.
`IPluginLibrary[]`
`getLibraries()`
Returns libraries referenced in this plug-in.
`String`
`getProviderName()`
Returns a name of the plug-in provider.
`String`
`getSchemaVersion()`
Returns version of the manifest grammar
`String`
`getVersion()`
Returns this plug-in's version
`void`
`remove(IPluginImport pluginImport)`
Removes an import from the plugin.
`void`
`remove(IPluginLibrary library)`
Removes a library from the plugin.
`void`
`setProviderName(String providerName)`
Sets the name of the plug-in provider.
`void`
`setSchemaVersion(String schemaVersion)`
Sets the R3.0 compatibility flag
`void`
`setVersion(String version)`
Sets the version of the plug-in.
`void`
`swap(IPluginImport import1, IPluginImport import2)`
Swaps the positions of the plug-ins provided in in the dependency list.
`void`
`swap(IPluginLibrary l1, IPluginLibrary l2)`
Swaps the positions of the provided libraries in the list of libraries.

### Methods inherited from interface IAdaptable

`getAdapter`

### Methods inherited from interface IExtensions

`add, add, getExtensionPoints, getExtensions, getIndexOf, remove, remove, swap`

### Methods inherited from interface IIdentifiable

`getId, setId`

### Methods inherited from interface IPluginObject

`getModel, getName, getParent, getPluginBase, getPluginModel, getResourceString, getTranslatedName, isInTheModel, isValid, setInTheModel, setName`

### Methods inherited from interface IWritable

`write`

## Field Details

### P_PROVIDER

static final String P_PROVIDER
A property that will be used to notify that the provider name has changed.

See Also:
  - Constant Field Values

### P_VERSION

static final String P_VERSION
A property that will be used to notify that a version has changed.

See Also:
  - Constant Field Values

### P_LIBRARY_ORDER

static final String P_LIBRARY_ORDER
A property that will be used to notify that library order in a plug-in has changed.

See Also:
  - Constant Field Values

### P_IMPORT_ORDER

static final String P_IMPORT_ORDER
A property that will be used to notify that import order in a plug-in has changed.

See Also:
  - Constant Field Values

### P_SCHEMA_VERSION

static final String P_SCHEMA_VERSION
A property that will be used to notify that 3.0 release compatibility flag has been changed.

See Also:
  - Constant Field Values

## Method Details

### add

void add(IPluginLibrary library) throws CoreException
Adds a new library to this plugin. This method will throw a CoreException if model is not editable.

Parameters:
  `library` - the new library
Throws:
  `CoreException` - if the model is not editable

### add

void add(IPluginImport pluginImport) throws CoreException
Adds a new plug-in import to this plugin. This method will throw a CoreException if model is not editable.

Parameters:
  `pluginImport` - the new import object
Throws:
  `CoreException` - if the model is not editable

### remove

void remove(IPluginImport pluginImport) throws CoreException
Removes an import from the plugin. This method will throw a CoreException if the model is not editable.

Parameters:
  `pluginImport` - the import object
Throws:
  `CoreException` - if the model is not editable

### getLibraries

IPluginLibrary[] getLibraries()
Returns libraries referenced in this plug-in.

Returns:
  an array of libraries

### getImports

IPluginImport[] getImports()
Returns imports defined in this plug-in.

Returns:
  an array of import objects

### getProviderName

String getProviderName()
Returns a name of the plug-in provider.

Returns:
  plug-in provider name

### getVersion

String getVersion()
Returns this plug-in's version

Returns:
  the version of the plug-in

### remove

void remove(IPluginLibrary library) throws CoreException
Removes a library from the plugin. This method will throw a CoreException if the model is not editable.

Parameters:
  `library` - the library object
Throws:
  `CoreException` - if the model is not editable

### setProviderName

void setProviderName(String providerName) throws CoreException
Sets the name of the plug-in provider. This method will throw a CoreException if the model is not editable.

Parameters:
  `providerName` - the new provider name
Throws:
  `CoreException` - if the model is not editable

### setVersion

void setVersion(String version) throws CoreException
Sets the version of the plug-in. This method will throw a CoreException if the model is not editable.

Parameters:
  `version` - the new plug-in version
Throws:
  `CoreException` - if the model is not editable

### swap

void swap(IPluginLibrary l1, IPluginLibrary l2) throws CoreException
Swaps the positions of the provided libraries in the list of libraries. Libraries are looked up by the class loader in the order of declaration. If two libraries contain classes with the same name, library order will determine which one is encountered first.

Parameters:
  `l1` - the first library object
  `l2` - the second library object
Throws:
  `CoreException` - if the model is not editable

### swap

void swap(IPluginImport import1, IPluginImport import2) throws CoreException
Swaps the positions of the plug-ins provided in in the dependency list. This order is the one used used by the classloader when loading classes.

Parameters:
  `import1` - the first import object
  `import2` - the second import object
Throws:
  `CoreException` - if the model is not editable

### getSchemaVersion

String getSchemaVersion()
Returns version of the manifest grammar

Returns:
  version of the manifest grammar, or `null`

### setSchemaVersion

void setSchemaVersion(String schemaVersion) throws CoreException
Sets the R3.0 compatibility flag

Parameters:
  `schemaVersion` - version of the manifest grammar
Throws:
  `CoreException` - if the model is not editable

### exportsExternalAnnotations

default boolean exportsExternalAnnotations()
Returns whether this plugin exports its external annotations (.eea files) to be considered by clients performing annotation based null analysis. This is read from the manifest header `Eclipse-ExportExternalAnnotations`.

Since:
  3.15