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);
+
     }
 
     /**

Reply via email to