Convert File.NameKey to AutoValue
Change-Id: If0110c1a391d67f2d70a3413b46e9ffe7c9e2c1c
diff --git a/.factorypath b/.factorypath
new file mode 100644
index 0000000..c1c6e82
--- /dev/null
+++ b/.factorypath
@@ -0,0 +1,3 @@
+<factorypath>
+ <factorypathentry kind="VARJAR" id="M2_REPO/com/google/auto/value/auto-value/1.7/auto-value-1.7.jar" enabled="true" runInBatchMode="false"/>
+</factorypath>
diff --git a/BUILD b/BUILD
index 0e08d92..f364456 100644
--- a/BUILD
+++ b/BUILD
@@ -5,6 +5,46 @@
"gerrit_plugin",
)
+load("@rules_java//java:defs.bzl", "java_library", "java_plugin")
+
+java_plugin(
+ name = "auto-annotation-plugin",
+ processor_class = "com.google.auto.value.processor.AutoAnnotationProcessor",
+ deps = [
+ "@auto-value-annotations//jar",
+ "@auto-value//jar",
+ ],
+)
+
+java_plugin(
+ name = "auto-value-plugin",
+ processor_class = "com.google.auto.value.processor.AutoValueProcessor",
+ deps = [
+ "@auto-value-annotations//jar",
+ "@auto-value//jar",
+ ],
+)
+
+java_library(
+ name = "auto-value",
+ exported_plugins = [
+ ":auto-annotation-plugin",
+ ":auto-value-plugin",
+ ],
+ visibility = ["//visibility:public"],
+ exports = ["@auto-value//jar"],
+)
+
+java_library(
+ name = "auto-value-annotations",
+ exported_plugins = [
+ ":auto-annotation-plugin",
+ ":auto-value-plugin",
+ ],
+ visibility = ["//visibility:public"],
+ exports = ["@auto-value-annotations//jar"],
+)
+
gerrit_plugin(
name = "batch",
srcs = glob(["src/main/java/**/*.java"]),
@@ -17,4 +57,8 @@
"Gerrit-SshModule: com.googlesource.gerrit.plugins.batch.ssh.SshModule",
],
resources = glob(["src/main/resources/**/*"]),
+ deps = [
+ ":auto-value",
+ ":auto-value-annotations"
+ ],
)
diff --git a/WORKSPACE b/WORKSPACE
index 4f70dda..8438894 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -22,5 +22,21 @@
# Load release Plugin API
gerrit_api()
+load("//tools/bzl:maven_jar.bzl", "GERRIT", "maven_jar")
+
+AUTO_VALUE_VERSION = "1.7"
+
+maven_jar(
+ name = "auto-value",
+ artifact = "com.google.auto.value:auto-value:" + AUTO_VALUE_VERSION,
+ sha1 = "fe8387764ed19460eda4f106849c664f51c07121",
+)
+
+maven_jar(
+ name = "auto-value-annotations",
+ artifact = "com.google.auto.value:auto-value-annotations:" + AUTO_VALUE_VERSION,
+ sha1 = "5be124948ebdc7807df68207f35a0f23ce427f29",
+)
+
# Load snapshot Plugin API
#gerrit_api_maven_local()
diff --git a/pom.xml b/pom.xml
index ad3ac91..0ef2e07 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,7 @@
<properties>
<Gerrit-ApiType>plugin</Gerrit-ApiType>
<Gerrit-ApiVersion>${project.version}</Gerrit-ApiVersion>
+ <auto-value.version>1.7</auto-value.version>
</properties>
<build>
@@ -64,6 +65,13 @@
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>com.google.auto.value</groupId>
+ <artifactId>auto-value</artifactId>
+ <version>${auto-value.version}</version>
+ </path>
+ </annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
@@ -76,6 +84,12 @@
<version>${Gerrit-ApiVersion}</version>
<scope>provided</scope>
</dependency>
+
+ <dependency>
+ <groupId>com.google.auto.value</groupId>
+ <artifactId>auto-value-annotations</artifactId>
+ <version>${auto-value.version}</version>
+ </dependency>
</dependencies>
<repositories>
diff --git a/src/main/java/com/google/gerrit/entities/File.java b/src/main/java/com/google/gerrit/entities/File.java
deleted file mode 100644
index 7c58be8..0000000
--- a/src/main/java/com/google/gerrit/entities/File.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (C) 2017 The Android Open Source Project
-//
-// 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.gerrit.entities;
-
-import com.google.gerrit.entities.BranchNameKey;
-import com.google.gerrit.entities.Project;
-
-public class File {
- /** An immutable reference to a file in gerrit repo. */
- public static class NameKey implements Comparable<NameKey> {
- protected BranchNameKey branch;
- protected String fileName;
-
- protected NameKey() {
- branch = BranchNameKey.create(Project.nameKey(null), null);
- }
-
- public NameKey(BranchNameKey br, String file) {
- branch = br;
- fileName = file;
- }
-
- public String get() {
- return fileName;
- }
-
- public BranchNameKey getParentKey() {
- return branch;
- }
-
- @Override
- public final int compareTo(NameKey o) {
- return get().compareTo(o.get());
- }
- }
-}
diff --git a/src/main/java/com/google/gerrit/entities/FileNameKey.java b/src/main/java/com/google/gerrit/entities/FileNameKey.java
new file mode 100644
index 0000000..63531a5
--- /dev/null
+++ b/src/main/java/com/google/gerrit/entities/FileNameKey.java
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// 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.gerrit.entities;
+
+import com.google.auto.value.AutoValue;
+import com.google.gerrit.entities.BranchNameKey;
+import com.google.gerrit.entities.Project;
+
+/** An immutable reference to a file in gerrit repo. */
+@AutoValue
+public abstract class FileNameKey implements Comparable<FileNameKey> {
+ public static FileNameKey create(BranchNameKey branch, String file) {
+ return new AutoValue_FileNameKey(branch, file);
+ }
+
+ public static FileNameKey create() {
+ return new AutoValue_FileNameKey(BranchNameKey.create(Project.nameKey(null), null), null);
+ }
+
+ public abstract BranchNameKey branch();
+ public abstract String file();
+
+ @Override
+ public final int compareTo(FileNameKey o) {
+ return file().compareTo(o.file());
+ }
+}
diff --git a/src/main/java/com/google/gerrit/server/git/meta/GitFile.java b/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
index 311b560..2bf5a14 100644
--- a/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
+++ b/src/main/java/com/google/gerrit/server/git/meta/GitFile.java
@@ -15,7 +15,7 @@
package com.google.gerrit.server.git.meta;
import com.google.gerrit.entities.BranchNameKey;
-import com.google.gerrit.entities.File;
+import com.google.gerrit.entities.FileNameKey;
import com.google.gerrit.entities.Project;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.project.NoSuchProjectException;
@@ -31,7 +31,7 @@
/** A GitFile is a text file (UTF8) from a git repository */
public class GitFile extends VersionedMetaData {
public interface Factory {
- GitFile create(@Assisted File.NameKey file);
+ GitFile create(@Assisted FileNameKey file);
}
protected final MetaDataUpdate.User metaDataUpdateFactory;
@@ -46,11 +46,11 @@
public GitFile(
MetaDataUpdate.User metaDataUpdateFactory,
GitRepositoryManager repos,
- @Assisted File.NameKey file) {
+ @Assisted FileNameKey file) {
this.metaDataUpdateFactory = metaDataUpdateFactory;
this.repos = repos;
- this.branch = file.getParentKey();
- this.file = file.get();
+ this.branch = file.branch();
+ this.file = file.file();
}
public String read() throws ConfigInvalidException, IOException, NoSuchProjectException {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java
index 12f93d1..7ce10a6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/batch/BatchStore.java
@@ -15,7 +15,7 @@
import com.google.gerrit.entities.Account;
import com.google.gerrit.entities.BranchNameKey;
-import com.google.gerrit.entities.File;
+import com.google.gerrit.entities.FileNameKey;
import com.google.gerrit.entities.Project;
import com.google.gerrit.server.config.AllProjectsName;
import com.google.gerrit.server.git.GitRepositoryManager;
@@ -137,7 +137,7 @@
throw new NoSuchBatchException(id);
}
- protected File.NameKey getFileNameKey(String id) {
+ protected FileNameKey getFileNameKey(String id) {
return getFileNameKey(getBranch(id));
}
@@ -145,7 +145,7 @@
return BranchNameKey.create(project, BATCHES_REF + id);
}
- protected File.NameKey getFileNameKey(BranchNameKey branch) {
- return new File.NameKey(branch, FILE_NAME);
+ protected FileNameKey getFileNameKey(BranchNameKey branch) {
+ return FileNameKey.create(branch, FILE_NAME);
}
}
diff --git a/tools/bzl/maven_jar.bzl b/tools/bzl/maven_jar.bzl
new file mode 100644
index 0000000..ed1504d
--- /dev/null
+++ b/tools/bzl/maven_jar.bzl
@@ -0,0 +1,4 @@
+load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", _gerrit = "GERRIT", _maven_jar = "maven_jar")
+
+maven_jar = _maven_jar
+GERRIT = _gerrit