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 2023/01/25 10:37:15 UTC

[isis] branch master updated: ISIS-3328: factor out the doc stuff into its own dedicated module

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 350bd2c7da ISIS-3328: factor out the doc stuff into its own dedicated module
350bd2c7da is described below

commit 350bd2c7da5ac7856d75fa4b3022bc0095d56181
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jan 25 11:37:08 2023 +0100

    ISIS-3328: factor out the doc stuff into its own dedicated module
    
    - allows the doc stuff to be optional and is not forced onto devs
    
    - also so we can depend on the ascii doc value type and add more
    powerful features later on
---
 bom/pom.xml                                        |  9 +++++
 .../runtimeservices/src/main/java/module-info.java |  1 -
 .../CausewayModuleCoreRuntimeServices.java         |  4 ---
 examples/demo/domain/pom.xml                       |  4 +++
 .../main/java/demoapp/dom/DemoModuleCommon.java    |  2 ++
 .../src/main/java/demoapp/dom/menubars.layout.xml  |  2 +-
 extensions/core/docgen/pom.xml                     | 40 ++++++++++++++++++++++
 .../extensions/docgen/CausewayModuleExtDocgen.java | 26 ++++++++------
 .../extensions/docgen/help}/DefaultHelpVm.java     |  6 ++--
 .../docgen/help}/DefaultHelpVm.layout.xml          |  0
 .../docgen/help}/DocumentationService.java         |  4 ++-
 .../docgen/help}/DocumentationServiceDefault.java  |  6 ++--
 .../extensions/docgen/menu}/DocumentationMenu.java |  7 ++--
 extensions/pom.xml                                 |  1 +
 14 files changed, 86 insertions(+), 26 deletions(-)

diff --git a/bom/pom.xml b/bom/pom.xml
index 6ba892e0fb..1720305b1d 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -790,6 +790,15 @@ It is therefore a copy of org.apache:apache, with customisations clearly identif
 				<type>jar</type>
 				<scope>compile</scope>
 			</dependency>
+			
+			<!-- org.apache.causeway.extensions (docgen) -->
+			<dependency>
+				<groupId>org.apache.causeway.extensions</groupId>
+				<artifactId>causeway-extensions-docgen</artifactId>
+				<version>2.0.0-SNAPSHOT</version>
+				<type>jar</type>
+				<scope>compile</scope>
+			</dependency>
 
 			<!-- org.apache.causeway.extensions (excel) -->
 			<dependency>
diff --git a/core/runtimeservices/src/main/java/module-info.java b/core/runtimeservices/src/main/java/module-info.java
index 483fc21bad..69986102e3 100644
--- a/core/runtimeservices/src/main/java/module-info.java
+++ b/core/runtimeservices/src/main/java/module-info.java
@@ -20,7 +20,6 @@ module org.apache.causeway.core.runtimeservices {
     exports org.apache.causeway.core.runtimeservices;
     exports org.apache.causeway.core.runtimeservices.bookmarks;
     exports org.apache.causeway.core.runtimeservices.command;
-    exports org.apache.causeway.core.runtimeservices.helpui;
     exports org.apache.causeway.core.runtimeservices.email;
     exports org.apache.causeway.core.runtimeservices.eventbus;
     exports org.apache.causeway.core.runtimeservices.executor;
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/CausewayModuleCoreRuntimeServices.java b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/CausewayModuleCoreRuntimeServices.java
index 4db5185f96..6fd8fbdacb 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/CausewayModuleCoreRuntimeServices.java
+++ b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/CausewayModuleCoreRuntimeServices.java
@@ -36,8 +36,6 @@ import org.apache.causeway.core.runtimeservices.email.EmailServiceDefault;
 import org.apache.causeway.core.runtimeservices.eventbus.EventBusServiceSpring;
 import org.apache.causeway.core.runtimeservices.executor.MemberExecutorServiceDefault;
 import org.apache.causeway.core.runtimeservices.factory.FactoryServiceDefault;
-import org.apache.causeway.core.runtimeservices.helpui.DocumentationMenu;
-import org.apache.causeway.core.runtimeservices.helpui.DocumentationServiceDefault;
 import org.apache.causeway.core.runtimeservices.homepage.HomePageResolverServiceDefault;
 import org.apache.causeway.core.runtimeservices.i18n.po.TranslationServicePo;
 import org.apache.causeway.core.runtimeservices.i18n.po.TranslationServicePoMenu;
@@ -88,7 +86,6 @@ import org.apache.causeway.core.runtimeservices.xmlsnapshot.XmlSnapshotServiceDe
         CommandDtoFactoryDefault.class,
         CommandExecutorServiceDefault.class,
         CommandPublisherDefault.class,
-        DocumentationServiceDefault.class,
         EmailNotificationServiceDefault.class,
         EmailServiceDefault.class,
         EntityChangesPublisherDefault.class,
@@ -135,7 +132,6 @@ import org.apache.causeway.core.runtimeservices.xmlsnapshot.XmlSnapshotServiceDe
         RepositoryServiceDefault.class,
 
         // @DomainService's
-        DocumentationMenu.class,
         TranslationServicePoMenu.class,
 
         // Exception Recognizers
diff --git a/examples/demo/domain/pom.xml b/examples/demo/domain/pom.xml
index eefabdca76..b1e141b99e 100644
--- a/examples/demo/domain/pom.xml
+++ b/examples/demo/domain/pom.xml
@@ -96,6 +96,10 @@
 			<groupId>org.apache.causeway.valuetypes</groupId>
 			<artifactId>causeway-valuetypes-vega-metamodel</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.causeway.extensions</groupId>
+			<artifactId>causeway-extensions-docgen</artifactId>
+		</dependency>
 
 
 		<!-- JDO specific -->
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/DemoModuleCommon.java b/examples/demo/domain/src/main/java/demoapp/dom/DemoModuleCommon.java
index e1027d6f01..3ce146375b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/DemoModuleCommon.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/DemoModuleCommon.java
@@ -28,6 +28,7 @@ import org.apache.causeway.applib.CausewayModuleApplibChangeAndExecutionLoggers;
 import org.apache.causeway.applib.CausewayModuleApplibMixins;
 import org.apache.causeway.core.config.presets.CausewayPresets;
 import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
+import org.apache.causeway.extensions.docgen.CausewayModuleExtDocgen;
 import org.apache.causeway.testing.fixtures.applib.CausewayModuleTestingFixturesApplib;
 
 @Configuration
@@ -35,6 +36,7 @@ import org.apache.causeway.testing.fixtures.applib.CausewayModuleTestingFixtures
     CausewayModuleApplibChangeAndExecutionLoggers.class,
     CausewayModuleApplibMixins.class,
     CausewayModuleCoreRuntimeServices.class,
+    CausewayModuleExtDocgen.class,
     CausewayModuleTestingFixturesApplib.class,
 })
 @PropertySources({
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
index 9309a8feea..ebbb64922f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
@@ -392,7 +392,7 @@ For latest we use: https://raw.githubusercontent.com/apache/causeway/master/anto
             <mb3:named/>
             <mb3:section>
                 <mb3:named>Documentation</mb3:named>
-                <mb3:serviceAction objectType="causeway.runtimeservices.DocumentationMenu" id="help"/>
+                <mb3:serviceAction objectType="causeway.ext.docgen.DocumentationMenu" id="help"/>
             </mb3:section>
             <mb3:section>
                 <mb3:named>Configuration</mb3:named>
diff --git a/extensions/core/docgen/pom.xml b/extensions/core/docgen/pom.xml
new file mode 100644
index 0000000000..7a5316d456
--- /dev/null
+++ b/extensions/core/docgen/pom.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.causeway.extensions</groupId>
+        <artifactId>causeway-extensions</artifactId>
+        <version>2.0.0-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>causeway-extensions-docgen</artifactId>
+    <name>Apache Causeway Ext - Docgen</name>
+
+    <description>
+        Provides a set of code mining features that can help building documentation for your application.  
+    </description>
+
+    <dependencies>
+		<dependency>
+			<groupId>org.apache.causeway.core</groupId>
+			<artifactId>causeway-core-metamodel</artifactId>
+		</dependency>
+        <dependency>
+			<groupId>org.apache.causeway.valuetypes</groupId>
+			<artifactId>causeway-valuetypes-asciidoc-applib</artifactId>
+		</dependency>
+    </dependencies>
+
+</project>
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationService.java b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/CausewayModuleExtDocgen.java
similarity index 57%
copy from core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationService.java
copy to extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/CausewayModuleExtDocgen.java
index e2eaf2438a..e3fb969bce 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationService.java
+++ b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/CausewayModuleExtDocgen.java
@@ -16,19 +16,25 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.core.runtimeservices.helpui;
+package org.apache.causeway.extensions.docgen;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.causeway.extensions.docgen.help.DocumentationServiceDefault;
+import org.apache.causeway.extensions.docgen.menu.DocumentationMenu;
 
 /**
- * Provides the content for the {@link DocumentationMenu} entries.
- * <p>
- * Currently there is only one, namely (<i>help</i>).
- *
- * @see DocumentationMenu
- * @since 2.x {@index}
+ * Adds the {@link DocumentationMenu} with its auto-configured menu entries.
+ * @since 2.0 {@index}
  */
-public interface DocumentationService {
+@Configuration
+@Import({
+    DocumentationMenu.class,
+    DocumentationServiceDefault.class,
+})
+public class CausewayModuleExtDocgen {
 
-    /** Returns a view-model or value that represents the application's primary help page. */
-    Object getHelp();
+    public static final String NAMESPACE = "causeway.ext.docgen";
 
 }
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DefaultHelpVm.java b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/help/DefaultHelpVm.java
similarity index 91%
rename from core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DefaultHelpVm.java
rename to extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/help/DefaultHelpVm.java
index 648e5ae940..7294b520a0 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DefaultHelpVm.java
+++ b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/help/DefaultHelpVm.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.core.runtimeservices.helpui;
+package org.apache.causeway.extensions.docgen.help;
 
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -30,12 +30,12 @@ import org.apache.causeway.applib.annotation.ObjectSupport;
 import org.apache.causeway.applib.annotation.Property;
 import org.apache.causeway.applib.annotation.PropertyLayout;
 import org.apache.causeway.applib.value.Markup;
-import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
+import org.apache.causeway.extensions.docgen.CausewayModuleExtDocgen;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
-@Named(CausewayModuleCoreRuntimeServices.NAMESPACE + ".DefaultHelpVm")
+@Named(CausewayModuleExtDocgen.NAMESPACE + ".DefaultHelpVm")
 @DomainObject(nature = Nature.VIEW_MODEL)
 @DomainObjectLayout(
         named = "Application Help",
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DefaultHelpVm.layout.xml b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/help/DefaultHelpVm.layout.xml
similarity index 100%
rename from core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DefaultHelpVm.layout.xml
rename to extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/help/DefaultHelpVm.layout.xml
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationService.java b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/help/DocumentationService.java
similarity index 90%
rename from core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationService.java
rename to extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/help/DocumentationService.java
index e2eaf2438a..35e105d291 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationService.java
+++ b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/help/DocumentationService.java
@@ -16,7 +16,9 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.core.runtimeservices.helpui;
+package org.apache.causeway.extensions.docgen.help;
+
+import org.apache.causeway.extensions.docgen.menu.DocumentationMenu;
 
 /**
  * Provides the content for the {@link DocumentationMenu} entries.
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationServiceDefault.java b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/help/DocumentationServiceDefault.java
similarity index 98%
rename from core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationServiceDefault.java
rename to extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/help/DocumentationServiceDefault.java
index 122c59fba3..843366d171 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationServiceDefault.java
+++ b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/help/DocumentationServiceDefault.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.core.runtimeservices.helpui;
+package org.apache.causeway.extensions.docgen.help;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -53,13 +53,13 @@ import org.apache.causeway.core.metamodel.spec.ActionScope;
 import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
 import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
-import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
+import org.apache.causeway.extensions.docgen.CausewayModuleExtDocgen;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
 @Service
-@Named(CausewayModuleCoreRuntimeServices.NAMESPACE + ".DocumentationServiceDefault")
+@Named(CausewayModuleExtDocgen.NAMESPACE + ".DocumentationServiceDefault")
 @Priority(PriorityPrecedence.MIDPOINT)
 @Qualifier("Default")
 @RequiredArgsConstructor(onConstructor_ = {@Inject})
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationMenu.java b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/menu/DocumentationMenu.java
similarity index 91%
rename from core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationMenu.java
rename to extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/menu/DocumentationMenu.java
index cfb27dae56..83b92a5719 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/helpui/DocumentationMenu.java
+++ b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/menu/DocumentationMenu.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.core.runtimeservices.helpui;
+package org.apache.causeway.extensions.docgen.menu;
 
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -30,7 +30,8 @@ import org.apache.causeway.applib.annotation.MemberSupport;
 import org.apache.causeway.applib.annotation.NatureOfService;
 import org.apache.causeway.applib.annotation.PriorityPrecedence;
 import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
+import org.apache.causeway.extensions.docgen.CausewayModuleExtDocgen;
+import org.apache.causeway.extensions.docgen.help.DocumentationService;
 
 import lombok.RequiredArgsConstructor;
 
@@ -42,7 +43,7 @@ import lombok.RequiredArgsConstructor;
  * @see DocumentationService
  * @since 2.x {@index}
  */
-@Named(CausewayModuleCoreRuntimeServices.NAMESPACE + ".DocumentationMenu")
+@Named(CausewayModuleExtDocgen.NAMESPACE + ".DocumentationMenu")
 @DomainService(nature = NatureOfService.VIEW)
 @DomainServiceLayout(
         menuBar = DomainServiceLayout.MenuBar.TERTIARY
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 3370102759..75b665b63c 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -91,6 +91,7 @@
 	<modules>
 
 		<module>core/commandlog</module>
+		<module>core/docgen</module>
 		<module>core/excel</module>
 		<module>core/executionlog</module>
 		<module>core/executionoutbox</module>