Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/types/SimplePair.java

Issue 1162033004: Pull cacheinvalidations code directory into chromium repo. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/types/SimplePair.java
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/types/SimplePair.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/types/SimplePair.java
new file mode 100644
index 0000000000000000000000000000000000000000..aa5cb76224942e29324708db4d0f92c94ae6dad7
--- /dev/null
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/types/SimplePair.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.ipc.invalidation.external.client.types;
+
+
+/**
+ * An immutable, semantic-free ordered pair of nullable values. These can be
+ * accessed using the {@link #getFirst} and {@link #getSecond} methods. Equality
+ * and hashing are defined in the natural way.
+ *
+ * @param <FirstType> The type of the first element
+ * @param <SecondType> The type of the second element
+ *
+ */
+public final class SimplePair<FirstType, SecondType> {
+ /**
+ * Creates a new pair containing the given elements in order.
+ */
+ public static <FirstType, SecondType> SimplePair<FirstType, SecondType> of(
+ FirstType first, SecondType second) {
+ return new SimplePair<FirstType, SecondType>(first, second);
+ }
+
+ /**
+ * The first element of the pair; see also {@link #getFirst}.
+ */
+ public final FirstType first;
+
+ /**
+ * The second element of the pair; see also {@link #getSecond}.
+ */
+ public final SecondType second;
+
+ /**
+ * Constructor. It is usually easier to call {@link #of}.
+ */
+ public SimplePair(FirstType first, SecondType second) {
+ this.first = first;
+ this.second = second;
+ }
+
+ /**
+ * Returns the first element of this pair; see also {@link #first}.
+ */
+ public FirstType getFirst() {
+ return first;
+ }
+
+ /**
+ * Returns the second element of this pair; see also {@link #second}.
+ */
+ public SecondType getSecond() {
+ return second;
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ if (object instanceof SimplePair<?, ?>) {
+ SimplePair<?, ?> that = (SimplePair<?, ?>) object;
+ return areObjectsEqual(this.first, that.first) && areObjectsEqual(this.second, that.second);
+ }
+ return false;
+ }
+
+ /**
+ * Determines whether two possibly-null objects are equal. Returns:
+ *
+ * <ul>
+ * <li>{@code true} if {@code a} and {@code b} are both null.
+ * <li>{@code true} if {@code a} and {@code b} are both non-null and they are
+ * equal according to {@link Object#equals(Object)}.
+ * <li>{@code false} in all other situations.
+ * </ul>
+ *
+ * <p>This assumes that any non-null objects passed to this function conform
+ * to the {@code equals()} contract.
+ */
+ private static boolean areObjectsEqual(Object a, Object b) {
+ return a == b || (a != null && a.equals(b));
+ }
+
+ @Override
+ public int hashCode() {
+ int hash1 = first == null ? 0 : first.hashCode();
+ int hash2 = second == null ? 0 : second.hashCode();
+ return 31 * hash1 + hash2;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * <p>This implementation returns a string in the form
+ * {@code (first, second)}, where {@code first} and {@code second} are the
+ * String representations of the first and second elements of this pair, as
+ * given by {@link String#valueOf(Object)}. Subclasses are free to override
+ * this behavior.
+ */
+ @Override public String toString() {
+ return "(" + first + ", " + second + ")";
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698