leif 2002/11/29 19:16:11 Added: info/src/java/org/apache/avalon/framework/tools LegacyBlockInfoWriter.java LegacyUtil.java Log: Commit for PeterD Revision Changes Path 1.1 jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/LegacyBlockInfoWriter.java Index: LegacyBlockInfoWriter.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.framework.tools.infobuilder; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import org.apache.avalon.framework.info.ComponentInfo; import org.apache.avalon.framework.info.DependencyDescriptor; import org.apache.avalon.framework.info.FeatureDescriptor; import org.apache.avalon.framework.info.SchemaDescriptor; import org.apache.avalon.framework.info.ServiceDescriptor; /** * Write {@link ComponentInfo} objects to a stream as xml * documents in legacy BlockInfo format. * * @author <a href="mailto:peter at apache.org">Peter Donald</a> * @version $Revision: 1.1 $ $Date: 2002/11/30 03:16:11 $ */ public class LegacyBlockInfoWriter implements InfoWriter { /** * Write out info representation to xml. * * @param info the info object * @param outputStream the stream to write to * @throws IOException if unable to write xml */ public void writeComponentInfo( final ComponentInfo info, final OutputStream outputStream ) throws Exception { final Writer writer = new OutputStreamWriter( outputStream ); writeHeader( writer ); writeDoctype( writer ); writer.write( "<blockinfo>" ); writeBlock( writer, info ); writeServices( writer, info.getServices() ); writeMxServices( writer, info.getServices() ); writeDependencies( writer, info.getDependencies() ); writer.write( "</blockinfo>" ); writer.flush(); } private void writeHeader( final Writer writer ) throws IOException { writer.write( "<?xml version=\"1.0\" ?>" ); } /** * Write out DOCType delcaration. * * @param writer the writer * @throws IOException if unable to write xml */ private void writeDoctype( final Writer writer ) throws IOException { final String doctype = "<!DOCTYPE blockinfo " + "PUBLIC \"-//PHOENIX/Block Info DTD Version 1.0//EN\" " + "\"http://jakarta.apache.org/avalon/dtds/phoenix/blockinfo_1_0.dtd\">"; writer.write( doctype ); } /** * Write out xml representation of a component. * * @param writer the writer * @param info the component info * @throws IOException if unable to write xml */ private void writeBlock( final Writer writer, final ComponentInfo info ) throws IOException { writer.write( "<block>\n" ); writer.write( " <version>1.0</version>" ); final SchemaDescriptor schema = info.getConfigurationSchema(); if( null != schema ) { final String output = " <schema-type>" + schema.getType() + "</schema-type>"; writer.write( output ); } writer.write( "</block>" ); } /** * Write out xml representation of a set of services. * * @param writer the writer * @param services the services * @throws IOException if unable to write xml */ private void writeServices( final Writer writer, final ServiceDescriptor[] services ) throws IOException { if( 0 == services.length ) { return; } writer.write( "<services>" ); for( int i = 0; i < services.length; i++ ) { final ServiceDescriptor service = services[ i ]; if( !LegacyUtil.isMxService( service ) ) { writeService( writer, service.getType(), service ); } } writer.write( "</services>" ); } /** * Write out xml representation of a set of services. * * @param writer the writer * @param services the services * @throws IOException if unable to write xml */ private void writeMxServices( final Writer writer, final ServiceDescriptor[] services ) throws IOException { if( 0 == services.length ) { return; } writer.write( "<management-access-points>" ); for( int i = 0; i < services.length; i++ ) { final ServiceDescriptor service = services[ i ]; if( LegacyUtil.isMxService( service ) ) { writeService( writer, service.getType(), service ); } } writer.write( "</management-access-points>" ); } /** * Write out xml representation of a set of dependencies. * * @param writer the writer * @param dependencies the dependencies * @throws IOException if unable to write xml */ private void writeDependencies( final Writer writer, final DependencyDescriptor[] dependencies ) throws IOException { if( 0 == dependencies.length ) { return; } writer.write( "<dependencies>" ); for( int i = 0; i < dependencies.length; i++ ) { final DependencyDescriptor dependency = dependencies[ i ]; if( dependency.isOptional() ) { continue; } writer.write( "<dependency>" ); final String key = dependency.getKey(); final String type = dependency.getType(); if( !key.equals( type ) ) { writer.write( "<role>" ); writer.write( key ); writer.write( "</role>" ); } writeService( writer, type, dependency ); writer.write( "</dependency>" ); } writer.write( "</dependencies>" ); } /** * Write out xml representation of a service. * * @param writer the writer * @param type the type of the service * @param feature the feature describing service * @throws IOException if unable to write xml */ private void writeService( final Writer writer, final String type, final FeatureDescriptor feature ) throws IOException { writer.write( "<service name=\"" ); writer.write( type ); final String version = LegacyUtil.getVersionString( feature ); if( null != version ) { writer.write( "\" version=\"" ); writer.write( version ); } writer.write( "\"/>" ); } } 1.1 jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/LegacyUtil.java Index: LegacyUtil.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.framework.tools.infobuilder; import org.apache.avalon.framework.info.Attribute; import org.apache.avalon.framework.info.ContextDescriptor; import org.apache.avalon.framework.info.EntryDescriptor; import org.apache.avalon.framework.info.FeatureDescriptor; import org.apache.avalon.framework.info.ServiceDescriptor; import org.apache.avalon.framework.info.ComponentInfo; import org.apache.avalon.framework.info.LoggerDescriptor; import org.apache.avalon.framework.info.DependencyDescriptor; import org.apache.avalon.framework.info.ComponentDescriptor; import org.apache.avalon.framework.Version; import java.util.Properties; /** * This is a set of constants and utility methods * to enablesupport of Legacy BlockInfo files. * * @author <a href="mailto:peter at apache.org">Peter Donald</a> * @version $Revision: 1.1 $ $Date: 2002/11/30 03:16:11 $ */ public class LegacyUtil { public static final String MX_ATTRIBUTE_NAME = "phoenix:mx"; public static final Attribute MX_ATTRIBUTE = new Attribute( MX_ATTRIBUTE_NAME, null ); public static final String VERSION_ATTRIBUTE_NAME = "phoenix:version"; public static final String VERSION_ATTRIBUTE_PARAMETER = "version"; public static final ContextDescriptor CONTEXT_DESCRIPTOR = new ContextDescriptor( "org.apache.avalon.phoenix.BlockContext", EntryDescriptor.EMPTY_SET, Attribute.EMPTY_SET ); private LegacyUtil() { } /** * Return the version specified (if any) for feature. * * @param type the type * @return the translated schema type */ public static String translateToSchemaUri( final String type ) { if( type.equals( "relax-ng" ) ) { return "http://relaxng.org/ns/structure/1.0"; } else { return type; } } /** * Return the version specified (if any) for feature. * * @param feature the feature * @return the version string */ public static String getVersionString( final FeatureDescriptor feature ) { final Attribute tag = feature.getAttribute( "avalon" ); if( null != tag ) { return tag.getParameter( "version" ); } return null; } public static Attribute createVersionAttribute( final String version ) { final Properties parameters = new Properties(); parameters.setProperty( VERSION_ATTRIBUTE_PARAMETER, version ); return new Attribute( VERSION_ATTRIBUTE_NAME, parameters ); } /** * Return true if specified service is a management service. * * @param service the service * @return true if specified service is a management service, false otherwise. */ public static boolean isMxService( final ServiceDescriptor service ) { final Attribute tag = service.getAttribute( MX_ATTRIBUTE_NAME ); return null != tag; } /** * Create a version for a feature. Defaults to 1.0 if not specified. * * @param feature the feature * @return the Version object */ public static Version toVersion( final FeatureDescriptor feature ) { final String version = getVersionString( feature ); if( null == version ) { return new Version( 1, 0, 0 ); } else { return Version.getVersion( version ); } } /** * Create a {@link ComponentInfo} for a Listener with specified classname. * * @param implementationKey the classname of listener * @return the ComponentInfo for listener */ public static ComponentInfo createListenerInfo( final String implementationKey ) { final ComponentDescriptor descriptor = new ComponentDescriptor( implementationKey, Attribute.EMPTY_SET ); return new ComponentInfo( descriptor, ServiceDescriptor.EMPTY_SET, LoggerDescriptor.EMPTY_SET, ContextDescriptor.EMPTY_CONTEXT, DependencyDescriptor.EMPTY_SET, null, null ); } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>