private static List < String > loadFactories ( Map < String , String [ ] > factories ) { final boolean bTrace = TraceComponent . isAnyTracingEnabled ( ) ; final ChannelFramework cf = ChannelFrameworkFactory . getChannelFramework ( ) ; List < String > createdFactories = new ArrayList < String > ( factories . size ( ) ) ; String key , value ; for ( Entry < String , String [ ] > entry : factories . entrySet ( ) ) { Class < ? > factoryType = cf . lookupFactory ( entry . getKey ( ) ) ; if ( null == factoryType ) { if ( bTrace && tc . isEventEnabled ( ) ) { Tr . event ( tc , "Delay; missing factory type " + entry . getKey ( ) ) ; } delayedConfig . put ( FACTORY_PREFIX + entry . getKey ( ) , entry . getValue ( ) ) ; createdFactories . add ( entry . getKey ( ) ) ; continue ; } String [ ] props = entry . getValue ( ) ; for ( int i = 0 ; i < props . length ; i ++ ) { key = extractKey ( props [ i ] ) ; value = extractValue ( props [ i ] ) ; if ( null != key && null != value ) { try { cf . updateChannelFactoryProperty ( factoryType , key , value ) ; } catch ( ChannelFactoryException e ) { FFDCFilter . processException ( e , "ChannelUtils.loadFactories" , "update" , new Object [ ] { entry , cf } ) ; if ( bTrace && tc . isEventEnabled ( ) ) { Tr . event ( tc , "Unable to update factory prop; " + factoryType + " " + key + "=" + value ) ; } } } } try { // Note: this is a find or create api, not just "get" cf . getChannelFactory ( factoryType ) ; createdFactories . add ( entry . getKey ( ) ) ; } catch ( ChannelFactoryException e ) { // ignore it } } // end-factories return createdFactories ; }
Load channel factories in the framework based on the provided factory configurations .