See: Description
| Interface | Description |
|---|---|
| ExtensionFactory | |
| ExtensionPoint | |
| IExtension |
Extension Definition (for adding external functionnalities in APrint or other
software)
|
| IExtensionName |
The Interface IExtensionName define a smart naming of an extension (with a version)
|
| IExtensionPoint |
Marking interface for extension points
|
| Class | Description |
|---|---|
| ChildFirstClassLoader |
Class loader for providing child class first loading
|
| ClassLoaderExtensionFactory | |
| ExtensionManager |
Class for managing extensions
|
| ExtensionPointProvider |
Helper class for providing an extension point in an application development
|
| ExtensionRepository |
This class manage a repository of extensions, by reading an xml containing
all the extension in the repository
|
| JarExtensionFactory |
A factory for creating Extension objects from jar files contained in a
folder.
|
| SimpleExtensionPoint |
public class AdvancedImporterExtension implements IExtension,
ImportersExtensionPoint, InformRepositoryExtensionPoint {
private static Logger logger = Logger
.getLogger(AdvancedImporterExtension.class);
public AdvancedImporterExtension() {
logger.debug("AdvancedImporterExtension");
}
public ExtensionPoint[] getExtensionPoints() {
return new ExtensionPoint[] {
new SimpleExtensionPoint(ImportersExtensionPoint.class, this),
new SimpleExtensionPoint(InformRepositoryExtensionPoint.class,
this) };
}
public String getName() {
return "Advanced Midi Importer";
}
public ArrayList<AbstractMidiImporter> getExtensionImporterInstance(
Scale destinationscale) {
logger.debug("getExtensionImporterInstance");
// get midi correspondance ...
if (rep == null) {
logger.warn("Rep is null ...");
return null;
}
Scale gmidi = Scale.getGammeMidiInstance();
ArrayList trans = rep.getTranspositionManager()
.findTransposition(gmidi, destinationscale);
if (trans == null || trans.size() == 0) {
logger.warn("no midi transposition for " + destinationscale);
return null;
}
if (!(trans.get(0) instanceof LinearTransposition))
{
logger.warn ("transposition is not a linear one");
return null;
}
LinearTransposition lt = (LinearTransposition)trans.get(0);
ArrayList<AbstractMidiImporter> l = new ArrayList<AbstractMidiImporter>();
l.add(new TranslatorImporter(destinationscale, lt));
return l;
}
private Repository rep = null;
public void informRepository(Repository repository) {
this.rep = repository;
}
private ExtensionManager extm;this member is initialized some where in the application.
InitExtensionPoint[] allInitPoints = ExtensionPointProvider
.getAllPoints(InitExtensionPoint.class, extm.getExtensions());
for (int i = 0; i < allInitPoints.length; i++) {
InitExtensionPoint init = allInitPoints[i];
init.init(this);
}
ExtensionPointProvider is a helper class that filter the ExtensionPoint
by type and automatically cast in with the proper interface