1 // The contents of this file are subject to the Mozilla Public License Version 2 // 1.1 3 //(the "License"); you may not use this file except in compliance with the 4 //License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ 5 // 6 //Software distributed under the License is distributed on an "AS IS" basis, 7 //WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 8 //for the specific language governing rights and 9 //limitations under the License. 10 // 11 //The Original Code is "The Columba Project" 12 // 13 //The Initial Developers of the Original Code are Frederik Dietz and Timo 14 // Stich. 15 //Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003. 16 // 17 //All Rights Reserved. 18 package org.columba.api.plugin; 19 20 21 22 /** 23 * An extension providing the metadata of an extension and the runtime 24 * context for instanciation. 25 * 26 * @author fdietz 27 */ 28 public interface IExtension { 29 30 /** 31 * Get extension metadata, describing the extension and the 32 * runtime context. 33 * 34 * @return 35 */ 36 public ExtensionMetadata getMetadata(); 37 38 /** 39 * Instanciate the extension. Method automatically uses the 40 * constructor matching the argument list 41 * 42 * @param arguments argument array 43 * @return extension instance 44 * @throws PluginException 45 */ 46 public IExtensionInterface instanciateExtension(Object[] arguments) throws PluginException; 47 48 /** 49 * Check if this is an internal extension. If its an external 50 * extension, then its specified using the <code>plugin.xml</code 51 * file and uses a different classloader. 52 * 53 * @return true, if extension is internal. False, otherwise. 54 * 55 */ 56 public boolean isInternal(); 57 58 /** 59 * An extension can be disabled if an error occured on instanciation. 60 * @return true, if enabled. False, otherwise. 61 */ 62 public boolean isEnabled(); 63 64 } 65