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 2022/01/22 07:09:02 UTC

[isis] branch ISIS-2947 created (now 1ec29ea)

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

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


      at 1ec29ea  ISIS-2947: adds scaffolding and devnotes.adoc for graphql

This branch includes the following new commits:

     new 1ec29ea  ISIS-2947: adds scaffolding and devnotes.adoc for graphql

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[isis] 01/01: ISIS-2947: adds scaffolding and devnotes.adoc for graphql

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1ec29ea58499dd5859e9d8ac14476ba039c521e9
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Jan 22 07:08:46 2022 +0000

    ISIS-2947: adds scaffolding and devnotes.adoc for graphql
---
 .../modules/ROOT/pages/building-apache-isis.adoc   |   9 ++-
 antora/playbooks/site-incubator.yml                |   3 +
 antora/playbooks/site.yml                          |   3 +
 api/applib/pom.xml                                 |   4 +-
 api/schema/pom.xml                                 |  20 ++---
 examples/demo/README.adoc                          |   3 +-
 incubator/pom.xml                                  |  13 ++++
 incubator/viewers/graphql/adoc/antora.yml          |  19 +++++
 .../devnotes/example-demo-app-included-modules.png | Bin 0 -> 24299 bytes
 .../images/devnotes/graphql-included-modules.png   | Bin 0 -> 15359 bytes
 .../viewers/graphql/adoc/modules/graphql/nav.adoc  |   7 +-
 .../graphql/adoc/modules/graphql/pages/about.adoc  |   6 +-
 .../adoc/modules/graphql/pages/devnotes.adoc       |  82 +++++++++++++++++++++
 .../adoc/modules/graphql/partials/module-nav.adoc  |   4 +
 incubator/viewers/graphql/applib/pom.xml           |  50 +++++++++++++
 .../applib/IsisModuleIncViewerGraphqlApplib.java   |  12 +++
 incubator/viewers/graphql/model/pom.xml            |  55 ++++++++++++++
 .../model/IsisModuleIncViewerGraphqlModel.java     |  15 ++++
 incubator/viewers/graphql/pom.xml                  |  81 ++++++++++++++++++++
 incubator/viewers/graphql/viewer/pom.xml           |  40 ++++++++++
 .../viewer/IsisModuleIncViewerGraphqlViewer.java   |  15 ++++
 pom.xml                                            |  15 ++++
 22 files changed, 433 insertions(+), 23 deletions(-)

diff --git a/antora/components/conguide/modules/ROOT/pages/building-apache-isis.adoc b/antora/components/conguide/modules/ROOT/pages/building-apache-isis.adoc
index a1fec6f..3d6968c 100644
--- a/antora/components/conguide/modules/ROOT/pages/building-apache-isis.adoc
+++ b/antora/components/conguide/modules/ROOT/pages/building-apache-isis.adoc
@@ -239,13 +239,18 @@ where `module-xxx` and `module-yyy` correspond to profile names, as provided wit
 | Demo Application (Vaadin)
 
 | module-examples-demo-wicket
-| Demo Application (Wicket)
+| Demo Application (Wicket).
+
+Note that this also includes the Restful Objects and GraphQL viewers.
 
 | module-incubator-all
 | All Incubation Modules
 
+| module-incubator-graphql
+| The GraphQL Viewer
+
 | module-incubator-javafx
-| The JavaFx Viewer
+| The JavaFX Viewer
 
 | module-incubator-kroviz
 | The Kroviz Client (standalone viewer)
diff --git a/antora/playbooks/site-incubator.yml b/antora/playbooks/site-incubator.yml
index 556052d..7c42f55 100644
--- a/antora/playbooks/site-incubator.yml
+++ b/antora/playbooks/site-incubator.yml
@@ -40,6 +40,9 @@ content:
     - url: .
       start_path: incubator/clients/kroviz/adoc # incubator
       branches: HEAD
+    - url: .
+      start_path: incubator/viewers/graphql/adoc # incubator
+      branches: HEAD
 #    - url: .
 #      start_path: incubator/viewers/javafx/adoc # incubator
 #      branches: HEAD
diff --git a/antora/playbooks/site.yml b/antora/playbooks/site.yml
index 79cda85..87cb985 100644
--- a/antora/playbooks/site.yml
+++ b/antora/playbooks/site.yml
@@ -157,6 +157,9 @@ content:
     - url: .
       start_path: incubator/clients/kroviz/adoc # incubator
       branches: HEAD
+    - url: .
+      start_path: incubator/viewers/graphql/adoc # incubator
+      branches: HEAD
 #    - url: .
 #      start_path: incubator/viewers/javafx/adoc # incubator
 #      branches: HEAD
diff --git a/api/applib/pom.xml b/api/applib/pom.xml
index e869107..4839b67 100644
--- a/api/applib/pom.xml
+++ b/api/applib/pom.xml
@@ -29,7 +29,7 @@
 
     <artifactId>isis-applib</artifactId>
 
-    <name>Apache Isis Core - AppLib</name>
+    <name>Apache Isis Api - AppLib</name>
     <description>
         Isis application library, defining annotations and utilities for the
         default (Java) programming model.
@@ -87,7 +87,7 @@
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-schema</artifactId>
         </dependency>
-        
+
         <!-- marked for deprecation -->
     	<dependency>
 			<groupId>joda-time</groupId>
diff --git a/api/schema/pom.xml b/api/schema/pom.xml
index f4e25fa..29da2ec 100644
--- a/api/schema/pom.xml
+++ b/api/schema/pom.xml
@@ -1,13 +1,13 @@
 <?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 
+<!-- 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"
@@ -24,7 +24,7 @@
 	<artifactId>isis-schema</artifactId>
 
 	<packaging>jar</packaging>
-	<name>Apache Isis Core - Schemas</name>
+	<name>Apache Isis Api - Schemas</name>
 	<description>
         Apache Isis schemas, for conversion into canonical DTOs (for use in integration scenarios).
     </description>
diff --git a/examples/demo/README.adoc b/examples/demo/README.adoc
index e973812..37ea7dc 100644
--- a/examples/demo/README.adoc
+++ b/examples/demo/README.adoc
@@ -1,7 +1,8 @@
+
 :Notice: 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 ag [...]
 
 
 :demo_module_root: domain/src/main/adoc/modules/demo
 image:https://github.com/apache-isis-committers/isis-nightly/workflows/Nightly/badge.svg[link="https://github.com/apache-isis-committers/isis-nightly/actions?query=workflow%3A%22Nightly%22"]
 
-include::{demo_module_root}/pages/about.adoc[] 
+include::{demo_module_root}/pages/about.adoc[]
diff --git a/incubator/pom.xml b/incubator/pom.xml
index 05122ef..d736bc7 100644
--- a/incubator/pom.xml
+++ b/incubator/pom.xml
@@ -142,6 +142,18 @@
 
 			<dependency>
 				<groupId>org.apache.isis.incubator.viewer</groupId>
+				<artifactId>isis-viewer-graphql</artifactId>
+				<version>2.0.0-SNAPSHOT</version>
+			</dependency>
+
+			<dependency>
+				<groupId>org.apache.isis.incubator.viewer</groupId>
+				<artifactId>isis-viewer-javafx</artifactId>
+				<version>2.0.0-SNAPSHOT</version>
+			</dependency>
+
+			<dependency>
+				<groupId>org.apache.isis.incubator.viewer</groupId>
 				<artifactId>isis-viewer-vaadin</artifactId>
 				<version>2.0.0-SNAPSHOT</version>
 			</dependency>
@@ -185,6 +197,7 @@
 
 	<modules>
 <!-- 		<module>clients/kroviz</module> -->
+		<module>viewers/graphql</module>
 		<module>viewers/vaadin</module>
 		<module>viewers/javafx</module>
 		<module>../valuetypes/prism/vaadin</module>
diff --git a/incubator/viewers/graphql/adoc/antora.yml b/incubator/viewers/graphql/adoc/antora.yml
new file mode 100644
index 0000000..bc87cdc
--- /dev/null
+++ b/incubator/viewers/graphql/adoc/antora.yml
@@ -0,0 +1,19 @@
+#  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.
+
+name: incubator
+version: latest
diff --git a/incubator/viewers/graphql/adoc/modules/graphql/images/devnotes/example-demo-app-included-modules.png b/incubator/viewers/graphql/adoc/modules/graphql/images/devnotes/example-demo-app-included-modules.png
new file mode 100644
index 0000000..5ab514a
Binary files /dev/null and b/incubator/viewers/graphql/adoc/modules/graphql/images/devnotes/example-demo-app-included-modules.png differ
diff --git a/incubator/viewers/graphql/adoc/modules/graphql/images/devnotes/graphql-included-modules.png b/incubator/viewers/graphql/adoc/modules/graphql/images/devnotes/graphql-included-modules.png
new file mode 100644
index 0000000..03b551d
Binary files /dev/null and b/incubator/viewers/graphql/adoc/modules/graphql/images/devnotes/graphql-included-modules.png differ
diff --git a/examples/demo/README.adoc b/incubator/viewers/graphql/adoc/modules/graphql/nav.adoc
similarity index 72%
copy from examples/demo/README.adoc
copy to incubator/viewers/graphql/adoc/modules/graphql/nav.adoc
index e973812..b978522 100644
--- a/examples/demo/README.adoc
+++ b/incubator/viewers/graphql/adoc/modules/graphql/nav.adoc
@@ -1,7 +1,4 @@
-:Notice: 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 ag [...]
-
 
-:demo_module_root: domain/src/main/adoc/modules/demo
-image:https://github.com/apache-isis-committers/isis-nightly/workflows/Nightly/badge.svg[link="https://github.com/apache-isis-committers/isis-nightly/actions?query=workflow%3A%22Nightly%22"]
+:Notice: 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 ag [...]
 
-include::{demo_module_root}/pages/about.adoc[] 
+include::incubator:ROOT:partial$component-nav.adoc[]
diff --git a/examples/demo/README.adoc b/incubator/viewers/graphql/adoc/modules/graphql/pages/about.adoc
similarity index 72%
copy from examples/demo/README.adoc
copy to incubator/viewers/graphql/adoc/modules/graphql/pages/about.adoc
index e973812..eb8a2eb 100644
--- a/examples/demo/README.adoc
+++ b/incubator/viewers/graphql/adoc/modules/graphql/pages/about.adoc
@@ -1,7 +1,7 @@
+= GraphQL (Incubating)
+
 :Notice: 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 ag [...]
 
+WARNING: TODO:  v2.0
 
-:demo_module_root: domain/src/main/adoc/modules/demo
-image:https://github.com/apache-isis-committers/isis-nightly/workflows/Nightly/badge.svg[link="https://github.com/apache-isis-committers/isis-nightly/actions?query=workflow%3A%22Nightly%22"]
 
-include::{demo_module_root}/pages/about.adoc[] 
diff --git a/incubator/viewers/graphql/adoc/modules/graphql/pages/devnotes.adoc b/incubator/viewers/graphql/adoc/modules/graphql/pages/devnotes.adoc
new file mode 100644
index 0000000..035e9a0
--- /dev/null
+++ b/incubator/viewers/graphql/adoc/modules/graphql/pages/devnotes.adoc
@@ -0,0 +1,82 @@
+= How to setup Dev Environment
+
+:Notice: 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 ag [...]
+
+To speed up development it makes sense to only have the IDE build the stuff that's needed.
+The approach I use is to have Maven perform a full build of everything, more or less (including the example/demo app), so that the local cache in `~/.m2/repository` is up-to-date.
+Then, in the IDE, exclude the parts that won't change and include in the relevant parts of the example/demo app (which we can use to iterate on).
+
+== Maven Build
+
+Perform a full mvn build, but exclude all of the incubator modules (vaadin in particular has some prereqs that aren't important to us here), and explicitly bring in this module.
+Also include the 'wicket' variant of the demo app, as this also includes the graphql viewer (as well as the RO viewer).
+
+[source,bash]
+----
+mvn install \
+  -D module-examples-demo-wicket \
+  -D module-incubator-graphql \
+  -D skipTests
+----
+
+
+== IntelliJ
+
+In IntelliJ, ignore most of the projects except the ones to be changed or will want to read (eg core).
+Also, explicit _include_ the relevant parts of the demo app (chances are that this will be excluded initially due to the default profiles.
+
+Thus:
+
+* exclude `api` (`applib` and `schema`)
++
+I find that IntelliJ can mess up with compiling applib as it depends on DTO classes in schema generated by the mvn maven-jaxb2-plugin plugin; since they change very infrequently, easier to simply pick them up as prebuilt libraries from `~/.m2/repository`.
+
+* include `isis-parent`
+
+* include `commons`
+
+* include all of `core`
++
+for the `metamodel`, `interaction` and `runtime`/`runtimeservices`.
+Since that is the bulk of core, it's easiest to include everything.
+
+* include `viewers/common`
++
+as it makes sense for this to be a dependency
+
+* include `incubator/viewers/graphql` (of course!)
++
+image::devnotes/graphql-included-modules.png[width=300px]
+
+* optionally include `viewers/restfulobjects`
++
+for a bit of "monkey see, monkey do"
+
+* exclude everything else
+
+Then, add in parts of the demo app:
+
+image::devnotes/example-demo-app-included-modules.png[width=300px]
+
+That is:
+
+* include `examples/demo/domain`
+* include `examples/demo/web`
+* include `examples/demo/wicket/demo-wicket-common`
+* include `examples/demo/wicket/demo-wicket-jpa`
++
+this is where the SpringApplication -- `DemoAppWicketJpa` -- resides.
+It's faster to use the jpa variant rather than the jdo variant; no need to wait for the DN enhancer.
++
+[TIP]
+====
+you'll notice that examples/demo/domain has both Jdo and Jpa entities.
+These are both compiled, however at runtime the Jdo variants are ignored because the `DemoAppWicketJpa` explicitly sets the "demo-jpa" Spring profile:
+
+[source,java]
+----
+System.setProperty("spring.profiles.active", "demo-jpa");
+----
+====
+
+
diff --git a/incubator/viewers/graphql/adoc/modules/graphql/partials/module-nav.adoc b/incubator/viewers/graphql/adoc/modules/graphql/partials/module-nav.adoc
new file mode 100644
index 0000000..67d1f99
--- /dev/null
+++ b/incubator/viewers/graphql/adoc/modules/graphql/partials/module-nav.adoc
@@ -0,0 +1,4 @@
+
+* xref:incubator:graphql:about.adoc[GraphQL]
+* xref:incubator:graphql:devnotes.adoc[How to setup Dev Environment]
+
diff --git a/incubator/viewers/graphql/applib/pom.xml b/incubator/viewers/graphql/applib/pom.xml
new file mode 100644
index 0000000..a44fcc0
--- /dev/null
+++ b/incubator/viewers/graphql/applib/pom.xml
@@ -0,0 +1,50 @@
+<?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.isis.incubator.viewer</groupId>
+		<artifactId>isis-viewer-graphql</artifactId>
+		<version>2.0.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>isis-viewer-graphql-applib</artifactId>
+	<name>Apache Isis Inc - Viewer GraphQL (Applib)</name>
+
+	<properties>
+		<jar-plugin.automaticModuleName>org.apache.isis.incubator.viewer.graphql.model</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/incubator/viewer/graphql/model</git-plugin.propertiesDir>
+	</properties>
+
+	<dependencies>
+
+		<dependency>
+			<groupId>org.apache.isis.core</groupId>
+			<artifactId>isis-applib</artifactId>
+		</dependency>
+
+
+		<!-- TEST DEPENDENCIES -->
+
+		<dependency>
+			<groupId>org.apache.isis.core</groupId>
+			<artifactId>isis-core-internaltestsupport</artifactId>
+			<scope>test</scope>
+		</dependency>
+
+	</dependencies>
+
+</project>
diff --git a/incubator/viewers/graphql/applib/src/main/java/org/apache/isis/viewer/graphql/applib/IsisModuleIncViewerGraphqlApplib.java b/incubator/viewers/graphql/applib/src/main/java/org/apache/isis/viewer/graphql/applib/IsisModuleIncViewerGraphqlApplib.java
new file mode 100644
index 0000000..0067793
--- /dev/null
+++ b/incubator/viewers/graphql/applib/src/main/java/org/apache/isis/viewer/graphql/applib/IsisModuleIncViewerGraphqlApplib.java
@@ -0,0 +1,12 @@
+package org.apache.isis.viewer.graphql.applib;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+@Configuration
+@Import({
+        // modules
+})
+public class IsisModuleIncViewerGraphqlApplib {
+}
+
diff --git a/incubator/viewers/graphql/model/pom.xml b/incubator/viewers/graphql/model/pom.xml
new file mode 100644
index 0000000..a12ebd9
--- /dev/null
+++ b/incubator/viewers/graphql/model/pom.xml
@@ -0,0 +1,55 @@
+<?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.isis.incubator.viewer</groupId>
+		<artifactId>isis-viewer-graphql</artifactId>
+		<version>2.0.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>isis-viewer-graphql-model</artifactId>
+	<name>Apache Isis Inc - Viewer GraphQL (Model)</name>
+
+	<properties>
+		<jar-plugin.automaticModuleName>org.apache.isis.incubator.viewer.graphql.model</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/incubator/viewer/graphql/model</git-plugin.propertiesDir>
+	</properties>
+
+	<dependencies>
+
+		<dependency>
+			<groupId>org.apache.isis.viewer</groupId>
+			<artifactId>isis-viewer-common</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.isis.incubator.viewer</groupId>
+			<artifactId>isis-viewer-graphql-applib</artifactId>
+		</dependency>
+
+
+		<!-- TEST DEPENDENCIES -->
+
+		<dependency>
+			<groupId>org.apache.isis.core</groupId>
+			<artifactId>isis-core-internaltestsupport</artifactId>
+			<scope>test</scope>
+		</dependency>
+
+	</dependencies>
+
+</project>
diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/isis/viewer/graphql/model/IsisModuleIncViewerGraphqlModel.java b/incubator/viewers/graphql/model/src/main/java/org/apache/isis/viewer/graphql/model/IsisModuleIncViewerGraphqlModel.java
new file mode 100644
index 0000000..e51cbeb
--- /dev/null
+++ b/incubator/viewers/graphql/model/src/main/java/org/apache/isis/viewer/graphql/model/IsisModuleIncViewerGraphqlModel.java
@@ -0,0 +1,15 @@
+package org.apache.isis.viewer.graphql.model;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.isis.viewer.graphql.applib.IsisModuleIncViewerGraphqlApplib;
+
+@Configuration
+@Import({
+        // modules
+        IsisModuleIncViewerGraphqlApplib.class
+})
+public class IsisModuleIncViewerGraphqlModel {
+}
+
diff --git a/incubator/viewers/graphql/pom.xml b/incubator/viewers/graphql/pom.xml
new file mode 100644
index 0000000..b933a02
--- /dev/null
+++ b/incubator/viewers/graphql/pom.xml
@@ -0,0 +1,81 @@
+<?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>
+
+		<!--
+		the other incubator viewers use this as their parent.
+		However, this then means that it's difficult to setup a mvn profile that will just build the graphql
+		viewer without the other incubating viewers.
+
+		As the isis-incubator module doesn't do much for us, we'll just skip and use the isis-core as our module
+		(that'll be the ultimate parent one day anyway).
+
+		<groupId>org.apache.isis.incubator</groupId>
+		<artifactId>isis-incubator</artifactId>
+		<version>2.0.0-SNAPSHOT</version>
+		<relativePath>../../pom.xml</relativePath>
+		-->
+
+		<groupId>org.apache.isis.core</groupId>
+		<artifactId>isis-core</artifactId>
+		<version>2.0.0-SNAPSHOT</version>
+		<relativePath>../../../core/pom.xml</relativePath>
+	</parent>
+
+	<groupId>org.apache.isis.incubator.viewer</groupId>
+	<artifactId>isis-viewer-graphql</artifactId>
+	<name>Apache Isis Inc - Viewer GraphQL</name>
+
+	<packaging>pom</packaging>
+
+	<properties>
+		<jar-plugin.automaticModuleName>org.apache.isis.incubator.viewer.graphql</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/incubator/viewer/graphql</git-plugin.propertiesDir>
+	</properties>
+
+	<dependencyManagement>
+		<dependencies>
+
+			<dependency>
+				<groupId>org.apache.isis.incubator.viewer</groupId>
+				<artifactId>isis-viewer-graphql-applib</artifactId>
+				<version>2.0.0-SNAPSHOT</version>
+			</dependency>
+
+			<dependency>
+				<groupId>org.apache.isis.incubator.viewer</groupId>
+				<artifactId>isis-viewer-graphql-model</artifactId>
+				<version>2.0.0-SNAPSHOT</version>
+			</dependency>
+
+			<dependency>
+				<groupId>org.apache.isis.incubator.viewer</groupId>
+				<artifactId>isis-viewer-graphql-viewer</artifactId>
+				<version>2.0.0-SNAPSHOT</version>
+			</dependency>
+
+		</dependencies>
+	</dependencyManagement>
+
+	<modules>
+		<module>applib</module>
+		<module>model</module>
+		<module>viewer</module>
+	</modules>
+
+</project>
diff --git a/incubator/viewers/graphql/viewer/pom.xml b/incubator/viewers/graphql/viewer/pom.xml
new file mode 100644
index 0000000..02ab69f
--- /dev/null
+++ b/incubator/viewers/graphql/viewer/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.isis.incubator.viewer</groupId>
+		<artifactId>isis-viewer-graphql</artifactId>
+		<version>2.0.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>isis-viewer-graphql-viewer</artifactId>
+	<name>Apache Isis Inc - Viewer GraphQL (Viewer)</name>
+
+	<properties>
+		<jar-plugin.automaticModuleName>org.apache.isis.incubator.viewer.graphql.viewer</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/incubator/viewer/graphql/viewer</git-plugin.propertiesDir>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.isis.incubator.viewer</groupId>
+			<artifactId>isis-viewer-graphql-model</artifactId>
+		</dependency>
+	</dependencies>
+
+
+</project>
diff --git a/incubator/viewers/graphql/viewer/src/main/java/org/apache/isis/viewer/graphql/viewer/IsisModuleIncViewerGraphqlViewer.java b/incubator/viewers/graphql/viewer/src/main/java/org/apache/isis/viewer/graphql/viewer/IsisModuleIncViewerGraphqlViewer.java
new file mode 100644
index 0000000..5bb067d
--- /dev/null
+++ b/incubator/viewers/graphql/viewer/src/main/java/org/apache/isis/viewer/graphql/viewer/IsisModuleIncViewerGraphqlViewer.java
@@ -0,0 +1,15 @@
+package org.apache.isis.viewer.graphql.viewer;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.isis.viewer.graphql.model.IsisModuleIncViewerGraphqlModel;
+
+@Configuration
+@Import({
+        // modules
+        IsisModuleIncViewerGraphqlModel.class
+})
+public class IsisModuleIncViewerGraphqlViewer {
+}
+
diff --git a/pom.xml b/pom.xml
index ade4130..2955ff9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -155,6 +155,7 @@
 			<modules>
 				<module>examples/demo/javafx</module>
 				<!-- prerequisites ... -->
+				<module>examples/demo/domain</module>
 				<module>incubator/viewers/javafx</module>
 			</modules>
 		</profile>
@@ -171,6 +172,7 @@
 				<module>examples/demo/wicket/jdo</module>
 				<module>examples/demo/wicket/jpa</module>
 				<!-- prerequisites ... -->
+				<module>examples/demo/domain</module>
 				<module>examples/demo/web</module>
 			</modules>
 		</profile>
@@ -186,6 +188,7 @@
 			<modules>
 				<module>examples/demo/vaadin</module>
 				<!-- prerequisites ... -->
+				<module>examples/demo/domain</module>
 				<module>incubator/viewers/vaadin</module>
 				<module>examples/demo/web</module>
 				<module>examples/demo/wicket/common</module>
@@ -209,6 +212,18 @@
 		</profile>
 
 		<profile>
+			<id>module-incubator-graphql</id>
+			<activation>
+				<property>
+					<name>module-incubator-graphql</name>
+				</property>
+			</activation>
+			<modules>
+				<module>incubator/viewers/graphql</module>
+			</modules>
+		</profile>
+
+		<profile>
 			<id>module-incubator-javafx</id>
 			<activation>
 				<property>