0,0 → 1,72 |
package net.outlyer.plugins; |
|
/* |
* Copyright (c) 2008, Toni Corvera. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions are met: |
* |
* * Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* * Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* |
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, |
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
|
import java.net.URI; |
|
/** |
* Provides the environment for {@link net.outlyer.plugins.Sandbox}es. |
*/ |
public abstract class PluginEnvironment { |
/** |
* Creates a sandbox associated to the script found in uri |
* @param uri Plugin uri |
* @return Sandbox associated to uri |
* @throws net.outlyer.plugins.PluginException |
*/ |
abstract public Sandbox createSandbox(final URI uri) throws PluginException; |
|
/** |
* Makes an object accessible from the plugin. |
* Note the object will be shared amongst any sandboxes created after |
* the exporting it. |
* @param name Name with which to access the object |
* @param object Object to export |
*/ |
abstract public void exportGlobalObject(final String name, final Object object); |
|
/** |
* Restricts the set of supported plugins to the ones with the given plugin |
* type (by default no restriction is applied). |
* @see PluginProperties#type |
* @param pluginTypes Set of types to allow; use null to allow all types |
*/ |
abstract public void setAcceptedTypes(final String... pluginTypes); |
|
/** |
* Defines the object to be exported as <code>plugin</code>. |
* The <code>plugin</code> object is the only one exported by default. |
* If none is set, a default one will be provided. |
* <br /> |
* <b>Note</b> that, unlike for other objects, plugin objects aren't |
* shared amongst sandboxes, a clone of the one provided will be used. |
* @param pluginObject Object to export, set to null to use a default one. |
*/ |
abstract public void setPluginObject(final BasePluginObject pluginObject); |
|
public static PluginEnvironment create() { |
return new PluginEnvironmentImpl(); |
} |
} |