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:59 UTC

[commons-weaver] 03/03: code simplifications made possible with Java 8; additional null-safe method override

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 74d1f65274f5c47e4b7ff554df5ad23bcd9a5992
Author: Matt Benson <mb...@apache.org>
AuthorDate: Thu Aug 2 19:24:53 2018 -0500

    code simplifications made possible with Java 8; additional null-safe method override
---
 .../commons/weaver/model/WeavablePackage.java      | 26 +++++++++++++---------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java b/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java
index e789a5f..fe324f4 100644
--- a/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java
+++ b/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java
@@ -27,7 +27,8 @@ import java.util.concurrent.ConcurrentSkipListMap;
  * {@link Weavable} {@link Package}.
  */
 public class WeavablePackage extends Weavable<WeavablePackage, Package> {
-    private static final Comparator<WeavablePackage> CMP = Comparator.nullsFirst(Comparator.comparing(WeavablePackage::getTarget, Comparator.nullsFirst(Comparator.comparing(Package::getName))));
+    private static final Comparator<WeavablePackage> CMP = Comparator.nullsFirst(Comparator
+        .comparing(WeavablePackage::getTarget, Comparator.nullsFirst(Comparator.comparing(Package::getName))));
 
     private final ConcurrentNavigableMap<String, WeavableClass<?>> clazzes = new ConcurrentSkipListMap<>();
 
@@ -45,17 +46,9 @@ public class WeavablePackage extends Weavable<WeavablePackage, Package> {
      * @param <T> generic type of {@code cls}
      * @return {@link WeavableClass}
      */
+    @SuppressWarnings("unchecked")
     public synchronized <T> WeavableClass<T> getWeavable(final Class<T> cls) {
-        final String key = cls.getName();
-        if (clazzes.containsKey(key)) {
-            @SuppressWarnings("unchecked")
-            final WeavableClass<T> result = (WeavableClass<T>) clazzes.get(key);
-            return result;
-        }
-        final WeavableClass<T> result = new WeavableClass<>(cls, this);
-        @SuppressWarnings("unchecked")
-        final WeavableClass<T> faster = (WeavableClass<T>) clazzes.putIfAbsent(key, result);
-        return faster == null ? result : faster;
+        return (WeavableClass<T>) clazzes.computeIfAbsent(cls.getName(), k -> new WeavableClass<>(cls, this));
     }
 
     /**
@@ -75,4 +68,15 @@ public class WeavablePackage extends Weavable<WeavablePackage, Package> {
     public int compareTo(final WeavablePackage arg0) {
         return CMP.compare(this, arg0);
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String toString() {
+        if (getTarget() == null) {
+            return "Weavable default package";
+        }
+        return super.toString();
+    }
 }