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(); ArrayListtrans = 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