Apply "type inference for generic instance creation" Java 7 feature
Change-Id: Ia14802c903ca67b9d94dc6038d70b0e9644bc621
This commit is contained in:
@@ -97,7 +97,7 @@ public class ReviewInput {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
if (labels == null) {
|
||||
labels = new LinkedHashMap<String, Short>(4);
|
||||
labels = new LinkedHashMap<>(4);
|
||||
}
|
||||
labels.put(name, value);
|
||||
return this;
|
||||
|
||||
@@ -78,7 +78,7 @@ public class DynamicItem<T> {
|
||||
Key<DynamicItem<T>> key = (Key<DynamicItem<T>>) Key.get(
|
||||
Types.newParameterizedType(DynamicItem.class, member.getType()));
|
||||
binder.bind(key)
|
||||
.toProvider(new DynamicItemProvider<T>(member, key))
|
||||
.toProvider(new DynamicItemProvider<>(member, key))
|
||||
.in(Scopes.SINGLETON);
|
||||
}
|
||||
|
||||
@@ -111,10 +111,10 @@ public class DynamicItem<T> {
|
||||
DynamicItem(Key<DynamicItem<T>> key, Provider<T> provider, String pluginName) {
|
||||
NamedProvider<T> in = null;
|
||||
if (provider != null) {
|
||||
in = new NamedProvider<T>(provider, pluginName);
|
||||
in = new NamedProvider<>(provider, pluginName);
|
||||
}
|
||||
this.key = key;
|
||||
this.ref = new AtomicReference<NamedProvider<T>>(in);
|
||||
this.ref = new AtomicReference<>(in);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -148,7 +148,7 @@ public class DynamicItem<T> {
|
||||
* @return handle to remove the item at a later point in time.
|
||||
*/
|
||||
public RegistrationHandle set(Provider<T> impl, String pluginName) {
|
||||
final NamedProvider<T> item = new NamedProvider<T>(impl, pluginName);
|
||||
final NamedProvider<T> item = new NamedProvider<>(impl, pluginName);
|
||||
NamedProvider<T> old = null;
|
||||
while (!ref.compareAndSet(old, item)) {
|
||||
old = ref.get();
|
||||
@@ -180,7 +180,7 @@ public class DynamicItem<T> {
|
||||
*/
|
||||
public ReloadableRegistrationHandle<T> set(Key<T> key, Provider<T> impl,
|
||||
String pluginName) {
|
||||
final NamedProvider<T> item = new NamedProvider<T>(impl, pluginName);
|
||||
final NamedProvider<T> item = new NamedProvider<>(impl, pluginName);
|
||||
NamedProvider<T> old = null;
|
||||
while (!ref.compareAndSet(old, item)) {
|
||||
old = ref.get();
|
||||
@@ -216,7 +216,7 @@ public class DynamicItem<T> {
|
||||
|
||||
@Override
|
||||
public ReloadableHandle replace(Key<T> newKey, Provider<T> newItem) {
|
||||
NamedProvider<T> n = new NamedProvider<T>(newItem, item.pluginName);
|
||||
NamedProvider<T> n = new NamedProvider<>(newItem, item.pluginName);
|
||||
if (ref.compareAndSet(item, n)) {
|
||||
return new ReloadableHandle(newKey, n, defaultItem);
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ class DynamicItemProvider<T> implements Provider<DynamicItem<T>> {
|
||||
}
|
||||
|
||||
public DynamicItem<T> get() {
|
||||
return new DynamicItem<T>(key, find(injector, type), "gerrit");
|
||||
return new DynamicItem<>(key, find(injector, type), "gerrit");
|
||||
}
|
||||
|
||||
private static <T> Provider<T> find(Injector src, TypeLiteral<T> type) {
|
||||
|
||||
@@ -81,14 +81,14 @@ public abstract class DynamicMap<T> implements Iterable<DynamicMap.Entry<T>> {
|
||||
Key<DynamicMap<T>> key = (Key<DynamicMap<T>>) Key.get(
|
||||
Types.newParameterizedType(DynamicMap.class, member.getType()));
|
||||
binder.bind(key)
|
||||
.toProvider(new DynamicMapProvider<T>(member))
|
||||
.toProvider(new DynamicMapProvider<>(member))
|
||||
.in(Scopes.SINGLETON);
|
||||
}
|
||||
|
||||
final ConcurrentMap<NamePair, Provider<T>> items;
|
||||
|
||||
DynamicMap() {
|
||||
items = new ConcurrentHashMap<NamePair, Provider<T>>(
|
||||
items = new ConcurrentHashMap<>(
|
||||
16 /* initial size */,
|
||||
0.75f /* load factor */,
|
||||
1 /* concurrency level of 1, load/unload is single threaded */);
|
||||
@@ -115,7 +115,7 @@ public abstract class DynamicMap<T> implements Iterable<DynamicMap.Entry<T>> {
|
||||
* @return sorted set of active plugins that supply at least one item.
|
||||
*/
|
||||
public SortedSet<String> plugins() {
|
||||
SortedSet<String> r = new TreeSet<String>();
|
||||
SortedSet<String> r = new TreeSet<>();
|
||||
for (NamePair p : items.keySet()) {
|
||||
r.add(p.pluginName);
|
||||
}
|
||||
@@ -129,7 +129,7 @@ public abstract class DynamicMap<T> implements Iterable<DynamicMap.Entry<T>> {
|
||||
* @return items exported by a plugin, keyed by the export name.
|
||||
*/
|
||||
public SortedMap<String, Provider<T>> byPlugin(String pluginName) {
|
||||
SortedMap<String, Provider<T>> r = new TreeMap<String, Provider<T>>();
|
||||
SortedMap<String, Provider<T>> r = new TreeMap<>();
|
||||
for (Map.Entry<NamePair, Provider<T>> e : items.entrySet()) {
|
||||
if (e.getKey().pluginName.equals(pluginName)) {
|
||||
r.put(e.getKey().exportName, e.getValue());
|
||||
|
||||
@@ -34,7 +34,7 @@ class DynamicMapProvider<T> implements Provider<DynamicMap<T>> {
|
||||
|
||||
public DynamicMap<T> get() {
|
||||
PrivateInternals_DynamicMapImpl<T> m =
|
||||
new PrivateInternals_DynamicMapImpl<T>();
|
||||
new PrivateInternals_DynamicMapImpl<>();
|
||||
List<Binding<T>> bindings = injector.findBindingsByType(type);
|
||||
if (bindings != null) {
|
||||
for (Binding<T> b : bindings) {
|
||||
|
||||
@@ -72,7 +72,7 @@ public class DynamicSet<T> implements Iterable<T> {
|
||||
Key<DynamicSet<T>> key = (Key<DynamicSet<T>>) Key.get(
|
||||
Types.newParameterizedType(DynamicSet.class, member.getType()));
|
||||
binder.bind(key)
|
||||
.toProvider(new DynamicSetProvider<T>(member))
|
||||
.toProvider(new DynamicSetProvider<>(member))
|
||||
.in(Scopes.SINGLETON);
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ public class DynamicSet<T> implements Iterable<T> {
|
||||
private final CopyOnWriteArrayList<AtomicReference<Provider<T>>> items;
|
||||
|
||||
DynamicSet(Collection<AtomicReference<Provider<T>>> base) {
|
||||
items = new CopyOnWriteArrayList<AtomicReference<Provider<T>>>(base);
|
||||
items = new CopyOnWriteArrayList<>(base);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -194,8 +194,7 @@ public class DynamicSet<T> implements Iterable<T> {
|
||||
* @return handle to remove the item at a later point in time.
|
||||
*/
|
||||
public RegistrationHandle add(final Provider<T> item) {
|
||||
final AtomicReference<Provider<T>> ref =
|
||||
new AtomicReference<Provider<T>>(item);
|
||||
final AtomicReference<Provider<T>> ref = new AtomicReference<>(item);
|
||||
items.add(ref);
|
||||
return new RegistrationHandle() {
|
||||
@Override
|
||||
@@ -218,7 +217,7 @@ public class DynamicSet<T> implements Iterable<T> {
|
||||
* without it ever leaving the collection.
|
||||
*/
|
||||
public ReloadableRegistrationHandle<T> add(Key<T> key, Provider<T> item) {
|
||||
AtomicReference<Provider<T>> ref = new AtomicReference<Provider<T>>(item);
|
||||
AtomicReference<Provider<T>> ref = new AtomicReference<>(item);
|
||||
items.add(ref);
|
||||
return new ReloadableHandle(ref, key, item);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ class DynamicSetProvider<T> implements Provider<DynamicSet<T>> {
|
||||
}
|
||||
|
||||
public DynamicSet<T> get() {
|
||||
return new DynamicSet<T>(find(injector, type));
|
||||
return new DynamicSet<>(find(injector, type));
|
||||
}
|
||||
|
||||
private static <T> List<AtomicReference<Provider<T>>> find(
|
||||
@@ -47,16 +47,12 @@ class DynamicSetProvider<T> implements Provider<DynamicSet<T>> {
|
||||
if (cnt == 0) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<AtomicReference<Provider<T>>> r = newList(cnt);
|
||||
List<AtomicReference<Provider<T>>> r = new ArrayList<>(cnt);
|
||||
for (Binding<T> b : bindings) {
|
||||
if (b.getKey().getAnnotation() != null) {
|
||||
r.add(new AtomicReference<Provider<T>>(b.getProvider()));
|
||||
r.add(new AtomicReference<>(b.getProvider()));
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
private static <T> List<AtomicReference<Provider<T>>> newList(int cnt) {
|
||||
return new ArrayList<AtomicReference<Provider<T>>>(cnt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ import java.util.Map;
|
||||
/** <b>DO NOT USE</b> */
|
||||
public class PrivateInternals_DynamicTypes {
|
||||
public static Map<TypeLiteral<?>, DynamicItem<?>> dynamicItemsOf(Injector src) {
|
||||
Map<TypeLiteral<?>, DynamicItem<?>> m = newHashMap();
|
||||
Map<TypeLiteral<?>, DynamicItem<?>> m = new HashMap<>();
|
||||
for (Map.Entry<Key<?>, Binding<?>> e : src.getBindings().entrySet()) {
|
||||
TypeLiteral<?> type = e.getKey().getTypeLiteral();
|
||||
if (type.getRawType() == DynamicItem.class) {
|
||||
@@ -47,7 +47,7 @@ public class PrivateInternals_DynamicTypes {
|
||||
}
|
||||
|
||||
public static Map<TypeLiteral<?>, DynamicSet<?>> dynamicSetsOf(Injector src) {
|
||||
Map<TypeLiteral<?>, DynamicSet<?>> m = newHashMap();
|
||||
Map<TypeLiteral<?>, DynamicSet<?>> m = new HashMap<>();
|
||||
for (Map.Entry<Key<?>, Binding<?>> e : src.getBindings().entrySet()) {
|
||||
TypeLiteral<?> type = e.getKey().getTypeLiteral();
|
||||
if (type.getRawType() == DynamicSet.class) {
|
||||
@@ -63,7 +63,7 @@ public class PrivateInternals_DynamicTypes {
|
||||
}
|
||||
|
||||
public static Map<TypeLiteral<?>, DynamicMap<?>> dynamicMapsOf(Injector src) {
|
||||
Map<TypeLiteral<?>, DynamicMap<?>> m = newHashMap();
|
||||
Map<TypeLiteral<?>, DynamicMap<?>> m = new HashMap<>();
|
||||
for (Map.Entry<Key<?>, Binding<?>> e : src.getBindings().entrySet()) {
|
||||
TypeLiteral<?> type = e.getKey().getTypeLiteral();
|
||||
if (type.getRawType() == DynamicMap.class) {
|
||||
@@ -85,7 +85,7 @@ public class PrivateInternals_DynamicTypes {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<RegistrationHandle> handles = new ArrayList<RegistrationHandle>(4);
|
||||
List<RegistrationHandle> handles = new ArrayList<>(4);
|
||||
try {
|
||||
for (Map.Entry<TypeLiteral<?>, DynamicItem<?>> e : items.entrySet()) {
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -115,7 +115,7 @@ public class PrivateInternals_DynamicTypes {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<RegistrationHandle> handles = new ArrayList<RegistrationHandle>(4);
|
||||
List<RegistrationHandle> handles = new ArrayList<>(4);
|
||||
try {
|
||||
for (Map.Entry<TypeLiteral<?>, DynamicSet<?>> e : sets.entrySet()) {
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -148,7 +148,7 @@ public class PrivateInternals_DynamicTypes {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<RegistrationHandle> handles = new ArrayList<RegistrationHandle>(4);
|
||||
List<RegistrationHandle> handles = new ArrayList<>(4);
|
||||
try {
|
||||
for (Map.Entry<TypeLiteral<?>, DynamicMap<?>> e : maps.entrySet()) {
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -183,7 +183,7 @@ public class PrivateInternals_DynamicTypes {
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
handles = new ArrayList<RegistrationHandle>(4);
|
||||
handles = new ArrayList<>(4);
|
||||
Injector parent = self.getParent();
|
||||
while (parent != null) {
|
||||
handles.addAll(attachSets(self, dynamicSetsOf(parent)));
|
||||
@@ -211,10 +211,6 @@ public class PrivateInternals_DynamicTypes {
|
||||
}
|
||||
}
|
||||
|
||||
private static <K,V> Map<K, V> newHashMap() {
|
||||
return new HashMap<K,V>();
|
||||
}
|
||||
|
||||
private static <T> List<Binding<T>> bindings(Injector src, TypeLiteral<T> type) {
|
||||
return src.findBindingsByType(type);
|
||||
}
|
||||
|
||||
@@ -21,12 +21,12 @@ public abstract class Response<T> {
|
||||
|
||||
/** HTTP 200 OK: pointless wrapper for type safety. */
|
||||
public static <T> Response<T> ok(T value) {
|
||||
return new Impl<T>(200, value);
|
||||
return new Impl<>(200, value);
|
||||
}
|
||||
|
||||
/** HTTP 201 Created: typically used when a new resource is made. */
|
||||
public static <T> Response<T> created(T value) {
|
||||
return new Impl<T>(201, value);
|
||||
return new Impl<>(201, value);
|
||||
}
|
||||
|
||||
/** HTTP 204 No Content: typically used when the resource is deleted. */
|
||||
|
||||
@@ -31,47 +31,47 @@ public abstract class RestApiModule extends AbstractModule {
|
||||
|
||||
protected <R extends RestResource>
|
||||
ReadViewBinder<R> get(TypeLiteral<RestView<R>> viewType) {
|
||||
return new ReadViewBinder<R>(view(viewType, GET, "/"));
|
||||
return new ReadViewBinder<>(view(viewType, GET, "/"));
|
||||
}
|
||||
|
||||
protected <R extends RestResource>
|
||||
ModifyViewBinder<R> put(TypeLiteral<RestView<R>> viewType) {
|
||||
return new ModifyViewBinder<R>(view(viewType, PUT, "/"));
|
||||
return new ModifyViewBinder<>(view(viewType, PUT, "/"));
|
||||
}
|
||||
|
||||
protected <R extends RestResource>
|
||||
ModifyViewBinder<R> post(TypeLiteral<RestView<R>> viewType) {
|
||||
return new ModifyViewBinder<R>(view(viewType, POST, "/"));
|
||||
return new ModifyViewBinder<>(view(viewType, POST, "/"));
|
||||
}
|
||||
|
||||
protected <R extends RestResource>
|
||||
ModifyViewBinder<R> delete(TypeLiteral<RestView<R>> viewType) {
|
||||
return new ModifyViewBinder<R>(view(viewType, DELETE, "/"));
|
||||
return new ModifyViewBinder<>(view(viewType, DELETE, "/"));
|
||||
}
|
||||
|
||||
protected <R extends RestResource>
|
||||
ReadViewBinder<R> get(TypeLiteral<RestView<R>> viewType, String name) {
|
||||
return new ReadViewBinder<R>(view(viewType, GET, name));
|
||||
return new ReadViewBinder<>(view(viewType, GET, name));
|
||||
}
|
||||
|
||||
protected <R extends RestResource>
|
||||
ModifyViewBinder<R> put(TypeLiteral<RestView<R>> viewType, String name) {
|
||||
return new ModifyViewBinder<R>(view(viewType, PUT, name));
|
||||
return new ModifyViewBinder<>(view(viewType, PUT, name));
|
||||
}
|
||||
|
||||
protected <R extends RestResource>
|
||||
ModifyViewBinder<R> post(TypeLiteral<RestView<R>> viewType, String name) {
|
||||
return new ModifyViewBinder<R>(view(viewType, POST, name));
|
||||
return new ModifyViewBinder<>(view(viewType, POST, name));
|
||||
}
|
||||
|
||||
protected <R extends RestResource>
|
||||
ModifyViewBinder<R> delete(TypeLiteral<RestView<R>> viewType, String name) {
|
||||
return new ModifyViewBinder<R>(view(viewType, DELETE, name));
|
||||
return new ModifyViewBinder<>(view(viewType, DELETE, name));
|
||||
}
|
||||
|
||||
protected <P extends RestResource>
|
||||
ChildCollectionBinder<P> child(TypeLiteral<RestView<P>> type, String name) {
|
||||
return new ChildCollectionBinder<P>(view(type, GET, name));
|
||||
return new ChildCollectionBinder<>(view(type, GET, name));
|
||||
}
|
||||
|
||||
protected <R extends RestResource>
|
||||
|
||||
Reference in New Issue
Block a user