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