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/09/15 04:00:18 UTC
cvs commit: jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/infobuilder ComponentInfoConverter.java
donaldp 2002/09/14 19:00:18
Added: src/java/org/apache/avalon/phoenix/tools/infobuilder
ComponentInfoConverter.java
Log:
Add the start of a ComponentInfo --> BlockInfo converter. WIll enable interoperability and backwards compatible support (for listeners etc).
Revision Changes Path
1.1 jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/tools/infobuilder/ComponentInfoConverter.java
Index: ComponentInfoConverter.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.tools.infobuilder;
import java.util.ArrayList;
import org.apache.avalon.framework.Version;
import org.apache.avalon.framework.info.ComponentDescriptor;
import org.apache.avalon.framework.info.ComponentInfo;
import org.apache.avalon.framework.info.FeatureDescriptor;
import org.apache.avalon.framework.info.Tag;
import org.apache.avalon.phoenix.metainfo.BlockDescriptor;
import org.apache.avalon.phoenix.metainfo.BlockInfo;
import org.apache.avalon.phoenix.metainfo.DependencyDescriptor;
import org.apache.avalon.phoenix.metainfo.ServiceDescriptor;
/**
* Convert a {@link ComponentInfo} into a {@link BlockInfo}.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @version $Revision: 1.1 $ $Date: 2002/09/15 02:00:18 $
*/
public class ComponentInfoConverter
{
private ComponentInfoConverter()
{
}
public static BlockInfo toBlockInfo( final ComponentInfo component )
{
final BlockDescriptor descriptor =
toBlockDescriptor( component.getComponentDescriptor() );
final ServiceDescriptor[] services =
toPhoenixServices( component.getServices() );
final ServiceDescriptor[] mxServices =
getMXServices( component.getServices() );
final DependencyDescriptor[] dependencys =
toPhoenixDependencys( component.getDependencies() );
return new BlockInfo( descriptor,
services,
mxServices,
dependencys );
}
private static ServiceDescriptor[] getMXServices(
final org.apache.avalon.framework.info.ServiceDescriptor[] services )
{
final ArrayList serviceSet = new ArrayList();
for( int i = 0; i < services.length; i++ )
{
final Tag tag = services[ i ].getTag( "mx" );
if( null != tag )
{
serviceSet.add( toPhoenixService( services[ i ] ) );
}
}
return (ServiceDescriptor[])serviceSet.toArray( new ServiceDescriptor[ serviceSet.size() ] );
}
private static ServiceDescriptor[] toPhoenixServices(
final org.apache.avalon.framework.info.ServiceDescriptor[] services )
{
final ArrayList serviceSet = new ArrayList();
for( int i = 0; i < services.length; i++ )
{
serviceSet.add( toPhoenixService( services[ i ] ) );
}
return (ServiceDescriptor[])serviceSet.toArray( new ServiceDescriptor[ serviceSet.size() ] );
}
private static ServiceDescriptor toPhoenixService(
final org.apache.avalon.framework.info.ServiceDescriptor service )
{
final Version version = toVersion( service );
final String classname = service.getImplementationKey();
return new ServiceDescriptor( classname, version );
}
private static DependencyDescriptor[] toPhoenixDependencys(
final org.apache.avalon.framework.info.DependencyDescriptor[] dependencies )
{
final ArrayList depends = new ArrayList();
for( int i = 0; i < dependencies.length; i++ )
{
depends.add( toPhoenixDependency( dependencies[ i ] ) );
}
return (DependencyDescriptor[])depends.toArray( new DependencyDescriptor[ depends.size() ] );
}
private static DependencyDescriptor toPhoenixDependency(
final org.apache.avalon.framework.info.DependencyDescriptor dependency )
{
final Version version = toVersion( dependency );
final ServiceDescriptor service =
new ServiceDescriptor( dependency.getService(), version );
return new DependencyDescriptor( dependency.getKey(), service );
}
private static BlockDescriptor toBlockDescriptor( final ComponentDescriptor component )
{
final Version version = toVersion( component );
String schemaType = null;
final Tag tag = component.getTag( "phoenix" );
if( null != tag )
{
schemaType = tag.getParameter( "schema-type" );
}
return new BlockDescriptor( component.getName(),
component.getImplementationKey(),
schemaType,
version );
}
private static Version toVersion( final FeatureDescriptor component )
{
final Tag tag = component.getTag( "avalon" );
Version version = new Version( 1, 0, 0 );
if( null != tag )
{
final String versionString = tag.getParameter( "version" );
if( null != versionString )
{
version = Version.getVersion( versionString );
}
}
return version;
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>