summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorRubin Xu <rubinxu@google.com>2017-08-22 16:35:52 +0100
committerRubin Xu <rubinxu@google.com>2017-09-08 13:27:58 +0100
commit2fc72f72e5125287b006f6c5e69d64fbc2c245af (patch)
treef9a5cba0ddcd2c122a315b5db5d5f47a4f4031d0 /core/java/android
parent8c3e12a904e9f27ea2335accd031a20f20602635 (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.java72
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);
}