diff options
| author | Rubin Xu <rubinxu@google.com> | 2017-08-22 16:35:52 +0100 |
|---|---|---|
| committer | Rubin Xu <rubinxu@google.com> | 2017-09-08 13:27:58 +0100 |
| commit | 2fc72f72e5125287b006f6c5e69d64fbc2c245af (patch) | |
| tree | f9a5cba0ddcd2c122a315b5db5d5f47a4f4031d0 /core/java/android | |
| parent | 8c3e12a904e9f27ea2335accd031a20f20602635 (diff) | |
Refactor CompareResult<> class and its call sites
Move all corner case logic from call sites to CompareResult's implementation,
add a constructor to directly do the comparison.
Test: runtest frameworks-core -c android.net.LinkPropertiesTest
Change-Id: I95bba82ec38d295b18c49c025dffab5f17271cbd
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/net/LinkProperties.java | 72 |
1 files changed, 23 insertions, 49 deletions
diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java index f527f77ddd7c..2c9fb23e077a 100644 --- a/core/java/android/net/LinkProperties.java +++ b/core/java/android/net/LinkProperties.java @@ -70,8 +70,23 @@ public final class LinkProperties implements Parcelable { * @hide */ public static class CompareResult<T> { - public List<T> removed = new ArrayList<T>(); - public List<T> added = new ArrayList<T>(); + public final List<T> removed = new ArrayList<T>(); + public final List<T> added = new ArrayList<T>(); + + public CompareResult() {} + + public CompareResult(Collection<T> oldItems, Collection<T> newItems) { + if (oldItems != null) { + removed.addAll(oldItems); + } + if (newItems != null) { + for (T newItem : newItems) { + if (!removed.remove(newItem)) { + added.add(newItem); + } + } + } + } @Override public String toString() { @@ -1000,17 +1015,8 @@ public final class LinkProperties implements Parcelable { * are in target but not in mLinkAddresses are placed in the * addedAddresses. */ - CompareResult<LinkAddress> result = new CompareResult<LinkAddress>(); - result.removed = new ArrayList<LinkAddress>(mLinkAddresses); - result.added.clear(); - if (target != null) { - for (LinkAddress newAddress : target.getLinkAddresses()) { - if (! result.removed.remove(newAddress)) { - result.added.add(newAddress); - } - } - } - return result; + return new CompareResult<>(mLinkAddresses, + target != null ? target.getLinkAddresses() : null); } /** @@ -1029,18 +1035,7 @@ public final class LinkProperties implements Parcelable { * are in target but not in mDnses are placed in the * addedAddresses. */ - CompareResult<InetAddress> result = new CompareResult<InetAddress>(); - - result.removed = new ArrayList<InetAddress>(mDnses); - result.added.clear(); - if (target != null) { - for (InetAddress newAddress : target.getDnsServers()) { - if (! result.removed.remove(newAddress)) { - result.added.add(newAddress); - } - } - } - return result; + return new CompareResult<>(mDnses, target != null ? target.getDnsServers() : null); } /** @@ -1058,18 +1053,7 @@ public final class LinkProperties implements Parcelable { * leaving the routes that are different. And route address which * are in target but not in mRoutes are placed in added. */ - CompareResult<RouteInfo> result = new CompareResult<RouteInfo>(); - - result.removed = getAllRoutes(); - result.added.clear(); - if (target != null) { - for (RouteInfo r : target.getAllRoutes()) { - if (! result.removed.remove(r)) { - result.added.add(r); - } - } - } - return result; + return new CompareResult<>(getAllRoutes(), target != null ? target.getAllRoutes() : null); } /** @@ -1087,18 +1071,8 @@ public final class LinkProperties implements Parcelable { * leaving the interface names that are different. And interface names which * are in target but not in this are placed in added. */ - CompareResult<String> result = new CompareResult<String>(); - - result.removed = getAllInterfaceNames(); - result.added.clear(); - if (target != null) { - for (String r : target.getAllInterfaceNames()) { - if (! result.removed.remove(r)) { - result.added.add(r); - } - } - } - return result; + return new CompareResult<>(getAllInterfaceNames(), + target != null ? target.getAllInterfaceNames() : null); } |
