/** * */ package org.javabuilders.handler.type; import org.javabuilders.BuildException; import org.javabuilders.BuildProcess; import org.javabuilders.Node; import org.javabuilders.handler.ITypeAsValueHandler; /** * Handles creating Class objects * * @author anavarro * @author Jacek Furmankiewicz * * @version 1.0 (modified to make it generic, not just Swing-specific) */ public final class ClassAsValueHandler implements ITypeAsValueHandler<Class<?>> { /** * CLASS_VALUE_REGEX */ private final static String CLASS_VALUE_REGEX = "^(.)+$"; /** * singleton */ private final static ClassAsValueHandler SINGLETON = new ClassAsValueHandler(); /** * @return Singleton */ public static ClassAsValueHandler getInstance() { return SINGLETON; } /** * (non-Javadoc) * * @see org.javabuilders.handler.ITypeAsValueHandler#getInputValueSample() */ public String getInputValueSample() { return "java.lang.String"; } /** * (non-Javadoc) * * @see org.javabuilders.handler.ITypeAsValueHandler#getValue(org.javabuilders.BuildProcess, org.javabuilders.Node, java.lang.String, java.lang.Object) */ public Class<?> getValue(BuildProcess process, Node node, String key, Object inputValue) throws BuildException { final String classValue = (String) inputValue; if (classValue.matches(CLASS_VALUE_REGEX)) { try { return Class.forName(classValue); } catch (ClassNotFoundException e) { throw new BuildException("\"{0}\" is not a valid class", classValue); } } // else throw new BuildException("\"{0}\" is not a valid class", classValue); } /** * (non-Javadoc) * * @see org.javabuilders.handler.ITypeAsValueHandler#getRegex() */ public String getRegex() { return CLASS_VALUE_REGEX; } /** * (non-Javadoc) * * @see org.javabuilders.IApplicable#getApplicableClass() */ public Class<?> getApplicableClass() { return Class.class; } }