You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2020/01/10 12:56:52 UTC

[isis] 06/22: ISIS-2259: reorg sse module

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2259
in repository https://gitbox.apache.org/repos/asf/isis.git

commit aeef432dc489d0bf881d4ee362a88f1ddccf664e
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 10 12:22:51 2020 +0000

    ISIS-2259: reorg sse module
---
 examples/demo/pom.xml                              |  4 +--
 .../demoapp/dom/actions/async/AsyncActionDemo.java |  8 ++---
 .../java/demoapp/dom/actions/async/DemoTask.java   |  4 +--
 .../demo/src/main/java/demoapp/webapp/DemoApp.java |  6 ++--
 valuetypes/asciidoc/ui/pom.xml                     |  2 +-
 .../asciidoc/ui/IsisModuleValAsciidocUi.java       |  4 +--
 valuetypes/pom.xml                                 | 16 ++++++---
 valuetypes/sse/{ => applib}/pom.xml                |  8 ++---
 .../sse/applib/IsisModuleValSseApplib.java}        |  4 +--
 .../sse/applib/annotations}/ServerSentEvents.java  |  2 +-
 .../sse/applib/annotations}/SseSource.java         |  6 ++--
 .../extensions/sse/applib/service}/SseChannel.java |  4 ++-
 .../extensions/sse/applib/service}/SseService.java |  4 ++-
 .../sse/applib/value}/ListeningMarkup.java         |  4 +--
 valuetypes/sse/{ => metamodel}/pom.xml             | 25 +++++--------
 .../sse/metamodel/IsisModuleValSseMetaModel.java}  | 17 +++++----
 .../facets/SseAnnotationFacetFactory.java          | 19 ++++++++--
 .../sse/metamodel}/facets/SseObserveFacet.java     |  4 +--
 .../metamodel}/facets/SseObserveFacetAbstract.java |  4 +--
 ...eObserveFacetForServerSentEventsAnnotation.java |  6 ++--
 valuetypes/sse/pom.xml                             | 41 +++++++---------------
 .../isis/extensions/sse/SseMetaModelPlugin.java    | 38 --------------------
 valuetypes/sse/{ => ui}/pom.xml                    | 17 +++++----
 .../extensions/sse/ui/IsisModuleValSseUi.java}     | 15 ++++----
 .../sse/ui}/markup/ListeningMarkupComponent.java   |  2 +-
 .../markup/ListeningMarkupComponent_observing.java |  2 +-
 .../ListeningMarkupPanelFactoriesForWicket.java    |  4 +--
 .../sse/ui}/markup/js/ObservingComponent.js        |  0
 .../sse/ui}/services/SseServiceDefault.java        |  8 ++---
 .../sse/ui}/webmodule/ServerSentEventsServlet.java | 10 +++---
 .../ui}/webmodule/WebModuleServerSentEvents.java   |  2 +-
 31 files changed, 131 insertions(+), 159 deletions(-)

diff --git a/examples/demo/pom.xml b/examples/demo/pom.xml
index 3767d13..eca3c8c 100644
--- a/examples/demo/pom.xml
+++ b/examples/demo/pom.xml
@@ -79,7 +79,7 @@
 
 		<dependency>
 			<groupId>org.apache.isis.valuetypes</groupId>
-			<artifactId>isis-valuetypes-asciidoc-applib</artifactId>
+			<artifactId>isis-valuetypes-asciidoc-ui</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.isis.incubator</groupId>
@@ -87,7 +87,7 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.isis.valuetypes</groupId>
-			<artifactId>isis-valuetypes-sse</artifactId>
+			<artifactId>isis-valuetypes-sse-ui</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.isis.extensions</groupId>
diff --git a/examples/demo/src/main/java/demoapp/dom/actions/async/AsyncActionDemo.java b/examples/demo/src/main/java/demoapp/dom/actions/async/AsyncActionDemo.java
index 7b33d09..d3196b0 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/async/AsyncActionDemo.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/async/AsyncActionDemo.java
@@ -33,10 +33,10 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.util.JaxbAdapters;
-import org.apache.isis.extensions.sse.api.ServerSentEvents;
-import org.apache.isis.extensions.sse.api.SseService;
-import org.apache.isis.extensions.sse.api.SseService.ExecutionBehavior;
-import org.apache.isis.extensions.sse.markup.ListeningMarkup;
+import org.apache.isis.extensions.sse.applib.annotations.ServerSentEvents;
+import org.apache.isis.extensions.sse.applib.service.SseService;
+import org.apache.isis.extensions.sse.applib.service.SseService.ExecutionBehavior;
+import org.apache.isis.extensions.sse.applib.value.ListeningMarkup;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/examples/demo/src/main/java/demoapp/dom/actions/async/DemoTask.java b/examples/demo/src/main/java/demoapp/dom/actions/async/DemoTask.java
index 98b82c1..750049a 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/async/DemoTask.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/async/DemoTask.java
@@ -23,8 +23,8 @@ import java.util.concurrent.atomic.LongAdder;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.extensions.sse.api.SseChannel;
-import org.apache.isis.extensions.sse.api.SseSource;
+import org.apache.isis.extensions.sse.applib.service.SseChannel;
+import org.apache.isis.extensions.sse.applib.annotations.SseSource;
 
 import lombok.RequiredArgsConstructor;
 
diff --git a/examples/demo/src/main/java/demoapp/webapp/DemoApp.java b/examples/demo/src/main/java/demoapp/webapp/DemoApp.java
index efd4df9..788c777 100644
--- a/examples/demo/src/main/java/demoapp/webapp/DemoApp.java
+++ b/examples/demo/src/main/java/demoapp/webapp/DemoApp.java
@@ -40,7 +40,7 @@ import org.apache.isis.extensions.secman.encryption.jbcrypt.IsisModuleSecmanEncr
 import org.apache.isis.extensions.secman.jdo.IsisModuleSecmanPersistenceJdo;
 import org.apache.isis.extensions.secman.model.IsisModuleSecmanModel;
 import org.apache.isis.extensions.secman.shiro.IsisModuleSecmanRealmShiro;
-import org.apache.isis.extensions.sse.IsisModuleExtSse;
+import org.apache.isis.extensions.sse.applib.IsisModuleValSseApplib;
 import org.apache.isis.incubator.model.metamodel.IsisModuleIncModelMetaModel;
 import org.apache.isis.persistence.jdo.datanucleus5.IsisModuleJdoDataNucleus5;
 import org.apache.isis.security.shiro.IsisModuleSecurityShiro;
@@ -87,8 +87,8 @@ public class DemoApp extends SpringBootServletInitializer {
         IsisModuleSecurityShiro.class,
         IsisModuleJdoDataNucleus5.class,
         IsisModuleWicketViewer.class,
-        IsisModuleExtSse.class, // server sent events
-        IsisModuleExtAsciidocUi.class, // ascii-doc rendering support
+        IsisModuleValSseApplib.class, // server sent events
+        IsisModuleValAsciidocUi.class, // ascii-doc rendering support
         
         // REST
         IsisModuleRestfulObjectsViewer.class,
diff --git a/valuetypes/asciidoc/ui/pom.xml b/valuetypes/asciidoc/ui/pom.xml
index 1e82885..5658eac 100644
--- a/valuetypes/asciidoc/ui/pom.xml
+++ b/valuetypes/asciidoc/ui/pom.xml
@@ -32,7 +32,7 @@
 	
 		<dependency>
 			<groupId>org.apache.isis.valuetypes</groupId>
-			<artifactId>isis-valuetypes-applib</artifactId>
+			<artifactId>isis-valuetypes-asciidoc-applib</artifactId>
 		</dependency>
 
 		<dependency>
diff --git a/valuetypes/asciidoc/ui/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/IsisModuleValAsciidocUi.java b/valuetypes/asciidoc/ui/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/IsisModuleValAsciidocUi.java
index 76f5da0..ce1c446 100644
--- a/valuetypes/asciidoc/ui/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/IsisModuleValAsciidocUi.java
+++ b/valuetypes/asciidoc/ui/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/IsisModuleValAsciidocUi.java
@@ -21,12 +21,12 @@ package org.apache.isis.valuetypes.asciidoc.ui;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
-import org.apache.isis.extensions.asciidoc.applib.IsisModuleExtAsciidocApplib;
+import org.apache.isis.valuetypes.asciidoc.applib.IsisModuleValAsciidocApplib;
 import org.apache.isis.valuetypes.asciidoc.ui.components.AsciiDocPanelFactoriesForWicket;
 
 @Configuration
 @Import({
-    IsisModuleExtAsciidocApplib.class,
+    IsisModuleValAsciidocApplib.class,
     AsciiDocPanelFactoriesForWicket.Parented.class,
     AsciiDocPanelFactoriesForWicket.Standalone.class
 })
diff --git a/valuetypes/pom.xml b/valuetypes/pom.xml
index 996783e..38a46f3 100644
--- a/valuetypes/pom.xml
+++ b/valuetypes/pom.xml
@@ -85,7 +85,17 @@
 
 			<dependency>
 				<groupId>org.apache.isis.valuetypes</groupId>
-				<artifactId>isis-valuetypes-sse</artifactId>
+				<artifactId>isis-valuetypes-sse-applib</artifactId>
+				<version>2.0.0-M3-SNAPSHOT</version>
+			</dependency>
+			<dependency>
+				<groupId>org.apache.isis.valuetypes</groupId>
+				<artifactId>isis-valuetypes-sse-metamodel</artifactId>
+				<version>2.0.0-M3-SNAPSHOT</version>
+			</dependency>
+			<dependency>
+				<groupId>org.apache.isis.valuetypes</groupId>
+				<artifactId>isis-valuetypes-sse-ui</artifactId>
 				<version>2.0.0-M3-SNAPSHOT</version>
 			</dependency>
 
@@ -102,11 +112,7 @@
 
 	<modules>
 		<module>asciidoc</module>
-
 		<module>markdown</module>
-		<module>markdown/applib</module>
-		<module>markdown/ui</module>
-
 		<module>sse</module>
 	</modules>
 
diff --git a/valuetypes/sse/pom.xml b/valuetypes/sse/applib/pom.xml
similarity index 88%
copy from valuetypes/sse/pom.xml
copy to valuetypes/sse/applib/pom.xml
index ebbfd1c..5be13fe 100644
--- a/valuetypes/sse/pom.xml
+++ b/valuetypes/sse/applib/pom.xml
@@ -18,16 +18,16 @@
 		<groupId>org.apache.isis.valuetypes</groupId>
 		<artifactId>isis-valuetypes</artifactId>
 		<version>2.0.0-M3-SNAPSHOT</version>
-		<relativePath>../pom.xml</relativePath>
+		<relativePath>../../pom.xml</relativePath>
 	</parent>
 
-	<artifactId>isis-valuetypes-sse</artifactId>
+	<artifactId>isis-valuetypes-sse-applib</artifactId>
 	<name>Apache Isis Val - Server Sent Events</name>
 	<description></description>
 
 	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.sse</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/valuetypes/sse</git-plugin.propertiesDir>
+		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.sse.applib</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/valuetypes/sse/applib</git-plugin.propertiesDir>
 	</properties>
 
 	<dependencies>
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/IsisModuleExtSse.java b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/IsisModuleValSseApplib.java
similarity index 94%
copy from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/IsisModuleExtSse.java
copy to valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/IsisModuleValSseApplib.java
index b62e7b4..dfd66cd 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/IsisModuleExtSse.java
+++ b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/IsisModuleValSseApplib.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.sse;
+package org.apache.isis.extensions.sse.applib;
 
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
@@ -36,6 +36,6 @@ import org.apache.isis.extensions.sse.webmodule.WebModuleServerSentEvents;
         SseServiceDefault.class,
         WebModuleServerSentEvents.class
 })
-public class IsisModuleExtSse {
+public class IsisModuleValSseApplib {
 
 }
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/ServerSentEvents.java b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/annotations/ServerSentEvents.java
similarity index 95%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/ServerSentEvents.java
rename to valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/annotations/ServerSentEvents.java
index 4d20df3..3d87bd1 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/ServerSentEvents.java
+++ b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/annotations/ServerSentEvents.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.sse.api;
+package org.apache.isis.extensions.sse.applib.annotations;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/SseSource.java b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/annotations/SseSource.java
similarity index 89%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/SseSource.java
rename to valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/annotations/SseSource.java
index aa00cbe..5c7756e 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/SseSource.java
+++ b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/annotations/SseSource.java
@@ -17,7 +17,9 @@
  *  under the License.
  */
 
-package org.apache.isis.extensions.sse.api;
+package org.apache.isis.extensions.sse.applib.annotations;
+
+import org.apache.isis.extensions.sse.applib.service.SseChannel;
 
 /**
  * Server-sent events.
@@ -37,7 +39,7 @@ public interface SseSource {
 
     /**
      * This class is the default for the
-     * {@link ServerSentEvents#observe()} annotation attribute.  
+     * {@link ServerSentEvents#observe()} annotation attribute.
      */
     public static final class Noop implements SseSource {
 
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/SseChannel.java b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/service/SseChannel.java
similarity index 91%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/SseChannel.java
rename to valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/service/SseChannel.java
index a8c3b19..fbc3689 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/SseChannel.java
+++ b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/service/SseChannel.java
@@ -17,11 +17,13 @@
  *  under the License.
  */
 
-package org.apache.isis.extensions.sse.api;
+package org.apache.isis.extensions.sse.applib.service;
 
 import java.util.UUID;
 import java.util.function.Predicate;
 
+import org.apache.isis.extensions.sse.applib.annotations.SseSource;
+
 /**
  * Server-sent events.
  *  
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/SseService.java b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/service/SseService.java
similarity index 90%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/SseService.java
rename to valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/service/SseService.java
index c81c28c..caad878 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/api/SseService.java
+++ b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/service/SseService.java
@@ -16,10 +16,12 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.sse.api;
+package org.apache.isis.extensions.sse.applib.service;
 
 import java.util.Optional;
 
+import org.apache.isis.extensions.sse.applib.annotations.SseSource;
+
 /**
  * Server-sent events.
  *  
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkup.java b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/value/ListeningMarkup.java
similarity index 84%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkup.java
rename to valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/value/ListeningMarkup.java
index d03eb45..848c36c 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkup.java
+++ b/valuetypes/sse/applib/src/main/java/org/apache/isis/extensions/sse/applib/value/ListeningMarkup.java
@@ -1,8 +1,8 @@
-package org.apache.isis.extensions.sse.markup;
+package org.apache.isis.extensions.sse.applib.value;
 
 import org.apache.isis.applib.annotation.Value;
 import org.apache.isis.applib.value.Markup;
-import org.apache.isis.extensions.sse.api.ServerSentEvents;
+import org.apache.isis.extensions.sse.applib.annotations.ServerSentEvents;
 
 /**
  * Immutable value type holding pre-rendered HTML. Supports server sent events.
diff --git a/valuetypes/sse/pom.xml b/valuetypes/sse/metamodel/pom.xml
similarity index 71%
copy from valuetypes/sse/pom.xml
copy to valuetypes/sse/metamodel/pom.xml
index ebbfd1c..4960f42 100644
--- a/valuetypes/sse/pom.xml
+++ b/valuetypes/sse/metamodel/pom.xml
@@ -16,37 +16,28 @@
 
 	<parent>
 		<groupId>org.apache.isis.valuetypes</groupId>
-		<artifactId>isis-valuetypes</artifactId>
+		<artifactId>isis-valuetypes-sse</artifactId>
 		<version>2.0.0-M3-SNAPSHOT</version>
-		<relativePath>../pom.xml</relativePath>
 	</parent>
 
-	<artifactId>isis-valuetypes-sse</artifactId>
-	<name>Apache Isis Val - Server Sent Events</name>
-	<description></description>
+	<artifactId>isis-valuetypes-sse-metamodel</artifactId>
+	<name>Apache Isis Val - Server Sent Events (metamodel)</name>
 
 	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.sse</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/valuetypes/sse</git-plugin.propertiesDir>
+		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.sse.metamodel</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/valuetypes/sse/metamodel</git-plugin.propertiesDir>
 	</properties>
 
 	<dependencies>
 
 		<dependency>
-			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-metamodel</artifactId>
+			<groupId>org.apache.isis.valuetypes</groupId>
+			<artifactId>isis-valuetypes-sse-applib</artifactId>
 		</dependency>
 
 		<dependency>
 			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-webapp</artifactId>
-			<scope>provided</scope>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-viewer-wicket-ui</artifactId>
-			<scope>provided</scope>
+			<artifactId>isis-metamodel</artifactId>
 		</dependency>
 
 	</dependencies>
diff --git a/valuetypes/asciidoc/ui/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/IsisModuleValAsciidocUi.java b/valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/IsisModuleValSseMetaModel.java
similarity index 70%
copy from valuetypes/asciidoc/ui/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/IsisModuleValAsciidocUi.java
copy to valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/IsisModuleValSseMetaModel.java
index 76f5da0..7c6a0f6 100644
--- a/valuetypes/asciidoc/ui/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/IsisModuleValAsciidocUi.java
+++ b/valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/IsisModuleValSseMetaModel.java
@@ -16,19 +16,22 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.valuetypes.asciidoc.ui;
+package org.apache.isis.extensions.sse.metamodel;
 
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
-import org.apache.isis.extensions.asciidoc.applib.IsisModuleExtAsciidocApplib;
-import org.apache.isis.valuetypes.asciidoc.ui.components.AsciiDocPanelFactoriesForWicket;
+import org.apache.isis.extensions.sse.applib.IsisModuleValSseApplib;
+import org.apache.isis.extensions.sse.metamodel.facets.SseAnnotationFacetFactory;
 
 @Configuration
 @Import({
-    IsisModuleExtAsciidocApplib.class,
-    AsciiDocPanelFactoriesForWicket.Parented.class,
-    AsciiDocPanelFactoriesForWicket.Standalone.class
+        // module dependencies
+        IsisModuleValSseApplib.class,
+
+        // @Component's
+        SseAnnotationFacetFactory.Register.class,
 })
-public class IsisModuleValAsciidocUi {
+public class IsisModuleValSseMetaModel {
+
 }
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseAnnotationFacetFactory.java b/valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseAnnotationFacetFactory.java
similarity index 72%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseAnnotationFacetFactory.java
rename to valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseAnnotationFacetFactory.java
index dc110fe..c013ca9 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseAnnotationFacetFactory.java
+++ b/valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseAnnotationFacetFactory.java
@@ -17,17 +17,32 @@
  *  under the License.
  */
 
-package org.apache.isis.extensions.sse.facets;
+package org.apache.isis.extensions.sse.metamodel.facets;
 
-import org.apache.isis.extensions.sse.api.ServerSentEvents;
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.extensions.sse.applib.annotations.ServerSentEvents;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
+import org.apache.isis.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.metamodel.progmodel.ProgrammingModel;
 
 import lombok.val;
 
 public class SseAnnotationFacetFactory extends FacetFactoryAbstract {
 
+    @Component
+    public static class Register implements MetaModelRefiner {
+
+        @Override
+        public void refineProgrammingModel(ProgrammingModel programmingModel) {
+            programmingModel.addFactory(
+                    ProgrammingModel.FacetProcessingOrder.Z2_AFTER_FINALLY,
+                    SseAnnotationFacetFactory.class);
+        }
+    }
+
     public SseAnnotationFacetFactory() {
         super(FeatureType.PROPERTIES_ONLY);
     }
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseObserveFacet.java b/valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseObserveFacet.java
similarity index 91%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseObserveFacet.java
rename to valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseObserveFacet.java
index 720f9ef..f359e3a 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseObserveFacet.java
+++ b/valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseObserveFacet.java
@@ -17,10 +17,10 @@
  *  under the License.
  */
 
-package org.apache.isis.extensions.sse.facets;
+package org.apache.isis.extensions.sse.metamodel.facets;
 
 import org.apache.isis.applib.value.LocalResourcePath;
-import org.apache.isis.extensions.sse.api.SseSource;
+import org.apache.isis.extensions.sse.applib.annotations.SseSource;
 import org.apache.isis.metamodel.facets.SingleClassValueFacet;
 
 /**
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseObserveFacetAbstract.java b/valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseObserveFacetAbstract.java
similarity index 93%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseObserveFacetAbstract.java
rename to valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseObserveFacetAbstract.java
index 59bdc27..44051bf 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseObserveFacetAbstract.java
+++ b/valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseObserveFacetAbstract.java
@@ -17,10 +17,10 @@
  *  under the License.
  */
 
-package org.apache.isis.extensions.sse.facets;
+package org.apache.isis.extensions.sse.metamodel.facets;
 
 import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.extensions.sse.api.SseSource;
+import org.apache.isis.extensions.sse.applib.annotations.SseSource;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.SingleClassValueFacetAbstract;
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseObserveFacetForServerSentEventsAnnotation.java b/valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseObserveFacetForServerSentEventsAnnotation.java
similarity index 89%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseObserveFacetForServerSentEventsAnnotation.java
rename to valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseObserveFacetForServerSentEventsAnnotation.java
index 67e6acb..3a75d44 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/facets/SseObserveFacetForServerSentEventsAnnotation.java
+++ b/valuetypes/sse/metamodel/src/main/java/org/apache/isis/extensions/sse/metamodel/facets/SseObserveFacetForServerSentEventsAnnotation.java
@@ -17,12 +17,12 @@
  *  under the License.
  */
 
-package org.apache.isis.extensions.sse.facets;
+package org.apache.isis.extensions.sse.metamodel.facets;
 
 import java.util.Optional;
 
-import org.apache.isis.extensions.sse.api.ServerSentEvents;
-import org.apache.isis.extensions.sse.api.SseSource;
+import org.apache.isis.extensions.sse.applib.annotations.ServerSentEvents;
+import org.apache.isis.extensions.sse.applib.annotations.SseSource;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 
 /**
diff --git a/valuetypes/sse/pom.xml b/valuetypes/sse/pom.xml
index ebbfd1c..4f2d0a3 100644
--- a/valuetypes/sse/pom.xml
+++ b/valuetypes/sse/pom.xml
@@ -18,37 +18,20 @@
 		<groupId>org.apache.isis.valuetypes</groupId>
 		<artifactId>isis-valuetypes</artifactId>
 		<version>2.0.0-M3-SNAPSHOT</version>
-		<relativePath>../pom.xml</relativePath>
 	</parent>
 
 	<artifactId>isis-valuetypes-sse</artifactId>
-	<name>Apache Isis Val - Server Sent Events</name>
-	<description></description>
-
-	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.sse</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/valuetypes/sse</git-plugin.propertiesDir>
-	</properties>
-
-	<dependencies>
-
-		<dependency>
-			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-metamodel</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-webapp</artifactId>
-			<scope>provided</scope>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-viewer-wicket-ui</artifactId>
-			<scope>provided</scope>
-		</dependency>
-
-	</dependencies>
+	<name>Apache Isis Val - Server Sent Events (parent)</name>
+	<description>
+		Dynamically updating HTML markup
+	</description>
+
+	<packaging>pom</packaging>
+
+	<modules>
+		<module>applib</module>
+		<module>metamodel</module>
+		<module>ui</module>
+	</modules>
 
 </project>
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/SseMetaModelPlugin.java b/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/SseMetaModelPlugin.java
deleted file mode 100644
index 1543476..0000000
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/SseMetaModelPlugin.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  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.
- */
-package org.apache.isis.extensions.sse;
-
-import org.springframework.stereotype.Component;
-
-import org.apache.isis.extensions.sse.facets.SseAnnotationFacetFactory;
-import org.apache.isis.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.metamodel.progmodel.ProgrammingModel;
-
-@Component
-public class SseMetaModelPlugin implements MetaModelRefiner {
-
-    @Override
-    public void refineProgrammingModel(ProgrammingModel programmingModel) {
-        programmingModel.addFactory(
-                ProgrammingModel.FacetProcessingOrder.Z2_AFTER_FINALLY, 
-                SseAnnotationFacetFactory.class, 
-                ProgrammingModel.Marker.INCUBATING);
-    }
-
-}
diff --git a/valuetypes/sse/pom.xml b/valuetypes/sse/ui/pom.xml
similarity index 80%
copy from valuetypes/sse/pom.xml
copy to valuetypes/sse/ui/pom.xml
index ebbfd1c..48b8995 100644
--- a/valuetypes/sse/pom.xml
+++ b/valuetypes/sse/ui/pom.xml
@@ -16,23 +16,26 @@
 
 	<parent>
 		<groupId>org.apache.isis.valuetypes</groupId>
-		<artifactId>isis-valuetypes</artifactId>
+		<artifactId>isis-valuetypes-sse</artifactId>
 		<version>2.0.0-M3-SNAPSHOT</version>
-		<relativePath>../pom.xml</relativePath>
 	</parent>
 
-	<artifactId>isis-valuetypes-sse</artifactId>
-	<name>Apache Isis Val - Server Sent Events</name>
-	<description></description>
+	<artifactId>isis-valuetypes-sse-ui</artifactId>
+	<name>Apache Isis Val - Server Sent Events (ui)</name>
 
 	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.sse</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/valuetypes/sse</git-plugin.propertiesDir>
+		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.sse.ui</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/valuetypes/sse/ui</git-plugin.propertiesDir>
 	</properties>
 
 	<dependencies>
 
 		<dependency>
+			<groupId>org.apache.isis.valuetypes</groupId>
+			<artifactId>isis-valuetypes-sse-metamodel</artifactId>
+		</dependency>
+
+		<dependency>
 			<groupId>org.apache.isis.core</groupId>
 			<artifactId>isis-metamodel</artifactId>
 		</dependency>
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/IsisModuleExtSse.java b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/IsisModuleValSseUi.java
similarity index 72%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/IsisModuleExtSse.java
rename to valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/IsisModuleValSseUi.java
index b62e7b4..c69d563 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/IsisModuleExtSse.java
+++ b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/IsisModuleValSseUi.java
@@ -16,19 +16,22 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.sse;
+package org.apache.isis.extensions.sse.ui;
 
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
-import org.apache.isis.extensions.sse.markup.ListeningMarkupPanelFactoriesForWicket;
-import org.apache.isis.extensions.sse.services.SseServiceDefault;
-import org.apache.isis.extensions.sse.webmodule.WebModuleServerSentEvents;
+import org.apache.isis.extensions.sse.metamodel.IsisModuleValSseMetaModel;
+import org.apache.isis.extensions.sse.ui.markup.ListeningMarkupPanelFactoriesForWicket;
+import org.apache.isis.extensions.sse.ui.services.SseServiceDefault;
+import org.apache.isis.extensions.sse.ui.webmodule.WebModuleServerSentEvents;
 
 @Configuration
 @Import({
+        // module dependencies
+        IsisModuleValSseMetaModel.class,
+
         // @Component's
-        SseMetaModelPlugin.class,
         ListeningMarkupPanelFactoriesForWicket.Parented.class,
         ListeningMarkupPanelFactoriesForWicket.Standalone.class,
         
@@ -36,6 +39,6 @@ import org.apache.isis.extensions.sse.webmodule.WebModuleServerSentEvents;
         SseServiceDefault.class,
         WebModuleServerSentEvents.class
 })
-public class IsisModuleExtSse {
+public class IsisModuleValSseUi {
 
 }
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkupComponent.java b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/markup/ListeningMarkupComponent.java
similarity index 97%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkupComponent.java
rename to valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/markup/ListeningMarkupComponent.java
index 49df232..3565e12 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkupComponent.java
+++ b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/markup/ListeningMarkupComponent.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.sse.markup;
+package org.apache.isis.extensions.sse.ui.markup;
 
 import javax.inject.Inject;
 
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkupComponent_observing.java b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/markup/ListeningMarkupComponent_observing.java
similarity index 98%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkupComponent_observing.java
rename to valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/markup/ListeningMarkupComponent_observing.java
index 2c6da61..17bec7f 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkupComponent_observing.java
+++ b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/markup/ListeningMarkupComponent_observing.java
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.isis.extensions.sse.markup;
+package org.apache.isis.extensions.sse.ui.markup;
 
 import java.io.IOException;
 import java.util.UUID;
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkupPanelFactoriesForWicket.java b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/markup/ListeningMarkupPanelFactoriesForWicket.java
similarity index 96%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkupPanelFactoriesForWicket.java
rename to valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/markup/ListeningMarkupPanelFactoriesForWicket.java
index d7b7079..84c0d3b 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/ListeningMarkupPanelFactoriesForWicket.java
+++ b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/markup/ListeningMarkupPanelFactoriesForWicket.java
@@ -17,12 +17,12 @@
  *  under the License.
  */
 
-package org.apache.isis.extensions.sse.markup;
+package org.apache.isis.extensions.sse.ui.markup;
 
 import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.value.LocalResourcePath;
-import org.apache.isis.extensions.sse.facets.SseObserveFacet;
+import org.apache.isis.extensions.sse.metamodel.facets.SseObserveFacet;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponentFactory;
 import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupPanelFactories;
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/js/ObservingComponent.js b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/markup/js/ObservingComponent.js
similarity index 100%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/markup/js/ObservingComponent.js
rename to valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/markup/js/ObservingComponent.js
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/services/SseServiceDefault.java b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/services/SseServiceDefault.java
similarity index 97%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/services/SseServiceDefault.java
rename to valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/services/SseServiceDefault.java
index 0a9be80..2461da4 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/services/SseServiceDefault.java
+++ b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/services/SseServiceDefault.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.sse.services;
+package org.apache.isis.extensions.sse.ui.services;
 
 import java.util.List;
 import java.util.Map;
@@ -42,9 +42,9 @@ import org.springframework.stereotype.Service;
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.extensions.sse.api.SseChannel;
-import org.apache.isis.extensions.sse.api.SseService;
-import org.apache.isis.extensions.sse.api.SseSource;
+import org.apache.isis.extensions.sse.applib.service.SseChannel;
+import org.apache.isis.extensions.sse.applib.service.SseService;
+import org.apache.isis.extensions.sse.applib.annotations.SseSource;
 import org.apache.isis.runtime.persistence.transaction.IsisTransactionAspectSupport;
 import org.apache.isis.runtime.session.IsisSessionFactory;
 
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/webmodule/ServerSentEventsServlet.java b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/webmodule/ServerSentEventsServlet.java
similarity index 93%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/webmodule/ServerSentEventsServlet.java
rename to valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/webmodule/ServerSentEventsServlet.java
index 585c20c..ce9f79d 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/webmodule/ServerSentEventsServlet.java
+++ b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/webmodule/ServerSentEventsServlet.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.sse.webmodule;
+package org.apache.isis.extensions.sse.ui.webmodule;
 
 import java.io.IOException;
 import java.util.Optional;
@@ -33,9 +33,9 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.isis.applib.util.JaxbAdapters;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.context._Context;
-import org.apache.isis.extensions.sse.api.SseChannel;
-import org.apache.isis.extensions.sse.api.SseService;
-import org.apache.isis.extensions.sse.markup.ListeningMarkup;
+import org.apache.isis.extensions.sse.applib.service.SseChannel;
+import org.apache.isis.extensions.sse.applib.service.SseService;
+import org.apache.isis.extensions.sse.applib.value.ListeningMarkup;
 
 import static org.apache.isis.commons.internal.base._With.requires;
 
@@ -44,7 +44,7 @@ import lombok.val;
 /**
  * Server-sent events.
  *  
- * @see https://www.w3schools.com/html/html5_serversentevents.asp
+ * @see <a href="https://www.w3schools.com/html/html5_serversentevents.asp">Server Sent Events (@ w3schools)</a>
  * 
  * @since 2.0
  *
diff --git a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/webmodule/WebModuleServerSentEvents.java b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/webmodule/WebModuleServerSentEvents.java
similarity index 97%
rename from valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/webmodule/WebModuleServerSentEvents.java
rename to valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/webmodule/WebModuleServerSentEvents.java
index e0c03d1..66e3d8a 100644
--- a/valuetypes/sse/src/main/java/org/apache/isis/extensions/sse/webmodule/WebModuleServerSentEvents.java
+++ b/valuetypes/sse/ui/src/main/java/org/apache/isis/extensions/sse/ui/webmodule/WebModuleServerSentEvents.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.extensions.sse.webmodule;
+package org.apache.isis.extensions.sse.ui.webmodule;
 
 import java.util.List;