Sync with latest bnd code for testing purposes
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1354104 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bundleplugin/src/main/java/aQute/libg/tuple/Pair.java b/bundleplugin/src/main/java/aQute/libg/tuple/Pair.java
index d86d6c8..f8f7afb 100644
--- a/bundleplugin/src/main/java/aQute/libg/tuple/Pair.java
+++ b/bundleplugin/src/main/java/aQute/libg/tuple/Pair.java
@@ -1,11 +1,71 @@
package aQute.libg.tuple;
-public class Pair<A, B> {
- final public A a;
- final public B b;
+import java.io.Serializable;
- public Pair(A a, B b) {
- this.a = a;
- this.b = b;
+public class Pair<A, B> implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private final A first;
+ private final B second;
+
+ public Pair(A first, B second) {
+ assert first != null && second != null : "both parameters must be non-null";
+ this.first = first;
+ this.second = second;
}
-}
+
+ public static <A, B> Pair<A,B> newInstance(A first, B second) {
+ return new Pair<A,B>(first, second);
+ }
+
+ public A getFirst() {
+ return first;
+ }
+
+ public B getSecond() {
+ return second;
+ }
+
+ @Override
+ public String toString() {
+ return "Pair [" + first + ", " + second + "]";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((first == null) ? 0 : first.hashCode());
+ result = prime * result + ((second == null) ? 0 : second.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ @SuppressWarnings("unchecked")
+ Pair<A,B> other = (Pair<A,B>) obj;
+ if (first == null) {
+ if (other.first != null)
+ return false;
+ } else if (!first.equals(other.first))
+ return false;
+ if (second == null) {
+ if (other.second != null)
+ return false;
+ } else if (!second.equals(other.second))
+ return false;
+ return true;
+ }
+
+ @Override
+ public Pair<A,B> clone() {
+ return new Pair<A,B>(first, second);
+ }
+}
\ No newline at end of file