From: Yoshito Umaoka Date: Tue, 10 Jun 2014 15:14:49 +0000 (+0000) Subject: ICU-10905 Added a support for Enum methods, based on Markus's feedback. X-Git-Tag: milestone-59-0-1~1866 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c30ffd98529a98da23df3fcd7bcbd82e79f1fd6e;p=icu ICU-10905 Added a support for Enum methods, based on Markus's feedback. X-SVN-Rev: 35846 --- diff --git a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/DeprecatedAPIChecker.java b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/DeprecatedAPIChecker.java index 567fedbd8b5..ec83b0625bf 100644 --- a/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/DeprecatedAPIChecker.java +++ b/icu4j/tools/build/src/com/ibm/icu/dev/tool/docs/DeprecatedAPIChecker.java @@ -203,6 +203,29 @@ public class DeprecatedAPIChecker { compareDeprecated(isAPIDeprecated(api), ec.isAnnotationPresent(Deprecated.class), enumName, ecName, "Enum Constant"); } + + // check methods + for (Method mtd : cls.getDeclaredMethods()) { + // Note: We exclude built-in methods in a Java Enum instance + if (!isPublicOrProtected(mtd.getModifiers()) || isBuiltinEnumMethod(mtd)) { + continue; + } + + String mtdName = mtd.getName(); + List paramNames = getParamNames(mtd); + api = findMethodInfo(apiInfoSet, enumName, mtdName, paramNames); + + if (api == null) { + pw.println("## Error ## Method " + enumName + "#" + mtdName + formatParams(paramNames) + + " is not found in the API signature data."); + errCount++; + continue; + } + + compareDeprecated(isAPIDeprecated(api), mtd.isAnnotationPresent(Deprecated.class), enumName, mtdName + + formatParams(paramNames), "Method"); + + } } private void compareDeprecated(boolean depTag, boolean depAnt, String cls, String name, String type) { @@ -224,6 +247,13 @@ public class DeprecatedAPIChecker { return ((modifier & Modifier.PUBLIC) != 0) || ((modifier & Modifier.PROTECTED) != 0); } + // Check if a method is automatically generated for a each Enum + private static boolean isBuiltinEnumMethod(Method mtd) { + // Just check method name for now + String name = mtd.getName(); + return name.equals("values") || name.equals("valueOf"); + } + private static boolean isAPIDeprecated(APIInfo api) { return api.isDeprecated() || api.isInternal() || api.isObsolete(); }