Apply "type inference for generic instance creation" Java 7 feature

Change-Id: Ia14802c903ca67b9d94dc6038d70b0e9644bc621
This commit is contained in:
David Ostrovsky
2014-04-26 15:27:57 +02:00
parent 40a179b8ca
commit e73ae61339
224 changed files with 557 additions and 633 deletions

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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) {

View File

@@ -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());

View File

@@ -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) {

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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. */

View File

@@ -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>