|
Lines 29-34
Link Here
|
| 29 |
import java.io.StringReader; |
29 |
import java.io.StringReader; |
| 30 |
import java.io.UnsupportedEncodingException; |
30 |
import java.io.UnsupportedEncodingException; |
| 31 |
import java.lang.reflect.Field; |
31 |
import java.lang.reflect.Field; |
|
|
32 |
import java.lang.reflect.Modifier; |
| 32 |
import java.nio.ByteBuffer; |
33 |
import java.nio.ByteBuffer; |
| 33 |
import java.nio.CharBuffer; |
34 |
import java.nio.CharBuffer; |
| 34 |
import java.nio.charset.Charset; |
35 |
import java.nio.charset.Charset; |
|
Lines 141-146
Link Here
|
| 141 |
public static final String DOT_TAR_GZ = ".tar.gz"; //$NON-NLS-1$ |
142 |
public static final String DOT_TAR_GZ = ".tar.gz"; //$NON-NLS-1$ |
| 142 |
public static final String DOT_JAR = ".jar"; //$NON-NLS-1$ |
143 |
public static final String DOT_JAR = ".jar"; //$NON-NLS-1$ |
| 143 |
public static final String DOT_ZIP = ".zip"; //$NON-NLS-1$ |
144 |
public static final String DOT_ZIP = ".zip"; //$NON-NLS-1$ |
|
|
145 |
public static Map<Integer, String> flagsNames = new HashMap<>(); |
| 146 |
|
| 147 |
static { |
| 148 |
Field[] declaredFields = IDelta.class.getDeclaredFields(); |
| 149 |
for (Field field : declaredFields) { |
| 150 |
try { |
| 151 |
if (Modifier.isFinal(field.getModifiers()) && Modifier.isStatic(field.getModifiers()) && Modifier.isPublic(field.getModifiers())) { |
| 152 |
Integer value = Integer.valueOf(field.getInt(null)); |
| 153 |
String flagName = flagsNames.get(value); |
| 154 |
flagsNames.put(value, field.getName()); |
| 155 |
} |
| 156 |
} catch (IllegalAccessException e) { |
| 157 |
// ignore |
| 158 |
} |
| 159 |
} |
| 160 |
} |
| 144 |
|
161 |
|
| 145 |
public static final char VERSION_SEPARATOR = '('; |
162 |
public static final char VERSION_SEPARATOR = '('; |
| 146 |
|
163 |
|
|
Lines 687-692
Link Here
|
| 687 |
} |
704 |
} |
| 688 |
|
705 |
|
| 689 |
/** |
706 |
/** |
|
|
707 |
* Return an int value that represents the given flag value. Returns -1 if |
| 708 |
* the flag value cannot be determined. |
| 709 |
* |
| 710 |
* @param flagName the given element type |
| 711 |
* @return an int that represents the given flag value constant. |
| 712 |
*/ |
| 713 |
public static int getDeltaFlagValue(String flagName) { |
| 714 |
Class<IDelta> IDeltaClass = IDelta.class; |
| 715 |
try { |
| 716 |
Field field = IDeltaClass.getField(flagName); |
| 717 |
return field.getInt(null); |
| 718 |
} catch (SecurityException e) { |
| 719 |
// ignore |
| 720 |
} catch (IllegalArgumentException e) { |
| 721 |
// ignore |
| 722 |
} catch (NoSuchFieldException e) { |
| 723 |
// ignore |
| 724 |
} catch (IllegalAccessException e) { |
| 725 |
// ignore |
| 726 |
} |
| 727 |
return -1; |
| 728 |
} |
| 729 |
|
| 730 |
/** |
| 690 |
* Return a string that represents the given element type Returns |
731 |
* Return a string that represents the given element type Returns |
| 691 |
* {@link #UNKNOWN_ELEMENT_KIND} if the element type cannot be determined. |
732 |
* {@link #UNKNOWN_ELEMENT_KIND} if the element type cannot be determined. |
| 692 |
* |
733 |
* |
|
Lines 729-869
Link Here
|
| 729 |
* @return a string that represents the given flags. |
770 |
* @return a string that represents the given flags. |
| 730 |
*/ |
771 |
*/ |
| 731 |
public static String getDeltaFlagsName(int flags) { |
772 |
public static String getDeltaFlagsName(int flags) { |
| 732 |
switch (flags) { |
773 |
String fieldName = flagsNames.get(Integer.valueOf(flags)); |
| 733 |
case IDelta.ABSTRACT_TO_NON_ABSTRACT: |
774 |
if (fieldName != null) { |
| 734 |
return "ABSTRACT_TO_NON_ABSTRACT"; //$NON-NLS-1$ |
775 |
return fieldName; |
| 735 |
case IDelta.ANNOTATION_DEFAULT_VALUE: |
|
|
| 736 |
return "ANNOTATION_DEFAULT_VALUE"; //$NON-NLS-1$ |
| 737 |
case IDelta.API_COMPONENT: |
| 738 |
return "API_COMPONENT"; //$NON-NLS-1$ |
| 739 |
case IDelta.ARRAY_TO_VARARGS: |
| 740 |
return "ARRAY_TO_VARARGS"; //$NON-NLS-1$ |
| 741 |
case IDelta.CHECKED_EXCEPTION: |
| 742 |
return "CHECKED_EXCEPTION"; //$NON-NLS-1$ |
| 743 |
case IDelta.CLASS_BOUND: |
| 744 |
return "CLASS_BOUND"; //$NON-NLS-1$ |
| 745 |
case IDelta.CLINIT: |
| 746 |
return "CLINIT"; //$NON-NLS-1$ |
| 747 |
case IDelta.CONSTRUCTOR: |
| 748 |
return "CONSTRUCTOR"; //$NON-NLS-1$ |
| 749 |
case IDelta.CONTRACTED_SUPERINTERFACES_SET: |
| 750 |
return "CONTRACTED_SUPERINTERFACES_SET"; //$NON-NLS-1$ |
| 751 |
case IDelta.DECREASE_ACCESS: |
| 752 |
return "DECREASE_ACCESS"; //$NON-NLS-1$ |
| 753 |
case IDelta.ENUM_CONSTANT: |
| 754 |
return "ENUM_CONSTANT"; //$NON-NLS-1$ |
| 755 |
case IDelta.EXECUTION_ENVIRONMENT: |
| 756 |
return "EXECUTION_ENVIRONMENT"; //$NON-NLS-1$ |
| 757 |
case IDelta.EXPANDED_SUPERINTERFACES_SET: |
| 758 |
return "EXPANDED_SUPERINTERFACES_SET"; //$NON-NLS-1$ |
| 759 |
case IDelta.FIELD: |
| 760 |
return "FIELD"; //$NON-NLS-1$ |
| 761 |
case IDelta.FIELD_MOVED_UP: |
| 762 |
return "FIELD_MOVED_UP"; //$NON-NLS-1$ |
| 763 |
case IDelta.FINAL_TO_NON_FINAL: |
| 764 |
return "FINAL_TO_NON_FINAL"; //$NON-NLS-1$ |
| 765 |
case IDelta.FINAL_TO_NON_FINAL_NON_STATIC: |
| 766 |
return "FINAL_TO_NON_FINAL_NON_STATIC"; //$NON-NLS-1$ |
| 767 |
case IDelta.FINAL_TO_NON_FINAL_STATIC_CONSTANT: |
| 768 |
return "FINAL_TO_NON_FINAL_STATIC_CONSTANT"; //$NON-NLS-1$ |
| 769 |
case IDelta.FINAL_TO_NON_FINAL_STATIC_NON_CONSTANT: |
| 770 |
return "FINAL_TO_NON_FINAL_STATIC_NON_CONSTANT"; //$NON-NLS-1$ |
| 771 |
case IDelta.INCREASE_ACCESS: |
| 772 |
return "INCREASE_ACCESS"; //$NON-NLS-1$ |
| 773 |
case IDelta.INTERFACE_BOUND: |
| 774 |
return "INTERFACE_BOUND"; //$NON-NLS-1$ |
| 775 |
case IDelta.METHOD: |
| 776 |
return "METHOD"; //$NON-NLS-1$ |
| 777 |
case IDelta.METHOD_MOVED_UP: |
| 778 |
return "METHOD_MOVED_UP"; //$NON-NLS-1$ |
| 779 |
case IDelta.METHOD_WITH_DEFAULT_VALUE: |
| 780 |
return "METHOD_WITH_DEFAULT_VALUE"; //$NON-NLS-1$ |
| 781 |
case IDelta.METHOD_WITHOUT_DEFAULT_VALUE: |
| 782 |
return "METHOD_WITHOUT_DEFAULT_VALUE"; //$NON-NLS-1$ |
| 783 |
case IDelta.NATIVE_TO_NON_NATIVE: |
| 784 |
return "NATIVE_TO_NON_NATIVE"; //$NON-NLS-1$ |
| 785 |
case IDelta.NON_ABSTRACT_TO_ABSTRACT: |
| 786 |
return "NON_ABSTRACT_TO_ABSTRACT"; //$NON-NLS-1$ |
| 787 |
case IDelta.NON_FINAL_TO_FINAL: |
| 788 |
return "NON_FINAL_TO_FINAL"; //$NON-NLS-1$ |
| 789 |
case IDelta.NON_NATIVE_TO_NATIVE: |
| 790 |
return "NON_NATIVE_TO_NATIVE"; //$NON-NLS-1$ |
| 791 |
case IDelta.NON_STATIC_TO_STATIC: |
| 792 |
return "NON_STATIC_TO_STATIC"; //$NON-NLS-1$ |
| 793 |
case IDelta.NON_SYNCHRONIZED_TO_SYNCHRONIZED: |
| 794 |
return "NON_SYNCHRONIZED_TO_SYNCHRONIZED"; //$NON-NLS-1$ |
| 795 |
case IDelta.NON_TRANSIENT_TO_TRANSIENT: |
| 796 |
return "NON_TRANSIENT_TO_TRANSIENT"; //$NON-NLS-1$ |
| 797 |
case IDelta.OVERRIDEN_METHOD: |
| 798 |
return "OVERRIDEN_METHOD"; //$NON-NLS-1$ |
| 799 |
case IDelta.STATIC_TO_NON_STATIC: |
| 800 |
return "STATIC_TO_NON_STATIC"; //$NON-NLS-1$ |
| 801 |
case IDelta.SUPERCLASS: |
| 802 |
return "SUPERCLASS"; //$NON-NLS-1$ |
| 803 |
case IDelta.SYNCHRONIZED_TO_NON_SYNCHRONIZED: |
| 804 |
return "SYNCHRONIZED_TO_NON_SYNCHRONIZED"; //$NON-NLS-1$ |
| 805 |
case IDelta.TYPE_CONVERSION: |
| 806 |
return "TYPE_CONVERSION"; //$NON-NLS-1$ |
| 807 |
case IDelta.TRANSIENT_TO_NON_TRANSIENT: |
| 808 |
return "TRANSIENT_TO_NON_TRANSIENT"; //$NON-NLS-1$ |
| 809 |
case IDelta.TYPE: |
| 810 |
return "TYPE"; //$NON-NLS-1$ |
| 811 |
case IDelta.TYPE_ARGUMENTS: |
| 812 |
return "TYPE_ARGUMENTS"; //$NON-NLS-1$ |
| 813 |
case IDelta.TYPE_MEMBER: |
| 814 |
return "TYPE_MEMBER"; //$NON-NLS-1$ |
| 815 |
case IDelta.TYPE_PARAMETER: |
| 816 |
return "TYPE_PARAMETER"; //$NON-NLS-1$ |
| 817 |
case IDelta.TYPE_PARAMETER_NAME: |
| 818 |
return "TYPE_PARAMETER_NAME"; //$NON-NLS-1$ |
| 819 |
case IDelta.TYPE_PARAMETERS: |
| 820 |
return "TYPE_PARAMETERS"; //$NON-NLS-1$ |
| 821 |
case IDelta.TYPE_VISIBILITY: |
| 822 |
return "TYPE_VISIBILITY"; //$NON-NLS-1$ |
| 823 |
case IDelta.UNCHECKED_EXCEPTION: |
| 824 |
return "UNCHECKED_EXCEPTION"; //$NON-NLS-1$ |
| 825 |
case IDelta.VALUE: |
| 826 |
return "VALUE"; //$NON-NLS-1$ |
| 827 |
case IDelta.VARARGS_TO_ARRAY: |
| 828 |
return "VARARGS_TO_ARRAY"; //$NON-NLS-1$ |
| 829 |
case IDelta.RESTRICTIONS: |
| 830 |
return "RESTRICTIONS"; //$NON-NLS-1$ |
| 831 |
case IDelta.API_TYPE: |
| 832 |
return "API_TYPE"; //$NON-NLS-1$ |
| 833 |
case IDelta.NON_VOLATILE_TO_VOLATILE: |
| 834 |
return "NON_VOLATILE_TO_VOLATILE"; //$NON-NLS-1$ |
| 835 |
case IDelta.VOLATILE_TO_NON_VOLATILE: |
| 836 |
return "VOLATILE_TO_NON_VOLATILE"; //$NON-NLS-1$ |
| 837 |
case IDelta.MINOR_VERSION: |
| 838 |
return "MINOR_VERSION"; //$NON-NLS-1$ |
| 839 |
case IDelta.MAJOR_VERSION: |
| 840 |
return "MAJOR_VERSION"; //$NON-NLS-1$ |
| 841 |
case IDelta.API_FIELD: |
| 842 |
return "API_FIELD"; //$NON-NLS-1$ |
| 843 |
case IDelta.API_METHOD: |
| 844 |
return "API_METHOD"; //$NON-NLS-1$ |
| 845 |
case IDelta.API_CONSTRUCTOR: |
| 846 |
return "API_CONSTRUCTOR"; //$NON-NLS-1$ |
| 847 |
case IDelta.API_ENUM_CONSTANT: |
| 848 |
return "API_ENUM_CONSTANT"; //$NON-NLS-1$ |
| 849 |
case IDelta.API_METHOD_WITH_DEFAULT_VALUE: |
| 850 |
return "API_METHOD_WITH_DEFAULT_VALUE"; //$NON-NLS-1$ |
| 851 |
case IDelta.API_METHOD_WITHOUT_DEFAULT_VALUE: |
| 852 |
return "API_METHOD_WITHOUT_DEFAULT_VALUE"; //$NON-NLS-1$ |
| 853 |
case IDelta.TYPE_ARGUMENT: |
| 854 |
return "TYPE_ARGUMENT"; //$NON-NLS-1$ |
| 855 |
case IDelta.SUPER_INTERFACE_WITH_METHODS: |
| 856 |
return "SUPER_INTERFACE_WITH_METHODS"; //$NON-NLS-1$ |
| 857 |
case IDelta.REEXPORTED_API_TYPE: |
| 858 |
return "REEXPORTED_API_TYPE"; //$NON-NLS-1$ |
| 859 |
case IDelta.REEXPORTED_TYPE: |
| 860 |
return "REEXPORTED_TYPE"; //$NON-NLS-1$ |
| 861 |
case IDelta.METHOD_MOVED_DOWN: |
| 862 |
return "METHOD_MOVED_DOWN"; //$NON-NLS-1$ |
| 863 |
case IDelta.DEPRECATION: |
| 864 |
return "DEPRECATION"; //$NON-NLS-1$ |
| 865 |
default: |
| 866 |
break; |
| 867 |
} |
776 |
} |
| 868 |
return UNKNOWN_FLAGS; |
777 |
return UNKNOWN_FLAGS; |
| 869 |
} |
778 |
} |
|
Lines 1400-1406
Link Here
|
| 1400 |
/** |
1309 |
/** |
| 1401 |
* Rewrite a parameter type signature with type erasure and using the |
1310 |
* Rewrite a parameter type signature with type erasure and using the |
| 1402 |
* parameterized type bounds lookup table. For example: |
1311 |
* parameterized type bounds lookup table. For example: |
| 1403 |
* |
1312 |
* |
| 1404 |
* <pre> |
1313 |
* <pre> |
| 1405 |
* expand("QList<QE;>;", {"E" → "Ljava.lang.Object;"}) = "QList;" |
1314 |
* expand("QList<QE;>;", {"E" → "Ljava.lang.Object;"}) = "QList;" |
| 1406 |
* expand("QE;", {"E" → "Ljava.lang.Object;"}) = "Ljava.lang.Object;" |
1315 |
* expand("QE;", {"E" → "Ljava.lang.Object;"}) = "Ljava.lang.Object;" |
|
Lines 2372-2379
Link Here
|
| 2372 |
default: |
2281 |
default: |
| 2373 |
return arguments[0]; |
2282 |
return arguments[0]; |
| 2374 |
} |
2283 |
} |
|
|
2284 |
case IDelta.EXECUTION_ENVIRONMENT: |
| 2285 |
StringBuilder builder = new StringBuilder(); |
| 2286 |
int i = 0; |
| 2287 |
for (String argument : arguments) { |
| 2288 |
if (i != 0) { |
| 2289 |
builder.append(','); |
| 2290 |
} |
| 2291 |
builder.append(argument); |
| 2292 |
i++; |
| 2293 |
} |
| 2294 |
return String.valueOf(builder); |
| 2375 |
default: |
2295 |
default: |
| 2376 |
break; |
|
|
| 2377 |
} |
2296 |
} |
| 2378 |
return EMPTY_STRING; |
2297 |
return EMPTY_STRING; |
| 2379 |
} |
2298 |
} |