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/08/01 09:42:44 UTC
[isis] branch master updated: ISIS-1841: minor internal API
polishing
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 35ca99b ISIS-1841: minor internal API polishing
35ca99b is described below
commit 35ca99b8c3428d2e181396ae9ec2e4b1b227be06
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Aug 1 11:41:53 2018 +0200
ISIS-1841: minor internal API polishing
---
.../apache/isis/commons/internal/base/_Bytes.java | 2 +-
.../apache/isis/commons/internal/base/_Lazy.java | 3 +
.../isis/commons/internal/base/_Reduction.java | 5 +-
.../isis/commons/internal/base/_Strings.java | 9 ++-
.../apache/isis/commons/internal/base/_With.java | 71 ++++++++++++++++++----
.../isis/commons/internal/collections/_Arrays.java | 13 ++--
.../commons/internal/collections/_Collections.java | 5 +-
.../collections/_Collections_Collector.java | 7 ++-
.../isis/commons/internal/collections/_Lists.java | 9 +--
.../isis/commons/internal/collections/_Maps.java | 5 +-
.../commons/internal/collections/_Multimaps.java | 15 ++---
.../isis/commons/internal/collections/_Sets.java | 7 ++-
.../isis/commons/internal/context/_Context.java | 3 +-
.../isis/commons/internal/context/_Plugin.java | 10 +--
.../commons/internal/exceptions/_Exceptions.java | 6 +-
.../internal/memento/_Mementos_MementoDefault.java | 15 ++---
.../isis/commons/internal/resources/_Resource.java | 15 +++++
.../plugins/classdiscovery/ClassDiscovery.java | 15 ++++-
18 files changed, 151 insertions(+), 64 deletions(-)
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Bytes.java b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Bytes.java
index 13ab5e8..09ee3ca 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Bytes.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Bytes.java
@@ -223,7 +223,7 @@ public final class _Bytes {
// -- SPECIAL COMPOSITES
- // using naming convention asX../ofX..
+ // using naming convention asX .. encode / ofX .. decode
public final static BytesOperator asUrlBase64 = operator()
.andThen(bytes->encodeToBase64(Base64.getUrlEncoder(), bytes));
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Lazy.java b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Lazy.java
index af4eb96..f3ba221 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Lazy.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Lazy.java
@@ -49,6 +49,9 @@ public final class _Lazy<T> implements Supplier<T> {
this.supplier = requires(supplier, "supplier");
}
+ /**
+ * @return whether this lazy got initialized and holds a memoized value
+ */
public boolean isMemoized() {
return memoized;
}
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Reduction.java b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Reduction.java
index caa6396..0d9ce88 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Reduction.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Reduction.java
@@ -16,7 +16,8 @@
*/
package org.apache.isis.commons.internal.base;
-import java.util.Objects;
+import static org.apache.isis.commons.internal.base._With.requires;
+
import java.util.Optional;
import java.util.function.BinaryOperator;
import java.util.function.Consumer;
@@ -68,7 +69,7 @@ public final class _Reduction<T> implements Consumer<T> {
}
private _Reduction(@Nullable T identity, BinaryOperator<T> accumulator, boolean initialized) {
- Objects.requireNonNull(accumulator);
+ requires(accumulator, "accumulator");
this.initialized = initialized;
this.result = identity;
this.accumulator = accumulator;
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java
index eace548..273d44a 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_Strings.java
@@ -266,12 +266,15 @@ public final class _Strings {
* @throws {@link IllegalArgumentException} if {@code separator} is empty
*/
public static Stream<String> splitThenStream(@Nullable final String input, final String separator) {
- if(isEmpty(separator))
+ if(isEmpty(separator)) {
throw new IllegalArgumentException("a non empty separator is required");
- if(isEmpty(input))
+ }
+ if(isEmpty(input)) {
return Stream.of();
- if(!input.contains(separator))
+ }
+ if(!input.contains(separator)) {
return Stream.of(input);
+ }
return StreamSupport.stream(
Spliterators.spliteratorUnknownSize(splitIterator(input, separator), Spliterator.ORDERED),
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_With.java b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_With.java
index bdecef2..726e15b 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/base/_With.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/base/_With.java
@@ -205,6 +205,13 @@ public final class _With<T> {
// -- PARAMETER NON-NULL CHECK
+ /**
+ * Allows for convenient named parameter non-null-check.
+ * @param obj target for the non-null-check
+ * @param paramName to use for the exception message, when the non-null-check fails
+ * @return {@code obj!=null ? obj : throw NullPointerException}
+ * @throws NullPointerException if {@code obj} is {@code null}
+ */
public static <T> T requires(@Nullable T obj, String paramName) {
if (obj == null) {
throw new NullPointerException(String.format("Parameter '%s' is required to be non-null.", paramName));
@@ -214,28 +221,68 @@ public final class _With<T> {
// -- CONVENIENT CONSTRUCTORS
- public static <X> ArrayList<X> arrayList(Consumer<ArrayList<X>> consumer) {
- return accept(new ArrayList<>(), consumer);
+ /**
+ * Allows for single line instantiation and initialization of an Object.
+ * @param factory
+ * @param initializer
+ * @return a new Object as provided by {@code factory} after calling the {@code initializer} on it
+ */
+ public static <T> T create(Supplier<T> factory, Consumer<T> initializer) {
+ return accept(factory.get(), initializer);
+ }
+
+ /**
+ * Allows for single line instantiation and initialization of an ArrayList.
+ * @param initializer
+ * @return a new ArrayList after calling the {@code initializer} on it
+ */
+ public static <X> ArrayList<X> arrayList(Consumer<ArrayList<X>> initializer) {
+ return create(ArrayList::new, initializer);
}
- public static <X> HashSet<X> hashSet(Consumer<HashSet<X>> consumer) {
- return accept(new HashSet<>(), consumer);
+ /**
+ * Allows for single line instantiation and initialization of a HashSet.
+ * @param initializer
+ * @return a new HashSet after calling the {@code initializer} on it
+ */
+ public static <X> HashSet<X> hashSet(Consumer<HashSet<X>> initializer) {
+ return create(HashSet::new, initializer);
}
- public static <X> TreeSet<X> treeSet(Consumer<TreeSet<X>> consumer) {
- return accept(new TreeSet<>(), consumer);
+ /**
+ * Allows for single line instantiation and initialization of a TreeSet.
+ * @param initializer
+ * @return a new TreeSet after calling the {@code initializer} on it
+ */
+ public static <X> TreeSet<X> treeSet(Consumer<TreeSet<X>> initializer) {
+ return create(TreeSet::new, initializer);
}
- public static <K, V> HashMap<K, V> hashMap(Consumer<HashMap<K, V>> consumer) {
- return accept(new HashMap<K, V>(), consumer);
+ /**
+ * Allows for single line instantiation and initialization of a HashMap.
+ * @param initializer
+ * @return a new HashMap after calling the {@code initializer} on it
+ */
+ public static <K, V> HashMap<K, V> hashMap(Consumer<HashMap<K, V>> initializer) {
+ return accept(new HashMap<K, V>(), initializer);
}
- public static <K, V> TreeMap<K, V> treeMap(Consumer<TreeMap<K, V>> consumer) {
- return accept(new TreeMap<K, V>(), consumer);
+ /**
+ * Allows for single line instantiation and initialization of a TreeMap.
+ * @param initializer
+ * @return a new TreeMap after calling the {@code initializer} on it
+ */
+ public static <K, V> TreeMap<K, V> treeMap(Consumer<TreeMap<K, V>> initializer) {
+ return accept(new TreeMap<K, V>(), initializer);
}
- public static StringBuilder stringBuilder(Consumer<StringBuilder> consumer) {
- return accept(new StringBuilder(), consumer);
+ /**
+ * Allows for single line instantiation and initialization of a StringBuilder.
+ * @param initializer
+ * @return a new StringBuilder after calling the {@code initializer} on it
+ */
+ public static StringBuilder stringBuilder(Consumer<StringBuilder> initializer) {
+ return create(StringBuilder::new, initializer);
}
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Arrays.java b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Arrays.java
index 2f1bfc2..0e508ef 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Arrays.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Arrays.java
@@ -19,9 +19,10 @@
package org.apache.isis.commons.internal.collections;
+import static org.apache.isis.commons.internal.base._With.requires;
+
import java.lang.reflect.Array;
import java.util.Collection;
-import java.util.Objects;
import java.util.stream.Collector;
import javax.annotation.Nullable;
@@ -75,7 +76,7 @@ public final class _Arrays {
* @return
*/
public static <T> Collector<T,?,T[]> toArray(final Class<T> componentType, final int length){
- Objects.requireNonNull(componentType);
+ requires(componentType, "componentType");
return new _Arrays_Collector<T>(componentType, length);
}
@@ -85,7 +86,7 @@ public final class _Arrays {
* @return
*/
public static <T> Collector<T,?,T[]> toArray(final Class<T> componentType){
- Objects.requireNonNull(componentType);
+ requires(componentType, "componentType");
return new _Arrays_CollectorUnknownSize<T>(componentType);
}
@@ -99,7 +100,7 @@ public final class _Arrays {
*/
@SafeVarargs
public static <T> T[] combine(T first, @Nullable T... rest) {
- Objects.requireNonNull(first);
+ requires(first, "first");
final int restLength = _NullSafe.size(rest);
final T[] all = _Casts.uncheckedCast(Array.newInstance(first.getClass(), restLength+1));
all[0] = first;
@@ -140,7 +141,7 @@ public final class _Arrays {
* have been copied (non-null)
*/
public static <T> T[] toArray(@Nullable final Collection<? extends T> collection, final Class<T> componentType) {
- Objects.requireNonNull(componentType);
+ requires(componentType, "componentType");
return _NullSafe.stream(collection)
.collect(toArray(componentType, collection!=null ? collection.size() : 0));
}
@@ -154,7 +155,7 @@ public final class _Arrays {
* have been copied (non-null)
*/
public static <T> T[] toArray(@Nullable final Iterable<? extends T> iterable, final Class<T> componentType) {
- Objects.requireNonNull(componentType);
+ requires(componentType, "componentType");
if(iterable!=null && (iterable instanceof Collection)) {
return toArray((Collection<? extends T>) iterable, componentType);
}
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Collections.java b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Collections.java
index 1324d11..ea42a3e 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Collections.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Collections.java
@@ -19,6 +19,8 @@
package org.apache.isis.commons.internal.collections;
+import static org.apache.isis.commons.internal.base._With.requires;
+
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
@@ -29,7 +31,6 @@ import java.util.Comparator;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Objects;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -203,7 +204,7 @@ public final class _Collections {
*/
public static <T> Collector<T, ?, ? extends Collection<T>> toUnmodifiableOfType(Class<?> typeOfCollection) {
- Objects.requireNonNull(typeOfCollection);
+ requires(typeOfCollection, "typeOfCollection");
if(SortedSet.class.equals(typeOfCollection)) {
return toUnmodifiableSortedSet();
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Collections_Collector.java b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Collections_Collector.java
index 7c81d65..9eaf4cf 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Collections_Collector.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Collections_Collector.java
@@ -19,9 +19,10 @@
package org.apache.isis.commons.internal.collections;
+import static org.apache.isis.commons.internal.base._With.requires;
+
import java.util.Collection;
import java.util.Collections;
-import java.util.Objects;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.BinaryOperator;
@@ -42,8 +43,8 @@ class _Collections_Collector<T, C extends Collection<T>> implements Collector<T,
private final Function<C, C> finisher;
_Collections_Collector(Supplier<C> supplier, Function<C, C> finisher) {
- this.supplier = Objects.requireNonNull(supplier);
- this.finisher = Objects.requireNonNull(finisher);
+ this.supplier = requires(supplier, "supplier");
+ this.finisher = requires(finisher, "finisher");
}
@Override
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Lists.java b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Lists.java
index ac50103..5b163ae 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Lists.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Lists.java
@@ -19,13 +19,14 @@
package org.apache.isis.commons.internal.collections;
+import static org.apache.isis.commons.internal.base._With.requires;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
-import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -66,7 +67,7 @@ public final class _Lists {
* @return non null
*/
public static <T> List<T> singleton(T element) {
- Objects.requireNonNull(element); // don't accept null element
+ requires(element, "element"); // don't accept null element
return Collections.singletonList(element);
}
@@ -87,7 +88,7 @@ public final class _Lists {
*/
@SafeVarargs
public static <T> List<T> of(T ... elements) {
- Objects.requireNonNull(elements); // don't accept null as argument
+ requires(elements, "elements"); // don't accept null as argument
if(elements.length==0) {
return Collections.emptyList();
}
@@ -150,7 +151,7 @@ public final class _Lists {
if(input==null) {
return Collections.emptyList();
}
- Objects.requireNonNull(mapper);
+ requires(mapper, "mapper");
return input.stream()
.map(mapper)
.collect(Collectors.toList());
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Maps.java b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Maps.java
index da4ef63..32b409c 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Maps.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Maps.java
@@ -19,12 +19,13 @@
package org.apache.isis.commons.internal.collections;
+import static org.apache.isis.commons.internal.base._With.requires;
+
import java.util.AbstractMap;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
-import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Stream;
@@ -78,7 +79,7 @@ public final class _Maps {
@SafeVarargs
public static <K, V> Map<K, V> unmodifiableEntries(Map.Entry<? extends K,? extends V>... entries) {
- Objects.requireNonNull(entries); // don't accept null elements
+ requires(entries, "entries"); // don't accept null elements
if(entries.length==0) {
return Collections.emptyMap();
}
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java
index de966bf..7d4f291 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java
@@ -19,13 +19,14 @@
package org.apache.isis.commons.internal.collections;
+import static org.apache.isis.commons.internal.base._With.requires;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.Set;
import java.util.function.Supplier;
@@ -102,8 +103,8 @@ public class _Multimaps {
public static <K, V> ListMultimap<K, V> newListMultimap(
final Supplier<Map<K, List<V>>> mapFactory,
final Supplier<List<V>> elementCollectionFactory){
- Objects.requireNonNull(mapFactory);
- Objects.requireNonNull(elementCollectionFactory);
+ requires(mapFactory, "mapFactory");
+ requires(elementCollectionFactory, "elementCollectionFactory");
return new ListMultimap<K, V>() {
@@ -134,8 +135,8 @@ public class _Multimaps {
public static <K, V> SetMultimap<K, V> newSetMultimap(
final Supplier<Map<K, Set<V>>> mapFactory,
final Supplier<Set<V>> elementCollectionFactory){
- Objects.requireNonNull(mapFactory);
- Objects.requireNonNull(elementCollectionFactory);
+ requires(mapFactory, "mapFactory");
+ requires(elementCollectionFactory, "elementCollectionFactory");
return new SetMultimap<K, V>() {
@@ -166,8 +167,8 @@ public class _Multimaps {
public static <K1, K2, V> MapMultimap<K1, K2, V> newMapMultimap(
final Supplier<Map<K1, Map<K2, V>>> mapFactory,
final Supplier<Map<K2, V>> elementMapFactory){
- Objects.requireNonNull(mapFactory);
- Objects.requireNonNull(elementMapFactory);
+ requires(mapFactory, "mapFactory");
+ requires(elementMapFactory, "elementMapFactory");
return new MapMultimap<K1, K2, V>() {
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Sets.java b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Sets.java
index 90f1f42..9d1d08e 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Sets.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/collections/_Sets.java
@@ -19,12 +19,13 @@
package org.apache.isis.commons.internal.collections;
+import static org.apache.isis.commons.internal.base._With.requires;
+
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.LinkedHashSet;
-import java.util.Objects;
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
@@ -60,7 +61,7 @@ public final class _Sets {
* @return non null
*/
public static <T> Set<T> singleton(T element) {
- Objects.requireNonNull(element); // don't accept null element
+ requires(element, "element"); // don't accept null element
return Collections.singleton(element);
}
@@ -81,7 +82,7 @@ public final class _Sets {
*/
@SafeVarargs
public static <T> Set<T> of(T ... elements) {
- Objects.requireNonNull(elements); // don't accept null as argument
+ requires(elements, "elements");// don't accept null as argument
if(elements.length==0) {
return Collections.emptySet();
}
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java b/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java
index 4699d6e..62244fb 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Context.java
@@ -26,7 +26,6 @@ import static org.apache.isis.commons.internal.base._With.requires;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.function.Function;
import java.util.function.Supplier;
@@ -209,7 +208,7 @@ public final class _Context {
if(!alreadyRegistered || override) {
// let writes to the map be atomic
synchronized (singletonMap) {
- singletonMap.put(toKey(ClassLoader.class), Objects.requireNonNull(classLoader, "classLoader required"));
+ singletonMap.put(toKey(ClassLoader.class), requires(classLoader, "classLoader"));
}
}
}
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Plugin.java b/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Plugin.java
index afe9fa4..278b7b4 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Plugin.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/context/_Plugin.java
@@ -19,22 +19,24 @@
package org.apache.isis.commons.internal.context;
+import static org.apache.isis.commons.internal.base._With.requires;
+
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
-import java.util.Objects;
import java.util.ServiceLoader;
import java.util.Set;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.core.plugins.PluginResolveException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* <h1>- internal use only -</h1>
@@ -68,7 +70,7 @@ public final class _Plugin {
* @return non null
*/
public static <S> Set<S> loadAll(Class<S> service){
- Objects.requireNonNull(service);
+ requires(service, "service");
ServiceLoader<S> loader = ServiceLoader.load(service, _Context.getDefaultClassLoader());
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java b/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
index 1e5dd08..6f7cca2 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
@@ -23,7 +23,6 @@ import static org.apache.isis.commons.internal.base._With.requires;
import java.util.Collections;
import java.util.List;
-import java.util.Objects;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -70,7 +69,7 @@ public final class _Exceptions {
* @return
*/
public static final IllegalArgumentException unmatchedCase(String format, @Nullable Object _case) {
- Objects.requireNonNull(format);
+ requires(format, "format");
return new IllegalArgumentException(String.format(format, _case));
}
@@ -97,9 +96,8 @@ public final class _Exceptions {
* return 0;
*}</pre>
*
- * @return
*/
- public static IllegalStateException throwNotImplemented() {
+ public static void throwNotImplemented() {
throw notImplemented();
}
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/memento/_Mementos_MementoDefault.java b/core/commons/src/main/java/org/apache/isis/commons/internal/memento/_Mementos_MementoDefault.java
index 60e5734..7857743 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/memento/_Mementos_MementoDefault.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/memento/_Mementos_MementoDefault.java
@@ -19,6 +19,8 @@
package org.apache.isis.commons.internal.memento;
+import static org.apache.isis.commons.internal.base._With.requires;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -27,7 +29,6 @@ import java.io.ObjectOutputStream;
import java.io.ObjectStreamClass;
import java.io.Serializable;
import java.util.Map;
-import java.util.Objects;
import java.util.Set;
import javax.annotation.Nullable;
@@ -64,9 +65,9 @@ class _Mementos_MementoDefault implements _Mementos.Memento {
SerializingAdapter serializer,
Map<String, Serializable> valuesByKey) {
- this.codec = Objects.requireNonNull(codec);
- this.serializer = Objects.requireNonNull(serializer);
- this.valuesByKey = Objects.requireNonNull(valuesByKey);
+ this.codec = requires(codec, "codec");
+ this.serializer = requires(serializer, "serializer");
+ this.valuesByKey = requires(valuesByKey, "valuesByKey");
}
@Override
@@ -74,7 +75,7 @@ class _Mementos_MementoDefault implements _Mementos.Memento {
if(value==null) {
return this; //no-op, there is no point in storing null values
}
- Objects.requireNonNull(name);
+ requires(name, "name");
valuesByKey.put(name, serializer.write(value));
return this;
}
@@ -107,12 +108,12 @@ class _Mementos_MementoDefault implements _Mementos.Memento {
// -- PARSER
static Memento parse(EncoderDecoder codec, SerializingAdapter serializer, @Nullable String str) {
- Objects.requireNonNull(codec);
+ requires(codec, "codec");
if(_NullSafe.isEmpty(str)) {
return null;
}
try(ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(codec.decode(str))) {
- //override ObjectInputStream's classloading
+ //override ObjectInputStream's class-loading
@Override
protected Class<?> resolveClass(ObjectStreamClass desc)
throws IOException, ClassNotFoundException
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/resources/_Resource.java b/core/commons/src/main/java/org/apache/isis/commons/internal/resources/_Resource.java
index e941ba7..32be534 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/resources/_Resource.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/resources/_Resource.java
@@ -44,6 +44,12 @@ public final class _Resource {
// -- CLASS PATH RESOURCE LOADING
+ /**
+ * Returns the resource with path {@code resourceName} relative to {@code contextClass} as an InputStream.
+ * @param contextClass
+ * @param resourceName
+ * @return An input stream for reading the resource, or null if the resource could not be found.
+ */
public static InputStream load(Class<?> contextClass, String resourceName) {
requires(contextClass, "contextClass");
@@ -55,6 +61,15 @@ public final class _Resource {
.getResourceAsStream(absoluteResourceName);
}
+ /**
+ * Returns the resource with path {@code resourceName} relative to {@code contextClass} as a String
+ * conforming to the given {@code charset}.
+ * @param contextClass
+ * @param resourceName
+ * @param charset
+ * @return The resource as a String, or null if the resource could not be found.
+ * @throws IOException
+ */
public static String loadAsString(Class<?> contextClass, String resourceName, Charset charset) throws IOException {
final InputStream is = load(contextClass, resourceName);
return _Strings.ofBytes(_Bytes.of(is), charset);
diff --git a/core/commons/src/main/java/org/apache/isis/core/plugins/classdiscovery/ClassDiscovery.java b/core/commons/src/main/java/org/apache/isis/core/plugins/classdiscovery/ClassDiscovery.java
index 92c128d..b42ae0d 100644
--- a/core/commons/src/main/java/org/apache/isis/core/plugins/classdiscovery/ClassDiscovery.java
+++ b/core/commons/src/main/java/org/apache/isis/core/plugins/classdiscovery/ClassDiscovery.java
@@ -30,12 +30,23 @@ import java.util.Set;
*/
public interface ClassDiscovery {
- //TODO missing java-doc
+ /**
+ * Searches this application's class path for any classes that are annotated with {@code annotation}.
+ * @param annotation
+ * @return non-null set of discovered classes
+ */
public Set<Class<?>> getTypesAnnotatedWith(Class<? extends Annotation> annotation);
- //TODO missing java-doc
+ /**
+ * Searches this application's class path for any classes that are subclass to {@code type}.
+ * @param type
+ * @return non-null set of discovered classes
+ */
public <T> Set<Class<? extends T>> getSubTypesOf(Class<T> type);
+ /**
+ * @return an instance of {@code ClassDiscovery} that always returns empty search result
+ */
public static ClassDiscovery empty() {
return new ClassDiscovery() {