1 8 package org.apache.avalon.phoenix.components.application; 9 10 import org.apache.avalon.excalibur.i18n.ResourceManager; 11 import org.apache.avalon.excalibur.i18n.Resources; 12 import org.apache.avalon.framework.CascadingException; 13 import org.apache.avalon.framework.logger.AbstractLogEnabled; 14 import org.apache.avalon.phoenix.interfaces.ApplicationContext; 15 import org.apache.avalon.phoenix.metadata.BlockMetaData; 16 import org.apache.avalon.phoenix.metainfo.ServiceDescriptor; 17 18 24 class ExportHelper 25 extends AbstractLogEnabled 26 { 27 private static final Resources REZ = 28 ResourceManager.getPackageResources( ExportHelper.class ); 29 30 34 void exportBlock( final ApplicationContext context, 35 final BlockMetaData metaData, 36 final Object block ) 37 throws CascadingException 38 { 39 final ServiceDescriptor[] services = metaData.getBlockInfo().getManagementAccessPoints(); 40 final String name = metaData.getName(); 41 final ClassLoader classLoader = block.getClass().getClassLoader(); 42 43 final Class [] serviceClasses = new Class [ services.length ]; 44 45 for( int i = 0; i < services.length; i++ ) 46 { 47 final ServiceDescriptor service = services[ i ]; 48 try 49 { 50 serviceClasses[ i ] = classLoader.loadClass( service.getName() ); 51 } 52 catch( final Exception e ) 53 { 54 final String reason = e.toString(); 55 final String message = 56 REZ.getString( "bad-mx-service.error", name, service.getName(), reason ); 57 getLogger().error( message ); 58 throw new CascadingException( message, e ); 59 } 60 } 61 62 try 63 { 64 context.exportObject( name, serviceClasses, block ); 65 } 66 catch( final Exception e ) 67 { 68 final String message = 69 REZ.getString( "export.error", name, e ); 70 getLogger().error( message ); 71 throw new CascadingException( message, e ); 72 } 73 74 } 75 76 80 void unexportBlock( final ApplicationContext context, 81 final BlockMetaData metaData, 82 final Object block ) 83 { 84 final String name = metaData.getName(); 85 try 86 { 87 context.unexportObject( name ); 88 } 89 catch( final Exception e ) 90 { 91 final String message = 92 REZ.getString( "unexport.error", name, e ); 93 getLogger().error( message ); 94 } 95 } 96 } 97 | Popular Tags |