|
Lines 77-82
Link Here
|
| 77 |
implements ISourceElementRequestor, SuffixConstants { |
77 |
implements ISourceElementRequestor, SuffixConstants { |
| 78 |
|
78 |
|
| 79 |
public static boolean VERBOSE = false; |
79 |
public static boolean VERBOSE = false; |
|
|
80 |
|
| 81 |
private static char PARAM_TYPE_SEPARATOR = ';'; |
| 82 |
|
| 80 |
/** |
83 |
/** |
| 81 |
* Specifies the location of the package fragment roots within |
84 |
* Specifies the location of the package fragment roots within |
| 82 |
* the zip (empty specifies the default root). <code>null</code> is |
85 |
* the zip (empty specifies the default root). <code>null</code> is |
|
Lines 105-110
Link Here
|
| 105 |
* Keys are the method handles, entries are <code>char[][]</code>. |
108 |
* Keys are the method handles, entries are <code>char[][]</code>. |
| 106 |
*/ |
109 |
*/ |
| 107 |
protected HashMap parameterNames; |
110 |
protected HashMap parameterNames; |
|
|
111 |
|
| 112 |
/** |
| 113 |
* Table that maps the method details in in String form |
| 114 |
* and method handles. The key is a locally constructed String |
| 115 |
* in the form [methodName];[paramtype1];[paramtype2] |
| 116 |
*/ |
| 117 |
protected HashMap parameterTypesMap; |
| 108 |
|
118 |
|
| 109 |
/** |
119 |
/** |
| 110 |
* Table that maps a binary element to its <code>SourceRange</code>s. |
120 |
* Table that maps a binary element to its <code>SourceRange</code>s. |
|
Lines 210-215
Link Here
|
| 210 |
this.sourcePath = sourcePath; |
220 |
this.sourcePath = sourcePath; |
| 211 |
this.sourceRanges = new HashMap(); |
221 |
this.sourceRanges = new HashMap(); |
| 212 |
this.parameterNames = new HashMap(); |
222 |
this.parameterNames = new HashMap(); |
|
|
223 |
this.parameterTypesMap = new HashMap(); |
| 213 |
this.importsTable = new HashMap(); |
224 |
this.importsTable = new HashMap(); |
| 214 |
this.importsCounterTable = new HashMap(); |
225 |
this.importsCounterTable = new HashMap(); |
| 215 |
} |
226 |
} |
|
Lines 693-698
Link Here
|
| 693 |
public void enterMethod(MethodInfo methodInfo) { |
704 |
public void enterMethod(MethodInfo methodInfo) { |
| 694 |
enterAbstractMethod(methodInfo); |
705 |
enterAbstractMethod(methodInfo); |
| 695 |
} |
706 |
} |
|
|
707 |
|
| 708 |
/** |
| 709 |
* Returns parameters names for the method with the given name and parameter types. |
| 710 |
* Returns null if no method can be found with the given details or no parameter |
| 711 |
* names are known for the method. |
| 712 |
*/ |
| 713 |
public char[][] getMethodParameterNames(String name, String[] paramTypes) { |
| 714 |
IMethod method = (IMethod)this.parameterTypesMap.get(constructParamTypesString(name, paramTypes)); |
| 715 |
if (method != null) |
| 716 |
return getMethodParameterNames(method); |
| 717 |
return null; |
| 718 |
} |
| 719 |
|
| 720 |
private String constructParamTypesString(String methodName, String[] paramTypes){ |
| 721 |
StringBuffer buffer = new StringBuffer(methodName).append(';'); |
| 722 |
if (paramTypes != null) { |
| 723 |
for (int index=0; index < paramTypes.length; index++) { |
| 724 |
buffer.append(paramTypes[index]); |
| 725 |
if (index < paramTypes.length) |
| 726 |
buffer.append(PARAM_TYPE_SEPARATOR); |
| 727 |
} |
| 728 |
} |
| 729 |
return buffer.toString(); |
| 730 |
} |
| 696 |
private void enterAbstractMethod(MethodInfo methodInfo) { |
731 |
private void enterAbstractMethod(MethodInfo methodInfo) { |
| 697 |
if (this.typeDepth >= 0) { |
732 |
if (this.typeDepth >= 0) { |
| 698 |
this.memberName[this.typeDepth] = new String(methodInfo.name); |
733 |
this.memberName[this.typeDepth] = new String(methodInfo.name); |
|
Lines 734-739
Link Here
|
| 734 |
this.memberName[this.typeDepth], |
769 |
this.memberName[this.typeDepth], |
| 735 |
convertTypeNamesToSigs(this.methodParameterTypes[this.typeDepth])); |
770 |
convertTypeNamesToSigs(this.methodParameterTypes[this.typeDepth])); |
| 736 |
|
771 |
|
|
|
772 |
this.parameterTypesMap.put(constructParamTypesString(this.memberName[this.typeDepth], convertTypeNamesToSigs(parameterTypes)), method); |
| 773 |
|
| 737 |
// type parameters |
774 |
// type parameters |
| 738 |
if (methodInfo.typeParameters != null) { |
775 |
if (methodInfo.typeParameters != null) { |
| 739 |
for (int i = 0, length = methodInfo.typeParameters.length; i < length; i++) { |
776 |
for (int i = 0, length = methodInfo.typeParameters.length; i < length; i++) { |