You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2015/09/11 01:30:34 UTC

svn commit: r1702349 - /commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/generic/InvokeInstruction.java

Author: sebb
Date: Thu Sep 10 23:30:33 2015
New Revision: 1702349

URL: http://svn.apache.org/r1702349
Log:
Fix most deprecations for getClassName

Modified:
    commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/generic/InvokeInstruction.java

Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/generic/InvokeInstruction.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/generic/InvokeInstruction.java?rev=1702349&r1=1702348&r2=1702349&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/generic/InvokeInstruction.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/generic/InvokeInstruction.java Thu Sep 10 23:30:33 2015
@@ -21,6 +21,7 @@ import java.util.StringTokenizer;
 
 import org.apache.commons.bcel6.Constants;
 import org.apache.commons.bcel6.classfile.Constant;
+import org.apache.commons.bcel6.classfile.ConstantCP;
 import org.apache.commons.bcel6.classfile.ConstantPool;
 
 /**
@@ -118,4 +119,23 @@ public abstract class InvokeInstruction
     public Type[] getArgumentTypes( ConstantPoolGen cpg ) {
         return Type.getArgumentTypes(getSignature(cpg));
     }
+
+    /**
+     * This overrides the deprecated version as we know here that the referenced class
+     * cannot be an array unless something has gone badly wrong.
+     * @return name of the referenced class/interface
+     * @throws IllegalArgumentException if the referenced class is an array (this should not happen)
+     */
+    @Override
+    public String getClassName( ConstantPoolGen cpg ) {
+        ConstantPool cp = cpg.getConstantPool();
+        ConstantCP cmr = (ConstantCP) cp.getConstant(super.getIndex());
+        String className = cp.getConstantString(cmr.getClassIndex(), Constants.CONSTANT_Class);
+        if (className.startsWith("[")) {
+            throw new IllegalArgumentException("Cannot be used on an array type");
+        }
+        return className.replace('/', '.');
+    }
+
+    
 }