|
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-2001 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.mdr.handlers; import org.netbeans.mdr.util.DebugException; import org.netbeans.mdr.util.Logger; import javax.jmi.reflect.InvalidNameException; import javax.jmi.reflect.RefEnum; import java.lang.reflect.Field; import java.util.Hashtable; /** * * @author Martin Matula * @version */ public final class EnumResolver { private static final String ENUMIMPL_SUFFIX = "Enum"; private static final Hashtable enumCache = new Hashtable(50); // resolves enum. class based on the enum interface private static Class getEnumClass(Class ifc) throws IllegalArgumentException { try { String rawName = ifc.getName() + ENUMIMPL_SUFFIX; return BaseObjectHandler.resolveInterface(rawName); } catch (ClassNotFoundException ex) { throw new IllegalArgumentException("Invalid inteface: " + ifc); } } /** Returns a correct instance of an enumeration class representing the requested literal * @param ifcName Name of JMI interface generated for the enumeration. * @param label Name of the requested literal. * @return Instance of an enumeration class representing the literal. */ public static synchronized RefEnum resolveEnum(String ifcName, String label) { String enumKey = label + ":" + ifcName; RefEnum enum = (RefEnum) enumCache.get(enumKey); if (enum == null) { try { Class cl = BaseObjectHandler.resolveInterface(ifcName + ENUMIMPL_SUFFIX); Field f = cl.getField(org.netbeans.mdr.handlers.gen.TagSupport.mapEnumLiteral(label)); enum = (RefEnum) f.get(null); enumCache.put(enumKey, enum); } catch (NoSuchFieldException e) { throw new InvalidNameException(label, "Invalid literal name '" + label + "' for enumeration " + ifcName); } catch (Exception e) { throw (DebugException) Logger.getDefault().annotate(new DebugException(), e); } } return enum; } } |
... 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.