Package javassist

Class ClassMap

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.String,​java.lang.String>

    public class ClassMap
    extends java.util.HashMap<java.lang.String,​java.lang.String>
    A hash table associating class names with different names.

    This hashtable is used for replacing class names in a class definition or a method body. Define a subclass of this class if a more complex mapping algorithm is needed. For example,

    class MyClassMap extends ClassMap {
       public Object get(Object jvmClassName) {
         String name = toJavaName((String)jvmClassName);
         if (name.startsWith("java."))
             return toJvmName("java2." + name.substring(5));
         else
             return super.get(jvmClassName);
       }
     }

    This subclass maps java.lang.String to java2.lang.String. Note that get() receives and returns the internal representation of a class name. For example, the internal representation of java.lang.String is java/lang/String.

    Note that this is a map from String to String.

    See Also:
    get(Object), CtClass.replaceClassName(ClassMap), CtNewMethod.copy(CtMethod,String,CtClass,ClassMap), Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.util.AbstractMap

        java.util.AbstractMap.SimpleEntry<K extends java.lang.Object,​V extends java.lang.Object>, java.util.AbstractMap.SimpleImmutableEntry<K extends java.lang.Object,​V extends java.lang.Object>
      • Nested classes/interfaces inherited from interface java.util.Map

        java.util.Map.Entry<K extends java.lang.Object,​V extends java.lang.Object>
    • Constructor Summary

      Constructors 
      Constructor Description
      ClassMap()
      Constructs a hash table.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void fix​(java.lang.String name)
      Prevents a mapping from the specified class name to another name.
      void fix​(CtClass clazz)
      Prevents a mapping from the specified class name to another name.
      java.lang.String get​(java.lang.Object jvmClassName)
      Returns the class name to wihch the given jvmClassName is mapped.
      java.lang.String put​(java.lang.String oldname, java.lang.String newname)
      Maps a class name to another name in this hashtable.
      void put​(CtClass oldname, CtClass newname)
      Maps a class name to another name in this hashtable.
      void putIfNone​(java.lang.String oldname, java.lang.String newname)
      Is equivalent to put() except that the given mapping is not recorded into the hashtable if another mapping from oldname is already included.
      static java.lang.String toJavaName​(java.lang.String classname)
      Converts a class name from the internal representation used in the JVM to the normal one used in Java.
      static java.lang.String toJvmName​(java.lang.String classname)
      Converts a class name into the internal representation used in the JVM.
      • Methods inherited from class java.util.HashMap

        clear, clone, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, forEach, getOrDefault, isEmpty, keySet, merge, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size, values
      • Methods inherited from class java.util.AbstractMap

        equals, hashCode, toString
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.util.Map

        equals, hashCode
    • Constructor Detail

      • ClassMap

        public ClassMap()
        Constructs a hash table.
    • Method Detail

      • put

        public void put​(CtClass oldname,
                        CtClass newname)
        Maps a class name to another name in this hashtable. The names are obtained with calling Class.getName(). This method translates the given class names into the internal form used in the JVM before putting it in the hashtable.
        Parameters:
        oldname - the original class name
        newname - the substituted class name.
      • put

        public java.lang.String put​(java.lang.String oldname,
                                    java.lang.String newname)
        Maps a class name to another name in this hashtable. If the hashtable contains another mapping from the same class name, the old mapping is replaced. This method translates the given class names into the internal form used in the JVM before putting it in the hashtable.

        If oldname is identical to newname, then this method does not perform anything; it does not record the mapping from oldname to newname. See fix method.

        Specified by:
        put in interface java.util.Map<java.lang.String,​java.lang.String>
        Overrides:
        put in class java.util.HashMap<java.lang.String,​java.lang.String>
        Parameters:
        oldname - the original class name.
        newname - the substituted class name.
        See Also:
        fix(String)
      • putIfNone

        public void putIfNone​(java.lang.String oldname,
                              java.lang.String newname)
        Is equivalent to put() except that the given mapping is not recorded into the hashtable if another mapping from oldname is already included.
        Parameters:
        oldname - the original class name.
        newname - the substituted class name.
      • get

        public java.lang.String get​(java.lang.Object jvmClassName)
        Returns the class name to wihch the given jvmClassName is mapped. A subclass of this class should override this method.

        This method receives and returns the internal representation of class name used in the JVM.

        Specified by:
        get in interface java.util.Map<java.lang.String,​java.lang.String>
        Overrides:
        get in class java.util.HashMap<java.lang.String,​java.lang.String>
        See Also:
        toJvmName(String), toJavaName(String)
      • fix

        public void fix​(CtClass clazz)
        Prevents a mapping from the specified class name to another name.
      • fix

        public void fix​(java.lang.String name)
        Prevents a mapping from the specified class name to another name.
      • toJvmName

        public static java.lang.String toJvmName​(java.lang.String classname)
        Converts a class name into the internal representation used in the JVM.
      • toJavaName

        public static java.lang.String toJavaName​(java.lang.String classname)
        Converts a class name from the internal representation used in the JVM to the normal one used in Java.