diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/Modules.java b/src/main/java/com/googlesource/gerrit/plugins/task/Modules.java
index 3451836..d9f98ca 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/Modules.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/Modules.java
@@ -46,7 +46,7 @@
 
       bind(ChangePluginDefinedInfoFactory.class)
           .annotatedWith(Exports.named("task"))
-          .to(TaskAttributeFactory.class);
+          .to(TaskPluginDefinedInfoFactory.class);
 
       install(new IsTrueOperator.Module());
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/TaskAttributeFactory.java b/src/main/java/com/googlesource/gerrit/plugins/task/TaskPluginDefinedInfoFactory.java
similarity index 98%
rename from src/main/java/com/googlesource/gerrit/plugins/task/TaskAttributeFactory.java
rename to src/main/java/com/googlesource/gerrit/plugins/task/TaskPluginDefinedInfoFactory.java
index ca1ae2c..2e3dfa8 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/TaskAttributeFactory.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/TaskPluginDefinedInfoFactory.java
@@ -38,7 +38,7 @@
 import java.util.Set;
 import org.eclipse.jgit.errors.ConfigInvalidException;
 
-public class TaskAttributeFactory implements ChangePluginDefinedInfoFactory {
+public class TaskPluginDefinedInfoFactory implements ChangePluginDefinedInfoFactory {
   public static final TaskPath MISSING_VIEW_PATH_CAPABILITY =
       new TaskPath(
           String.format(
@@ -111,7 +111,7 @@
   protected Statistics statistics;
 
   @Inject
-  public TaskAttributeFactory(
+  public TaskPluginDefinedInfoFactory(
       String pluginName,
       TaskTree.Factory taskTreeFactory,
       PredicateCache predicateCache,
@@ -262,7 +262,7 @@
     }
 
     protected TaskAttribute invalid() {
-      TaskAttribute invalid = TaskAttributeFactory.invalid();
+      TaskAttribute invalid = TaskPluginDefinedInfoFactory.invalid();
       if (task.isVisible) {
         invalid.name = task.name();
       }
@@ -362,7 +362,7 @@
       for (Node subNode :
           options.onlyApplicable ? node.getApplicableSubNodes() : node.getSubNodes()) {
         if (subNode instanceof Node.Invalid) {
-          subTasks.add(TaskAttributeFactory.invalid());
+          subTasks.add(TaskPluginDefinedInfoFactory.invalid());
         } else {
           new AttributeFactory(subNode).create().ifPresent(t -> subTasks.add(t));
         }
