mcconnell 2003/02/27 22:09:16
Modified: assembly/src/java/org/apache/avalon/assembly/appliance
DefaultAppliance.java DefaultApplianceContext.java
DefaultApplianceFactory.java
assembly/src/java/org/apache/avalon/assembly/engine
EngineClassLoader.java
assembly/src/java/org/apache/avalon/assembly/locator
DefaultLocator.java
Log:
Enhancement of the appliance context management semantics (cleaning up of conditions
where an appliance is creating an appliance).
Revision Changes Path
1.36 +2 -2
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultAppliance.java
Index: DefaultAppliance.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultAppliance.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- DefaultAppliance.java 27 Feb 2003 23:28:10 -0000 1.35
+++ DefaultAppliance.java 28 Feb 2003 06:09:15 -0000 1.36
@@ -275,9 +275,9 @@
*/
public void contextualize( Locator context ) throws ContextException
{
+ m_applianceContext = (ApplianceContext) context.get(
"urn:assembly:appliance.context" );
m_engine = (EngineClassLoader) context.get( "urn:assembly:engine" );
m_lifestyle = (LifestyleService) context.get(
"urn:assembly:lifestyle.service" );
- m_applianceContext = (ApplianceContext) context.get(
"urn:assembly:appliance.context" );
m_system = (Locator) context.get( "urn:assembly:appliance.system" );
m_repository = (ApplianceRepository) context.get(
"urn:assembly:appliance.repository" );
}
1.12 +18 -27
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultApplianceContext.java
Index: DefaultApplianceContext.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultApplianceContext.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- DefaultApplianceContext.java 27 Feb 2003 23:06:38 -0000 1.11
+++ DefaultApplianceContext.java 28 Feb 2003 06:09:15 -0000 1.12
@@ -99,11 +99,6 @@
//=====================================================================
/**
- * The map of values managed by the context.
- */
- private Map m_map = new Hashtable();
-
- /**
* The underlying profile that this appliance is managing.
*/
private Profile m_profile;
@@ -179,16 +174,26 @@
*/
public DefaultApplianceContext( Profile profile )
{
- super();
+ this( profile, null );
+ }
+
+ /**
+ * Creation of a new appliance context.
+ * @param profile the profile
+ * @param map a set of supplimentary context entries
+ */
+ public DefaultApplianceContext( Profile profile, Map map )
+ {
+ super( map );
if( profile == null )
{
throw new NullPointerException( "profile" );
}
- m_map = getData();
m_profile = profile;
m_activation = profile.getActivationPolicy();
}
+
//==============================================================
// parameters
//==============================================================
@@ -417,30 +422,12 @@
}
/**
- * Set the deployment context.
- * @param map the deployment context
- * @exception IllegalStateException if the appliance context is write protected
- * @exception NullPointerException if the supplied map is null
- * @see #getDeploymentContext()
- */
- //public void setDeploymentContext( final Map map ) throws IllegalStateException
- //{
- // checkWriteable();
- // m_context = map;
- //}
-
- /**
* Get the deployment context.
* @return the deployment context
*/
public Map getDeploymentContext()
{
- return m_map;
- //if( m_context == null )
- //{
- // return new Hashtable();
- //}
- //return m_context;
+ return super.getData();
}
/**
@@ -602,4 +589,8 @@
return category;
}
+ public String toString()
+ {
+ return "[" + getName() + "]";
+ }
}
1.12 +8 -23
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultApplianceFactory.java
Index: DefaultApplianceFactory.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/DefaultApplianceFactory.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- DefaultApplianceFactory.java 28 Feb 2003 03:45:07 -0000 1.11
+++ DefaultApplianceFactory.java 28 Feb 2003 06:09:15 -0000 1.12
@@ -113,7 +113,8 @@
* @exception ApplianceException if a creation error occurs
*/
public static ApplianceFactory createApplianceFactory(
- EngineClassLoader loader, Logger logger, ApplianceRepository repository,
Locator system )
+ EngineClassLoader loader, Logger logger, ApplianceRepository repository,
+ Locator system )
throws ApplianceException
{
return createApplianceFactory(
@@ -131,7 +132,8 @@
* @exception ApplianceException if a creation error occurs
*/
public static ApplianceFactory createApplianceFactory(
- EngineClassLoader loader, String classname, Logger logger,
ApplianceRepository repository, Locator system )
+ EngineClassLoader loader, String classname, Logger logger,
+ ApplianceRepository repository, Locator system )
throws ApplianceException
{
if( classname == null )
@@ -293,6 +295,7 @@
// we are building a custom appliance
//
+
LifestyleService lifestyle = createLifestyleService( engine, m_pool );
DefaultLocator locator = null;
try
@@ -316,7 +319,6 @@
String classname = context.getApplianceClassname();
if(( classname == null ) || ( classname.equals(
DefaultAppliance.class.getName() ) ) )
{
-
//
// bootstrap the appliance using DefaultAppliance
//
@@ -345,9 +347,10 @@
try
{
+ Map map = context.getDeploymentContext();
Type type = engine.getRepository().getTypeManager().getType(
classname );
Profile profile =
engine.getRepository().getProfileManager().getProfile( type );
- DefaultApplianceContext cntx = new DefaultApplianceContext( profile
);
+ DefaultApplianceContext cntx = new DefaultApplianceContext(
profile, map );
cntx.put( "urn:assembly:engine", engine );
cntx.put( "urn:assembly:lifestyle.service", lifestyle );
cntx.put( "urn:assembly:appliance.context", context );
@@ -378,24 +381,6 @@
throw new ApplianceException( error, e );
}
}
-
- /*
- Appliance appliance = getApplianceInstance( engine, context );
- appliance.enableLogging( logger );
-
- try
- {
- appliance.contextualize( locator );
- appliance.initialize();
- }
- catch( Throwable e )
- {
- final String error =
- "Unable to create appliance from context: " + context.getName();
- throw new ApplianceException( error, e );
- }
- return appliance;
- */
}
/**
1.39 +9 -89
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/EngineClassLoader.java
Index: EngineClassLoader.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/EngineClassLoader.java,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- EngineClassLoader.java 28 Feb 2003 03:44:07 -0000 1.38
+++ EngineClassLoader.java 28 Feb 2003 06:09:16 -0000 1.39
@@ -838,89 +838,6 @@
"Unexpected exception while attampting to expand the supplied
classpath.";
throw new EngineRuntimeException( error, e );
}
-
- /*
- if( m_base != null )
- {
- URL[] urls = ClasspathDescriptor.expand( m_base, classpath );
- for( int j = 0; j < urls.length; j++ )
- {
- URL inc = urls[ j ];
- try
- {
- addURL( inc );
- }
- catch( Throwable e )
- {
- throw new EngineRuntimeException(
- REZ.getString( "classpath.include.error", inc ) , e );
- }
- }
- return;
- }
- else
- {
- getLogger().debug( "expanding a classpath without a base" );
- }
- */
-
- //
- // #########################################################
- // we should be able to drop the rest once we update the m_base to be a
required
- // context value - or we construct a rationale default
- // ##########################################################
-
- /*
- List list = new ArrayList();
- FilesetDescriptor[] dirs = classpath.getFilesetDescriptors();
- if( getLogger().isDebugEnabled() )
- {
- getLogger().debug( REZ.getString( "add.classpath.info", "" + dirs.length
) );
- }
-
- for( int i = 0; i < dirs.length; i++ )
- {
- FilesetDescriptor descriptor = dirs[ i ];
- File anchor;
- try
- {
- anchor = new File( m_home, descriptor.getBaseDirectory()
).getCanonicalFile();
- if( !anchor.exists() )
- {
- throw new EngineRuntimeException(
- REZ.getString( "classpath.dir.error", anchor ) );
- }
- }
- catch( Throwable e )
- {
- throw new EngineRuntimeException(
- REZ.getString( "classpath.base.error", descriptor ) , e );
- }
-
- IncludeDescriptor[] includes = descriptor.getIncludeDescriptors();
- if( getLogger().isDebugEnabled() )
- {
- getLogger().debug( REZ.getString( "classpath.include", "" +
includes.length ) );
- }
- for( int j = 0; j < includes.length; j++ )
- {
- String inc = includes[ j ].getFile();
- try
- {
- addURL( new File( anchor, inc ).getCanonicalFile().toURL() );
- }
- catch( Throwable e )
- {
- throw new EngineRuntimeException(
- REZ.getString( "classpath.include.error", inc ) , e );
- }
- }
- }
- if( getLogger().isDebugEnabled() )
- {
- getLogger().debug( REZ.getString( "classpath.ok" ) );
- }
- */
}
/**
@@ -1009,7 +926,8 @@
* @param dependency a service depedency descriptor
* @return the appliance
*/
- public Appliance resolve( DependencyGraph graph, DependencyDescriptor
dependency ) throws Exception
+ public Appliance resolve( DependencyGraph graph, DependencyDescriptor
dependency )
+ throws Exception
{
return resolve( graph, dependency, "" );
}
@@ -1023,7 +941,8 @@
* @return the appliance
*/
public Appliance resolve(
- DependencyGraph graph, DependencyDescriptor dependency, String partition )
throws Exception
+ DependencyGraph graph, DependencyDescriptor dependency, String partition )
+ throws Exception
{
if( graph == null )
{
@@ -1092,7 +1011,8 @@
* @param partition the partition to assign to a new appliance if creation is
necessary
* @return the appliance
*/
- public Appliance resolve( DependencyGraph graph, StageDescriptor stage, String
partition ) throws Exception
+ public Appliance resolve( DependencyGraph graph, StageDescriptor stage, String
partition )
+ throws Exception
{
if( stage == null )
{
@@ -1139,7 +1059,8 @@
* @param context the appliance context
* @return the appliance
*/
- public Appliance createAppliance( ApplianceContext context ) throws
ApplianceException
+ public Appliance createAppliance( ApplianceContext context )
+ throws ApplianceException
{
return createAppliance( context, true );
}
@@ -1188,7 +1109,6 @@
}
Appliance appliance = factory.createAppliance( getSystemContext(), this,
context, logger );
-
if( shared )
{
m_manager.addAppliance( appliance );
1.6 +9 -7
avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/locator/DefaultLocator.java
Index: DefaultLocator.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/locator/DefaultLocator.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DefaultLocator.java 7 Feb 2003 15:39:14 -0000 1.5
+++ DefaultLocator.java 28 Feb 2003 06:09:16 -0000 1.6
@@ -129,7 +129,7 @@
/**
* Create a Locator with specified data.
*
- * @param contextData the context data
+ * @param contextData the context data (may be null)
*/
public DefaultLocator( final Map data )
{
@@ -143,13 +143,13 @@
*/
public DefaultLocator( final Locator parent )
{
- this( new Hashtable(), parent );
+ this( null, parent );
}
/**
* Create a Locator with specified data and parent locator.
*
- * @param data the locator data
+ * @param data the locator data (may be null)
* @param parent the parent Locator (may be null)
*/
public DefaultLocator( final Map data, final Locator parent )
@@ -162,21 +162,23 @@
*
* @param data the locator data
* @param parent the parent Locator (may be null)
- * @exception NullPointerException if either the supplied dictionary or
- * data arguments are null
+ * @exception NullPointerException if the supplied dictionary is null
*/
public DefaultLocator( final Map data, final Locator parent, final Dictionary
dictionary )
throws NullPointerException
{
if( data == null )
{
- throw new NullPointerException( "data" );
+ m_data = new Hashtable();
+ }
+ else
+ {
+ m_data = data;
}
if( dictionary == null )
{
throw new NullPointerException( "dictionary" );
}
- m_data = data;
m_dictionary = dictionary;
m_parent = parent;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]