Add short-cut path taking when the paremter type is equal to own type
Change-Id: Ifbc3ea11c901b1496adcc8d0a372c86cd27969e2
Showing
3 changed files
with
22 additions
and
5 deletions
| ... | @@ -109,9 +109,13 @@ final class EncodableDiscreteResources implements DiscreteResources { | ... | @@ -109,9 +109,13 @@ final class EncodableDiscreteResources implements DiscreteResources { |
| 109 | 109 | ||
| 110 | @Override | 110 | @Override |
| 111 | public DiscreteResources add(DiscreteResources other) { | 111 | public DiscreteResources add(DiscreteResources other) { |
| 112 | - Set<DiscreteResource> union = Sets.union(values(), other.values()); | 112 | + if (other instanceof EncodableDiscreteResources) { |
| 113 | + return of(parent, Sets.union(this.values(), other.values())); | ||
| 114 | + } else if (other instanceof EmptyDiscreteResources) { | ||
| 115 | + return this; | ||
| 116 | + } | ||
| 113 | 117 | ||
| 114 | - return of(parent, union); | 118 | + return DiscreteResources.of(Sets.union(this.values(), other.values())); |
| 115 | } | 119 | } |
| 116 | 120 | ||
| 117 | @Override | 121 | @Override | ... | ... |
| ... | @@ -81,9 +81,13 @@ final class GenericDiscreteResources implements DiscreteResources { | ... | @@ -81,9 +81,13 @@ final class GenericDiscreteResources implements DiscreteResources { |
| 81 | // returns a new instance, not mutate the current instance | 81 | // returns a new instance, not mutate the current instance |
| 82 | @Override | 82 | @Override |
| 83 | public DiscreteResources add(DiscreteResources other) { | 83 | public DiscreteResources add(DiscreteResources other) { |
| 84 | - Set<DiscreteResource> newValues = new LinkedHashSet<>(this.values); | 84 | + if (other instanceof GenericDiscreteResources) { |
| 85 | - newValues.addAll(other.values()); | 85 | + return new GenericDiscreteResources(Sets.union(this.values(), other.values())); |
| 86 | - return new GenericDiscreteResources(newValues); | 86 | + } else if (other instanceof EmptyDiscreteResources) { |
| 87 | + return this; | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + return DiscreteResources.of(Sets.union(this.values(), other.values())); | ||
| 87 | } | 91 | } |
| 88 | 92 | ||
| 89 | @Override | 93 | @Override | ... | ... |
| ... | @@ -93,6 +93,15 @@ final class UnifiedDiscreteResources implements DiscreteResources { | ... | @@ -93,6 +93,15 @@ final class UnifiedDiscreteResources implements DiscreteResources { |
| 93 | 93 | ||
| 94 | @Override | 94 | @Override |
| 95 | public DiscreteResources add(DiscreteResources other) { | 95 | public DiscreteResources add(DiscreteResources other) { |
| 96 | + if (other instanceof UnifiedDiscreteResources) { | ||
| 97 | + UnifiedDiscreteResources cast = (UnifiedDiscreteResources) other; | ||
| 98 | + return new UnifiedDiscreteResources( | ||
| 99 | + this.generics.add(cast.generics), | ||
| 100 | + this.encodables.add(cast.encodables)); | ||
| 101 | + } else if (other instanceof EmptyDiscreteResources) { | ||
| 102 | + return this; | ||
| 103 | + } | ||
| 104 | + | ||
| 96 | return of(Sets.union(this.values(), other.values())); | 105 | return of(Sets.union(this.values(), other.values())); |
| 97 | } | 106 | } |
| 98 | 107 | ... | ... |
-
Please register or login to post a comment