SystemPropertyClassValue.java |
/*************************************** * * * JBoss: The OpenSource J2EE WebOS * * * * Distributable under LGPL license. * * See terms of license at gnu.org. * * * ***************************************/ package org.jboss.util.property.jmx; import org.jboss.logging.Logger; /** * A helper for setting system properties based on class availablity.<p> * * It has a static method and an MBean wrapper for dynamic configuration.<p> * * The class is first checked for availablity before setting the system * property. * @jmx.mbean * * @version <tt>$Revision: 1.4 $</tt> * @author <a href="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a> */ public class SystemPropertyClassValue implements SystemPropertyClassValueMBean { public static final Logger log = Logger.getLogger(SystemPropertyClassValue.class); /** Property name. */ protected String property; /** Class Name. */ protected String className; /** * Constructor. */ public SystemPropertyClassValue() { } /** * The system property value * * @jmx.managed-attribute */ public String getProperty() { return property; } /** * The system property value * * @jmx.managed-attribute */ public void setProperty(String property) { this.property = property; } /** * The class name to use a value for the system property * when it is available * * @jmx.managed-attribute */ public String getClassName() { return className; } /** * The class name to use a value for the system property * when it is available * * @jmx.managed-attribute */ public void setClassName(String className) { this.className = className; } /** * JBoss lifecycle * * @jmx.managed-operation */ public void create() { Throwable error = setSystemPropertyClassValue(property, className); if (error != null) log.trace("Error loading class " + className + " property " + property + " not set.", error); } /** * Sets the system property to a class when the class is available. * * @param property the property to set * @param className the class to set as the properties value * @return any error loading the class * @exception IllegalArgumentException for a null or empty parameter */ public static Throwable setSystemPropertyClassValue(String property, String className) { // Validation if (property == null || property.trim().length() == 0) throw new IllegalArgumentException("Null or empty property"); if (className == null || className.trim().length() == 0) throw new IllegalArgumentException("Null or empty class name"); // Is the class available? try { Thread.currentThread().getContextClassLoader().loadClass(className); } catch (Throwable problem) { return problem; } // The class is there, set the property. System.setProperty(property, className); return null; } }
SystemPropertyClassValue.java |