mcconnell 2003/01/08 10:33:22 Modified: assembly/src/java/org/apache/avalon/assembly/appliance Appliance.java assembly/src/java/org/apache/avalon/assembly/engine DefaultRepositoryManager.java assembly/src/xdocs appliance.xml engine.xml index.xml Log: Retract type/service load warnings in favour of an explicit exception. Revision Changes Path 1.18 +3 -3 avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/Appliance.java Index: Appliance.java =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/appliance/Appliance.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- Appliance.java 7 Jan 2003 04:24:50 -0000 1.17 +++ Appliance.java 8 Jan 2003 18:33:20 -0000 1.18 @@ -67,8 +67,8 @@ /** * An appliance is a class that encapsulates the deployment criteria * for a particular component together with a the state supporting - * component assembly and dependency solutions. The function of an appliace - * is to server as the aggregation point for the deployment of a component + * component assembly and dependency solutions. The function of an appliance + * is to serve as the aggregation point for the deployment of a component * and the access point for services provided by the component implemetation. * * @author <a href="mailto:avalon-dev@jakarta.apache.org">Avalon Development Team</a> 1.6 +13 -10 avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/DefaultRepositoryManager.java Index: DefaultRepositoryManager.java =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/java/org/apache/avalon/assembly/engine/DefaultRepositoryManager.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DefaultRepositoryManager.java 27 Dec 2002 16:19:14 -0000 1.5 +++ DefaultRepositoryManager.java 8 Jan 2003 18:33:22 -0000 1.6 @@ -310,9 +310,10 @@ } catch( Throwable e ) { - final String warning = - "Ignoring type: " + name; - getLogger().warn( warning, e ); + final String error = + "Could not create type from classname: " + classname + + " in the jar: " + base.getName(); + throw new EngineRuntimeException( error, e ); } } else if( name.endsWith( X_INFO ) ) @@ -326,9 +327,10 @@ } catch( Throwable e ) { - final String warning = - "Ignoring type: " + name; - getLogger().warn( warning, e ); + final String error = + "Could not create type from classname: " + classname + + " in the jar: " + base.getName(); + throw new EngineRuntimeException( error, e ); } } @@ -342,9 +344,10 @@ } catch( Throwable e ) { - final String warning = - "Ignoring type: " + name; - getLogger().warn( warning, e ); + final String error = + "Could not create service from classname: " + classname + + " in the jar: " + base.getName(); + throw new EngineRuntimeException( error, e ); } } } 1.2 +116 -32 avalon-sandbox/assembly/src/xdocs/appliance.xml Index: appliance.xml =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/xdocs/appliance.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- appliance.xml 1 Dec 2002 06:43:22 -0000 1.1 +++ appliance.xml 8 Jan 2003 18:33:22 -0000 1.2 @@ -11,7 +11,7 @@ <s1 title="Appliance"> <p> -An <code>Appliance</code> is an object that represents a component. It collects together all of the information and services needed to fully deploy the component within a container. Containers that use the appliance abstraction can seperate themselves from the actual component type or model - focussing instead on the criteria for deployment. Secondly, an appliance enables deferred activation - i.e. deployment of an actual component when and if it is actually required. +An <code>Appliance</code> is an object that manages a component. It collects together all of the information and services needed to fully deploy the component. Applications that use the appliance abstraction can seperate themselves from the actual component type or model - focussing instead on the criteria for deployment. The default appliance implementation completely automates the component assembly, lifecycle, lifestyle management. It also enables deferred activation - i.e. deployment of an actual component when and if it is required. </p> <s2 title="Appliance Interface"> <source> @@ -29,20 +29,39 @@ public interface Appliance { - /** - * Return the profile backing the appliance. - * @return the profile that this appliance is managing - */ - Profile getProfile(); + + /** + * Meta-info attribute name under which an alternative appliance class may be declared. + */ + static final String APPLIANCE_CLASS_ATTRIBUTE_NAME = + "urn:assembly:appliance.class"; + + /** + * Get the appliance name. + */ + String getName(); + + /** + * Get the appliance partition name. + */ + String getPartitionName(); + + /** + * Get the appliance path. + */ + String getPath(); + + /** + * Get the appliance URL. + * @return the appliance URL + */ + URL getURL(); /** - * Set the activation policy for the component. If TRUE, activation - * will occur at startup. If false, activation will be deferred to - * the first lookup invocation if any (i.e. lazy activation). - * - * @param policy TRUE if the appliace is to be activated on startup + * Return the component type backing the appliance. + * @return the type that the appliance is managing */ - void setActivationPolicy( boolean policy ); + Type getType(); /** * Return the activation policy for the component. If TRUE, activation @@ -54,33 +73,61 @@ boolean getActivationPolicy(); /** - * Test is this profile is enabled. A profile is enabled unless explicitly disabled by an + * Test is this appliance is enabled. A appliance is enabled unless explicitly disabled by an * assembly directive, or implicity disabled as a result of an assembly failure. * - * @return TRUE if the profile is enabled. + * @return TRUE if the appliance is enabled. * @see #setEnabled( boolean ) */ boolean isEnabled(); /** - * Set the enabled status of the profile to the supplied value. + * Set the enabled status of the appliance to the supplied value. * @param value the enabled status - TRUE or FALSE */ void setEnabled( boolean value ); /** - * Return the assigned service providers. - * @return the set of service provider appliances. + * Return the logging categories for the appliance. + * + * @return the logger */ - Appliance[] getServiceProviders(); + LoggingDirective getLoggingDirective(); /** - * Return the dependency associations for component type with specified role. + * Return the Parameters to be applied to the appliance. * - * @param role the dependency role name - * @return the dependency metadata for component with specified role. + * @return the Parameters for appliance. */ - Appliance getServiceProvider( final String role ); + Parameters getParameters(); + + /** + * Return the Configuration for the appliance. + * + * @return the Configuration for the appliance. + */ + Configuration getConfiguration(); + + /** + * Get the component context. + * + * @return the component context + */ + Context getContext(); + + /** + * Set the context provider. + * + * @param applaince the appliance to be mapped as provider of the context + */ + void setContextProvider( Appliance appliance ); + + /** + * Return the context provider. + * + * @return the appliance mapped as provider of the context + */ + Appliance getContextProvider(); /** * Add the appliance that will acts as provider for a named dependency. @@ -90,18 +137,18 @@ void addServiceProvider( String role, Appliance appliance ); /** - * Return the assigned extension providers. + * Return the dependency associations for component type with specified role. * - * @return the set of extension provider appliances. + * @param role the dependency role name + * @return the appliance mapped as a provider of the role */ - Appliance[] getExtensionProviders(); + Appliance getServiceProvider( final String role ); /** - * Returns the appliace assigned to handle the components lifecycle stage. - * @param stage the lifecycle stage specification - * @return a reference to the stage extension + * Return the assigned service providers. + * @return the set of service provider appliances. */ - Appliance getExtensionProvider( StageDescriptor stage ); + Appliance[] getServiceProviders(); /** * Add a lifecycle stage extension. @@ -110,9 +157,42 @@ */ void addExtensionProvider( StageDescriptor stage, Appliance appliance ); + /** + * Returns the appliace assigned to handle the components lifecycle stage. + * @param stage the lifecycle stage specification + * @return a reference to the stage extension + */ + Appliance getExtensionProvider( StageDescriptor stage ); + + /** + * Return the assigned extension providers. + * + * @return the set of extension provider appliances. + */ + Appliance[] getExtensionProviders(); + + /** + * Assemble the appliance. + * @exception AssemblyException if an error occurs during appliance assembly + */ + void assemble() throws AssemblyException; + + /** + * Disassemble the appliance. + */ + void disassemble(); + + /** + * Creation of a instance of the component type managed by the appliance + * in accordance with the lifestyle policy declared by the component type. + * + * @return the implementation object + */ + Object access() throws LifestyleException; + /** * Activate a service provided by the appliance. - * @param appliance the appliance to deploy + * @param dependency the service dependecy decsriptor */ Object access( DependencyDescriptor dependency ) throws LifestyleException; @@ -127,6 +207,10 @@ */ void release( Object object ); + /** + * Terminate the appliance. + */ + void terminate(); } </source> 1.2 +2 -2 avalon-sandbox/assembly/src/xdocs/engine.xml Index: engine.xml =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/xdocs/engine.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- engine.xml 1 Dec 2002 06:43:22 -0000 1.1 +++ engine.xml 8 Jan 2003 18:33:22 -0000 1.2 @@ -11,7 +11,7 @@ <s1 title="The Engine"> <p> -The <code>engine</code> package includes interfaces and classes on which a unit of containment can be manager. An engine aggregates a type, profile and appliance manager and provides support for the creation, registration and retrival of appliance instances. +The <code>engine</code> package includes interfaces and classes that support component deployment. An engine aggregates a type, profile and appliance manager and provides support for the creation, registration and retrival of appliance instances. </p> <s2 title="Java Example"> 1.2 +2 -2 avalon-sandbox/assembly/src/xdocs/index.xml Index: index.xml =================================================================== RCS file: /home/cvs/avalon-sandbox/assembly/src/xdocs/index.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- index.xml 1 Dec 2002 06:43:22 -0000 1.1 +++ index.xml 8 Jan 2003 18:33:22 -0000 1.2 @@ -14,7 +14,7 @@ <s1 title="Assembly - Functional Description"> <p> -The Avalon Assembly project is a API dealing with container-side resources. I includes facilities supporting the management of component types, services, deployment profiles, and a component activation unit referred to as an appliance. +The Avalon Assembly project is a API dealing with container-side resources. It includes facilities supporting the management of component types, services, deployment profiles, and a component activation unit referred to as an appliance. </p> <p>
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>