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 1c22a0ccfd ISIS-3293: _ClassCache API polishing
1c22a0ccfd is described below
commit 1c22a0ccfda805b6f112ad7afcc00b4891cfd670
Author: Andi Huber <[email protected]>
AuthorDate: Fri Nov 25 10:55:36 2022 +0100
ISIS-3293: _ClassCache API polishing
---
.../commons/internal/reflection/_ClassCache.java | 10 ++++------
.../config/progmodel/ProgrammingModelConstants.java | 20 ++++++++++++--------
2 files changed, 16 insertions(+), 14 deletions(-)
diff --git
a/commons/src/main/java/org/apache/causeway/commons/internal/reflection/_ClassCache.java
b/commons/src/main/java/org/apache/causeway/commons/internal/reflection/_ClassCache.java
index 5db8b46ec6..375311e2bc 100644
---
a/commons/src/main/java/org/apache/causeway/commons/internal/reflection/_ClassCache.java
+++
b/commons/src/main/java/org/apache/causeway/commons/internal/reflection/_ClassCache.java
@@ -82,14 +82,12 @@ public final class _ClassCache implements AutoCloseable {
inspectType(type);
}
- public <T> Can<Constructor<T>> getPublicConstructors(final Class<T> type) {
- return Can.ofCollection(_Casts.uncheckedCast(
- inspectType(type).publicConstructorsByKey.values()));
+ public <T> Stream<Constructor<T>> streamPublicConstructors(final Class<T>
type) {
+ return
_Casts.uncheckedCast(inspectType(type).publicConstructorsByKey.values().stream());
}
- public <T> Can<Constructor<T>>
getPublicConstructorsWithInjectSemantics(final Class<T> type) {
- return Can.ofCollection(_Casts.uncheckedCast(
-
inspectType(type).constructorsWithInjectSemanticsByKey.values()));
+ public <T> Stream<Constructor<T>>
streamPublicConstructorsWithInjectSemantics(final Class<T> type) {
+ return
_Casts.uncheckedCast(inspectType(type).constructorsWithInjectSemanticsByKey.values().stream());
}
public Optional<Constructor<?>> lookupPublicConstructor(final Class<?>
type, final Class<?>[] paramTypes) {
diff --git
a/core/config/src/main/java/org/apache/causeway/core/config/progmodel/ProgrammingModelConstants.java
b/core/config/src/main/java/org/apache/causeway/core/config/progmodel/ProgrammingModelConstants.java
index bfc6853837..160f990cce 100644
---
a/core/config/src/main/java/org/apache/causeway/core/config/progmodel/ProgrammingModelConstants.java
+++
b/core/config/src/main/java/org/apache/causeway/core/config/progmodel/ProgrammingModelConstants.java
@@ -549,27 +549,31 @@ public final class ProgrammingModelConstants {
*/
public static enum ViewmodelConstructor {
PUBLIC_WITH_INJECT_SEMANTICS {
- @Override public <T> Can<Constructor<T>> getAll(final Class<T>
cls) {
+ @Override public <T> Stream<Constructor<T>> streamAll(final
Class<T> cls) {
return Try.call(()->
_ClassCache.getInstance()
- .getPublicConstructorsWithInjectSemantics(cls))
+ .streamPublicConstructorsWithInjectSemantics(cls))
.getValue()
- .orElse(Can.empty());
+ .orElse(Stream.empty());
}
},
PUBLIC_ANY {
- @Override public <T> Can<Constructor<T>> getAll(final Class<T>
cls) {
+ @Override public <T> Stream<Constructor<T>> streamAll(final
Class<T> cls) {
return Try.call(()->
_ClassCache.getInstance()
- .getPublicConstructors(cls))
+ .streamPublicConstructors(cls))
.getValue()
- .orElse(Can.empty());
+ .orElse(Stream.empty());
}
};
+ public <T> Can<Constructor<T>> getAll(final Class<T> cls) {
+ return streamAll(cls).collect(Can.toCan());
+ }
public <T> Optional<Constructor<T>> getFirst(final Class<T> cls) {
- return getAll(cls).getFirst();
+ return streamAll(cls).findFirst();
}
- public abstract <T> Can<Constructor<T>> getAll(Class<T> cls);
+ public abstract <T> Stream<Constructor<T>> streamAll(Class<T> cls);
+
}
/**