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

[isis] 03/05: ISIS-1846 consolidate utilities

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 c4077602032d5a77835b43165826cfc651c4de44
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 22 12:29:51 2018 +0100

    ISIS-1846 consolidate utilities
---
 .../org/apache/isis/applib/ModuleAbstract.java     |  4 +-
 .../apache/isis/applib/internal/base/$Casts.java   | 14 +++++-
 .../isis/applib/internal/base/$NullSafe.java}      | 56 ++++++++++++++++------
 .../apache/isis/applib/internal/base/$Streams.java | 44 -----------------
 .../apache/isis/applib/internal/base/$Strings.java | 14 +++++-
 .../isis/applib/services/jaxb/JaxbService.java     |  4 +-
 ...ctionInvocationFacetForDomainEventAbstract.java | 15 +++---
 ...cetInvertedByNullableAnnotationOnParameter.java |  4 +-
 8 files changed, 80 insertions(+), 75 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/ModuleAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/ModuleAbstract.java
index 889d5ca..133ded1 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/ModuleAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/ModuleAbstract.java
@@ -27,7 +27,7 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.isis.applib.fixturescripts.FixtureScript;
-import org.apache.isis.applib.internal.base.$Streams;
+import org.apache.isis.applib.internal.base.$NullSafe;
 
 import com.google.common.collect.Sets;
 
@@ -52,7 +52,7 @@ public abstract class ModuleAbstract
     @XmlElement(name = "module", required = true)
     private Set<ModuleAbstract> getModuleDependencies() {
 
-    	return $Streams.stream(getDependencies())
+    	return $NullSafe.stream(getDependencies())
     	.filter(module->module instanceof ModuleAbstract)
     	.map(module->(ModuleAbstract) module)
     	.collect(Collectors.toSet());
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Casts.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Casts.java
index 2f257bd..7e9adf8 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Casts.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Casts.java
@@ -19,8 +19,20 @@
 
 package org.apache.isis.applib.internal.base;
 
-public class $Casts {
+/**
+ * <h1>- internal use only -</h1>
+ * <p>
+ * Casting Utilities
+ * <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.
+ * 
+ * @since 2.0.0
+ */
+public final class $Casts {
 
+	private $Casts(){}
+	
 	@SuppressWarnings("unchecked")
 	public static <T> T uncheckedCast(Object obj) {
 		return (T) obj;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/NullSafe.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$NullSafe.java
similarity index 71%
rename from core/metamodel/src/main/java/org/apache/isis/core/commons/lang/NullSafe.java
rename to core/applib/src/main/java/org/apache/isis/applib/internal/base/$NullSafe.java
index c86063e..dae3354 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/NullSafe.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$NullSafe.java
@@ -16,47 +16,73 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.isis.core.commons.lang;
+package org.apache.isis.applib.internal.base;
 
 import java.util.Collection;
 import java.util.Comparator;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
 
 /**
- * 
- * Provides convenient null check / null safe methods primarily 
+ * <h1>- internal use only -</h1>
+ * <p>
+ *  Provides convenient null check / null safe methods primarily 
  * to shortcut null-check idioms.
+ * <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.
  * 
- * @author ahuber@apache.org
  * @since 2.0.0
  *
  */
-public class NullSafe {
 
-	// -- STREAM CREATION
+public final class $NullSafe {
+	
+	private $NullSafe(){}
 
+	// -- STREAM CREATION
+	
 	/**
-	 * Shortcut for {@code Optional.ofNullable(array).map(Stream::of)}
+	 * If {@code array} is {@code array} returns the empty stream, 
+	 * otherwise returns a stream of the array's elements.
 	 * @param array
-	 * @return a sequential ordered stream whose elements are the elements of 
-	 * the specified {@code array}, or the empty stream if array is {@code null}.
+	 * @return
 	 */
-	public static <T> Stream<T> stream(T[] array) {
+	public static <T> Stream<T> stream(final T[] array) {
 		return array!=null ? Stream.of(array) : Stream.empty();
 	}
 
 	/**
-	 * Shortcut for {@code Optional.ofNullable(coll).map(Stream::of)}
-	 * @param coll
-	 * @return a sequential ordered stream whose elements are the elements of 
-	 * the specified {@code coll}, or the empty stream if coll is {@code null}.
+	 * If {@code collection} is {@code null} returns the empty stream, 
+	 * otherwise returns a stream of the collection's elements.
+	 * @param collection
+	 * @return
 	 */
-	public static <T> Stream<T> stream(Collection<T> coll){
+	public static <T> Stream<T> stream(final Collection<T> coll){
 		return coll!=null ? coll.stream() : Stream.empty();
 	}
 	
+	/**
+	 * If {@code iterator} is {@code null} returns the empty stream, 
+	 * otherwise returns a stream of the iterator's elements.
+	 * @param collection
+	 * @return
+	 */
+	public static <T> Stream<T> stream(final Iterator<T> iterator){
+		return iterator!=null 
+				? StreamSupport.stream(toIterable(iterator).spliterator(), false) //not parallel 
+				: Stream.empty();
+	}
+	
+	// [ahuber] not public, since one time use only!
+	private static <T> Iterable<T> toIterable(final Iterator<T> iterator){
+		return ()->iterator;
+	}
+
+	
 	// -- ABSENCE/PRESENCE PREDICATES
 	
 	/**
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Streams.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Streams.java
deleted file mode 100644
index e618875..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Streams.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.applib.internal.base;
-
-import java.util.Collection;
-import java.util.stream.Stream;
-
-import javax.annotation.Nullable;
-
-/**
- * 
- * Stream building utilities.
- *
- */
-public class $Streams {
-
-	/**
-	 * If {@code collection} is {@code null} returns the empty stream, 
-	 * otherwise returns a stream of the collection's elements.
-	 * @param collection
-	 * @return
-	 */
-	public static <T> Stream<T> stream(@Nullable Collection<T> collection) {
-		return collection != null ? collection.stream() : Stream.empty();
-	}
-
-}
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 266b010..87cabc5 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
@@ -19,6 +19,18 @@
 
 package org.apache.isis.applib.internal.base;
 
-public class $Strings {
+/**
+ * <h1>- internal use only -</h1>
+ * <p>
+ * Provides String related algorithms.
+ * <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.
+ * 
+ * @since 2.0.0
+ */
+public final class $Strings {
 
+	private $Strings() {}
+	
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
index 1bf0e6f..651f069 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
@@ -33,8 +33,8 @@ import org.apache.isis.applib.ApplicationException;
 import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.internal.base.$Streams;
 import org.apache.isis.applib.internal.base.$Casts;
+import org.apache.isis.applib.internal.base.$NullSafe;
 import org.apache.isis.applib.services.dto.Dto_downloadXsd;
 
 import com.google.common.collect.Maps;
@@ -181,7 +181,7 @@ public interface JaxbService {
                         errors = $Casts.uncheckedCast(getErrorsMethod.invoke(ex));
                         
                         annotationExceptionMessages = ": " + 
-                        $Streams.stream(errors)
+                        $NullSafe.stream(errors)
                         .map(Exception::getMessage)
                         .collect(Collectors.joining("; "));
                         
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index ea24599..f9509aa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -28,14 +28,9 @@ import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Callable;
 
-import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.RecoverableException;
+import org.apache.isis.applib.internal.base.$Casts;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.services.clock.ClockService;
@@ -51,7 +46,6 @@ import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.applib.services.xactn.TransactionState;
-import org.apache.isis.applib.util.Casts;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -83,6 +77,11 @@ import org.apache.isis.core.metamodel.specloader.ReflectiveActionException;
 import org.apache.isis.core.metamodel.specloader.specimpl.MixedInMember2;
 import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
 import org.apache.isis.schema.ixn.v1.ActionInvocationDto;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Strings;
+import com.google.common.collect.Lists;
 
 public abstract class ActionInvocationFacetForDomainEventAbstract
         extends ActionInvocationFacetAbstract
@@ -312,7 +311,7 @@ public abstract class ActionInvocationFacetForDomainEventAbstract
 
             // handle any exceptions
             final Interaction.Execution<ActionInvocationDto, ?> priorExecution = 
-            		Casts.uncheckedCast(interaction.getPriorExecution());
+            		$Casts.uncheckedCast(interaction.getPriorExecution());
 
             final Exception executionExceptionIfAny = priorExecution.getThrew();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetInvertedByNullableAnnotationOnParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetInvertedByNullableAnnotationOnParameter.java
index a493be5..7081870 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetInvertedByNullableAnnotationOnParameter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetInvertedByNullableAnnotationOnParameter.java
@@ -23,7 +23,7 @@ import java.util.List;
 
 import javax.annotation.Nullable;
 
-import org.apache.isis.core.commons.lang.NullSafe;
+import org.apache.isis.applib.internal.base.$NullSafe;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFace
 public class MandatoryFacetInvertedByNullableAnnotationOnParameter extends MandatoryFacetAbstract {
 
     public static MandatoryFacet create(final List<Nullable> annotation, final Class<?> parameterType, final FacetedMethodParameter holder) {
-        if(NullSafe.isEmpty(annotation)) {
+        if($NullSafe.isEmpty(annotation)) {
             return null;
         }
         if(parameterType.isPrimitive()) {

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