1 17 18 package org.apache.avalon.fortress.impl.role; 19 20 import org.apache.avalon.fortress.RoleManager; 21 import org.apache.avalon.framework.configuration.Configurable; 22 import org.apache.avalon.framework.configuration.Configuration; 23 import org.apache.avalon.framework.configuration.ConfigurationException; 24 25 34 public class ConfigurableRoleManager 35 extends AbstractRoleManager 36 implements Configurable 37 { 38 41 public ConfigurableRoleManager() 42 { 43 super( null, null ); 44 } 45 46 52 public ConfigurableRoleManager( final ClassLoader loader ) 53 { 54 super( null, loader ); 55 } 56 57 63 public ConfigurableRoleManager( final RoleManager parent ) 64 { 65 super( parent, null ); 66 } 67 68 75 public ConfigurableRoleManager( final RoleManager parent, final ClassLoader loader ) 76 { 77 super( parent, loader ); 78 } 79 80 87 public final void configure( final Configuration configuration ) 88 throws ConfigurationException 89 { 90 final Configuration[] roles = configuration.getChildren( "role" ); 91 92 for ( int i = 0; i < roles.length; i++ ) 93 { 94 final String role = roles[i].getAttribute( "name" ); 95 final Configuration[] components = roles[i].getChildren( "component" ); 96 97 for ( int j = 0; j < components.length; j++ ) 98 { 99 final String shorthand = components[j].getAttribute( "shorthand" ); 100 final String className = 101 components[j].getAttribute( "class", null ); 102 final String handlerClassName = 103 components[j].getAttribute( "handler", 104 org.apache.avalon.fortress.impl.handler.PerThreadComponentHandler.class.getName() ); 105 106 if ( ! addRole( shorthand, role, className, handlerClassName ) ) 107 { 108 final String message = "Skipping invalid entry:\n\tRole: " + role + 109 "\n\tShorthand: " + shorthand + 110 "\n\tClass Name: " + className + 111 "\n\tHandler Class: " + handlerClassName; 112 113 getLogger().error( message ); 114 } 115 } 116 } 117 } 118 } 119 | Popular Tags |