git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271464 13f79535-47bb-0310-9956-ffa450edef68master
@@ -1,82 +0,0 @@ | |||
/* | |||
* 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.aut.converter; | |||
import org.apache.avalon.excalibur.i18n.ResourceManager; | |||
import org.apache.avalon.excalibur.i18n.Resources; | |||
/** | |||
* Instances of this interface are used to convert between different types. | |||
* | |||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
* @version $Revision$ $Date$ | |||
*/ | |||
public abstract class AbstractConverter | |||
implements Converter | |||
{ | |||
private final static Resources REZ = | |||
ResourceManager.getPackageResources( AbstractConverter.class ); | |||
private final Class m_source; | |||
private final Class m_destination; | |||
/** | |||
* Constructor for a converter between types source and destination | |||
* | |||
* @param source the source type | |||
* @param destination the destination type | |||
*/ | |||
public AbstractConverter( final Class source, final Class destination ) | |||
{ | |||
m_source = source; | |||
m_destination = destination; | |||
} | |||
/** | |||
* Convert an object from original to destination types | |||
* | |||
* @param destination the destination type | |||
* @param original the original Object | |||
* @param context the context in which to convert | |||
* @return the converted object | |||
* @exception ConverterException if an error occurs | |||
*/ | |||
public Object convert( final Class destination, | |||
final Object original, | |||
final ConverterContext context ) | |||
throws ConverterException | |||
{ | |||
if( m_destination != destination ) | |||
{ | |||
final String message = | |||
REZ.getString( "bad-destination.error", destination.getName(), m_destination ); | |||
throw new IllegalArgumentException( message ); | |||
} | |||
if( !m_source.isInstance( original ) ) | |||
{ | |||
final String message = | |||
REZ.getString( "bad-instance.error", original, m_source.getName() ); | |||
throw new IllegalArgumentException( message ); | |||
} | |||
return convert( original, context ); | |||
} | |||
/** | |||
* Overide this in a particular converter to do the conversion. | |||
* | |||
* @param original the original Object | |||
* @param context the context in which to convert | |||
* @return the converted object | |||
* @exception ConverterException if an error occurs | |||
*/ | |||
protected abstract Object convert( Object original, ConverterContext context ) | |||
throws ConverterException; | |||
} | |||
@@ -1,34 +0,0 @@ | |||
/* | |||
* 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.aut.converter; | |||
/** | |||
* Instances of this interface are used to convert between different types. | |||
* | |||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
* @version $Revision$ $Date$ | |||
* @ant:role shorthand="converter" | |||
*/ | |||
public interface Converter | |||
{ | |||
String ROLE = Converter.class.getName(); | |||
/** | |||
* Convert original to destination type. | |||
* Destination is passed so that one converter can potentiall | |||
* convert to multiple different types. | |||
* | |||
* @param destination the destinaiton type | |||
* @param original the original type | |||
* @param context the context in which to convert | |||
* @return the converted object | |||
* @exception ConverterException if an error occurs | |||
*/ | |||
Object convert( Class destination, Object original, ConverterContext context ) | |||
throws ConverterException; | |||
} |
@@ -1,24 +0,0 @@ | |||
/* | |||
* 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.aut.converter; | |||
/** | |||
* The context in which objects can be converted from one type to another type. | |||
* | |||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
* @version $Revision$ $Date$ | |||
* @ant:role shorthand="converter" | |||
*/ | |||
public interface ConverterContext | |||
{ | |||
/** | |||
* Retrieve a vlaue from the context with the specified key. | |||
* Will return null if no such value exists. | |||
*/ | |||
Object get( Object key ); | |||
} |
@@ -1,42 +0,0 @@ | |||
/* | |||
* 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.aut.converter; | |||
import org.apache.avalon.framework.CascadingException; | |||
/** | |||
* ConverterException thrown when a problem occurs during convertion etc. | |||
* | |||
* @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
* @version $Revision$ $Date$ | |||
*/ | |||
public class ConverterException | |||
extends CascadingException | |||
{ | |||
/** | |||
* Basic constructor with a message | |||
* | |||
* @param message the message | |||
*/ | |||
public ConverterException( final String message ) | |||
{ | |||
this( message, null ); | |||
} | |||
/** | |||
* Constructor that builds cascade so that other exception information can be retained. | |||
* | |||
* @param message the message | |||
* @param throwable the throwable | |||
*/ | |||
public ConverterException( final String message, final Throwable throwable ) | |||
{ | |||
super( message, throwable ); | |||
} | |||
} | |||
@@ -1,2 +0,0 @@ | |||
bad-destination.error=Destination type ({0}) is not equal to {1}. | |||
bad-instance.error=Object {0} is not an instance of {1}. |