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 2020/09/16 10:13:49 UTC

[isis] branch master updated: ISIS-2426: tooling: find all Spring-managed classes within a project

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 bb55fd7  ISIS-2426: tooling: find all Spring-managed classes within a project
bb55fd7 is described below

commit bb55fd7f96213414926d6ae195816fff3832c211
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Sep 16 12:13:32 2020 +0200

    ISIS-2426: tooling: find all Spring-managed classes within a project
---
 .../isis/tooling/javamodel/test/AnalyzerTest.java  | 35 +++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/tooling/javamodel/src/test/java/org/apache/isis/tooling/javamodel/test/AnalyzerTest.java b/tooling/javamodel/src/test/java/org/apache/isis/tooling/javamodel/test/AnalyzerTest.java
index 6b20c8e..fc45c65 100644
--- a/tooling/javamodel/src/test/java/org/apache/isis/tooling/javamodel/test/AnalyzerTest.java
+++ b/tooling/javamodel/src/test/java/org/apache/isis/tooling/javamodel/test/AnalyzerTest.java
@@ -34,6 +34,8 @@ import org.apache.isis.tooling.javamodel.AnalyzerConfigFactory;
 import lombok.val;
 
 import guru.nidi.codeassert.config.Language;
+import guru.nidi.codeassert.model.CodeClass;
+import guru.nidi.codeassert.model.Model;
 
 import static guru.nidi.codeassert.config.Language.JAVA;
 
@@ -65,12 +67,43 @@ class AnalyzerTest {
                 .map(sourceFile->_Files.toRelativePath(commonPath, sourceFile))
                 .map(s->s.replace("\\", "/"))
                 .map(s->s.replace("/src/main/java/org/apache/isis/", "o.a.i/"))
-                .peek(System.out::println)
+                //.peek(System.out::println) //debug
                 .collect(Collectors.toSet());
         
         assertHasSomeSourceFiles(sources);
     }
     
+    @Test
+    void testAnnotationGathering() {
+
+        val analyzerConfig = AnalyzerConfigFactory.maven(projDir, Language.JAVA).main();
+        
+        val model = Model.from(analyzerConfig.getClasses()).read();
+        
+        Set<String> components = model.getClasses()
+            .stream()
+            .filter(codeClass->codeClass
+                    .getAnnotations()
+                    .stream()
+                    .map(CodeClass::getName)
+                    .anyMatch(name->name.startsWith("org.springframework.stereotype.")))
+            .map(CodeClass::getName)
+            .map(s->s.replace("org.apache.isis.", "o.a.i."))
+            //.peek(System.out::println) //debug
+            .collect(Collectors.toSet());
+        
+        assertHasSomeComponents(components);
+    }
+    
+    // -- HELPER
+    
+    private void assertHasSomeComponents(Set<String> components) {
+        assertTrue(components.contains("o.a.i.core.runtime.persistence.transaction.AuditerDispatchService"));
+        assertTrue(components.contains("o.a.i.core.runtime.persistence.transaction.ChangedObjectsService"));
+        assertTrue(components.contains("o.a.i.core.runtime.events.persistence.TimestampService"));
+        assertTrue(components.contains("o.a.i.core.runtime.events.RuntimeEventService"));
+    }
+    
     private void assertHasSomeSourceFiles(Set<String> sources) {
         assertTrue(sources.contains("o.a.i/core/runtime/context/IsisAppCommonContext.java"));
         assertTrue(sources.contains("o.a.i/core/runtime/context/IsisContext.java"));