From: cvs@openprivacy.orgCVS update: talon/src/java/talon
Date: Sunday February 18, 19101 @ 23:47
Author: burton
CVSWEB Options: -------------------
Main CVSWeb: http://openprivacy.org/cgi-bin/cvsweb/cvsweb.cgi
View this module: http://openprivacy.org/cgi-bin/cvsweb/cvsweb.cgi/talon/src/java/talon
-----------------------------------
Update of /usr/local/cvs/public/talon/src/java/talon
In directory giga:/tmp/cvs-serv26172/src/java/talon
Modified Files:
ComponentFactory.java ComponentHandle.java
Log Message:
named component handle passing without any additional information... we now pull a handle from the HandleManager.
*****************************************************************
File: talon/src/java/talon/ComponentFactory.java
CVSWEB Options: -------------------
CVSWeb: Annotate this file: http://openprivacy.org/cgi-bin/cvsweb/cvsweb.cgi/talon/src/java/talon/ComponentFactory.java?annotate=1.7
CVSWeb: View this file: http://openprivacy.org/cgi-bin/cvsweb/cvsweb.cgi/talon/src/java/talon/ComponentFactory.java?rev=1.7&content-type=text/x-cvsweb-markup
CVSWeb: Diff to previous version: http://openprivacy.org/cgi-bin/cvsweb/cvsweb.cgi/talon/src/java/talon/ComponentFactory.java.diff?r1=1.7&r2=1.6
-----------------------------------
Index: talon/src/java/talon/ComponentFactory.java
diff -u talon/src/java/talon/ComponentFactory.java:1.6 talon/src/java/talon/ComponentFactory.java:1.7
--- talon/src/java/talon/ComponentFactory.java:1.6 Sun Feb 11 14:02:10 2001
+++ talon/src/java/talon/ComponentFactory.java Sun Feb 18 23:47:52 2001
@@ -17,7 +17,7 @@
* Create instances of components and manage their lifetimes.
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentFactory.java,v 1.6 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentFactory.java,v 1.7 2001/02/19 07:47:52 burton Exp $
*/
public class ComponentFactory {
@@ -68,7 +68,7 @@
* Static initializer...
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentFactory.java,v 1.6 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentFactory.java,v 1.7 2001/02/19 07:47:52 burton Exp $
*/
static {
@@ -82,26 +82,44 @@
* Given a ComponentHandle get a Component
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentFactory.java,v 1.6 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentFactory.java,v 1.7 2001/02/19 07:47:52 burton Exp $
*/
public static Component getInstance( ComponentHandle handle )
throws TalonException {
Initializer.init();
- //FIXME: only smart enough to use Singletons :(
-
//FIXME: if the component we fetch isn't the correct implementation of
//the given interface... throw an Exception because the resulting object
//won't be able to be (cast) and the application will get a RuntimeException
//write a use case for this.
+
+ //make sure this handle has an implementation. if the implementation is
+ //not set then we should try to use the HandleManager to recover.
+
+
+ //use the default lifetime
+ if ( handle.getLifetime() == null ) {
+ handle.setLifetime( LIFETIME_DEMAND );
+ }
+
+ //if the implementation is null... try to pull this out of the HandleManager
+ if ( handle.getImplementation() == null && handle.getName() != null ) {
+
+ PropertyManager props = handle.getInitProperties();
+
+ handle = HandleManager.byName( handle.getName() );
+ handle.setInitProperties( props );
+ }
+
+
//determine what lifetime to use
String lifetime = handle.getLifetime();
- if ( lifetime == null || lifetime.equals( LIFETIME_DEMAND ) ) {
+ if ( lifetime.equals( LIFETIME_DEMAND ) ) {
return getDemandBasedInstance( handle );
} else if ( lifetime.equals( LIFETIME_SINGLETON ) ) {
return getSingletonBasedInstance( handle );
@@ -114,7 +132,7 @@
* Get a component instantiating a new one everytime we need it.
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentFactory.java,v 1.6 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentFactory.java,v 1.7 2001/02/19 07:47:52 burton Exp $
*/
private static Component getDemandBasedInstance( ComponentHandle handle )
throws TalonException {
@@ -129,7 +147,7 @@
* Get a singleton or create it if necessary.
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentFactory.java,v 1.6 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentFactory.java,v 1.7 2001/02/19 07:47:52 burton Exp $
*/
private static Component getSingletonBasedInstance( ComponentHandle handle )
throws TalonException {
@@ -153,13 +171,13 @@
* Perform basic instantiation on a component.
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentFactory.java,v 1.6 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentFactory.java,v 1.7 2001/02/19 07:47:52 burton Exp $
*/
private static Component instantiateComponent( ComponentHandle handle )
throws TalonException {
try {
-
+
Component comp = (Component)Class.forName( handle.getImplementation() ).newInstance();
comp.setComponentHandle( handle );
comp.init();
@@ -176,7 +194,7 @@
* Put a singleton to the Factory.
* FIXME: Should this throw an Exception if this object is already present?
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentFactory.java,v 1.6 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentFactory.java,v 1.7 2001/02/19 07:47:52 burton Exp $
*/
static void putSingleton( ComponentHandle handle, Component comp ) {
singletons.put( handle, comp );
@@ -189,7 +207,7 @@
* don't have to worry about fetching an object from the component system.
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentFactory.java,v 1.6 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentFactory.java,v 1.7 2001/02/19 07:47:52 burton Exp $
*/
public static Logger getLogger() {
return ComponentFactory.logger;
@@ -199,7 +217,7 @@
*
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentFactory.java,v 1.6 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentFactory.java,v 1.7 2001/02/19 07:47:52 burton Exp $
*/
public static void setLogger( Logger logger ) {
ComponentFactory.logger = logger;
*****************************************************************
File: talon/src/java/talon/ComponentHandle.java
CVSWEB Options: -------------------
CVSWeb: Annotate this file: http://openprivacy.org/cgi-bin/cvsweb/cvsweb.cgi/talon/src/java/talon/ComponentHandle.java?annotate=1.8
CVSWeb: View this file: http://openprivacy.org/cgi-bin/cvsweb/cvsweb.cgi/talon/src/java/talon/ComponentHandle.java?rev=1.8&content-type=text/x-cvsweb-markup
CVSWeb: Diff to previous version: http://openprivacy.org/cgi-bin/cvsweb/cvsweb.cgi/talon/src/java/talon/ComponentHandle.java.diff?r1=1.8&r2=1.7
-----------------------------------
Index: talon/src/java/talon/ComponentHandle.java
diff -u talon/src/java/talon/ComponentHandle.java:1.7 talon/src/java/talon/ComponentHandle.java:1.8
--- talon/src/java/talon/ComponentHandle.java:1.7 Sun Feb 11 14:02:10 2001
+++ talon/src/java/talon/ComponentHandle.java Sun Feb 18 23:47:52 2001
@@ -18,7 +18,7 @@
* Object which is used to find components within the system.
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public class ComponentHandle {
@@ -50,7 +50,7 @@
* Create a basic ComponentHandle
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public ComponentHandle() {}
@@ -59,7 +59,7 @@
* pulled from the Talon properties.
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public ComponentHandle( String _interface ) {
@@ -71,7 +71,7 @@
* The interface and classname.
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public ComponentHandle( String _interface,
String _implementation ) {
@@ -86,7 +86,7 @@
* The interface and classname. You may specify a PropertyManager here.
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public ComponentHandle( String _interface,
String _classname,
@@ -101,7 +101,7 @@
* Also set the name.
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public ComponentHandle( String name,
String _interface,
@@ -165,7 +165,7 @@
/**
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public String getLifetime() {
return this._lifetime;
@@ -175,7 +175,7 @@
/**
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public ComponentHandle setLifetime( String _lifetime ) {
this._lifetime = _lifetime;
@@ -184,7 +184,7 @@
/**
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public String getDescription() {
return this._description;
@@ -192,7 +192,7 @@
/**
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public ComponentHandle setDescription( String _description ) {
this._description = _description;
@@ -202,7 +202,7 @@
/**
* @see Component
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public PropertyManager getInitProperties() {
return this.initProperties;
@@ -217,10 +217,31 @@
* Dump Handle information..
*
* @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
- * @version $Id: ComponentHandle.java,v 1.7 2001/02/11 22:02:10 burton Exp $
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
*/
public String toString() {
return this.getName() + ":" + this.getInterface() + " -> " + this.getImplementation();
+ }
+
+ /**
+ * Return a cloned ComponentHandle.
+ *
+ * @author <a href="mailto:burton@relativity.yi.org">Kevin A. Burton</a>
+ * @version $Id: ComponentHandle.java,v 1.8 2001/02/19 07:47:52 burton Exp $
+ */
+ public Object clone() {
+
+ ComponentHandle handle = new ComponentHandle();
+
+ handle.setName( this.getName() );
+ handle.setDescription( this.getDescription() );
+ handle.setLifetime( this.getLifetime() );
+ handle.setInitProperties( this.getInitProperties() );
+ handle.setInterface( this.getInterface() );
+ handle.setImplementation( this.getImplementation() );
+
+ return (Object)handle;
+
}
}
This archive was generated by hypermail 2b30 : Sun Feb 18 2001 - 23:47:53 PST