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.