mcconnell 2003/12/14 06:09:59
Modified:
merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl
AbstractLifestyleHandler.java
ThreadLifestyleHandler.java
TransientLifestyleHandler.java
merlin/composition/api/src/java/org/apache/avalon/composition/data
DeploymentProfile.java
merlin/composition/api/src/java/org/apache/avalon/composition/model
DeploymentModel.java
merlin/composition/impl/src/java/org/apache/avalon/composition/model/impl
DefaultDeploymentModel.java
merlin/kernel/impl/src/java/org/apache/avalon/merlin/impl
DefaultCriteria.java
Log:
Housekeeping.
Revision Changes Path
1.6 +19 -13
avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/AbstractLifestyleHandler.java
Index: AbstractLifestyleHandler.java
===================================================================
RCS file:
/home/cvs/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/AbstractLifestyleHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- AbstractLifestyleHandler.java 19 Oct 2003 10:31:00 -0000 1.5
+++ AbstractLifestyleHandler.java 14 Dec 2003 14:09:59 -0000 1.6
@@ -74,8 +74,6 @@
private final ReferenceQueue m_liberals = new ReferenceQueue();
- private final ReferenceQueue m_democrats = new ReferenceQueue();
-
/**
* Creation of a new instance.
* @param logger the logging channel
@@ -86,6 +84,14 @@
m_factory = factory;
}
+ /**
+ * Return the liberal queue.
+ */
+ ReferenceQueue getLiberalQueue()
+ {
+ return m_liberals;
+ }
+
/**
* Release an object.
*
@@ -124,6 +130,16 @@
}
}
+ Object newInstance() throws Exception
+ {
+ return m_factory.newInstance();
+ }
+
+ Factory getFactory()
+ {
+ return m_factory;
+ }
+
class StrongReference extends WeakReference
{
private final Object m_instance;
@@ -138,15 +154,5 @@
{
return m_instance;
}
- }
-
- Object newInstance() throws Exception
- {
- return m_factory.newInstance();
- }
-
- Factory getFactory()
- {
- return m_factory;
}
}
1.5 +3 -3
avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/ThreadLifestyleHandler.java
Index: ThreadLifestyleHandler.java
===================================================================
RCS file:
/home/cvs/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/ThreadLifestyleHandler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ThreadLifestyleHandler.java 19 Oct 2003 06:12:58 -0000 1.4
+++ ThreadLifestyleHandler.java 14 Dec 2003 14:09:59 -0000 1.5
@@ -74,9 +74,9 @@
}
//
- // TODO: the current implementation is hard coded to CONSERVATIVE
+ // TODO: the current implementation is hard coded to HARD
// collection policy - we need to update the ThreadLocalHolder so
- // it regenerates the value relative to DEMOCRAT or LIBERAL policies
+ // it regenerates the value relative to SOFT or WEAK policies
// (but I just need to check docs on thread local state access
// semantics)
//
1.6 +23 -1
avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/TransientLifestyleHandler.java
Index: TransientLifestyleHandler.java
===================================================================
RCS file:
/home/cvs/avalon/merlin/activation/impl/src/java/org/apache/avalon/activation/lifestyle/impl/TransientLifestyleHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TransientLifestyleHandler.java 19 Oct 2003 06:12:58 -0000 1.5
+++ TransientLifestyleHandler.java 14 Dec 2003 14:09:59 -0000 1.6
@@ -50,13 +50,18 @@
package org.apache.avalon.activation.lifestyle.impl;
+import java.lang.ref.SoftReference;
+import java.lang.ref.WeakReference;
import java.lang.ref.Reference;
import java.util.ArrayList;
import org.apache.avalon.activation.lifecycle.Factory;
+
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.meta.info.InfoDescriptor;
+
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development Team</a>
* @version $Revision$ $Date$
@@ -112,5 +117,22 @@
disposeInstance( refs[i].get() );
}
m_list.clear();
+ }
+
+ /**
+ * Overriding getReference to ensure that we never return a hard
+ * reference for a transient.
+ */
+ Reference getReference( Object instance )
+ {
+ final int policy = getFactory().getDeploymentModel().getCollectionPolicy();
+ if( policy == InfoDescriptor.DEMOCRAT )
+ {
+ return new SoftReference( instance );
+ }
+ else
+ {
+ return new WeakReference( instance, getLiberalQueue() );
+ }
}
}
1.6 +2 -2
avalon/merlin/composition/api/src/java/org/apache/avalon/composition/data/DeploymentProfile.java
Index: DeploymentProfile.java
===================================================================
RCS file:
/home/cvs/avalon/merlin/composition/api/src/java/org/apache/avalon/composition/data/DeploymentProfile.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DeploymentProfile.java 28 Oct 2003 12:53:48 -0000 1.5
+++ DeploymentProfile.java 14 Dec 2003 14:09:59 -0000 1.6
@@ -276,7 +276,7 @@
* Return the component collection policy. If null, the component
* type collection policy will apply.
*
- * @return a LIBERAL, DEMOCRAT, CONSERVATIVE or UNDEFINED
+ * @return a HARD, WEAK, SOFT or UNDEFINED
*/
public int getCollectionPolicy()
{
1.7 +7 -7
avalon/merlin/composition/api/src/java/org/apache/avalon/composition/model/DeploymentModel.java
Index: DeploymentModel.java
===================================================================
RCS file:
/home/cvs/avalon/merlin/composition/api/src/java/org/apache/avalon/composition/model/DeploymentModel.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- DeploymentModel.java 3 Nov 2003 18:54:18 -0000 1.6
+++ DeploymentModel.java 14 Dec 2003 14:09:59 -0000 1.7
@@ -83,9 +83,9 @@
* declared by the type will be used.
*
* @return the collection policy
- * @see org.apache.avalon.meta.info.InfoDescriptor#LIBERAL
- * @see org.apache.avalon.meta.info.InfoDescriptor#DEMOCRAT
- * @see org.apache.avalon.meta.info.InfoDescriptor#CONSERVATIVE
+ * @see org.apache.avalon.meta.info.InfoDescriptor#WEAK
+ * @see org.apache.avalon.meta.info.InfoDescriptor#SOFT
+ * @see org.apache.avalon.meta.info.InfoDescriptor#HARD
*/
int getCollectionPolicy();
@@ -93,9 +93,9 @@
* Set the collection policy to a supplied value.
*
* @param policy the collection policy
- * @see org.apache.avalon.meta.info.InfoDescriptor#LIBERAL
- * @see org.apache.avalon.meta.info.InfoDescriptor#DEMOCRAT
- * @see org.apache.avalon.meta.info.InfoDescriptor#CONSERVATIVE
+ * @see org.apache.avalon.meta.info.InfoDescriptor#WEAK
+ * @see org.apache.avalon.meta.info.InfoDescriptor#SOFT
+ * @see org.apache.avalon.meta.info.InfoDescriptor#HARD
* @see org.apache.avalon.meta.info.InfoDescriptor#UNDEFINED
*/
void setCollectionPolicy( int policy );
1.9 +8 -7
avalon/merlin/composition/impl/src/java/org/apache/avalon/composition/model/impl/DefaultDeploymentModel.java
Index: DefaultDeploymentModel.java
===================================================================
RCS file:
/home/cvs/avalon/merlin/composition/impl/src/java/org/apache/avalon/composition/model/impl/DefaultDeploymentModel.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DefaultDeploymentModel.java 2 Dec 2003 01:34:09 -0000 1.8
+++ DefaultDeploymentModel.java 14 Dec 2003 14:09:59 -0000 1.9
@@ -308,9 +308,10 @@
* will be used.
*
* @return the collection policy
- * @see InfoDescriptor#LIBERAL
- * @see InfoDescriptor#DEMOCRAT
- * @see InfoDescriptor#CONSERVATIVE
+ * @see InfoDescriptor#WEAK
+ * @see InfoDescriptor#SOFT
+ * @see InfoDescriptor#HARD
+ * @see InfoDescriptor#UNDEFINED
*/
public int getCollectionPolicy()
{
@@ -328,9 +329,9 @@
* Set the collection policy for the model.
*
* @param policy the collection policy
- * @see InfoDescriptor#LIBERAL
- * @see InfoDescriptor#DEMOCRAT
- * @see InfoDescriptor#CONSERVATIVE
+ * @see InfoDescriptor#WEAK
+ * @see InfoDescriptor#SOFT
+ * @see InfoDescriptor#HARD
*/
public void setCollectionPolicy( int policy )
{
1.10 +4 -5
avalon/merlin/kernel/impl/src/java/org/apache/avalon/merlin/impl/DefaultCriteria.java
Index: DefaultCriteria.java
===================================================================
RCS file:
/home/cvs/avalon/merlin/kernel/impl/src/java/org/apache/avalon/merlin/impl/DefaultCriteria.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DefaultCriteria.java 14 Dec 2003 12:00:12 -0000 1.9
+++ DefaultCriteria.java 14 Dec 2003 14:09:59 -0000 1.10
@@ -93,7 +93,7 @@
// static
//--------------------------------------------------------------
- private static final String AVALON = "avalon.properties";
+ private static final String AVALON_PROPERTIES = "avalon.properties";
private static final String MERLIN = "merlin.properties";
private static final File USER_DIR =
@@ -148,7 +148,6 @@
}
}
-
/**
* The factory parameters template.
*/
@@ -225,7 +224,7 @@
// static defaults are the most primative
//
- Properties avalonStatic = getStaticProperties( AVALON );
+ Properties avalonStatic = getStaticProperties( AVALON_PROPERTIES );
Properties merlinStatic = getStaticProperties( MERLIN );
//
@@ -244,7 +243,7 @@
// ${user.home} overrides environment
//
- Properties avalonHome = getLocalProperties( USER_HOME, AVALON );
+ Properties avalonHome = getLocalProperties( USER_HOME, AVALON_PROPERTIES );
Properties merlinHome = getLocalProperties( USER_HOME, MERLIN );
//
@@ -253,7 +252,7 @@
File work = getWorkingDirectory();
Properties avalonWork =
- getLocalProperties( work, AVALON );
+ getLocalProperties( work, AVALON_PROPERTIES );
Properties merlinWork =
getLocalProperties( work, MERLIN );
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]