Author: niclas Date: Thu Jul 1 12:11:36 2004 New Revision: 22440 Modified: avalon/trunk/runtime/framework/api/src/java/org/apache/avalon/framework/Enum.java Log: There is a variable name (enum) in this class that will fail under JDK1.5, as this is now a keyword.
Modified: avalon/trunk/runtime/framework/api/src/java/org/apache/avalon/framework/Enum.java ============================================================================== --- avalon/trunk/runtime/framework/api/src/java/org/apache/avalon/framework/Enum.java (original) +++ avalon/trunk/runtime/framework/api/src/java/org/apache/avalon/framework/Enum.java Thu Jul 1 12:11:36 2004 @@ -1,175 +1,175 @@ -/* - * Copyright 1997-2004 The Apache Software Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.avalon.framework; - -import java.util.Map; - -/** - * Basic enum class for type-safe enums. Should be used as an abstract base. For example: - * - * <pre> - * import org.apache.avalon.framework.Enum; - * - * public final class Color extends Enum { - * public static final Color RED = new Color( "Red" ); - * public static final Color GREEN = new Color( "Green" ); - * public static final Color BLUE = new Color( "Blue" ); - * - * private Color( final String color ) - * { - * super( color ); - * } - * } - * </pre> - * - * If further operations, such as iterating over all items, are required, the - * [EMAIL PROTECTED] #Enum(String, Map)} constructor can be used to populate a <code>Map</code>, from which - * further functionality can be derived: - * <pre> - * public final class Color extends Enum { - * static final Map map = new HashMap(); - * - * public static final Color RED = new Color( "Red", map ); - * public static final Color GREEN = new Color( "Green", map ); - * public static final Color BLUE = new Color( "Blue", map ); - * - * private Color( final String color, final Map map ) - * { - * super( color, map ); - * } - * - * public static Iterator iterator() - * { - * return map.values().iterator(); - * } - * } - * </pre> - * - * <p> - * <em>NOTE:</em> between 4.0 and 4.1, the constructors' access has been changed - * from <code>public</code> to <code>protected</code>. This is to prevent users - * of the Enum breaking type-safety by defining new Enum items. All Enum items - * should be defined in the Enum class, as shown above. - * </p> - * - * - * @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development Team</a> - * @version CVS $Revision: 1.28 $ $Date: 2004/02/11 14:34:24 $ - */ -public abstract class Enum -{ - /** - * The string representation of the Enum. - */ - private final String m_name; - - /** - * Constructor to add a new named item. - * <p> - * <em>Note:</em> access changed from <code>public</code> to - * <code>protected</code> after 4.0. See class description. - * </p> - * - * @param name Name of the item. - */ - protected Enum( final String name ) - { - this( name, null ); - } - - /** - * Constructor to add a new named item. - * <p> - * <em>Note:</em> access changed from <code>public</code> to - * <code>protected</code> after 4.0. See class description. - * </p> - * - * @param name Name of the item. - * @param map A <code>Map</code>, to which will be added a pointer to the newly constructed - * object. - */ - protected Enum( final String name, final Map map ) - { - m_name = name; - if( null != map ) - { - map.put( name, this ); - } - } - - /** - * Tests for equality. Two Enum:s are considered equal - * if they are of the same class and have the same names. - * The method is also declared final - I (LSutic) did this to - * allow the JIT to inline it easily. - * - * @param o the other object - * @return the equality status - */ - public final boolean equals( Object o ) - { - if( this == o ) - return true; - if( !(o instanceof Enum) ) - return false; - - final Enum enum = (Enum)o; - - if( !getClass().equals( enum.getClass() ) ) - return false; - if( m_name != null ? !m_name.equals( enum.m_name ) : enum.m_name != null ) - return false; - - return true; - } - - public int hashCode() - { - int result; - result = (m_name != null ? m_name.hashCode() : 0); - result = 29 * result + getClass().hashCode(); - return result; - } - - /** - * Returns a hash code value for the object. - * - * @return a hash code value for this object - */ - /*public int hashCode() - { - return m_name.hashCode() ^ this.getClass().getName().hashCode(); - }*/ - - /** - * Retrieve the name of this Enum item, set in the constructor. - * @return the name <code>String</code> of this Enum item - */ - public final String getName() - { - return m_name; - } - - /** - * Human readable description of this Enum item. For use when debugging. - * @return String in the form <code>type[name]</code>, eg.: - * <code>Color[Red]</code>. - */ - public String toString() - { - return getClass().getName() + "[" + m_name + "]"; - } -} +/* + * Copyright 1997-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.avalon.framework; + +import java.util.Map; + +/** + * Basic enum class for type-safe enums. Should be used as an abstract base. For example: + * + * <pre> + * import org.apache.avalon.framework.Enum; + * + * public final class Color extends Enum { + * public static final Color RED = new Color( "Red" ); + * public static final Color GREEN = new Color( "Green" ); + * public static final Color BLUE = new Color( "Blue" ); + * + * private Color( final String color ) + * { + * super( color ); + * } + * } + * </pre> + * + * If further operations, such as iterating over all items, are required, the + * [EMAIL PROTECTED] #Enum(String, Map)} constructor can be used to populate a <code>Map</code>, from which + * further functionality can be derived: + * <pre> + * public final class Color extends Enum { + * static final Map map = new HashMap(); + * + * public static final Color RED = new Color( "Red", map ); + * public static final Color GREEN = new Color( "Green", map ); + * public static final Color BLUE = new Color( "Blue", map ); + * + * private Color( final String color, final Map map ) + * { + * super( color, map ); + * } + * + * public static Iterator iterator() + * { + * return map.values().iterator(); + * } + * } + * </pre> + * + * <p> + * <em>NOTE:</em> between 4.0 and 4.1, the constructors' access has been changed + * from <code>public</code> to <code>protected</code>. This is to prevent users + * of the Enum breaking type-safety by defining new Enum items. All Enum items + * should be defined in the Enum class, as shown above. + * </p> + * + * + * @author <a href="mailto:[EMAIL PROTECTED]">Avalon Development Team</a> + * @version CVS $Revision: 1.28 $ $Date: 2004/02/11 14:34:24 $ + */ +public abstract class Enum +{ + /** + * The string representation of the Enum. + */ + private final String m_name; + + /** + * Constructor to add a new named item. + * <p> + * <em>Note:</em> access changed from <code>public</code> to + * <code>protected</code> after 4.0. See class description. + * </p> + * + * @param name Name of the item. + */ + protected Enum( final String name ) + { + this( name, null ); + } + + /** + * Constructor to add a new named item. + * <p> + * <em>Note:</em> access changed from <code>public</code> to + * <code>protected</code> after 4.0. See class description. + * </p> + * + * @param name Name of the item. + * @param map A <code>Map</code>, to which will be added a pointer to the newly constructed + * object. + */ + protected Enum( final String name, final Map map ) + { + m_name = name; + if( null != map ) + { + map.put( name, this ); + } + } + + /** + * Tests for equality. Two Enum:s are considered equal + * if they are of the same class and have the same names. + * The method is also declared final - I (LSutic) did this to + * allow the JIT to inline it easily. + * + * @param o the other object + * @return the equality status + */ + public final boolean equals( Object o ) + { + if( this == o ) + return true; + if( !(o instanceof Enum) ) + return false; + + final Enum enumerated = (Enum)o; + + if( !getClass().equals( enumerated.getClass() ) ) + return false; + if( m_name != null ? !m_name.equals( enumerated.m_name ) : enumerated.m_name != null ) + return false; + + return true; + } + + public int hashCode() + { + int result; + result = (m_name != null ? m_name.hashCode() : 0); + result = 29 * result + getClass().hashCode(); + return result; + } + + /** + * Returns a hash code value for the object. + * + * @return a hash code value for this object + */ + /*public int hashCode() + { + return m_name.hashCode() ^ this.getClass().getName().hashCode(); + }*/ + + /** + * Retrieve the name of this Enum item, set in the constructor. + * @return the name <code>String</code> of this Enum item + */ + public final String getName() + { + return m_name; + } + + /** + * Human readable description of this Enum item. For use when debugging. + * @return String in the form <code>type[name]</code>, eg.: + * <code>Color[Red]</code>. + */ + public String toString() + { + return getClass().getName() + "[" + m_name + "]"; + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]