donaldp     01/12/02 07:15:36

  Added:       src/scratchpad/org/apache/avalon/excalibur/util/test
                        ComponentTestCase.java FullLifecycleComponent.java
  Log:
  Add the ComponentStateValidator test case in.
  
  Revision  Changes    Path
  1.1                  
jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/util/test/ComponentTestCase.java
  
  Index: ComponentTestCase.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE file.
   */
  package org.apache.avalon.excalibur.util.test;
  
  import junit.framework.TestCase;
  import org.apache.avalon.framework.component.ComponentException;
  import org.apache.avalon.framework.component.DefaultComponentManager;
  import org.apache.avalon.framework.configuration.ConfigurationException;
  import org.apache.avalon.framework.configuration.DefaultConfiguration;
  import org.apache.avalon.framework.context.ContextException;
  import org.apache.avalon.framework.context.DefaultContext;
  import org.apache.avalon.framework.logger.LogKitLogger;
  import org.apache.avalon.framework.parameters.ParameterException;
  import org.apache.avalon.framework.parameters.Parameters;
  import org.apache.log.Hierarchy;
  
  /**
   * This class provides basic facilities for enforcing Avalon's contracts
   * within your own code.
   *
   * @author <a href="[EMAIL PROTECTED]">Berin Loritsch</a>
   * @version CVS $Revision: 1.1 $ $Date: 2001/12/02 15:15:36 $
   */
  public final class ComponentTestCase
      extends TestCase
  {
      public ComponentTestCase( String test )
      {
          super( test );
      }
  
      public void testCorrectLifecycle()
          throws Exception
      {
          FullLifecycleComponent component = new FullLifecycleComponent();
  
          component.enableLogging(new 
LogKitLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("")));
          component.contextualize(new DefaultContext());
          component.parameterize(new Parameters());
          component.configure(new DefaultConfiguration("", ""));
          component.compose(new DefaultComponentManager());
          component.initialize();
          component.start();
          component.suspend();
          component.resume();
          component.stop();
          component.dispose();
      }
  
      public void testOutOfOrderInitialize()
      {
          FullLifecycleComponent component = new FullLifecycleComponent();
  
          try
          {
              component.enableLogging(new 
LogKitLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("")));
              component.contextualize(new DefaultContext());
              component.initialize();
              component.parameterize(new Parameters());
          }
          catch ( Exception e )
          {
              return;
          }
          fail("Did not detect out of order initialization");
      }
  
      public void testOutOfOrderDispose()
      {
          FullLifecycleComponent component = new FullLifecycleComponent();
  
          try
          {
              component.enableLogging(new 
LogKitLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("")));
              component.contextualize(new DefaultContext());
              component.parameterize(new Parameters());
              component.configure(new DefaultConfiguration("", ""));
              component.compose(new DefaultComponentManager());
              component.initialize();
              component.start();
              component.suspend();
              component.resume();
              component.dispose();
              component.stop();
          }
          catch ( Exception e )
          {
              return;
          }
          fail("Did not detect out of order disposal");
      }
  
      public void testDoubleAssignOfLogger()
      {
          FullLifecycleComponent component = new FullLifecycleComponent();
  
          try
          {
              component.enableLogging(new 
LogKitLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("")));
              component.enableLogging(new 
LogKitLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("")));
          }
          catch (Exception e)
          {
              // test successfull
              return;
          }
  
          fail("Did not detect double assignment of Logger");
      }
  
      public void testDoubleAssignOfContext()
      {
          FullLifecycleComponent component = new FullLifecycleComponent();
  
          try
          {
              component.enableLogging(new 
LogKitLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("")));
              component.contextualize(new DefaultContext());
              component.contextualize(new DefaultContext());
          }
          catch (Exception e)
          {
              // test successfull
              return;
          }
  
          fail("Did not detect double assignment of Context");
      }
  
      public void testDoubleAssignOfParameters()
      {
          FullLifecycleComponent component = new FullLifecycleComponent();
  
          try
          {
              component.enableLogging(new 
LogKitLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("")));
              component.contextualize(new DefaultContext());
              component.parameterize(new Parameters());
              component.parameterize(new Parameters());
          }
          catch (Exception e)
          {
              // test successfull
              return;
          }
  
          fail("Did not detect double assignment of Parameters");
      }
  
      public void testDoubleAssignOfConfiguration()
      {
          FullLifecycleComponent component = new FullLifecycleComponent();
  
          try
          {
              component.enableLogging(new 
LogKitLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("")));
              component.contextualize(new DefaultContext());
              component.parameterize(new Parameters());
              component.configure(new DefaultConfiguration("", ""));
              component.configure(new DefaultConfiguration("", ""));
          }
          catch (Exception e)
          {
              // test successfull
              return;
          }
  
          fail("Did not detect double assignment of Configuration");
      }
  
      public void testDoubleAssignOfComponentManger()
      {
          FullLifecycleComponent component = new FullLifecycleComponent();
  
          try
          {
              component.enableLogging(new 
LogKitLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("")));
              component.contextualize(new DefaultContext());
              component.parameterize(new Parameters());
              component.configure(new DefaultConfiguration("", ""));
              component.compose(new DefaultComponentManager());
              component.compose(new DefaultComponentManager());
          }
          catch (Exception e)
          {
              // test successfull
              return;
          }
  
          fail("Did not detect double assignment of ComponentManager");
      }
  }
  
  
  
  1.1                  
jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/util/test/FullLifecycleComponent.java
  
  Index: FullLifecycleComponent.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE file.
   */
  package org.apache.avalon.excalibur.util.test;
  
  import org.apache.avalon.excalibur.util.ComponentStateValidator;
  import org.apache.avalon.framework.activity.Disposable;
  import org.apache.avalon.framework.activity.Initializable;
  import org.apache.avalon.framework.activity.Startable;
  import org.apache.avalon.framework.activity.Suspendable;
  import org.apache.avalon.framework.component.Composable;
  import org.apache.avalon.framework.component.ComponentManager;
  import org.apache.avalon.framework.component.ComponentException;
  import org.apache.avalon.framework.configuration.Configurable;
  import org.apache.avalon.framework.configuration.Configuration;
  import org.apache.avalon.framework.configuration.ConfigurationException;
  import org.apache.avalon.framework.context.Contextualizable;
  import org.apache.avalon.framework.context.Context;
  import org.apache.avalon.framework.context.ContextException;
  import org.apache.avalon.framework.logger.LogEnabled;
  import org.apache.avalon.framework.logger.Logger;
  import org.apache.avalon.framework.parameters.Parameterizable;
  import org.apache.avalon.framework.parameters.Parameters;
  import org.apache.avalon.framework.parameters.ParameterException;
  import org.apache.avalon.framework.thread.ThreadSafe;
  
  /**
   * This test class is used to test the AbstractComponent facilities for you.
   *
   * @author <a href="[EMAIL PROTECTED]">Berin Loritsch</a>
   * @version CVS $Revision: 1.1 $ $Date: 2001/12/02 15:15:36 $
   */
  public final class FullLifecycleComponent
      implements LogEnabled, Contextualizable, Parameterizable, Configurable,
                 Composable, Initializable, Startable, Suspendable, Disposable,
                 ThreadSafe
  {
      private ComponentStateValidator m_validator = new 
ComponentStateValidator( this );
      private Logger m_logger;
      private Context m_context;
      private Parameters m_parameters;
      private Configuration m_configuration;
      private ComponentManager m_componentManager;
  
      public void enableLogging( Logger logger )
      {
          m_validator.checkNotAssigned( m_logger, "Logger already set!" );
          m_validator.checkLogEnabled( "Logger: Initialization out of order." );
  
          m_logger = logger;
      }
  
      public void contextualize( Context context )
          throws ContextException
      {
          m_validator.checkNotAssigned( m_context, "Context already set!" );
          m_validator.checkContextualized( "Context: Initialization out of 
order." );
  
          m_context = context;
      }
  
      public void parameterize( Parameters params )
          throws ParameterException
      {
          m_validator.checkNotAssigned( m_parameters, "Parameters already set!" 
);
          m_validator.checkParameterized( "Parameters: Initialization out of 
order." );
  
          m_parameters = params;
      }
  
      public void configure( Configuration config )
          throws ConfigurationException
      {
          m_validator.checkNotAssigned( m_configuration, "Configuration already 
set!" );
          m_validator.checkConfigured( "Configuration: Initialization out of 
order."  );
  
          m_configuration = config;
      }
  
      public void compose( ComponentManager manager )
          throws ComponentException
      {
          m_validator.checkNotAssigned( m_componentManager, "Component Manager 
already set!" );
          m_validator.checkComposed( "ComponentManager: Initialization out of 
order." );
      }
  
      public void initialize()
          throws Exception
      {
          m_validator.checkInitialized( "Initialize: Initialization out of 
order." );
      }
  
      public void start()
          throws Exception
      {
          m_validator.checkStarted( "Start: Initialization out of order." );
      }
  
      public void suspend()
      {
          m_validator.checkSuspended( "Suspend: Initialization out of order." );
      }
  
      public void resume()
      {
          m_validator.checkResumed( "Resume: Initialization out of order." );
      }
  
      public void stop()
          throws Exception
      {
          m_validator.checkStopped( "Stop: Initialization out of order." );
      }
  
      public void dispose()
      {
          m_validator.checkDisposed( "Dispose: Initialization out of order." );
  
          m_logger = null;
          m_context = null;
          m_parameters = null;
          m_configuration = null;
          m_componentManager = null;
      }
  }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to