You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by do...@apache.org on 2002/05/19 04:31:04 UTC

cvs commit: jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/application ExportHelper.java

donaldp     02/05/18 19:31:04

  Added:       src/java/org/apache/avalon/phoenix/components/application
                        ExportHelper.java
  Log:
  Add in utility class to help exporting blocks
  to management subsystem.
  
  Revision  Changes    Path
  1.1                  jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/application/ExportHelper.java
  
  Index: ExportHelper.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.txt file.
   */
  package org.apache.avalon.phoenix.components.application;
  
  import org.apache.avalon.excalibur.i18n.ResourceManager;
  import org.apache.avalon.excalibur.i18n.Resources;
  import org.apache.avalon.framework.CascadingException;
  import org.apache.avalon.framework.logger.AbstractLogEnabled;
  import org.apache.avalon.phoenix.interfaces.ApplicationContext;
  import org.apache.avalon.phoenix.metadata.BlockMetaData;
  import org.apache.avalon.phoenix.metainfo.ServiceDescriptor;
  
  /**
   * Utility class to help with exporting Blocks to management subsystem.
   *
   * @author <a href="mailto:peter@apache.org">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2002/05/19 02:31:04 $
   */
  class ExportHelper
      extends AbstractLogEnabled
  {
      private static final Resources REZ =
          ResourceManager.getPackageResources( ExportHelper.class );
  
      /**
       * Export the services of block, declared to be management
       * services, into management system.
       */
      void exportBlock( final ApplicationContext context,
                        final BlockMetaData metaData,
                        final Object block )
          throws CascadingException
      {
          final ServiceDescriptor[] services = metaData.getBlockInfo().getManagementAccessPoints();
          final String name = metaData.getName();
          final ClassLoader classLoader = block.getClass().getClassLoader();
  
          for( int i = 0; i < services.length; i++ )
          {
              final ServiceDescriptor service = services[ i ];
              try
              {
                  final Class clazz = classLoader.loadClass( service.getName() );
                  context.exportObject( name, clazz, block );
              }
              catch( final Exception e )
              {
                  final String reason = e.toString();
                  final String message =
                      REZ.getString( "export.error", name, service.getName(), reason );
                  getLogger().error( message );
                  throw new CascadingException( message, e );
              }
          }
      }
  
      /**
       * Unxport the services of block, declared to be management
       * services, into management system.
       */
      void unexportBlock( final ApplicationContext context,
                          final BlockMetaData metaData,
                          final Object block )
      {
          final ServiceDescriptor[] services = metaData.getBlockInfo().getManagementAccessPoints();
          final String name = metaData.getName();
          final ClassLoader classLoader = block.getClass().getClassLoader();
  
          for( int i = 0; i < services.length; i++ )
          {
              final ServiceDescriptor service = services[ i ];
              try
              {
                  final Class clazz = classLoader.loadClass( service.getName() );
                  context.unexportObject( name, clazz );
              }
              catch( final Exception e )
              {
                  final String reason = e.toString();
                  final String message =
                      REZ.getString( "unexport.error", name, service.getName(), reason );
                  getLogger().error( message );
              }
          }
      }
  }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>