You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mb...@apache.org on 2018/08/03 00:24:58 UTC
[commons-weaver] 02/03: code simplifications made possible with
Java 8
This is an automated email from the ASF dual-hosted git repository.
mbenson pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-weaver.git
commit 3adac28baaca2d7153a0aa83e36fd06c9ec0d2ab
Author: Matt Benson <mb...@apache.org>
AuthorDate: Thu Aug 2 19:24:17 2018 -0500
code simplifications made possible with Java 8
---
.../apache/commons/weaver/model/WeavableClass.java | 27 ++++++----------------
1 file changed, 7 insertions(+), 20 deletions(-)
diff --git a/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java b/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java
index 9d78a7a..308b23d 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java
@@ -22,6 +22,7 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Collections;
+import java.util.Comparator;
import java.util.concurrent.ConcurrentNavigableMap;
import java.util.concurrent.ConcurrentSkipListMap;
@@ -33,6 +34,8 @@ import org.apache.commons.weaver.utils.Args;
* @param <T> type
*/
public class WeavableClass<T> extends NestedWeavable<WeavableClass<T>, Class<T>, WeavablePackage, Package> {
+ private static final Comparator<Class<?>> CLASS_COMPARATOR = Comparator.comparing(Class::getName);
+
private final ConcurrentNavigableMap<String, WeavableField<T>> fields = new ConcurrentSkipListMap<>();
private final ConcurrentNavigableMap<Constructor<T>, WeavableConstructor<T>> ctors = new ConcurrentSkipListMap<>(
@@ -59,13 +62,7 @@ public class WeavableClass<T> extends NestedWeavable<WeavableClass<T>, Class<T>,
* @return {@link WeavableField}
*/
public WeavableField<T> getWeavable(final Field fld) {
- final String key = fld.getName();
- if (fields.containsKey(key)) {
- return fields.get(key);
- }
- final WeavableField<T> result = new WeavableField<>(fld, this);
- final WeavableField<T> faster = fields.putIfAbsent(key, result);
- return faster == null ? result : faster;
+ return fields.computeIfAbsent(fld.getName(), k -> new WeavableField<>(fld, this));
}
/**
@@ -74,12 +71,7 @@ public class WeavableClass<T> extends NestedWeavable<WeavableClass<T>, Class<T>,
* @return {@link WeavableMethod}
*/
public WeavableMethod<T> getWeavable(final Method methd) {
- if (methods.containsKey(methd)) {
- return methods.get(methd);
- }
- final WeavableMethod<T> result = new WeavableMethod<>(methd, this);
- final WeavableMethod<T> faster = methods.putIfAbsent(methd, result);
- return faster == null ? result : faster;
+ return methods.computeIfAbsent(methd, k -> new WeavableMethod<>(methd, this));
}
/**
@@ -88,12 +80,7 @@ public class WeavableClass<T> extends NestedWeavable<WeavableClass<T>, Class<T>,
* @return {@link WeavableConstructor}
*/
public WeavableConstructor<T> getWeavable(final Constructor<T> ctor) {
- if (ctors.containsKey(ctor)) {
- return ctors.get(ctor);
- }
- final WeavableConstructor<T> result = new WeavableConstructor<>(ctor, this);
- final WeavableConstructor<T> faster = ctors.putIfAbsent(ctor, result);
- return faster == null ? result : faster;
+ return ctors.computeIfAbsent(ctor, k -> new WeavableConstructor<>(ctor, this));
}
/**
@@ -125,6 +112,6 @@ public class WeavableClass<T> extends NestedWeavable<WeavableClass<T>, Class<T>,
*/
@Override
protected int localCompareTo(final WeavableClass<T> obj) {
- return getTarget().getName().compareTo(obj.getTarget().getName());
+ return obj == null ? 1 : CLASS_COMPARATOR.compare(getTarget(), obj.getTarget());
}
}