| 1 8 package org.codehaus.loom.components.util; 9 10 import java.io.File ; 11 import java.util.ArrayList ; 12 import org.apache.avalon.phoenix.metadata.BlockListenerMetaData; 13 import org.apache.avalon.phoenix.metadata.BlockMetaData; 14 import org.apache.avalon.phoenix.metadata.DependencyMetaData; 15 import org.apache.avalon.phoenix.metadata.SarMetaData; 16 import org.apache.avalon.phoenix.metainfo.BlockInfo; 17 import org.codehaus.loom.components.util.info.ComponentInfo; 18 import org.codehaus.loom.components.util.metadata.ComponentTemplate; 19 import org.codehaus.loom.components.util.profile.ComponentProfile; 20 import org.codehaus.loom.components.util.profile.PartitionProfile; 21 import org.codehaus.loom.interfaces.ContainerConstants; 22 23 29 public class ComponentMetaDataConverter 30 { 31 private ComponentMetaDataConverter() 32 { 33 } 34 35 public static SarMetaData toSarMetaData( final PartitionProfile partition, 36 final File homeDirectory ) 37 { 38 final PartitionProfile blockPartition = 39 partition.getPartition( ContainerConstants.BLOCK_PARTITION ); 40 final PartitionProfile listenerPartition = 41 partition.getPartition( ContainerConstants.LISTENER_PARTITION ); 42 final BlockListenerMetaData[] listeners = 43 toBlockListeners( listenerPartition.getMetaData().getComponents() ); 44 final BlockMetaData[] blocks = 45 toBlocks( blockPartition.getComponents() ); 46 return new SarMetaData( partition.getMetaData().getName(), 47 homeDirectory, 48 blocks, 49 listeners ); 50 } 51 52 60 private static BlockMetaData[] toBlocks( 61 final ComponentProfile[] components ) 62 { 63 final ArrayList listenerSet = new ArrayList (); 64 for( int i = 0; i < components.length; i++ ) 65 { 66 final ComponentProfile component = components[ i ]; 67 final BlockMetaData block = 68 toBlockMetaData( component.getTemplate(), 69 component.getInfo() ); 70 listenerSet.add( block ); 71 } 72 return (BlockMetaData[])listenerSet.toArray( 73 new BlockMetaData[ listenerSet.size() ] ); 74 } 75 76 83 public static BlockListenerMetaData[] toBlockListeners( 84 final ComponentTemplate[] listeners ) 85 { 86 final ArrayList listenerSet = new ArrayList (); 87 for( int i = 0; i < listeners.length; i++ ) 88 { 89 final BlockListenerMetaData listener = 90 new BlockListenerMetaData( listeners[ i ].getName(), 91 listeners[ i ].getImplementationKey() ); 92 listenerSet.add( listener ); 93 } 94 return (BlockListenerMetaData[])listenerSet.toArray( 95 new BlockListenerMetaData[ listenerSet.size() ] ); 96 } 97 98 104 public static BlockMetaData toBlockMetaData( 105 final ComponentTemplate component, 106 final ComponentInfo info ) 107 { 108 final boolean disableProxy = component.isDisableProxy(); 109 final DependencyMetaData[] dependencies = 110 toPhoenixDependencys( component.getDependencies() ); 111 112 final BlockInfo blockInfo = ComponentInfoConverter.toBlockInfo( info ); 113 return new BlockMetaData( component.getName(), 114 dependencies, 115 disableProxy, 116 blockInfo ); 117 } 118 119 125 private static DependencyMetaData[] toPhoenixDependencys( 126 final org.codehaus.loom.components.util.metadata.DependencyDirective[] dependencies ) 127 { 128 final ArrayList depends = new ArrayList (); 129 for( int i = 0; i < dependencies.length; i++ ) 130 { 131 final DependencyMetaData dependency = 132 new DependencyMetaData( dependencies[ i ].getProviderName(), 133 dependencies[ i ].getKey() ); 134 depends.add( dependency ); 135 } 136 return (DependencyMetaData[])depends.toArray( 137 new DependencyMetaData[ depends.size() ] ); 138 } 139 } 140 | Popular Tags |