Convert interface DynamicMap.Entry to concrete class
This makes the code a little simpler. Unfortunately we can't use
AutoValue in the extensions package.
Change-Id: I542311db18484e8a5e5013034d43e63738cfe17e
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/java/com/google/gerrit/extensions/registration/DynamicMap.java b/java/com/google/gerrit/extensions/registration/DynamicMap.java
index 0bf6edd..96d19b2 100644
--- a/java/com/google/gerrit/extensions/registration/DynamicMap.java
+++ b/java/com/google/gerrit/extensions/registration/DynamicMap.java
@@ -41,12 +41,26 @@
* singleton and non-singleton members.
*/
public abstract class DynamicMap<T> implements Iterable<DynamicMap.Entry<T>> {
- public interface Entry<T> {
- String getPluginName();
+ public static class Entry<T> {
+ private final NamePair namePair;
+ private final Provider<T> provider;
- String getExportName();
+ private Entry(NamePair namePair, Provider<T> provider) {
+ this.namePair = namePair;
+ this.provider = provider;
+ }
- Provider<T> getProvider();
+ public String getPluginName() {
+ return namePair.pluginName;
+ }
+
+ public String getExportName() {
+ return namePair.exportName;
+ }
+
+ public Provider<T> getProvider() {
+ return provider;
+ }
}
/**
@@ -162,23 +176,8 @@
@Override
public Entry<T> next() {
- final Map.Entry<NamePair, Provider<T>> e = i.next();
- return new Entry<T>() {
- @Override
- public String getPluginName() {
- return e.getKey().pluginName;
- }
-
- @Override
- public String getExportName() {
- return e.getKey().exportName;
- }
-
- @Override
- public Provider<T> getProvider() {
- return e.getValue();
- }
- };
+ Map.Entry<NamePair, Provider<T>> e = i.next();
+ return new Entry<>(e.getKey(), e.getValue());
}
@Override