diff options
Diffstat (limited to 'src/com/google/doclava/apicheck/ApiInfo.java')
-rw-r--r-- | src/com/google/doclava/apicheck/ApiInfo.java | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/com/google/doclava/apicheck/ApiInfo.java b/src/com/google/doclava/apicheck/ApiInfo.java index 711a9f4..2752f3a 100644 --- a/src/com/google/doclava/apicheck/ApiInfo.java +++ b/src/com/google/doclava/apicheck/ApiInfo.java @@ -20,6 +20,7 @@ import com.google.doclava.ClassInfo; import com.google.doclava.Errors; import com.google.doclava.PackageInfo; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -58,12 +59,25 @@ public class ApiInfo { /** * Checks to see if this api is consistent with a newer version. + * + * @param otherApi the other api to test consistency against + * @param ignoredPackages packages to skip consistency checks (will match by exact name) + * @param ignoredClasses classes to skip consistency checks (will match by exact fully qualified + * name) */ - public boolean isConsistent(ApiInfo otherApi) { + public boolean isConsistent(ApiInfo otherApi, + Collection<String> ignoredPackages, Collection<String> ignoredClasses) { boolean consistent = true; for (PackageInfo pInfo : mPackages.values()) { + // TODO: Add support for matching subpackages (e.g, something like + // test.example.* should match test.example.subpackage, and + // test.example.** should match the above AND test.example.subpackage.more) + if (ignoredPackages != null && ignoredPackages.contains(pInfo.name())) { + // TODO: Log skipping this? + continue; + } if (otherApi.getPackages().containsKey(pInfo.name())) { - if (!pInfo.isConsistent(otherApi.getPackages().get(pInfo.name()))) { + if (!pInfo.isConsistent(otherApi.getPackages().get(pInfo.name()), ignoredClasses)) { consistent = false; } } else { @@ -72,6 +86,10 @@ public class ApiInfo { } } for (PackageInfo pInfo : otherApi.mPackages.values()) { + if (ignoredPackages != null && ignoredPackages.contains(pInfo.name())) { + // TODO: Log skipping this? + continue; + } if (!mPackages.containsKey(pInfo.name())) { Errors.error(Errors.ADDED_PACKAGE, pInfo.position(), "Added package " + pInfo.name()); consistent = false; @@ -80,6 +98,13 @@ public class ApiInfo { return consistent; } + /** + * Checks to see if this api is consistent with a newer version. + */ + public boolean isConsistent(ApiInfo otherApi) { + return isConsistent(otherApi, null, null); + } + public HashMap<String, PackageInfo> getPackages() { return mPackages; } |