From 214dc7810d2afaea21cebfebba465e7354377a6b Mon Sep 17 00:00:00 2001 From: Marco Ziccardi Date: Mon, 11 Apr 2016 17:32:26 +0200 Subject: [PATCH 1/3] Enable mocking of functional classes and configurations --- .../google/cloud/bigquery/CopyJobConfiguration.java | 10 ++++++---- .../main/java/com/google/cloud/bigquery/Dataset.java | 9 +++++---- .../google/cloud/bigquery/ExternalTableDefinition.java | 8 +++++--- .../google/cloud/bigquery/ExtractJobConfiguration.java | 10 ++++++---- .../src/main/java/com/google/cloud/bigquery/Job.java | 9 +++++---- .../google/cloud/bigquery/LoadJobConfiguration.java | 10 ++++++---- .../google/cloud/bigquery/QueryJobConfiguration.java | 10 ++++++---- .../google/cloud/bigquery/StandardTableDefinition.java | 8 +++++--- .../src/main/java/com/google/cloud/bigquery/Table.java | 9 +++++---- .../java/com/google/cloud/bigquery/ViewDefinition.java | 10 ++++++---- .../main/java/com/google/cloud/dns/ChangeRequest.java | 7 +++++-- .../src/main/java/com/google/cloud/dns/RecordSet.java | 8 +++++--- .../src/main/java/com/google/cloud/dns/Zone.java | 8 +++++--- .../java/com/google/cloud/resourcemanager/Project.java | 8 +++++--- .../src/main/java/com/google/cloud/storage/Bucket.java | 10 ++++++---- 15 files changed, 81 insertions(+), 53 deletions(-) diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java index 3717ff039c7b..4e0a405c7c44 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java @@ -31,7 +31,7 @@ * Google BigQuery copy job configuration. A copy job copies an existing table to another new or * existing table. Copy job configurations have {@link JobConfiguration.Type#COPY} type. */ -public final class CopyJobConfiguration extends JobConfiguration { +public class CopyJobConfiguration extends JobConfiguration { private static final long serialVersionUID = 1140509641399762967L; @@ -180,12 +180,14 @@ ToStringHelper toStringHelper() { } @Override - public boolean equals(Object obj) { - return obj instanceof CopyJobConfiguration && baseEquals((CopyJobConfiguration) obj); + public final boolean equals(Object obj) { + return this == obj + || obj instanceof CopyJobConfiguration + && baseEquals((CopyJobConfiguration) obj); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(baseHashCode(), sourceTables, destinationTable, createDisposition, writeDisposition); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java index 31dee897aada..3d8ee45d1ae6 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java @@ -34,7 +34,7 @@ * {@link DatasetInfo}. *

*/ -public final class Dataset extends DatasetInfo { +public class Dataset extends DatasetInfo { private static final long serialVersionUID = -4272921483363065593L; @@ -230,14 +230,15 @@ public Builder toBuilder() { } @Override - public boolean equals(Object obj) { - return obj instanceof Dataset + public final boolean equals(Object obj) { + return this == obj + || obj instanceof Dataset && Objects.equals(toPb(), ((Dataset) obj).toPb()) && Objects.equals(options, ((Dataset) obj).options); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(super.hashCode(), options); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java index 0b191d3af761..72db8ca85687 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java @@ -255,12 +255,14 @@ ToStringHelper toStringHelper() { } @Override - public boolean equals(Object obj) { - return obj instanceof ExternalTableDefinition && baseEquals((ExternalTableDefinition) obj); + public final boolean equals(Object obj) { + return this == obj + || obj instanceof ExternalTableDefinition + && baseEquals((ExternalTableDefinition) obj); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(baseHashCode(), compression, ignoreUnknownValues, maxBadRecords, formatOptions, sourceUris); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java index 6c31e2781d9e..f61d1ec6a8af 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java @@ -30,7 +30,7 @@ * Cloud Storage. The extract destination provided as URIs that point to objects in Google Cloud * Storage. Extract job configurations have {@link JobConfiguration.Type#EXTRACT} type. */ -public final class ExtractJobConfiguration extends JobConfiguration { +public class ExtractJobConfiguration extends JobConfiguration { private static final long serialVersionUID = 4147749733166593761L; @@ -210,12 +210,14 @@ ToStringHelper toStringHelper() { } @Override - public boolean equals(Object obj) { - return obj instanceof ExtractJobConfiguration && baseEquals((ExtractJobConfiguration) obj); + public final boolean equals(Object obj) { + return this == obj + || obj instanceof ExtractJobConfiguration + && baseEquals((ExtractJobConfiguration) obj); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(baseHashCode(), sourceTable, destinationUris, printHeader, fieldDelimiter, format, compression); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Job.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Job.java index 17b58426afc4..279d6c1f6a6c 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Job.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Job.java @@ -30,7 +30,7 @@ * {@link JobInfo}. *

*/ -public final class Job extends JobInfo { +public class Job extends JobInfo { private static final long serialVersionUID = -4324100991693024704L; @@ -178,14 +178,15 @@ public Builder toBuilder() { } @Override - public boolean equals(Object obj) { - return obj instanceof Job + public final boolean equals(Object obj) { + return this == obj + || obj instanceof Job && Objects.equals(toPb(), ((Job) obj).toPb()) && Objects.equals(options, ((Job) obj).options); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(super.hashCode(), options); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java index a4abbce89137..83369e2837fd 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java @@ -30,7 +30,7 @@ * table. Data is provided as URIs that point to objects in Google Cloud Storage. Load job * configurations have {@link JobConfiguration.Type#LOAD} type. */ -public final class LoadJobConfiguration extends JobConfiguration implements LoadConfiguration { +public class LoadJobConfiguration extends JobConfiguration implements LoadConfiguration { private static final long serialVersionUID = -2673554846792429829L; @@ -268,12 +268,14 @@ ToStringHelper toStringHelper() { } @Override - public boolean equals(Object obj) { - return obj instanceof LoadJobConfiguration && baseEquals((LoadJobConfiguration) obj); + public final boolean equals(Object obj) { + return this == obj + || obj instanceof LoadJobConfiguration + && baseEquals((LoadJobConfiguration) obj); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(baseHashCode(), sourceUris); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java index 4c5034a4a0c8..5bfa6ebf74cd 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java @@ -35,7 +35,7 @@ * Google BigQuery Query Job configuration. A Query Job runs a query against BigQuery data. Query * job configurations have {@link JobConfiguration.Type#QUERY} type. */ -public final class QueryJobConfiguration extends JobConfiguration { +public class QueryJobConfiguration extends JobConfiguration { private static final long serialVersionUID = -1108948249081804890L; @@ -449,12 +449,14 @@ ToStringHelper toStringHelper() { } @Override - public boolean equals(Object obj) { - return obj instanceof QueryJobConfiguration && baseEquals((QueryJobConfiguration) obj); + public final boolean equals(Object obj) { + return this == obj + || obj instanceof QueryJobConfiguration + && baseEquals((QueryJobConfiguration) obj); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(baseHashCode(), allowLargeResults, createDisposition, destinationTable, defaultDataset, flattenResults, priority, query, tableDefinitions, useQueryCache, userDefinedFunctions, writeDisposition, dryRun); diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/StandardTableDefinition.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/StandardTableDefinition.java index bb5007dfcd3b..a598be298343 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/StandardTableDefinition.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/StandardTableDefinition.java @@ -252,12 +252,14 @@ ToStringHelper toStringHelper() { } @Override - public boolean equals(Object obj) { - return obj instanceof StandardTableDefinition && baseEquals((StandardTableDefinition) obj); + public final boolean equals(Object obj) { + return this == obj + || obj instanceof StandardTableDefinition + && baseEquals((StandardTableDefinition) obj); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(baseHashCode(), numBytes, numRows, location, streamingBuffer); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Table.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Table.java index 8fc83b305458..b5bb4bc18473 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Table.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Table.java @@ -35,7 +35,7 @@ * {@link TableInfo}. *

*/ -public final class Table extends TableInfo { +public class Table extends TableInfo { private static final long serialVersionUID = 5744556727066570096L; @@ -322,14 +322,15 @@ public Builder toBuilder() { } @Override - public boolean equals(Object obj) { - return obj instanceof Table + public final boolean equals(Object obj) { + return this == obj + || obj instanceof Table && Objects.equals(toPb(), ((Table) obj).toPb()) && Objects.equals(options, ((Table) obj).options); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(super.hashCode(), options); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ViewDefinition.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ViewDefinition.java index 89ca9674508e..05071ba3f2ed 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ViewDefinition.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ViewDefinition.java @@ -33,7 +33,7 @@ * * @see Views */ -public final class ViewDefinition extends TableDefinition { +public class ViewDefinition extends TableDefinition { private static final long serialVersionUID = -8789311196910794545L; @@ -146,12 +146,14 @@ ToStringHelper toStringHelper() { } @Override - public boolean equals(Object obj) { - return obj instanceof ViewDefinition && baseEquals((ViewDefinition) obj); + public final boolean equals(Object obj) { + return this == obj + || obj instanceof ViewDefinition + && baseEquals((ViewDefinition) obj); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(baseHashCode(), query, userDefinedFunctions); } diff --git a/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequest.java b/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequest.java index 61864e968ebb..404a49cdc983 100644 --- a/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequest.java +++ b/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequest.java @@ -192,7 +192,10 @@ public Builder toBuilder() { } @Override - public boolean equals(Object obj) { + public final boolean equals(Object obj) { + if (this == obj) { + return true; + } if (obj == null || !obj.getClass().equals(ChangeRequest.class)) { return false; } else { @@ -204,7 +207,7 @@ public boolean equals(Object obj) { } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(super.hashCode(), options, zone); } diff --git a/gcloud-java-dns/src/main/java/com/google/cloud/dns/RecordSet.java b/gcloud-java-dns/src/main/java/com/google/cloud/dns/RecordSet.java index a8323041a2fb..02a81b2a76c6 100644 --- a/gcloud-java-dns/src/main/java/com/google/cloud/dns/RecordSet.java +++ b/gcloud-java-dns/src/main/java/com/google/cloud/dns/RecordSet.java @@ -276,13 +276,15 @@ public Type type() { } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(name, rrdatas, ttl, type); } @Override - public boolean equals(Object obj) { - return obj instanceof RecordSet && Objects.equals(this.toPb(), ((RecordSet) obj).toPb()); + public final boolean equals(Object obj) { + return this == obj + || obj instanceof RecordSet + && Objects.equals(this.toPb(), ((RecordSet) obj).toPb()); } ResourceRecordSet toPb() { diff --git a/gcloud-java-dns/src/main/java/com/google/cloud/dns/Zone.java b/gcloud-java-dns/src/main/java/com/google/cloud/dns/Zone.java index 8c21d79a992f..8d337daa15da 100644 --- a/gcloud-java-dns/src/main/java/com/google/cloud/dns/Zone.java +++ b/gcloud-java-dns/src/main/java/com/google/cloud/dns/Zone.java @@ -196,13 +196,15 @@ public Dns dns() { } @Override - public boolean equals(Object obj) { - return obj instanceof Zone && Objects.equals(toPb(), ((Zone) obj).toPb()) + public final boolean equals(Object obj) { + return this == obj + || obj instanceof Zone + && Objects.equals(toPb(), ((Zone) obj).toPb()) && Objects.equals(options, ((Zone) obj).options); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(super.hashCode(), options); } diff --git a/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Project.java b/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Project.java index 25cda85d1c09..c400ade05942 100644 --- a/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Project.java +++ b/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Project.java @@ -257,13 +257,15 @@ public Builder toBuilder() { } @Override - public boolean equals(Object obj) { - return obj instanceof Project && Objects.equals(toPb(), ((Project) obj).toPb()) + public final boolean equals(Object obj) { + return this == obj + || obj instanceof Project + && Objects.equals(toPb(), ((Project) obj).toPb()) && Objects.equals(options, ((Project) obj).options); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(super.hashCode(), options); } diff --git a/gcloud-java-storage/src/main/java/com/google/cloud/storage/Bucket.java b/gcloud-java-storage/src/main/java/com/google/cloud/storage/Bucket.java index 989ea87ec9d3..6c85786d418f 100644 --- a/gcloud-java-storage/src/main/java/com/google/cloud/storage/Bucket.java +++ b/gcloud-java-storage/src/main/java/com/google/cloud/storage/Bucket.java @@ -49,7 +49,7 @@ * {@link BucketInfo}. *

*/ -public final class Bucket extends BucketInfo { +public class Bucket extends BucketInfo { private static final long serialVersionUID = 8574601739542252586L; @@ -714,13 +714,15 @@ public Builder toBuilder() { } @Override - public boolean equals(Object obj) { - return obj instanceof Bucket && Objects.equals(toPb(), ((Bucket) obj).toPb()) + public final boolean equals(Object obj) { + return this == obj + || obj instanceof Bucket + && Objects.equals(toPb(), ((Bucket) obj).toPb()) && Objects.equals(options, ((Bucket) obj).options); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(super.hashCode(), options); } From e4165c21ec231885e28362a060446f85df403d46 Mon Sep 17 00:00:00 2001 From: Marco Ziccardi Date: Tue, 12 Apr 2016 13:33:05 +0200 Subject: [PATCH 2/3] Refactor classes to be either final or have final equals/hashCode --- .../google/cloud/bigquery/BigQueryError.java | 6 +- .../cloud/bigquery/CopyJobConfiguration.java | 5 +- .../com/google/cloud/bigquery/CsvOptions.java | 6 +- .../com/google/cloud/bigquery/Dataset.java | 13 ++- .../com/google/cloud/bigquery/DatasetId.java | 6 +- .../google/cloud/bigquery/DatasetInfo.java | 3 +- .../bigquery/ExternalTableDefinition.java | 5 +- .../bigquery/ExtractJobConfiguration.java | 5 +- .../java/com/google/cloud/bigquery/Field.java | 20 ++-- .../com/google/cloud/bigquery/FieldValue.java | 9 +- .../google/cloud/bigquery/FormatOptions.java | 5 +- .../cloud/bigquery/InsertAllRequest.java | 5 +- .../cloud/bigquery/InsertAllResponse.java | 8 +- .../java/com/google/cloud/bigquery/Job.java | 13 ++- .../java/com/google/cloud/bigquery/JobId.java | 6 +- .../com/google/cloud/bigquery/JobInfo.java | 3 +- .../google/cloud/bigquery/JobStatistics.java | 107 +++++++++++++----- .../com/google/cloud/bigquery/JobStatus.java | 9 +- .../cloud/bigquery/LoadJobConfiguration.java | 5 +- .../cloud/bigquery/QueryJobConfiguration.java | 5 +- .../google/cloud/bigquery/QueryRequest.java | 6 +- .../google/cloud/bigquery/QueryResponse.java | 8 +- .../google/cloud/bigquery/QueryResult.java | 8 +- .../com/google/cloud/bigquery/QueryStage.java | 9 +- .../com/google/cloud/bigquery/Schema.java | 6 +- .../bigquery/StandardTableDefinition.java | 5 +- .../java/com/google/cloud/bigquery/Table.java | 13 ++- .../com/google/cloud/bigquery/TableId.java | 6 +- .../com/google/cloud/bigquery/TableInfo.java | 3 +- .../google/cloud/bigquery/ViewDefinition.java | 5 +- .../bigquery/WriteChannelConfiguration.java | 5 +- .../google/cloud/bigquery/JobInfoTest.java | 3 +- .../cloud/bigquery/JobStatisticsTest.java | 21 ++-- .../com/google/cloud/bigquery/JobTest.java | 4 +- .../cloud/bigquery/SerializationTest.java | 13 ++- .../main/java/com/google/cloud/IamPolicy.java | 5 +- .../com/google/cloud/dns/ChangeRequest.java | 11 +- .../google/cloud/dns/ChangeRequestInfo.java | 8 +- .../com/google/cloud/dns/ProjectInfo.java | 9 +- .../java/com/google/cloud/dns/RecordSet.java | 8 +- .../main/java/com/google/cloud/dns/Zone.java | 13 ++- .../java/com/google/cloud/dns/ZoneInfo.java | 4 +- .../google/cloud/resourcemanager/Policy.java | 2 +- .../google/cloud/resourcemanager/Project.java | 13 ++- .../cloud/resourcemanager/ProjectInfo.java | 4 +- .../google/cloud/storage/BatchResponse.java | 11 +- .../java/com/google/cloud/storage/Blob.java | 13 ++- .../java/com/google/cloud/storage/BlobId.java | 13 ++- .../com/google/cloud/storage/BlobInfo.java | 4 +- .../java/com/google/cloud/storage/Bucket.java | 13 ++- .../com/google/cloud/storage/BucketInfo.java | 4 +- 51 files changed, 324 insertions(+), 170 deletions(-) diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryError.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryError.java index a5e94ae8b70c..121ca578c0d3 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryError.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryError.java @@ -17,7 +17,7 @@ * {@link BigQueryException} is thrown the BigQuery Error that caused it, if any, can be accessed * with {@link BigQueryException#error()}. */ -public class BigQueryError implements Serializable { +public final class BigQueryError implements Serializable { static final Function FROM_PB_FUNCTION = new Function() { @@ -98,7 +98,9 @@ public String toString() { @Override public boolean equals(Object obj) { - return obj instanceof BigQueryError && Objects.equals(toPb(), ((BigQueryError) obj).toPb()); + return obj == this + || obj instanceof BigQueryError + && Objects.equals(toPb(), ((BigQueryError) obj).toPb()); } ErrorProto toPb() { diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java index 4e0a405c7c44..bd87e390aa67 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java @@ -181,8 +181,9 @@ ToStringHelper toStringHelper() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof CopyJobConfiguration + return obj == this + || obj != null + && obj.getClass().equals(CopyJobConfiguration.class) && baseEquals((CopyJobConfiguration) obj); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CsvOptions.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CsvOptions.java index e07347f2b873..b621ed2cc6bc 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CsvOptions.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CsvOptions.java @@ -25,7 +25,7 @@ * Google BigQuery options for CSV format. This class wraps some properties of CSV files used by * BigQuery to parse external data. */ -public class CsvOptions extends FormatOptions { +public final class CsvOptions extends FormatOptions { private static final long serialVersionUID = 2193570529308612708L; @@ -224,7 +224,9 @@ public int hashCode() { @Override public boolean equals(Object obj) { - return obj instanceof CsvOptions && Objects.equals(toPb(), ((CsvOptions) obj).toPb()); + return obj == this + || obj instanceof CsvOptions + && Objects.equals(toPb(), ((CsvOptions) obj).toPb()); } com.google.api.services.bigquery.model.CsvOptions toPb() { diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java index 3d8ee45d1ae6..5cc7a260f00f 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java @@ -231,10 +231,15 @@ public Builder toBuilder() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof Dataset - && Objects.equals(toPb(), ((Dataset) obj).toPb()) - && Objects.equals(options, ((Dataset) obj).options); + if (obj == this) { + return true; + } + if (obj == null || !obj.getClass().equals(Dataset.class)) { + return false; + } + Dataset other = (Dataset) obj; + return Objects.equals(toPb(), other.toPb()) + && Objects.equals(options, other.options); } @Override diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/DatasetId.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/DatasetId.java index 634327f2189d..a6f2762da9cd 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/DatasetId.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/DatasetId.java @@ -26,7 +26,7 @@ /** * Google BigQuery Dataset identity. */ -public class DatasetId implements Serializable { +public final class DatasetId implements Serializable { private static final long serialVersionUID = -6186254820908152300L; @@ -68,7 +68,9 @@ public static DatasetId of(String dataset) { @Override public boolean equals(Object obj) { - return obj instanceof DatasetId && Objects.equals(toPb(), ((DatasetId) obj).toPb()); + return obj == this + || obj instanceof DatasetId + && Objects.equals(toPb(), ((DatasetId) obj).toPb()); } @Override diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/DatasetInfo.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/DatasetInfo.java index 284cf5aebeac..3e7da7cc6c87 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/DatasetInfo.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/DatasetInfo.java @@ -395,7 +395,8 @@ public int hashCode() { @Override public boolean equals(Object obj) { - return obj != null + return obj == this + || obj != null && obj.getClass().equals(DatasetInfo.class) && Objects.equals(toPb(), ((DatasetInfo) obj).toPb()); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java index 72db8ca85687..af17c281f7f1 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java @@ -256,8 +256,9 @@ ToStringHelper toStringHelper() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof ExternalTableDefinition + return obj == this + || obj != null + && obj.getClass().equals(ExternalTableDefinition.class) && baseEquals((ExternalTableDefinition) obj); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java index f61d1ec6a8af..79b1fb15b968 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java @@ -211,8 +211,9 @@ ToStringHelper toStringHelper() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof ExtractJobConfiguration + return obj == this + || obj != null + && obj.getClass().equals(ExtractJobConfiguration.class) && baseEquals((ExtractJobConfiguration) obj); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Field.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Field.java index c1342ead8f2a..dc805e12c2a2 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Field.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Field.java @@ -32,12 +32,12 @@ import java.util.Objects; /** - * Google BigQuery Table field. A table field has a name, a value, a mode and possibly a - * description. Supported types are: {@link Type#integer()}, {@link Type#bool()}, - * {@link Type#string()}, {@link Type#floatingPoint()}, {@link Type#timestamp()} and - * {@link Type#record(Field...)}. One or more fields form a table's schema. + * Google BigQuery Table field. A table field has a name, a type, a mode and possibly a description. + * Supported types are: {@link Type#integer()}, {@link Type#bool()}, {@link Type#string()}, + * {@link Type#floatingPoint()}, {@link Type#timestamp()} and {@link Type#record(Field...)}. One or + * more fields form a table's schema. */ -public class Field implements Serializable { +public final class Field implements Serializable { static final Function FROM_PB_FUNCTION = new Function() { @@ -56,6 +56,11 @@ public TableFieldSchema apply(Field field) { private static final long serialVersionUID = -8154262932305199256L; + private final String name; + private final Type type; + private final String mode; + private final String description; + /** * Data Types for a BigQuery Table field. This class provides factory methods for all BigQuery * field types. To instantiate a RECORD value the list of sub-fields must be provided. @@ -185,11 +190,6 @@ public enum Mode { NULLABLE, REQUIRED, REPEATED } - private final String name; - private final Type type; - private final String mode; - private final String description; - public static final class Builder { private String name; diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/FieldValue.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/FieldValue.java index 0bd15da9d908..1c06b87d639d 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/FieldValue.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/FieldValue.java @@ -216,13 +216,16 @@ public String toString() { } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(attribute, value); } @Override - public boolean equals(Object obj) { - if (!(obj instanceof FieldValue)) { + public final boolean equals(Object obj) { + if (obj == this) { + return true; + } + if (obj == null || !obj.getClass().equals(FieldValue.class)) { return false; } FieldValue other = (FieldValue) obj; diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/FormatOptions.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/FormatOptions.java index 98e199f6b644..4267d5384147 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/FormatOptions.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/FormatOptions.java @@ -59,7 +59,10 @@ public int hashCode() { @Override public boolean equals(Object obj) { - return obj instanceof FormatOptions && Objects.equals(type, ((FormatOptions) obj).type()); + return obj == this + || obj != null + && obj.getClass().equals(FormatOptions.class) + && Objects.equals(type, ((FormatOptions) obj).type()); } /** diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/InsertAllRequest.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/InsertAllRequest.java index 6907abaaae33..b46257833b78 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/InsertAllRequest.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/InsertAllRequest.java @@ -37,7 +37,7 @@ * @see Streaming Data into * BigQuery */ -public class InsertAllRequest implements Serializable { +public final class InsertAllRequest implements Serializable { private static final long serialVersionUID = 211200307773853078L; @@ -443,6 +443,9 @@ public int hashCode() { @Override public boolean equals(Object obj) { + if (obj == this) { + return true; + } if (!(obj instanceof InsertAllRequest)) { return false; } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/InsertAllResponse.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/InsertAllResponse.java index 1b998947f068..a145d1037bf7 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/InsertAllResponse.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/InsertAllResponse.java @@ -74,13 +74,15 @@ public boolean hasErrors() { } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(insertErrors); } @Override - public boolean equals(Object obj) { - return obj instanceof InsertAllResponse + public final boolean equals(Object obj) { + return obj == this + || obj != null + && obj.getClass().equals(InsertAllResponse.class) && Objects.equals(insertErrors, ((InsertAllResponse) obj).insertErrors); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Job.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Job.java index 279d6c1f6a6c..bfcca5b5388a 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Job.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Job.java @@ -179,10 +179,15 @@ public Builder toBuilder() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof Job - && Objects.equals(toPb(), ((Job) obj).toPb()) - && Objects.equals(options, ((Job) obj).options); + if (obj == this) { + return true; + } + if (obj == null || !obj.getClass().equals(Job.class)) { + return false; + } + Job other = (Job) obj; + return Objects.equals(toPb(), other.toPb()) + && Objects.equals(options, other.options); } @Override diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobId.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobId.java index bc81fe11f700..d2981151481f 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobId.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobId.java @@ -26,7 +26,7 @@ /** * Google BigQuery Job identity. */ -public class JobId implements Serializable { +public final class JobId implements Serializable { private static final long serialVersionUID = 1225914835379688976L; @@ -68,7 +68,9 @@ public static JobId of(String job) { @Override public boolean equals(Object obj) { - return obj instanceof JobId && Objects.equals(toPb(), ((JobId) obj).toPb()); + return obj == this + || obj instanceof JobId + && Objects.equals(toPb(), ((JobId) obj).toPb()); } @Override diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobInfo.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobInfo.java index 500eaabcaf17..13addc9d6e7a 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobInfo.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobInfo.java @@ -319,7 +319,8 @@ public int hashCode() { @Override public boolean equals(Object obj) { - return obj != null + return obj == this + || obj != null && obj.getClass().equals(JobInfo.class) && Objects.equals(toPb(), ((JobInfo) obj).toPb()); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobStatistics.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobStatistics.java index 58ae9045e7cc..90ad164a7ce5 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobStatistics.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobStatistics.java @@ -14,7 +14,7 @@ /** * A Google BigQuery Job statistics. */ -public class JobStatistics implements Serializable { +public abstract class JobStatistics implements Serializable { private static final long serialVersionUID = 1433024714741660399L; @@ -22,6 +22,55 @@ public class JobStatistics implements Serializable { private final Long endTime; private final Long startTime; + /** + * A Google BigQuery Copy Job statistics. + */ + public static class CopyStatistics extends JobStatistics { + + private static final long serialVersionUID = 8218325588441660938L; + + static final class Builder extends JobStatistics.Builder { + + private Builder() {} + + private Builder(com.google.api.services.bigquery.model.JobStatistics statisticsPb) { + super(statisticsPb); + } + + @Override + CopyStatistics build() { + return new CopyStatistics(this); + } + } + + private CopyStatistics(Builder builder) { + super(builder); + } + + @Override + public final boolean equals(Object obj) { + return obj == this + || obj != null + && obj.getClass().equals(CopyStatistics.class) + && baseEquals((CopyStatistics) obj); + } + + @Override + public final int hashCode() { + return baseHashCode(); + } + + static Builder builder() { + return new Builder(); + } + + @SuppressWarnings("unchecked") + static CopyStatistics fromPb( + com.google.api.services.bigquery.model.JobStatistics statisticPb) { + return new Builder(statisticPb).build(); + } + } + /** * A Google BigQuery Extract Job statistics. */ @@ -73,14 +122,16 @@ ToStringHelper toStringHelper() { } @Override - public boolean equals(Object obj) { - return obj instanceof ExtractStatistics - && Objects.equals(toPb(), ((ExtractStatistics) obj).toPb()); + public final boolean equals(Object obj) { + return obj == this + || obj != null + && obj.getClass().equals(ExtractStatistics.class) + && baseEquals((ExtractStatistics) obj); } @Override - public int hashCode() { - return Objects.hash(super.hashCode(), destinationUriFileCounts); + public final int hashCode() { + return Objects.hash(baseHashCode(), destinationUriFileCounts); } @Override @@ -203,13 +254,16 @@ ToStringHelper toStringHelper() { } @Override - public boolean equals(Object obj) { - return obj instanceof LoadStatistics && Objects.equals(toPb(), ((LoadStatistics) obj).toPb()); + public final boolean equals(Object obj) { + return obj == this + || obj != null + && obj.getClass().equals(LoadStatistics.class) + && baseEquals((LoadStatistics) obj); } @Override - public int hashCode() { - return Objects.hash(super.hashCode(), inputBytes, inputFiles, outputBytes, outputRows); + public final int hashCode() { + return Objects.hash(baseHashCode(), inputBytes, inputFiles, outputBytes, outputRows); } @Override @@ -361,14 +415,16 @@ ToStringHelper toStringHelper() { } @Override - public boolean equals(Object obj) { - return obj instanceof QueryStatistics - && Objects.equals(toPb(), ((QueryStatistics) obj).toPb()); + public final boolean equals(Object obj) { + return obj == this + || obj != null + && obj.getClass().equals(QueryStatistics.class) + && baseEquals((QueryStatistics) obj); } @Override - public int hashCode() { - return Objects.hash(super.hashCode(), billingTier, cacheHit, totalBytesBilled, + public final int hashCode() { + return Objects.hash(baseHashCode(), billingTier, cacheHit, totalBytesBilled, totalBytesProcessed, queryPlan); } @@ -396,7 +452,7 @@ static QueryStatistics fromPb( } } - static class Builder> { + abstract static class Builder> { private Long creationTime; private Long endTime; @@ -430,10 +486,7 @@ B startTime(Long startTime) { return self(); } - @SuppressWarnings("unchecked") - T build() { - return (T) new JobStatistics(this); - } + abstract T build(); } protected JobStatistics(Builder builder) { @@ -477,14 +530,12 @@ public String toString() { return toStringHelper().toString(); } - @Override - public int hashCode() { + final int baseHashCode() { return Objects.hash(creationTime, endTime, startTime); } - @Override - public boolean equals(Object obj) { - return obj instanceof JobStatistics && Objects.equals(toPb(), ((JobStatistics) obj).toPb()); + final boolean baseEquals(JobStatistics jobStatistics) { + return Objects.equals(toPb(), jobStatistics.toPb()); } com.google.api.services.bigquery.model.JobStatistics toPb() { @@ -496,10 +547,6 @@ com.google.api.services.bigquery.model.JobStatistics toPb() { return statistics; } - static Builder builder() { - return new Builder(); - } - @SuppressWarnings("unchecked") static T fromPb( com.google.api.services.bigquery.model.JobStatistics statisticPb) { @@ -510,7 +557,7 @@ static T fromPb( } else if (statisticPb.getQuery() != null) { return (T) QueryStatistics.fromPb(statisticPb); } else { - return (T) new Builder(statisticPb).build(); + return (T) CopyStatistics.fromPb(statisticPb); } } } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobStatus.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobStatus.java index 8d8da43e00de..7c948e6373f9 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobStatus.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/JobStatus.java @@ -94,13 +94,16 @@ public String toString() { } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(state, error, executionErrors); } @Override - public boolean equals(Object obj) { - return obj instanceof JobStatus && Objects.equals(toPb(), ((JobStatus) obj).toPb()); + public final boolean equals(Object obj) { + return obj == this + || obj != null + && obj.getClass().equals(JobStatus.class) + && Objects.equals(toPb(), ((JobStatus) obj).toPb()); } com.google.api.services.bigquery.model.JobStatus toPb() { diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java index 83369e2837fd..0b8dd55f4d84 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java @@ -269,8 +269,9 @@ ToStringHelper toStringHelper() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof LoadJobConfiguration + return obj == this + || obj != null + && obj.getClass().equals(LoadJobConfiguration.class) && baseEquals((LoadJobConfiguration) obj); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java index 5bfa6ebf74cd..e917a46fe289 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java @@ -450,8 +450,9 @@ ToStringHelper toStringHelper() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof QueryJobConfiguration + return obj == this + || obj != null + && obj.getClass().equals(QueryJobConfiguration.class) && baseEquals((QueryJobConfiguration) obj); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryRequest.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryRequest.java index 8cd3530f9227..166e0db9a18d 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryRequest.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryRequest.java @@ -60,7 +60,7 @@ * @see Query * @see Query Reference */ -public class QueryRequest implements Serializable { +public final class QueryRequest implements Serializable { private static final long serialVersionUID = -8727328332415880852L; @@ -250,7 +250,9 @@ public int hashCode() { @Override public boolean equals(Object obj) { - return obj instanceof QueryRequest && Objects.equals(toPb(), ((QueryRequest) obj).toPb()); + return obj == this + || obj instanceof QueryRequest + && Objects.equals(toPb(), ((QueryRequest) obj).toPb()); } QueryRequest setProjectId(String projectId) { diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryResponse.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryResponse.java index ceb1099d4faf..57a8966b0301 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryResponse.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryResponse.java @@ -170,16 +170,16 @@ public String toString() { } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(jobId); } @Override - public boolean equals(Object obj) { - if (this == obj) { + public final boolean equals(Object obj) { + if (obj == this) { return true; } - if (obj == null || getClass() != obj.getClass()) { + if (obj == null || !obj.getClass().equals(QueryResponse.class)) { return false; } QueryResponse response = (QueryResponse) obj; diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryResult.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryResult.java index 74a9e5000b0e..ba036187307c 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryResult.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryResult.java @@ -149,16 +149,16 @@ public String toString() { } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(super.hashCode(), cacheHit, schema, totalBytesProcessed, totalRows); } @Override - public boolean equals(Object obj) { - if (this == obj) { + public final boolean equals(Object obj) { + if (obj == this) { return true; } - if (obj == null || getClass() != obj.getClass()) { + if (obj == null || !obj.getClass().equals(QueryResult.class)) { return false; } QueryResult response = (QueryResult) obj; diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryStage.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryStage.java index b9cfb804b1ac..7276a86e7eeb 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryStage.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryStage.java @@ -372,15 +372,18 @@ public String toString() { } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(computeRatioAvg, computeRatioMax, generatedId, name, readRatioAvg, readRatioMax, recordsRead, recordsWritten, steps, waitRatioAvg, waitRatioMax, writeRatioAvg); } @Override - public boolean equals(Object obj) { - if (!(obj instanceof QueryStage)) { + public final boolean equals(Object obj) { + if (obj == this) { + return true; + } + if (obj == null || !obj.getClass().equals(QueryStage.class)) { return false; } QueryStage other = (QueryStage) obj; diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Schema.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Schema.java index 88114d47ae6c..218c2a214e50 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Schema.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/Schema.java @@ -31,7 +31,7 @@ /** * This class represents the schema for a Google BigQuery Table or data source. */ -public class Schema implements Serializable { +public final class Schema implements Serializable { static final Function FROM_PB_FUNCTION = new Function FROM_PB_FUNCTION = new Function() { @@ -92,7 +92,9 @@ public static TableId of(String dataset, String table) { @Override public boolean equals(Object obj) { - return obj instanceof TableId && Objects.equals(toPb(), ((TableId) obj).toPb()); + return obj == this + || obj instanceof TableId + && Objects.equals(toPb(), ((TableId) obj).toPb()); } @Override diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/TableInfo.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/TableInfo.java index 2c6083eaea75..c27b0dfdf1e5 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/TableInfo.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/TableInfo.java @@ -339,7 +339,8 @@ public int hashCode() { @Override public boolean equals(Object obj) { - return obj != null + return obj == this + || obj != null && obj.getClass().equals(TableInfo.class) && Objects.equals(toPb(), ((TableInfo) obj).toPb()); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ViewDefinition.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ViewDefinition.java index 05071ba3f2ed..1d3a97ba616d 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ViewDefinition.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ViewDefinition.java @@ -147,8 +147,9 @@ ToStringHelper toStringHelper() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof ViewDefinition + return obj == this + || obj != null + && obj.getClass().equals(ViewDefinition.class) && baseEquals((ViewDefinition) obj); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/WriteChannelConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/WriteChannelConfiguration.java index b7bb9db277a3..898063e7e0ed 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/WriteChannelConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/WriteChannelConfiguration.java @@ -33,7 +33,7 @@ * into a table with a {@link com.google.cloud.WriteChannel} * ({@link BigQuery#writer(WriteChannelConfiguration)}). */ -public class WriteChannelConfiguration implements LoadConfiguration, Serializable { +public final class WriteChannelConfiguration implements LoadConfiguration, Serializable { private static final long serialVersionUID = 470267591917413578L; @@ -241,7 +241,8 @@ public String toString() { @Override public boolean equals(Object obj) { - return obj instanceof WriteChannelConfiguration + return obj == this + || obj instanceof WriteChannelConfiguration && Objects.equals(toPb(), ((WriteChannelConfiguration) obj).toPb()); } diff --git a/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobInfoTest.java b/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobInfoTest.java index e6cd2987fbd7..d7fde0957a2f 100644 --- a/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobInfoTest.java +++ b/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobInfoTest.java @@ -23,6 +23,7 @@ import com.google.cloud.bigquery.JobInfo.CreateDisposition; import com.google.cloud.bigquery.JobInfo.WriteDisposition; +import com.google.cloud.bigquery.JobStatistics.CopyStatistics; import com.google.cloud.bigquery.JobStatistics.ExtractStatistics; import com.google.cloud.bigquery.JobStatistics.LoadStatistics; import com.google.cloud.bigquery.JobStatistics.QueryStatistics; @@ -42,7 +43,7 @@ public class JobInfoTest { private static final String EMAIL = "email"; private static final JobId JOB_ID = JobId.of("job"); private static final JobStatus JOB_STATUS = new JobStatus(JobStatus.State.DONE); - private static final JobStatistics COPY_JOB_STATISTICS = JobStatistics.builder() + private static final CopyStatistics COPY_JOB_STATISTICS = CopyStatistics.builder() .creationTime(1L) .endTime(3L) .startTime(2L) diff --git a/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobStatisticsTest.java b/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobStatisticsTest.java index 9fbe43f3903f..c4c8c5ae6f4b 100644 --- a/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobStatisticsTest.java +++ b/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobStatisticsTest.java @@ -18,11 +18,12 @@ import static org.junit.Assert.assertEquals; +import com.google.common.collect.ImmutableList; +import com.google.cloud.bigquery.JobStatistics.CopyStatistics; import com.google.cloud.bigquery.JobStatistics.ExtractStatistics; import com.google.cloud.bigquery.JobStatistics.LoadStatistics; import com.google.cloud.bigquery.JobStatistics.QueryStatistics; import com.google.cloud.bigquery.QueryStage.QueryStep; -import com.google.common.collect.ImmutableList; import org.junit.Test; @@ -42,6 +43,11 @@ public class JobStatisticsTest { private static final Long CREATION_TIME = 10L; private static final Long END_TIME = 20L; private static final Long START_TIME = 15L; + private static final CopyStatistics COPY_STATISTICS = CopyStatistics.builder() + .creationTime(CREATION_TIME) + .endTime(END_TIME) + .startTime(START_TIME) + .build(); private static final ExtractStatistics EXTRACT_STATISTICS = ExtractStatistics.builder() .creationTime(CREATION_TIME) .endTime(END_TIME) @@ -101,17 +107,12 @@ public class JobStatisticsTest { .billingTier(BILLING_TIER) .cacheHit(CACHE_HIT) .build(); - private static final JobStatistics STATISTICS = JobStatistics.builder() - .creationTime(CREATION_TIME) - .endTime(END_TIME) - .startTime(START_TIME) - .build(); @Test public void testBuilder() { - assertEquals(CREATION_TIME, STATISTICS.creationTime()); - assertEquals(START_TIME, STATISTICS.startTime()); - assertEquals(END_TIME, STATISTICS.endTime()); + assertEquals(CREATION_TIME, COPY_STATISTICS.creationTime()); + assertEquals(START_TIME, COPY_STATISTICS.startTime()); + assertEquals(END_TIME, COPY_STATISTICS.endTime()); assertEquals(CREATION_TIME, EXTRACT_STATISTICS.creationTime()); assertEquals(START_TIME, EXTRACT_STATISTICS.startTime()); @@ -160,7 +161,7 @@ public void testToPbAndFromPb() { ExtractStatistics.fromPb(EXTRACT_STATISTICS.toPb())); compareLoadStatistics(LOAD_STATISTICS, LoadStatistics.fromPb(LOAD_STATISTICS.toPb())); compareQueryStatistics(QUERY_STATISTICS, QueryStatistics.fromPb(QUERY_STATISTICS.toPb())); - compareStatistics(STATISTICS, JobStatistics.fromPb(STATISTICS.toPb())); + compareStatistics(COPY_STATISTICS, JobStatistics.fromPb(COPY_STATISTICS.toPb())); compareLoadStatistics(LOAD_STATISTICS_INCOMPLETE, LoadStatistics.fromPb(LOAD_STATISTICS_INCOMPLETE.toPb())); diff --git a/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobTest.java b/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobTest.java index b2a2461f1267..44e5e201e95c 100644 --- a/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobTest.java +++ b/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/JobTest.java @@ -27,6 +27,8 @@ import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; +import com.google.cloud.bigquery.JobStatistics.CopyStatistics; + import org.junit.After; import org.junit.Test; @@ -40,7 +42,7 @@ public class JobTest { private static final String SELF_LINK = "selfLink"; private static final String EMAIL = "email"; private static final JobStatus JOB_STATUS = new JobStatus(JobStatus.State.DONE); - private static final JobStatistics COPY_JOB_STATISTICS = JobStatistics.builder() + private static final JobStatistics COPY_JOB_STATISTICS = CopyStatistics.builder() .creationTime(1L) .endTime(3L) .startTime(2L) diff --git a/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/SerializationTest.java b/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/SerializationTest.java index 7aabcea120e9..30b1b9e067ec 100644 --- a/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/SerializationTest.java +++ b/gcloud-java-bigquery/src/test/java/com/google/cloud/bigquery/SerializationTest.java @@ -122,11 +122,12 @@ public class SerializationTest extends BaseSerializationTest { .etag(ETAG) .generatedId(GENERATED_ID) .build(); - private static final JobStatistics JOB_STATISTICS = JobStatistics.builder() - .creationTime(1L) - .endTime(3L) - .startTime(2L) - .build(); + private static final JobStatistics.CopyStatistics COPY_STATISTICS = + JobStatistics.CopyStatistics.builder() + .creationTime(1L) + .endTime(3L) + .startTime(2L) + .build(); private static final JobStatistics.ExtractStatistics EXTRACT_STATISTICS = JobStatistics.ExtractStatistics.builder() .creationTime(1L) @@ -235,7 +236,7 @@ protected Serializable[] serializableObjects() { return new Serializable[]{DOMAIN_ACCESS, GROUP_ACCESS, USER_ACCESS, VIEW_ACCESS, DATASET_ID, DATASET_INFO, TABLE_ID, CSV_OPTIONS, STREAMING_BUFFER, TABLE_DEFINITION, EXTERNAL_TABLE_DEFINITION, VIEW_DEFINITION, TABLE_SCHEMA, TABLE_INFO, VIEW_INFO, - EXTERNAL_TABLE_INFO, INLINE_FUNCTION, URI_FUNCTION, JOB_STATISTICS, EXTRACT_STATISTICS, + EXTERNAL_TABLE_INFO, INLINE_FUNCTION, URI_FUNCTION, COPY_STATISTICS, EXTRACT_STATISTICS, LOAD_STATISTICS, QUERY_STATISTICS, BIGQUERY_ERROR, JOB_STATUS, JOB_ID, COPY_JOB_CONFIGURATION, EXTRACT_JOB_CONFIGURATION, LOAD_CONFIGURATION, LOAD_JOB_CONFIGURATION, QUERY_JOB_CONFIGURATION, JOB_INFO, INSERT_ALL_REQUEST, diff --git a/gcloud-java-core/src/main/java/com/google/cloud/IamPolicy.java b/gcloud-java-core/src/main/java/com/google/cloud/IamPolicy.java index 1f214e1b0f71..2d15d9907687 100644 --- a/gcloud-java-core/src/main/java/com/google/cloud/IamPolicy.java +++ b/gcloud-java-core/src/main/java/com/google/cloud/IamPolicy.java @@ -219,7 +219,10 @@ public final int hashCode() { @Override public final boolean equals(Object obj) { - if (obj == null || !getClass().equals(obj.getClass())) { + if (obj == this) { + return true; + } + if (obj == null || !obj.getClass().equals(getClass())) { return false; } @SuppressWarnings("rawtypes") diff --git a/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequest.java b/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequest.java index 404a49cdc983..3538a5c411e9 100644 --- a/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequest.java +++ b/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequest.java @@ -193,17 +193,16 @@ public Builder toBuilder() { @Override public final boolean equals(Object obj) { - if (this == obj) { + if (obj == this) { return true; } if (obj == null || !obj.getClass().equals(ChangeRequest.class)) { return false; - } else { - ChangeRequest other = (ChangeRequest) obj; - return Objects.equals(options, other.options) - && Objects.equals(zone, other.zone) - && Objects.equals(toPb(), other.toPb()); } + ChangeRequest other = (ChangeRequest) obj; + return Objects.equals(toPb(), other.toPb()) + && Objects.equals(options, other.options) + && Objects.equals(zone, other.zone); } @Override diff --git a/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequestInfo.java b/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequestInfo.java index 53bce6cf1380..8ed68765a163 100644 --- a/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequestInfo.java +++ b/gcloud-java-dns/src/main/java/com/google/cloud/dns/ChangeRequestInfo.java @@ -335,9 +335,11 @@ static ChangeRequestInfo fromPb(Change pb) { } @Override - public boolean equals(Object other) { - return other != null && other.getClass().equals(ChangeRequestInfo.class) - && other instanceof ChangeRequestInfo && toPb().equals(((ChangeRequestInfo) other).toPb()); + public boolean equals(Object obj) { + return obj == this + || obj != null + && obj.getClass().equals(ChangeRequestInfo.class) + && toPb().equals(((ChangeRequestInfo) obj).toPb()); } @Override diff --git a/gcloud-java-dns/src/main/java/com/google/cloud/dns/ProjectInfo.java b/gcloud-java-dns/src/main/java/com/google/cloud/dns/ProjectInfo.java index 3d0d4704e6c0..bc35bacc317d 100644 --- a/gcloud-java-dns/src/main/java/com/google/cloud/dns/ProjectInfo.java +++ b/gcloud-java-dns/src/main/java/com/google/cloud/dns/ProjectInfo.java @@ -268,12 +268,15 @@ static ProjectInfo fromPb(Project pb) { } @Override - public boolean equals(Object other) { - return (other instanceof ProjectInfo) && toPb().equals(((ProjectInfo) other).toPb()); + public final boolean equals(Object obj) { + return obj == this + || obj != null + && obj.getClass().equals(ProjectInfo.class) + && toPb().equals(((ProjectInfo) obj).toPb()); } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(id, number, quota); } diff --git a/gcloud-java-dns/src/main/java/com/google/cloud/dns/RecordSet.java b/gcloud-java-dns/src/main/java/com/google/cloud/dns/RecordSet.java index 02a81b2a76c6..5e061b5164e8 100644 --- a/gcloud-java-dns/src/main/java/com/google/cloud/dns/RecordSet.java +++ b/gcloud-java-dns/src/main/java/com/google/cloud/dns/RecordSet.java @@ -43,7 +43,7 @@ * @see Google Cloud DNS * documentation */ -public class RecordSet implements Serializable { +public final class RecordSet implements Serializable { static final Function FROM_PB_FUNCTION = new Function() { @@ -276,13 +276,13 @@ public Type type() { } @Override - public final int hashCode() { + public int hashCode() { return Objects.hash(name, rrdatas, ttl, type); } @Override - public final boolean equals(Object obj) { - return this == obj + public boolean equals(Object obj) { + return obj == this || obj instanceof RecordSet && Objects.equals(this.toPb(), ((RecordSet) obj).toPb()); } diff --git a/gcloud-java-dns/src/main/java/com/google/cloud/dns/Zone.java b/gcloud-java-dns/src/main/java/com/google/cloud/dns/Zone.java index 8d337daa15da..a01f7212d28e 100644 --- a/gcloud-java-dns/src/main/java/com/google/cloud/dns/Zone.java +++ b/gcloud-java-dns/src/main/java/com/google/cloud/dns/Zone.java @@ -197,10 +197,15 @@ public Dns dns() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof Zone - && Objects.equals(toPb(), ((Zone) obj).toPb()) - && Objects.equals(options, ((Zone) obj).options); + if (obj == this) { + return true; + } + if (obj == null || !obj.getClass().equals(Zone.class)) { + return false; + } + Zone other = (Zone) obj; + return Objects.equals(toPb(), other.toPb()) + && Objects.equals(options, other.options); } @Override diff --git a/gcloud-java-dns/src/main/java/com/google/cloud/dns/ZoneInfo.java b/gcloud-java-dns/src/main/java/com/google/cloud/dns/ZoneInfo.java index 2b8c79e7fe5c..d6178479b68b 100644 --- a/gcloud-java-dns/src/main/java/com/google/cloud/dns/ZoneInfo.java +++ b/gcloud-java-dns/src/main/java/com/google/cloud/dns/ZoneInfo.java @@ -293,7 +293,9 @@ static ZoneInfo fromPb(ManagedZone pb) { @Override public boolean equals(Object obj) { - return obj != null && obj.getClass().equals(ZoneInfo.class) + return obj == this + || obj != null + && obj.getClass().equals(ZoneInfo.class) && Objects.equals(toPb(), ((ZoneInfo) obj).toPb()); } diff --git a/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Policy.java b/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Policy.java index 41238fd9b9aa..f22b13e96268 100644 --- a/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Policy.java +++ b/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Policy.java @@ -40,7 +40,7 @@ * * @see Policy */ -public class Policy extends IamPolicy { +public final class Policy extends IamPolicy { private static final long serialVersionUID = -5573557282693961850L; diff --git a/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Project.java b/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Project.java index c400ade05942..d728ec3ea4df 100644 --- a/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Project.java +++ b/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/Project.java @@ -258,10 +258,15 @@ public Builder toBuilder() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof Project - && Objects.equals(toPb(), ((Project) obj).toPb()) - && Objects.equals(options, ((Project) obj).options); + if (obj == this) { + return true; + } + if (obj == null || !obj.getClass().equals(Project.class)) { + return false; + } + Project other = (Project) obj; + return Objects.equals(toPb(), other.toPb()) + && Objects.equals(options, other.options); } @Override diff --git a/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/ProjectInfo.java b/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/ProjectInfo.java index 355236b653f1..762ad3db050f 100644 --- a/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/ProjectInfo.java +++ b/gcloud-java-resourcemanager/src/main/java/com/google/cloud/resourcemanager/ProjectInfo.java @@ -336,7 +336,9 @@ public Long createTimeMillis() { @Override public boolean equals(Object obj) { - return obj != null && obj.getClass().equals(ProjectInfo.class) + return obj == this + || obj != null + && obj.getClass().equals(ProjectInfo.class) && Objects.equals(toPb(), ((ProjectInfo) obj).toPb()); } diff --git a/gcloud-java-storage/src/main/java/com/google/cloud/storage/BatchResponse.java b/gcloud-java-storage/src/main/java/com/google/cloud/storage/BatchResponse.java index d07d9dc26c2d..d1e56758b9d2 100644 --- a/gcloud-java-storage/src/main/java/com/google/cloud/storage/BatchResponse.java +++ b/gcloud-java-storage/src/main/java/com/google/cloud/storage/BatchResponse.java @@ -26,7 +26,7 @@ /** * Google Storage batch response. */ -public final class BatchResponse implements Serializable { +public class BatchResponse implements Serializable { private static final long serialVersionUID = 1057416839397037706L; @@ -121,13 +121,16 @@ static Result empty() { } @Override - public int hashCode() { + public final int hashCode() { return Objects.hash(deleteResult, updateResult, getResult); } @Override - public boolean equals(Object obj) { - if (!(obj instanceof BatchResponse)) { + public final boolean equals(Object obj) { + if (obj == this) { + return true; + } + if (obj == null || !obj.getClass().equals(BatchResponse.class)) { return false; } BatchResponse other = (BatchResponse) obj; diff --git a/gcloud-java-storage/src/main/java/com/google/cloud/storage/Blob.java b/gcloud-java-storage/src/main/java/com/google/cloud/storage/Blob.java index 1adea4f549bd..9b74b686d8f9 100644 --- a/gcloud-java-storage/src/main/java/com/google/cloud/storage/Blob.java +++ b/gcloud-java-storage/src/main/java/com/google/cloud/storage/Blob.java @@ -526,10 +526,15 @@ public Builder toBuilder() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof Blob - && Objects.equals(toPb(), ((Blob) obj).toPb()) - && Objects.equals(options, ((Blob) obj).options); + if (obj == this) { + return true; + } + if (obj == null || !obj.getClass().equals(Blob.class)) { + return false; + } + Blob other = (Blob) obj; + return Objects.equals(toPb(), other.toPb()) + && Objects.equals(options, other.options); } @Override diff --git a/gcloud-java-storage/src/main/java/com/google/cloud/storage/BlobId.java b/gcloud-java-storage/src/main/java/com/google/cloud/storage/BlobId.java index 52e7fc5f331e..88664e191f84 100644 --- a/gcloud-java-storage/src/main/java/com/google/cloud/storage/BlobId.java +++ b/gcloud-java-storage/src/main/java/com/google/cloud/storage/BlobId.java @@ -79,9 +79,16 @@ public int hashCode() { @Override public boolean equals(Object obj) { - return obj instanceof BlobId && Objects.equals(bucket, ((BlobId) obj).bucket) - && Objects.equals(name, ((BlobId) obj).name) - && Objects.equals(generation, ((BlobId) obj).generation); + if (obj == this) { + return true; + } + if (obj == null || !obj.getClass().equals(BlobId.class)) { + return false; + } + BlobId other = (BlobId) obj; + return Objects.equals(bucket, other.bucket) + && Objects.equals(name, other.name) + && Objects.equals(generation, other.generation); } StorageObject toPb() { diff --git a/gcloud-java-storage/src/main/java/com/google/cloud/storage/BlobInfo.java b/gcloud-java-storage/src/main/java/com/google/cloud/storage/BlobInfo.java index dd264fa7f92b..f7d21b09a8ee 100644 --- a/gcloud-java-storage/src/main/java/com/google/cloud/storage/BlobInfo.java +++ b/gcloud-java-storage/src/main/java/com/google/cloud/storage/BlobInfo.java @@ -638,7 +638,9 @@ public int hashCode() { @Override public boolean equals(Object obj) { - return obj != null && obj.getClass().equals(BlobInfo.class) + return obj == this + || obj != null + && obj.getClass().equals(BlobInfo.class) && Objects.equals(toPb(), ((BlobInfo) obj).toPb()); } diff --git a/gcloud-java-storage/src/main/java/com/google/cloud/storage/Bucket.java b/gcloud-java-storage/src/main/java/com/google/cloud/storage/Bucket.java index 6c85786d418f..9f5a2e2499a0 100644 --- a/gcloud-java-storage/src/main/java/com/google/cloud/storage/Bucket.java +++ b/gcloud-java-storage/src/main/java/com/google/cloud/storage/Bucket.java @@ -715,10 +715,15 @@ public Builder toBuilder() { @Override public final boolean equals(Object obj) { - return this == obj - || obj instanceof Bucket - && Objects.equals(toPb(), ((Bucket) obj).toPb()) - && Objects.equals(options, ((Bucket) obj).options); + if (obj == this) { + return true; + } + if (obj != null && !obj.getClass().equals(Bucket.class)) { + return false; + } + Bucket other = (Bucket) obj; + return Objects.equals(toPb(), other.toPb()) + && Objects.equals(options, other.options); } @Override diff --git a/gcloud-java-storage/src/main/java/com/google/cloud/storage/BucketInfo.java b/gcloud-java-storage/src/main/java/com/google/cloud/storage/BucketInfo.java index 1dcd110808a9..36e0ed54ffa0 100644 --- a/gcloud-java-storage/src/main/java/com/google/cloud/storage/BucketInfo.java +++ b/gcloud-java-storage/src/main/java/com/google/cloud/storage/BucketInfo.java @@ -719,7 +719,9 @@ public int hashCode() { @Override public boolean equals(Object obj) { - return obj != null && obj.getClass().equals(BucketInfo.class) + return obj == this + || obj != null + && obj.getClass().equals(BucketInfo.class) && Objects.equals(toPb(), ((BucketInfo) obj).toPb()); } From 5adf431a9ac16ae75dbb3d7d3de0b4aa45ac212e Mon Sep 17 00:00:00 2001 From: Marco Ziccardi Date: Thu, 14 Apr 2016 16:43:38 +0200 Subject: [PATCH 3/3] Make job configuration classes final --- .../cloud/bigquery/CopyJobConfiguration.java | 9 +++-- .../bigquery/ExtractJobConfiguration.java | 9 +++-- .../cloud/bigquery/LoadJobConfiguration.java | 9 +++-- .../cloud/bigquery/QueryJobConfiguration.java | 35 +++++++++---------- 4 files changed, 29 insertions(+), 33 deletions(-) diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java index bd87e390aa67..e455416bea7b 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/CopyJobConfiguration.java @@ -31,7 +31,7 @@ * Google BigQuery copy job configuration. A copy job copies an existing table to another new or * existing table. Copy job configurations have {@link JobConfiguration.Type#COPY} type. */ -public class CopyJobConfiguration extends JobConfiguration { +public final class CopyJobConfiguration extends JobConfiguration { private static final long serialVersionUID = 1140509641399762967L; @@ -180,15 +180,14 @@ ToStringHelper toStringHelper() { } @Override - public final boolean equals(Object obj) { + public boolean equals(Object obj) { return obj == this - || obj != null - && obj.getClass().equals(CopyJobConfiguration.class) + || obj instanceof CopyJobConfiguration && baseEquals((CopyJobConfiguration) obj); } @Override - public final int hashCode() { + public int hashCode() { return Objects.hash(baseHashCode(), sourceTables, destinationTable, createDisposition, writeDisposition); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java index 79b1fb15b968..3dccddcae764 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/ExtractJobConfiguration.java @@ -30,7 +30,7 @@ * Cloud Storage. The extract destination provided as URIs that point to objects in Google Cloud * Storage. Extract job configurations have {@link JobConfiguration.Type#EXTRACT} type. */ -public class ExtractJobConfiguration extends JobConfiguration { +public final class ExtractJobConfiguration extends JobConfiguration { private static final long serialVersionUID = 4147749733166593761L; @@ -210,15 +210,14 @@ ToStringHelper toStringHelper() { } @Override - public final boolean equals(Object obj) { + public boolean equals(Object obj) { return obj == this - || obj != null - && obj.getClass().equals(ExtractJobConfiguration.class) + || obj instanceof ExtractJobConfiguration && baseEquals((ExtractJobConfiguration) obj); } @Override - public final int hashCode() { + public int hashCode() { return Objects.hash(baseHashCode(), sourceTable, destinationUris, printHeader, fieldDelimiter, format, compression); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java index 0b8dd55f4d84..03e2d7fea05e 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java @@ -30,7 +30,7 @@ * table. Data is provided as URIs that point to objects in Google Cloud Storage. Load job * configurations have {@link JobConfiguration.Type#LOAD} type. */ -public class LoadJobConfiguration extends JobConfiguration implements LoadConfiguration { +public final class LoadJobConfiguration extends JobConfiguration implements LoadConfiguration { private static final long serialVersionUID = -2673554846792429829L; @@ -268,15 +268,14 @@ ToStringHelper toStringHelper() { } @Override - public final boolean equals(Object obj) { + public boolean equals(Object obj) { return obj == this - || obj != null - && obj.getClass().equals(LoadJobConfiguration.class) + || obj instanceof LoadJobConfiguration && baseEquals((LoadJobConfiguration) obj); } @Override - public final int hashCode() { + public int hashCode() { return Objects.hash(baseHashCode(), sourceUris); } diff --git a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java index e917a46fe289..73b1403245c7 100644 --- a/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java +++ b/gcloud-java-bigquery/src/main/java/com/google/cloud/bigquery/QueryJobConfiguration.java @@ -35,10 +35,23 @@ * Google BigQuery Query Job configuration. A Query Job runs a query against BigQuery data. Query * job configurations have {@link JobConfiguration.Type#QUERY} type. */ -public class QueryJobConfiguration extends JobConfiguration { +public final class QueryJobConfiguration extends JobConfiguration { private static final long serialVersionUID = -1108948249081804890L; + private final String query; + private final TableId destinationTable; + private final Map tableDefinitions; + private final List userDefinedFunctions; + private final CreateDisposition createDisposition; + private final WriteDisposition writeDisposition; + private final DatasetId defaultDataset; + private final Priority priority; + private final Boolean allowLargeResults; + private final Boolean useQueryCache; + private final Boolean flattenResults; + private final Boolean dryRun; + /** * Priority levels for a query. If not specified the priority is assumed to be * {@link Priority#INTERACTIVE}. @@ -59,19 +72,6 @@ public enum Priority { BATCH } - private final String query; - private final TableId destinationTable; - private final Map tableDefinitions; - private final List userDefinedFunctions; - private final CreateDisposition createDisposition; - private final WriteDisposition writeDisposition; - private final DatasetId defaultDataset; - private final Priority priority; - private final Boolean allowLargeResults; - private final Boolean useQueryCache; - private final Boolean flattenResults; - private final Boolean dryRun; - public static final class Builder extends JobConfiguration.Builder { @@ -449,15 +449,14 @@ ToStringHelper toStringHelper() { } @Override - public final boolean equals(Object obj) { + public boolean equals(Object obj) { return obj == this - || obj != null - && obj.getClass().equals(QueryJobConfiguration.class) + || obj instanceof QueryJobConfiguration && baseEquals((QueryJobConfiguration) obj); } @Override - public final int hashCode() { + public int hashCode() { return Objects.hash(baseHashCode(), allowLargeResults, createDisposition, destinationTable, defaultDataset, flattenResults, priority, query, tableDefinitions, useQueryCache, userDefinedFunctions, writeDisposition, dryRun);