|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.convertor; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.Properties; import org.netbeans.api.convertor.ConvertorException; import org.netbeans.spi.convertor.Convertor; import org.openide.ErrorManager; import org.openide.util.Lookup; import org.openide.util.Utilities; /** * * @author David Konecny */ public class InstanceUtils { private InstanceUtils() { } public static Object newValue(String val, Properties properties) { val = Utilities.translate(val); try { Class c = findClass(val); if (properties == null) { return c.newInstance(); } else { Constructor con = c.getConstructor(new Class[]{Properties.class}); return con.newInstance(new Object[]{properties}); } } catch (Exception e) { ConvertorException e2 = new ConvertorException("Cannot instantiate class "+val); ErrorManager.getDefault().annotate(e2, e); throw e2; } } public static Object methodValue(String val, Properties properties) { int sepIdx = val.lastIndexOf('.'); if (sepIdx == -1) { throw new ConvertorException("Cannot call method "+val+", because it is not fully qualified."); } String methodName = val.substring(sepIdx+1); String className = val.substring(0,sepIdx); try { Class cls = findClass(className); if (properties == null) { Method method = cls.getMethod(methodName, new Class[]{}); return method.invoke(null, new Object[]{}); } else { Method method = cls.getMethod(methodName, new Class[]{Properties.class}); return method.invoke(null, new Object[]{properties}); } } catch (Exception e) { ConvertorException e2 = new ConvertorException("Cannot instantiate method "+val); ErrorManager.getDefault().annotate(e2, e); throw e2; } } public static Class findClass(String name) throws ClassNotFoundException { ClassLoader c = (ClassLoader)Lookup.getDefault().lookup(ClassLoader.class); if (c == null) { return Class.forName(name, true, null); } else { return Class.forName(name, true, c); } } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.