You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/01/22 14:41:54 UTC

[isis] 05/05: ISIS-1846 deprecate StringPredicates and StringFunctions, refactoring any references to use the new $String utility class

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 44af17ed727c1c1f66a7328c4b26f9cec1171680
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 22 15:38:32 2018 +0100

    ISIS-1846 deprecate StringPredicates and StringFunctions, refactoring
    any references to use the new $String utility class
---
 .../apache/isis/applib/internal/base/$Strings.java | 21 ++++++++++++++++-
 .../isis/core/commons/lang/StringFunctions.java    |  7 +++++-
 .../isis/core/commons/lang/StringPredicates.java   |  7 +++++-
 .../MemberGroupLayoutFacetProperties.java          | 25 +++++++++++----------
 .../core/metamodel/spec/feature/ObjectAction.java  | 26 ++++++++++++++--------
 5 files changed, 62 insertions(+), 24 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java
index 9b92ff2..990319d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java
@@ -31,6 +31,9 @@ import javax.annotation.Nullable;
  * <p>
  * Provides String related algorithms.
  * <p>
+ * Keep the public methods simple, these are basic building blocks for more complex composites.
+ * Composites are provided as static fields. 
+ * <p>
  * WARNING: Do <b>NOT</b> use any of the classes provided by this package! <br/> 
  * Public access will be removed once we migrate to Java 9+ modules.
  * 
@@ -40,6 +43,10 @@ public final class $Strings {
 
 	private $Strings() {}
 	
+	// -- BASICS
+	
+	public static String[] emptyArray = new String[0];
+	
 	// -- BASIC PREDICATES
 	
 	/**
@@ -75,7 +82,7 @@ public final class $Strings {
 	}
 	
     /**
-     * Converts all of the characters in this String to lower case using the rules of the default locale. 
+     * Converts all of the characters in {@code input} to lower case using the rules of the default locale. 
      * @param input
      * @return null if {@code input} is null
      */
@@ -85,6 +92,18 @@ public final class $Strings {
     	}
         return input.toLowerCase();
     }
+    
+    /**
+     * Converts all of the characters in {@code input} to upper case using the rules of the default locale. 
+     * @param input
+     * @return null if {@code input} is null
+     */
+    public static String upper(@Nullable final String input) {
+    	if(input==null) {
+    		return null;
+    	}
+        return input.toUpperCase();
+    }
 	
 	// -- SPLITTING
 	
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringFunctions.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringFunctions.java
index 6fde377..644eca2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringFunctions.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringFunctions.java
@@ -21,7 +21,12 @@ package org.apache.isis.core.commons.lang;
 
 import com.google.common.base.Function;
 
-public final class StringFunctions {
+/**
+ * 
+ * @deprecated [ahuber] use $String::upper and $String::lower instead
+ */
+@Deprecated
+final class StringFunctions {
     
     public static final Function<String,String> TRIM = new Function<String,String>(){
         @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringPredicates.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringPredicates.java
index 349cf22..ce7a455 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringPredicates.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringPredicates.java
@@ -21,7 +21,12 @@ package org.apache.isis.core.commons.lang;
 
 import com.google.common.base.Predicate;
 
-public final class StringPredicates {
+/**
+ * 
+ * @deprecated [ahuber] use $String::isNotEmpty instead
+ */
+@Deprecated
+final class StringPredicates {
     
     public static final Predicate<String> NOT_EMPTY = new Predicate<String>() {
         @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/membergroups/annotprop/MemberGroupLayoutFacetProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/membergroups/annotprop/MemberGroupLayoutFacetProperties.java
index 8105410..a2bcd45 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/membergroups/annotprop/MemberGroupLayoutFacetProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/membergroups/annotprop/MemberGroupLayoutFacetProperties.java
@@ -19,14 +19,12 @@
 
 package org.apache.isis.core.metamodel.facets.object.membergroups.annotprop;
 
+import java.util.ArrayList;
 import java.util.Properties;
-
-import com.google.common.base.Splitter;
-import com.google.common.collect.Iterables;
+import java.util.stream.Collectors;
 
 import org.apache.isis.applib.annotation.MemberGroupLayout.ColumnSpans;
-import org.apache.isis.core.commons.lang.StringFunctions;
-import org.apache.isis.core.commons.lang.StringPredicates;
+import org.apache.isis.applib.internal.base.$Strings;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacetAbstract;
 
@@ -58,13 +56,16 @@ public class MemberGroupLayoutFacetProperties extends MemberGroupLayoutFacetAbst
     static String[] asGroupList(Properties properties, final String key) {
         final String property = properties.getProperty(key);
         if(property == null) {
-            return new String[0];
+            return $Strings.emptyArray;
         }
-        final Iterable<String> split = Splitter.on(',').split(property);
-        return Iterables.toArray(
-                    Iterables.filter(
-                        Iterables.transform(split,StringFunctions.TRIM), 
-                        StringPredicates.NOT_EMPTY), 
-                    String.class);
+
+        return 
+        $Strings.splitThenStream(property, ",")
+        .map($Strings::trim)
+        .filter($Strings::isNotEmpty)
+        .collect(Collectors.toCollection(ArrayList::new)) // array list for fast to-array conversion
+        .toArray($Strings.emptyArray);
+        
+
     }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
index c225cf8..d46fcad 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
@@ -20,10 +20,7 @@ package org.apache.isis.core.metamodel.spec.feature;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
-
-import com.google.common.base.Predicate;
-import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
+import java.util.stream.Collectors;
 
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.ActionLayout;
@@ -31,9 +28,10 @@ import org.apache.isis.applib.annotation.InvokeOn;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.internal.base.$NullSafe;
+import org.apache.isis.applib.internal.base.$Strings;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.Clob;
-import org.apache.isis.core.commons.lang.StringFunctions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
@@ -52,6 +50,10 @@ import org.apache.isis.core.metamodel.layout.memberorderfacet.MemberOrderFacetCo
 import org.apache.isis.core.metamodel.spec.ActionType;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
+import com.google.common.base.Predicate;
+import com.google.common.base.Strings;
+import com.google.common.collect.Lists;
+
 public interface ObjectAction extends ObjectMember {
 
     //region > getSemantics, getOnType
@@ -477,10 +479,16 @@ public interface ObjectAction extends ObjectMember {
         public static Predicate<ObjectAction> memberOrderNotAssociationOf(final ObjectSpecification adapterSpec) {
 
             final List<ObjectAssociation> associations = adapterSpec.getAssociations(Contributed.INCLUDED);
-            final List<String> associationNames = Lists.transform(associations,
-                    com.google.common.base.Functions.compose(StringFunctions.toLowerCase(), ObjectAssociation.Functions.toName()));
-            final List<String> associationIds = Lists.transform(associations,
-                    com.google.common.base.Functions.compose(StringFunctions.toLowerCase(), ObjectAssociation.Functions.toId()));
+            
+            final List<String> associationNames = $NullSafe.stream(associations)
+            		.map(ObjectAssociation::getName)
+            		.map($Strings::lower)
+            		.collect(Collectors.toList());
+            		
+            final List<String> associationIds = $NullSafe.stream(associations) 
+            		.map(ObjectAssociation::getId)
+            		.map($Strings::lower)
+            		.collect(Collectors.toList());
 
             return new Predicate<ObjectAction>() {
 

-- 
To stop receiving notification emails like this one, please contact
ahuber@apache.org.