PropertyContainer.java |
/*************************************** * * * JBoss: The OpenSource J2EE WebOS * * * * Distributable under LGPL license. * * See terms of license at gnu.org. * * * ***************************************/ package org.jboss.util.property; import java.util.Properties; /** * Provides helper methods for working with instance or class properties. * * @version <tt>$Revision: 1.2 $</tt> * @author <a href="mailto:jason@planet57.com">Jason Dillon</a> */ public class PropertyContainer extends PropertyMap { /** The group name for this container. */ protected String groupname = "<unknown>"; /** * Initialize the container with a property group. * * @param group Properties. */ public PropertyContainer(final Properties props) { super(props); } /** * Initialize the container with a property group of the given name. * * @param groupname Property group name. */ public PropertyContainer(final String groupname) { this(Property.getGroup(groupname)); this.groupname = groupname; } /** * Initialize the container with a property group of the given class name. * * @param type The class whos name will be the property group name. */ public PropertyContainer(final Class type) { this(type.getName()); } /** * Creates a {@link FieldBoundPropertyListener} for the field and * property name and adds it the underlying property group. * * @param name The field name to bind values to. * @param propertyName The property name to bind to. * * @throws IllegalArgumentException Field of property name is null or * empty. */ protected void bindField(final String name, final String propertyName) { if (name == null || name.equals("")) throw new IllegalArgumentException("name"); if (propertyName == null || propertyName.equals("")) throw new IllegalArgumentException("propertyName"); addPropertyListener (new FieldBoundPropertyListener(this, name, propertyName)); } /** * Creates a {@link FieldBoundPropertyListener} for the field and * property name and adds it the underlying property group. * * @param name The field name and property to bind values to. * * @throws IllegalArgumentException Field of property name is null or * empty. */ protected void bindField(final String name) { bindField(name, name); } /** * Creates a {@link MethodBoundPropertyListener} for the method and * property name and adds it the underlying property group. * * @param name The method name to bind values to. * @param propertyName The property name to bind to. * * @throws IllegalArgumentException Method of property name is null or * empty. */ protected void bindMethod(final String name, final String propertyName) { if (name == null || name.equals("")) throw new IllegalArgumentException("name"); if (propertyName == null || propertyName.equals("")) throw new IllegalArgumentException("propertyName"); addPropertyListener // opposite of field bound =( (new MethodBoundPropertyListener(this, propertyName, name)); } /** * Creates a {@link MethodBoundPropertyListener} for the method and * property name and adds it the underlying property group. * * @param name The method name and property to bind values to. * * @throws IllegalArgumentException Method of property name is null or * empty. */ protected void bindMethod(final String name) { bindMethod(name, name); } private String makeName(final String name) { return groupname + "." + name; } protected void throwException(final String name) throws PropertyException { throw new PropertyException(makeName(name)); } protected void throwException(final String name, final String msg) throws PropertyException { throw new PropertyException(makeName(name) + ": " + msg); } protected void throwException(final String name, final String msg, final Throwable nested) throws PropertyException { throw new PropertyException(makeName(name) + ": " + msg, nested); } protected void throwException(final String name, final Throwable nested) throws PropertyException { throw new PropertyException(makeName(name), nested); } }
PropertyContainer.java |