Initial Version-
package com.ibm.aglet;
/*
* @(#)AgletContext.java
*
* (c) Copyright IBM Corp. 1996, 1997, 1998
*
* IBM grants you a non-exclusive, non-transferrable License to
* use this program internally solely for the purposes of testing
* and evaluating Java Aglet API.
* You may not distribute, sublicense, lease, rent or use this
* sample program externally.
*
* THIS ROGRAM IS PROVIDED "AS IS" WITHOUT ANY WARRANTY EXPRESS OR
* IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE WARRANTY OF
* NON-INFRINGEMENT AND THE WARRANTIES OF MERCHANTIBILITY AND
* FITNESS FOR A PARTICULAR PURPOSE.
* IBM WILL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY YOU AS
* A RESULT OF USING THIS SAMPLE PROGRAM. IN NO EVENT WILL IBM BE
* LIABLE FOR ANY SPECIAL, INDIRECT CONSEQUENTIAL DAMAGES OR LOST
* PROFITS EVEN IF IBM HAS BEEN ADVISED OF THE POSSIBILITY OF THEIR
* OCCURRENCE OR LOSS OF OR DAMAGE TO YOUR RECORDS OR DATA.
* IBM WILL NOT BE LIABLE FOR ANY THIRD PARTY CLAIMS AGAINST YOU.
*/
import com.ibm.aglet.system.ContextEvent;
import com.ibm.aglet.system.ContextListener;
import com.ibm.aglet.util.ImageData;
import java.util.Properties;
import java.util.Enumeration;
import java.io.IOException;
import java.net.URL;
import java.awt.Image;
import java.applet.AudioClip;
/**
* The <tt>AgletContext</tt> interface is used by an aglet to get information
* about its environment and to send messages to the environment and other
* aglets currently active in that environment. It provides means for
* maintaining and managing running aglets in an environment where the host
* system is secured against malicious aglets.
*
* @version 1.50 $Date: 2001/07/28 06:34:04 $
* @author Danny B. Lange
* @author Mitsuru Oshima
*/
public interface AgletContext {
/**
* Adds the specified context listener to receive context events
* from this context.
* @param listener the context listener
* @exception SecurityException
*/
abstract public void addContextListener(ContextListener listener);
/**
* Clears class cache in memory.
* @param codebase the codebase of the cache to clean up. if null,
* entire cache in this context is cleared.
*/
abstract public void clearCache(URL codebase);
/**
* Creates an instance of the specified aglet class. The aglet's class
* code file can be located on the local file system as well as on a
* remote server. If the <tt>codeBase</tt> is <tt>null</tt>, the context
* will search for the code in the local system's aglet search path
* (<tt>AGLET_PATH</tt>). The createAglet method takes three arguments:
* <tt>codeBase</tt>, <tt>code</tt>, and <tt>init</tt>:
*
* @param codeBase
* <tt>codeBase</tt> specifies the base URL of the aglet class file,
* in other words, the (possibly remote) directory that contains the
* aglet's code. If this argument is <tt>null</tt>, then the directories
* specified in the local host's aglet search path are searched.
* The aglet search path works in a similar way to Java's class path.
* It is typically an environment variable that specifies a list of
* directories to be searched for aglet code files.
* @param code
* <tt>code</tt> gives the name of the file that contains the
* aglet's compiled class code. This file is relative to the base URL
* of the aglet, and cannot be absolute.
* @param init
* <tt>init</tt> is an object passed on to the aglet's onCreation
* method.
* @return the proxy of the new aglet.
* @exception AgletException if the aglets can not be created.
* @exception UnknownHostException if the given host could not be found.
* @exception ServerNotFoundException if the server could not be found.
* @exception InstantiationException if the instantiation failed.
* @exception ClassNotFoundException if the class not found.
* @see Aglet#onCreation
*/
abstract public AgletProxy createAglet(URL codeBase, String code,
Object init) throws IOException,
AgletException,
ClassNotFoundException,
InstantiationException;
/**
* Gets an enumeration of all aglets in the current context including
* deactivated aglets.
* @return a list of proxies.
*/
abstract public Enumeration getAgletProxies();
/**
* Gets an array of aglet proxies in the current context.
* @see Aglet#ACTIVE
* @see Aglet#INACTIVE
* @param type the type of aglets. ACTIVE, INACTIVE or ACTIVE | INACTIVE,
* @return a list of proxies that matches the given state.
*/
abstract public Enumeration getAgletProxies(int type);
/**
* Gets a proxy for an aglet in the current context. The selected aglet
* is specified by its identity.
* @param id the identity of the aglet.
* @return the proxy.
*/
abstract public AgletProxy getAgletProxy(AgletID id);
/**
* Gets a proxy for an aglet in a remote context. The remote context is
* identified by its URL, and the aglet is indicated by its identifier.
*
* @param contextAddress the address specifing a remote context.
* @param id the identity of the aglet.
* @return the proxy.
* @see getName
* @deprecated
*/
abstract public AgletProxy getAgletProxy(URL contextAddress, AgletID id);
/**
* Gets an audio clip.
* @param audio an absolute URL giving the location of the audio file.
* @return the Audio clip object give by the URL.
*/
abstract public AudioClip getAudioClip(URL audio);
/**
* Returns the URL of the daemon serving this context.
* @return the URL of the daemon. <tt>null</tt> if the hosting information is not available.
*/
abstract public URL getHostingURL();
/**
* Gets an image. This is a tempolary solution.
*
* @param image a serializable image data.
* @return the image object converted from the image data.
*/
abstract public Image getImage(ImageData image);
/**
* Gets an image.
* @param image an absolute URL giving the location of the image file.
* @return the image object give by the URL.
*/
abstract public Image getImage(URL image);
/**
* Gets an image data. This is a tempolary solution.
* @param image an absolute URL giving the location of the image file.
* @return the serializable image data.
*/
abstract public ImageData getImageData(URL image);
/**
* Gets the name of the context. Each context running in the same
* server can be distinguished by the name. The example of an address for
* contexts is, "atp://host.com:4434/name".
*
* @return a name of aglet context
*/
abstract public String getName();
/**
* Gets the context property indicated by the key.
* @param key the name of the context property.
* @return the value of the specified key.
*/
abstract public Object getProperty(String key);
/**
* Gets the context property indicated by the key and default value.
* @param key the name of the context property.
* @param def the value to use if this property is not set.
* @return the value of the specified key.
*/
abstract public Object getProperty(String key, Object def);
/**
* Sends a multicast message to the subscribers in the context.
* @param message to send
* @return ReplySet containing FutureReplies
*/
abstract public ReplySet multicastMessage(Message msg);
/**
* Removes the specified context listener.
* @param listener the context listener
* @exception SecurityException
*/
abstract public void removeContextListener(ContextListener listener);
/**
* Retracts the aglet specified by its url:
* <tt>atp://host-domain-name/#aglet-identity</tt>.
* @param url the location and aglet identity of the aglet to be retracted.
* @return the aglet proxy for the retracted aglet.
* @exception AgletException when the method failed to retract the aglet.
* @exception UnknownHostException if the specified HOST is not found.
* @exception ServerNotFoundException if the aglet server specified
* in the URL is not available.
* @exception MalformedURLException if the given url is not URI for
* an aglet.
* @exception RequestRefusedException if the retraction refused.
* @exception AgletNotFoundException if the aglet could not be found.
*
* @deprecated
*/
abstract public AgletProxy retractAglet(URL url)
throws IOException, AgletException;
/**
* Retracts the aglet specified by its url and id
* @param url the location of the aglet to be retracted.
* @param id the aglet identity of the aglet to be retracted.
* @return the aglet proxy for the retracted aglet.
* @exception AgletException when the method failed to retract the aglet.
* @exception UnknownHostException if the specified HOST is not found.
* @exception ServerNotFoundException if the aglet server specified
* in the URL is not available.
* @exception MalformedURLException if the given url is not URI for
* an aglet.
* @exception RequestRefusedException if the retraction refused.
* @exception AgletNotFoundException if the aglet could not be found.
*/
abstract public AgletProxy retractAglet(URL url, AgletID aid)
throws IOException, AgletException;
/**
* Sets the context property indicated by the key and value.
* @param key the name of the context property.
* @param value the value to be stored.
* @return the value of the specified key.
*/
abstract public void setProperty(String key, Object value);
/**
* Shows a new document. This may be ignored by the aglet context.
* @param url an url to be shown
*/
abstract public void showDocument(URL url);
/**
* Shutdown the context. This is ignored if the context is already stopped.
* @exception SecurityException if the current execution context is not
* allowd to shutdown
* @see start
*/
abstract public void shutdown();
/**
* Shutdown the context with the specific message object. This message
* object is delivered to all aglets in the context before all aglets
* are killed. This is ignored if the context is already stopped.
* @exception SecurityException if the current execution context is not
* allowd to shutdown
* @see start
*/
abstract public void shutdown(Message msg);
/**
* Starts the context. This is ignored if the context is already runnig.
* @exception SecurityException
*/
abstract public void start();
/**
* Starts the context. This is ignored if the context is already runnig.
* @param reactivate if false, it does not activate aglets in the deactivation spool
* @exception SecurityException
*/
abstract public void start(boolean reactivate);
}
| Back to SourceForge | Powered by ViewCVS 0.8 |