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 2019/12/02 23:02:09 UTC
[isis-app-simpleapp] 01/09: ISIS-2148 - Initial take-on (moved out
from apache/isis)
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git
commit cc93a3707f373b498d88135c64c9811c5d1b1465
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Dec 2 10:43:53 2019 +0000
ISIS-2148 - Initial take-on (moved out from apache/isis)
---
.gitattributes | 51 +
.gitignore | 43 +
.gitlab-ci.yml | 51 +
.m2/settings.xml | 15 +
README.adoc | 149 +++
application/.gitignore | 1 +
application/log4j2-test.xml | 60 +
application/pom.xml | 133 +++
.../domainapp/application/ApplicationModule.java | 33 +
...mainAppFixtureScriptsSpecificationProvider.java | 45 +
.../fixture/scenarios/DomainAppDemo.java | 41 +
.../services/health/HealthCheckServiceImpl.java | 47 +
.../services/homepage/HomePageService.java | 42 +
.../services/homepage/HomePageViewModel.java | 47 +
.../services/homepage/HomePageViewModel.layout.xml | 51 +
.../services/homepage/HomePageViewModel.png | Bin 0 -> 456 bytes
application/src/main/resources/log4j2-spring.xml | 42 +
.../application/bdd/RunIntegBddSpecs.java | 41 +
.../application/bdd/glue/SimpleObjectsStepDef.java | 100 ++
.../SimpleObjectSpec_listAllAndCreate.feature | 24 +
.../integtests/ApplicationIntegTestAbstract.java | 57 +
.../integtests/mml/DomainModel_IntegTest.java | 41 +
.../integtests/mml/MetaModelService_IntegTest.java | 145 +++
...omainAppFixtureScriptsSpecificationProvider.xml | 44 +
...tion.services.health.HealthCheckServiceImpl.xml | 44 +
...ication.services.homepage.HomePageViewModel.xml | 617 ++++++++++
...ainapp.modules.simple.dom.impl.SimpleObject.xml | 1182 ++++++++++++++++++++
...inapp.modules.simple.dom.impl.SimpleObjects.xml | 399 +++++++
.../application/integtests/mml/received/.gitignore | 1 +
.../integtests/smoke/Smoke_IntegTest.java | 102 ++
enhance-all.sh | 2 +
module-simple/.gitignore | 8 +
module-simple/log4j2-test.xml | 60 +
module-simple/logging-dn-enhance.properties | 41 +
module-simple/pom.xml | 84 ++
.../src/main/java/META-INF/persistence.xml | 26 +
.../domainapp/modules/simple/SimpleModule.java | 53 +
.../modules/simple/dom/impl/SimpleObject.java | 116 ++
.../simple/dom/impl/SimpleObject.layout.xml | 68 ++
.../modules/simple/dom/impl/SimpleObject.png | Bin 0 -> 653 bytes
.../modules/simple/dom/impl/SimpleObjects.java | 96 ++
.../domainapp/modules/simple/dom/types/Name.java | 54 +
.../domainapp/modules/simple/dom/types/Notes.java | 43 +
.../simple/fixture/SimpleObjectBuilder.java | 50 +
.../simple/fixture/SimpleObject_persona.java | 66 ++
.../modules/simple/dom/impl/SimpleObject_Test.java | 50 +
.../simple/dom/impl/SimpleObjects_Test.java | 115 ++
.../integtests/SimpleModuleIntegTestAbstract.java | 56 +
.../integtests/tests/SimpleObject_IntegTest.java | 153 +++
.../integtests/tests/SimpleObjects_IntegTest.java | 111 ++
pom.xml | 81 ++
webapp/lib/.gitignore | 0
webapp/pom.xml | 243 ++++
.../src/main/java/domainapp/webapp/SimpleApp.java | 75 ++
.../domainapp/webapp/layout/menubars.layout.xml | 115 ++
webapp/src/main/resources/application.yml | 145 +++
webapp/src/main/resources/banner.txt | 6 +
.../main/resources/config/application.properties | 12 +
webapp/src/main/resources/shiro.ini | 93 ++
.../src/main/resources/static/css/application.css | 19 +
.../static/images/apache-isis/logo-48x48.png | Bin 0 -> 2622 bytes
.../resources/static/images/apache-isis/logo.png | Bin 0 -> 14160 bytes
.../src/main/resources/static/images/favicon.png | Bin 0 -> 2143 bytes
webapp/src/main/resources/static/index.html | 117 ++
.../main/resources/static/scripts/application.js | 3 +
webapp/src/main/webapp/WEB-INF/translations-en.po | 674 +++++++++++
webapp/src/main/webapp/WEB-INF/translations-es.po | 673 +++++++++++
webapp/src/main/webapp/WEB-INF/translations-nl.po | 674 +++++++++++
webapp/src/main/webapp/WEB-INF/translations.po | 673 +++++++++++
webapp/src/main/webapp/WEB-INF/web.xml | 27 +
.../test/java/domain/webapp/lockdown/.gitignore | 1 +
.../webapp/lockdown/LockDownMavenDeps_Test.java | 50 +
.../LockDownMavenDeps_Test.list.approved.txt | 225 ++++
.../LockDownMavenDeps_Test.tree.approved.txt | 224 ++++
74 files changed, 9030 insertions(+)
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..b1eafb6
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,51 @@
+#
+#
+# text files are normalized (convert crlf => lf)
+# binary files are not normalized (binary is a macro for -text -diff)
+#
+#
+
+
+# Unless otherwise stated, assume text
+
+* text=auto
+
+
+*.java text diff=java
+*.html text diff=html
+*.xhtml text diff=html
+*.xml text
+*.txt text
+
+
+*.jar binary
+*.so binary
+*.dll binary
+
+# images
+*.jpg binary
+*.jpeg binary
+*.png binary
+*.pdn binary
+*.pdn binary
+
+
+*.cs text diff=csharp
+
+*.sln merge=union
+*.csproj merge=union
+*.vbproj merge=union
+*.fsproj merge=union
+*.dbproj merge=union
+
+*.doc diff=astextplain
+*.DOC diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot diff=astextplain
+*.DOT diff=astextplain
+*.pdf diff=astextplain
+*.PDF diff=astextplain
+*.rtf diff=astextplain
+*.RTF diff=astextplain
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..371262a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,43 @@
+*~
+*.swp
+*.class
+bin/
+target/
+target-ide/
+logs/
+.settings/
+.project
+.classpath
+.idea
+*.iml
+
+build/
+
+JArchitectOut/
+*.jdproj
+
+neo4j_DB/
+
+# log files
+datanucleus.log
+isis.log
+i18n-po.log
+hs_err_pid*.log
+
+# Package Files #
+*.war
+*.ear
+
+dependency-reduced-pom.xml
+pom.xml.tag
+pom.xml.next
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+
+.clover/
+
+
+rebel.xml
+translations.pot
+
+.flattened-pom.xml
\ No newline at end of file
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..7d4a33b
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,51 @@
+#
+# requires the following gitlab secret variables
+# - DOCKER_REGISTRY_USERNAME
+# - DOCKER_REGISTRY_PASSWORD
+# - DOCKER_REGISTRY_EMAIL
+# - DOCKER_REGISTRY_NAME # eg "registry-1.docker.io" (for docker hub)
+ # or "docker-dev.incode.cloud" (eg a cloud-based nexus)
+# - DOCKER_REGISTRY_URL # eg "https://index.docker.io/v1/" (for docker hub)
+ # or "https://repo.incode.cloud/repository/docker-dev/" (eg a cloud-based nexus)
+#
+
+image: maven:3.5.3-jdk-8
+
+before_script:
+ - export REVISION=$(date +%Y%m%d.%H%M).$CI_COMMIT_REF_SLUG.$(echo $CI_COMMIT_SHA | cut -c1-8)
+
+services:
+ - docker:dind
+
+variables:
+ DOCKER_HOST: tcp://docker:2375
+ DOCKER_DRIVER: overlay2
+ MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dskip.cloudbees-estatio-repositories -Dskip.sonatype-snapshots -Dskip.apache-snapshots"
+ APP_NAME: "simpleapp"
+
+stages:
+ - build-package-push
+
+build-package-push:
+ stage: build-package-push
+ script:
+ - echo "REVISION=$REVISION"
+ - >
+ mvn --batch-mode \
+ install \
+ -Drevision=$REVISION \
+ -Dmavenmixin-docker \
+ -Ddocker-plugin.imageName=$DOCKER_REGISTRY_NAME/$DOCKER_REGISTRY_USERNAME/$APP_NAME
+ - >
+ mvn -s .m2/settings.xml \
+ --batch-mode \
+ docker:push@push-image-tagged \
+ -pl webapp \
+ -Drevision=$REVISION \
+ -DskipTests \
+ -Dskip.isis-swagger \
+ -Dmavenmixin-docker \
+ -Ddocker-plugin.imageName=$DOCKER_REGISTRY_USERNAME/$DOCKER_REGISTRY_REPOSITORY \
+ -Ddocker-plugin.serverId=docker-registry \
+ -Ddocker.registryUrl=$DOCKER_REGISTRY_URL
+
diff --git a/.m2/settings.xml b/.m2/settings.xml
new file mode 100644
index 0000000..6038b0e
--- /dev/null
+++ b/.m2/settings.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
+ <servers>
+ <server>
+ <id>docker-registry</id>
+ <username>${env.DOCKER_REGISTRY_USERNAME}</username>
+ <password>${env.DOCKER_REGISTRY_PASSWORD}</password>
+ <configuration>
+ <email>${env.DOCKER_REGISTRY_EMAIL}</email>
+ </configuration>
+ </server>
+ </servers>
+</settings>
diff --git a/README.adoc b/README.adoc
new file mode 100644
index 0000000..79c242a
--- /dev/null
+++ b/README.adoc
@@ -0,0 +1,149 @@
+= SimpleApp
+
+This is a simple link:http://isis.apache.org[Apache Isis] application, but structured so it can be used as a starting point for developing your own applications.
+
+
+
+== Quick start
+
+Build using:
+
+[source,bash]
+----
+mvn clean install
+----
+
+Run using:
+
+[source,bash]
+----
+mvn -pl webapp spring-boot:run
+----
+
+Login using:
+
+* username: `sven`
+* password: `pass`
+
+The app runs with HSQLDB running in-memory, with sample data set up using link:https://isis.apache.org/guides/ugtst.html#_ugtst_fixture-scripts[fixture scripts].
+
+
+
+== Application Structure
+
+The following table explains the contents of each of the directories:
+
+[width="100%",options="header,footer", cols="2a,4a"]
+|====================
+|Directory
+|Description
+
+|`application`
+|Defines application-level classes such as menus and the ``AppManifest`` (which defines the modules that make up the application).
+It also holds application-wide integration tests/BDD specs.
+
+|`module-simple`
+|Holds the "simple" module, consisting of the `SimpleObject` entity and supporting repository, along with module-specific unit- and integration tests.
+Also runs `isis:validate` goal for the domain objects within the module. +
+
+[TIP]
+====
+Larger applications should consist of multiple modules; each such module can be copied from this starter module.
+====
+
+|`webapp`
+|Assembles the application into a webapp (comprising both the Wicket viewer and Restful Objects viewer) and also as a docker image, and runs the `isis:swagger` goal.
+
+
+|====================
+
+== More advanced use cases
+
+* To enhance all JDO entities prior to running: +
++
+[source,bash]
+----
+mvn -pl module-simple datanucleus:enhance -o
+----
+
+
+* To disable the running of unit tests: +
++
+[source,bash]
+----
+mvn -DskipUTs
+----
++
+[TIP]
+====
+By default, output of unit tests are in `target/surefire-unittest-reports` (in the ``module-simple`` modules).
+====
+
+* To disable the running of integration tests: +
++
+[source,bash]
+----
+mvn -DskipITs
+----
++
+[TIP]
+====
+By default, output of integration tests are in `target/surefire-integtest-reports` (in the ``application`` and ``module-simple`` modules).
+====
+
+* To disable the running of BDD specs: +
++
+[source,bash]
+----
+mvn -DskipBSs
+----
++
+[TIP]
+====
+By default, output of integration tests are in `target/surefire-integbddspecs-reports` (in the ``application`` module).
+====
+
+* To disable the running of all tests and BDD specs: +
++
+[source,bash]
+----
+mvn -DskipTests
+----
+
+//* To package up the application as a docker image (specifying the docker image name as a system property): +
+//+
+//[source,bash]
+//----
+//mvn install -Dmavenmixin-docker -Ddocker-plugin.imageName=mycompany/myapp
+//----
+//+
+//Alternatively, define the `${docker-plugin.imageName}` in the `webapp` module and use simply: +
+//+
+//[source,bash]
+//----
+//mvn install -Dmavenmixin-docker
+//----
+//+
+//The packaged image can be viewed using `docker images`.
+//
+//* To run a docker image previously packaged: +
+//+
+//[source,bash]
+//----
+//docker container run -d -p 8080:8080 mycompany/myapp
+//----
+//+
+//This can then be accessed at link:http://localhost:8080[localhost:8080].
+//+
+//See link:https://github.com/danhaywood/java-mavenmixin-docker#how-to-consume[mavenmixin-docker] for further details on how to run docker images.
+//
+//* To upload the application as a docker image to link:https://hub.docker.com[docker hub] (or some other docker registry): +
+//+
+//[source,bash]
+//----
+//mvn -pl webapp deploy -Dmavenmixin-docker
+//----
+//+
+//This assumes that the `${docker-plugin.imageName}` property has been defined, _and_ also that docker registry credentials have been specified in `~/.m2/settings.xml`.
+//Once more, see link:https://github.com/danhaywood/java-mavenmixin-docker#how-to-configure[mavenmixin-docker] for further details.
+
diff --git a/application/.gitignore b/application/.gitignore
new file mode 100644
index 0000000..c71ea97
--- /dev/null
+++ b/application/.gitignore
@@ -0,0 +1 @@
+/.apt_generated/
diff --git a/application/log4j2-test.xml b/application/log4j2-test.xml
new file mode 100644
index 0000000..56e8ad6
--- /dev/null
+++ b/application/log4j2-test.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN">
+ <Properties>
+ <Property name="PID">????</Property>
+ <Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
+ <Property name="LOG_LEVEL_PATTERN">%5p</Property>
+ <Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
+ <Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+ <Property name="FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+ </Properties>
+ <Appenders>
+ <Console name="Console" target="SYSTEM_OUT" follow="true">
+ <PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" />
+ </Console>
+ </Appenders>
+ <Loggers>
+ <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
+ <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
+ <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
+ <logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
+ <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
+ <Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
+ <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
+ <logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
+
+ <logger name="org.apache.directory" level="warn"/>
+ <logger name="org.apache.directory.api.ldap.model.entry.Value" level="off"/>
+
+ <logger name="DataNucleus.Persistence" level="info"/>
+ <logger name="DataNucleus.Transaction" level="info"/>
+ <logger name="DataNucleus.Datastore.Schema" level="info"/>
+ <logger name="DataNucleus.Datastore.Native" level="info"/>
+
+ <Root level="info">
+ <AppenderRef ref="Console" />
+ </Root>
+ </Loggers>
+</Configuration>
+
+<!-- # DataNucleus Logging Categories -->
+<!-- DataNucleus.Persistence - All messages relating to the persistence process -->
+<!-- DataNucleus.Transaction - All messages relating to transactions -->
+<!-- DataNucleus.Connection - All messages relating to Connections. -->
+<!-- DataNucleus.Query - All messages relating to queries -->
+<!-- DataNucleus.Cache - All messages relating to the DataNucleus Cache -->
+<!-- DataNucleus.MetaData - All messages relating to MetaData -->
+<!-- DataNucleus.Datastore - All general datastore messages -->
+<!-- DataNucleus.Datastore.Schema - All schema related datastore log messages -->
+<!-- DataNucleus.Datastore.Persist - All datastore persistence messages -->
+<!-- DataNucleus.Datastore.Retrieve - All datastore retrieval messages -->
+<!-- DataNucleus.Datastore.Native - Log of all 'native' statements sent to the datastore -->
+<!-- DataNucleus.General - All general operational messages -->
+<!-- DataNucleus.Lifecycle - All messages relating to object lifecycle changes -->
+<!-- DataNucleus.ValueGeneration - All messages relating to value generation -->
+<!-- DataNucleus.Enhancer - All messages from the DataNucleus Enhancer. -->
+<!-- DataNucleus.SchemaTool - All messages from DataNucleus SchemaTool -->
+<!-- DataNucleus.JDO - All messages general to JDO -->
+<!-- DataNucleus.JPA - All messages general to JPA -->
+<!-- DataNucleus.JCA - All messages relating to Connector JCA. -->
+<!-- DataNucleus.IDE - Messages from the DataNucleus IDE. -->
\ No newline at end of file
diff --git a/application/pom.xml b/application/pom.xml
new file mode 100644
index 0000000..ee571d5
--- /dev/null
+++ b/application/pom.xml
@@ -0,0 +1,133 @@
+<?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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.isis.examples.apps</groupId>
+ <artifactId>simpleapp</artifactId>
+ <version>2.0.0-M3-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>simpleapp-application</artifactId>
+ <name>Apache Isis App - SimpleApp Application</name>
+
+ <description>This defines the application (manifest) and runs application-level fixtures and integration (smoke) tests</description>
+
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven-cucumber-reporting.version>4.11.2</maven-cucumber-reporting.version>
+ </properties>
+
+ <build>
+ <resources>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <filtering>false</filtering>
+ <directory>src/test/resources</directory>
+ </testResource>
+ <testResource>
+ <filtering>false</filtering>
+ <directory>src/test/java</directory>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <groupId>net.masterthought</groupId>
+ <artifactId>maven-cucumber-reporting</artifactId>
+ <version>${maven-cucumber-reporting.version}</version>
+ <executions>
+ <execution>
+ <id>execution</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <configuration>
+ <projectName>SimpleApp</projectName>
+ <outputDirectory>${project.build.directory}</outputDirectory>
+ <inputDirectory>${project.build.directory}</inputDirectory>
+ <jsonFiles>
+ <param>**/*.json</param>
+ </jsonFiles>
+ <skip>${skipBSs}</skip>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>simpleapp-module-simple</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.mavendeps</groupId>
+ <artifactId>isis-mavendeps-webapp</artifactId>
+ <type>pom</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.mavendeps</groupId>
+ <artifactId>isis-mavendeps-jdk11</artifactId>
+ <type>pom</type>
+ </dependency>
+
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.mavendeps</groupId>
+ <artifactId>isis-mavendeps-testing</artifactId>
+ <type>pom</type>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ </dependencies>
+
+</project>
diff --git a/application/src/main/java/domainapp/application/ApplicationModule.java b/application/src/main/java/domainapp/application/ApplicationModule.java
new file mode 100644
index 0000000..684e332
--- /dev/null
+++ b/application/src/main/java/domainapp/application/ApplicationModule.java
@@ -0,0 +1,33 @@
+/*
+ * 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 domainapp.application;
+
+import org.apache.isis.extensions.fixtures.modules.Module;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import domainapp.modules.simple.SimpleModule;
+
+@Configuration
+@Import(SimpleModule.class)
+@ComponentScan
+public class ApplicationModule implements Module {
+
+}
diff --git a/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java b/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
new file mode 100644
index 0000000..f51acff
--- /dev/null
+++ b/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
@@ -0,0 +1,45 @@
+/*
+ * 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 domainapp.application.fixture;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
+import org.apache.isis.extensions.fixtures.fixturespec.FixtureScriptsSpecification;
+import org.apache.isis.extensions.fixtures.fixturespec.FixtureScriptsSpecificationProvider;
+
+import domainapp.application.fixture.scenarios.DomainAppDemo;
+
+/**
+ * Specifies where to find fixtures, and other settings.
+ */
+@DomainService(
+ nature = NatureOfService.DOMAIN
+ )
+public class DomainAppFixtureScriptsSpecificationProvider implements FixtureScriptsSpecificationProvider {
+ @Override
+ public FixtureScriptsSpecification getSpecification() {
+ return FixtureScriptsSpecification
+ .builder(DomainAppFixtureScriptsSpecificationProvider.class)
+ .with(FixtureScripts.MultipleExecutionStrategy.EXECUTE)
+ .withRunScriptDefault(DomainAppDemo.class)
+ .withRecreate(DomainAppDemo.class)
+ .build();
+ }
+}
diff --git a/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java b/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
new file mode 100644
index 0000000..1c2dccc
--- /dev/null
+++ b/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
@@ -0,0 +1,41 @@
+/*
+ * 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 domainapp.application.fixture.scenarios;
+
+import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScript;
+import org.apache.isis.extensions.fixtures.legacy.teardown.TeardownFixtureAbstract2;
+import org.springframework.stereotype.Component;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.fixture.SimpleObject_persona;
+
+public class DomainAppDemo extends FixtureScript {
+
+ @Override
+ protected void execute(final ExecutionContext ec) {
+ ec.executeChild(this, new TeardownFixtureAbstract2() {
+ @Override
+ protected void execute(final ExecutionContext executionContext) {
+ deleteFrom(SimpleObject.class);
+ }
+ });
+ ec.executeChild(this, new SimpleObject_persona.PersistAll());
+ }
+
+}
diff --git a/application/src/main/java/domainapp/application/services/health/HealthCheckServiceImpl.java b/application/src/main/java/domainapp/application/services/health/HealthCheckServiceImpl.java
new file mode 100644
index 0000000..329b973
--- /dev/null
+++ b/application/src/main/java/domainapp/application/services/health/HealthCheckServiceImpl.java
@@ -0,0 +1,47 @@
+/*
+ * 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 domainapp.application.services.health;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.services.health.Health;
+import org.apache.isis.applib.services.health.HealthCheckService;
+
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+
+@DomainService(nature = NatureOfService.DOMAIN)
+public class HealthCheckServiceImpl implements HealthCheckService {
+
+ @Override
+ public Health check() {
+
+ try {
+ simpleObjects.ping();
+ return Health.ok();
+ } catch (Exception ex) {
+ return Health.error(ex.getMessage());
+ }
+
+ }
+
+ @Inject
+ SimpleObjects simpleObjects;
+}
diff --git a/application/src/main/java/domainapp/application/services/homepage/HomePageService.java b/application/src/main/java/domainapp/application/services/homepage/HomePageService.java
new file mode 100644
index 0000000..d3a4719
--- /dev/null
+++ b/application/src/main/java/domainapp/application/services/homepage/HomePageService.java
@@ -0,0 +1,42 @@
+/*
+ * 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 domainapp.application.services.homepage;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.HomePage;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.services.factory.FactoryService;
+
+@Service @Named("homepage.HomePageService")
+public class HomePageService {
+
+ @Action(semantics = SemanticsOf.SAFE)
+ @HomePage
+ public HomePageViewModel homePage() {
+ return factoryService.instantiate(HomePageViewModel.class);
+ }
+
+
+ @Inject FactoryService factoryService;
+}
diff --git a/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.java b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.java
new file mode 100644
index 0000000..952ab03
--- /dev/null
+++ b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.java
@@ -0,0 +1,47 @@
+/*
+ * 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 domainapp.application.services.homepage;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.services.i18n.TranslatableString;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+
+@DomainObject(
+ nature = Nature.VIEW_MODEL,
+ objectType = "domainapp.application.services.homepage.HomePageViewModel"
+ )
+public class HomePageViewModel {
+
+ public TranslatableString title() {
+ return TranslatableString.tr("{num} objects", "num", getObjects().size());
+ }
+
+ public List<SimpleObject> getObjects() {
+ return simpleObjects.listAll();
+ }
+
+ @Inject SimpleObjects simpleObjects;
+}
diff --git a/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.layout.xml b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.layout.xml
new file mode 100644
index 0000000..1436efc
--- /dev/null
+++ b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.layout.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ 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.
+-->
+<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns="http://isis.apache.org/applib/layout/component" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <bs3:row>
+ <bs3:col span="2">
+ <bs3:sizeSpan size="LG" span="2" offset="true"/>
+ <bs3:row>
+ <bs3:col span="12" unreferencedActions="true">
+ <domainObject/>
+ <action id="clearHints"/>
+ <action id="downloadLayoutXml" hidden="EVERYWHERE"/>
+ <action id="rebuildMetamodel" hidden="EVERYWHERE"/>
+ <action id="downloadMetaModelXml" hidden="EVERYWHERE"/>
+ <action id="openRestApi" hidden="EVERYWHERE"/>
+ </bs3:col>
+ </bs3:row>
+ </bs3:col>
+ <bs3:col span="4" unreferencedCollections="true">
+ <bs3:row>
+ <bs3:col span="12">
+ <collection id="objects" defaultView="table"/>
+ </bs3:col>
+ </bs3:row>
+ </bs3:col>
+ </bs3:row>
+ <bs3:row>
+
+ </bs3:row>
+ <bs3:row>
+ <bs3:col span="0">
+ <fieldSet name="General" id="general" unreferencedProperties="true"/>
+ </bs3:col>
+ </bs3:row>
+</bs3:grid>
diff --git a/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.png b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.png
new file mode 100644
index 0000000..cb03785
Binary files /dev/null and b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.png differ
diff --git a/application/src/main/resources/log4j2-spring.xml b/application/src/main/resources/log4j2-spring.xml
new file mode 100644
index 0000000..08a5edb
--- /dev/null
+++ b/application/src/main/resources/log4j2-spring.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN">
+ <Properties>
+ <Property name="PID">????</Property>
+ <Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
+ <Property name="LOG_LEVEL_PATTERN">%5p</Property>
+ <Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
+ <Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+ <Property name="FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+ </Properties>
+ <Appenders>
+ <Console name="Console" target="SYSTEM_OUT" follow="true">
+ <PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" />
+ </Console>
+ </Appenders>
+ <Loggers>
+
+ <!-- silence Wicket -->
+ <Logger name="org.apache.wicket.page.PartialPageUpdate" level="error" />
+
+ <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
+ <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
+ <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
+ <logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
+ <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
+ <Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
+ <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
+ <logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
+
+ <logger name="org.apache.directory" level="warn"/>
+ <logger name="org.apache.directory.api.ldap.model.entry.Value" level="off"/>
+
+ <logger name="DataNucleus.Persistence" level="info"/>
+ <logger name="DataNucleus.Transaction" level="info"/>
+ <logger name="DataNucleus.Datastore.Schema" level="info"/>
+ <logger name="DataNucleus.Datastore.Native" level="info"/>
+
+ <Root level="info">
+ <AppenderRef ref="Console" />
+ </Root>
+ </Loggers>
+</Configuration>
diff --git a/application/src/test/java/domainapp/application/bdd/RunIntegBddSpecs.java b/application/src/test/java/domainapp/application/bdd/RunIntegBddSpecs.java
new file mode 100644
index 0000000..a50b050
--- /dev/null
+++ b/application/src/test/java/domainapp/application/bdd/RunIntegBddSpecs.java
@@ -0,0 +1,41 @@
+/**
+ * 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 domainapp.application.bdd;
+
+import io.cucumber.junit.Cucumber;
+import io.cucumber.junit.CucumberOptions;
+
+import org.junit.runner.RunWith;
+
+
+/**
+ * Runs scenarios in all <tt>.feature</tt> files (this package and any subpackages).
+ */
+@RunWith(Cucumber.class)
+@CucumberOptions(
+ plugin = {
+ "html:target/cucumber-html-report"
+ ,"json:target/cucumber.json"
+ },
+ strict = true,
+ tags = { "not @backlog", "not @ignore" },
+ glue = {
+ }
+ )
+public class RunIntegBddSpecs {
+ // intentionally empty
+}
diff --git a/application/src/test/java/domainapp/application/bdd/glue/SimpleObjectsStepDef.java b/application/src/test/java/domainapp/application/bdd/glue/SimpleObjectsStepDef.java
new file mode 100644
index 0000000..70efd86
--- /dev/null
+++ b/application/src/test/java/domainapp/application/bdd/glue/SimpleObjectsStepDef.java
@@ -0,0 +1,100 @@
+/*
+ * 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 domainapp.application.bdd.glue;
+
+import java.util.List;
+import java.util.UUID;
+
+import javax.inject.Inject;
+
+import org.junit.Ignore;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.support.TransactionTemplate;
+
+import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import domainapp.application.fixture.scenarios.DomainAppDemo;
+import domainapp.application.integtests.ApplicationIntegTestAbstract;
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+import domainapp.modules.simple.fixture.SimpleObject_persona;
+import io.cucumber.java.After;
+import io.cucumber.java.Before;
+import io.cucumber.java.en.Given;
+import io.cucumber.java.en.When;
+import lombok.val;
+
+public class SimpleObjectsStepDef extends ApplicationIntegTestAbstract {
+
+ @Given("^there are.* (\\d+) simple objects$")
+ public void there_are_N_simple_objects(int n) throws Throwable {
+ final List<SimpleObject> list = wrap(simpleObjects).listAll();
+ assertThat(list.size(), is(n));
+ }
+
+ @When("^.*create a .*simple object$")
+ public void create_a_simple_object() throws Throwable {
+ wrap(simpleObjects).create(UUID.randomUUID().toString());
+ }
+
+ // -- TRANSACTION ASPECT
+
+ private Runnable afterScenario;
+
+ @Before //TODO is there another way to make scenarios transactional?
+ public void beforeScenario(){
+ val txTemplate = new TransactionTemplate(txMan);
+ val status = txTemplate.getTransactionManager().getTransaction(null);
+ afterScenario = () -> {
+ txTemplate.getTransactionManager().rollback(status);
+ };
+
+ fixtureScripts.runPersonas(
+ SimpleObject_persona.BANG,
+ SimpleObject_persona.BAR,
+ SimpleObject_persona.BAZ);
+
+ status.flush();
+ }
+
+ @After
+ public void afterScenario(){
+ if(afterScenario==null) {
+ return;
+ }
+ afterScenario.run();
+ afterScenario = null;
+ }
+
+
+ // -- DEPENDENCIES
+
+ @Inject protected SimpleObjects simpleObjects;
+ @Inject private FixtureScripts fixtureScripts;
+ @Inject private PlatformTransactionManager txMan;
+
+ @Before(value="@DomainAppDemo", order=20000)
+ public void runDomainAppDemo() {
+ fixtureScripts.runFixtureScript(new DomainAppDemo(), null); // <1>
+ }
+
+}
diff --git a/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectSpec_listAllAndCreate.feature b/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectSpec_listAllAndCreate.feature
new file mode 100644
index 0000000..1fb0c83
--- /dev/null
+++ b/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectSpec_listAllAndCreate.feature
@@ -0,0 +1,24 @@
+#
+# 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.
+#
+Feature: List and Create New Simple Objects
+
+ Scenario: Existing simple objects can be listed and new ones created
+ Given there are initially 3 simple objects
+ When I create a new simple object
+ Then there are 4 simple objects
+
+
\ No newline at end of file
diff --git a/application/src/test/java/domainapp/application/integtests/ApplicationIntegTestAbstract.java b/application/src/test/java/domainapp/application/integtests/ApplicationIntegTestAbstract.java
new file mode 100644
index 0000000..b059ff0
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/ApplicationIntegTestAbstract.java
@@ -0,0 +1,57 @@
+/*
+ * 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 domainapp.application.integtests;
+
+import domainapp.application.ApplicationModule;
+
+import org.apache.isis.config.IsisPresets;
+import org.apache.isis.extensions.fixtures.IsisExtFixturesModule;
+import org.apache.isis.integtestsupport.IsisIntegrationTestAbstract;
+import org.apache.isis.jdo.IsisBootDataNucleus;
+import org.apache.isis.runtime.spring.IsisBoot;
+import org.apache.isis.security.bypass.IsisBootSecurityBypass;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.annotation.PropertySources;
+import org.springframework.test.context.ContextConfiguration;
+
+@SpringBootTest(classes = ApplicationIntegTestAbstract.AppManifest.class)
+@ContextConfiguration
+public abstract class ApplicationIntegTestAbstract extends IsisIntegrationTestAbstract {
+
+ @Configuration
+ @PropertySources({
+ @PropertySource(IsisPresets.Log4j2Test),
+ @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
+ @PropertySource(IsisPresets.NoTranslations),
+ @PropertySource(IsisPresets.DataNucleusAutoCreate),
+ })
+ @Import({
+ IsisBoot.class,
+ IsisBootDataNucleus.class,
+ IsisBootSecurityBypass.class,
+ IsisExtFixturesModule.class,
+ ApplicationModule.class
+ })
+ public static class AppManifest {
+ }
+
+}
diff --git a/application/src/test/java/domainapp/application/integtests/mml/DomainModel_IntegTest.java b/application/src/test/java/domainapp/application/integtests/mml/DomainModel_IntegTest.java
new file mode 100644
index 0000000..04c1dfa
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/DomainModel_IntegTest.java
@@ -0,0 +1,41 @@
+/*
+ * 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 domainapp.application.integtests.mml;
+
+import javax.inject.Inject;
+
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import org.apache.isis.integtestsupport.validate.ValidateDomainModel;
+import org.apache.isis.metamodel.specloader.SpecificationLoader;
+
+import domainapp.application.integtests.ApplicationIntegTestAbstract;
+
+class DomainModel_IntegTest extends ApplicationIntegTestAbstract {
+
+ @Inject protected SpecificationLoader specificationLoader;
+
+ @Test @Disabled("with full introspection in place this test actually throws")
+ void validateDomainModel() {
+ new ValidateDomainModel(specificationLoader).run();
+ }
+
+
+}
\ No newline at end of file
diff --git a/application/src/test/java/domainapp/application/integtests/mml/MetaModelService_IntegTest.java b/application/src/test/java/domainapp/application/integtests/mml/MetaModelService_IntegTest.java
new file mode 100644
index 0000000..4fc7d4d
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/MetaModelService_IntegTest.java
@@ -0,0 +1,145 @@
+/*
+ * 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 domainapp.application.integtests.mml;
+
+import java.io.File;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.approvaltests.namer.StackTraceNamer;
+import org.approvaltests.reporters.DiffReporter;
+import org.approvaltests.reporters.QuietReporter;
+import org.approvaltests.reporters.UseReporter;
+import org.approvaltests.writers.ApprovalTextWriter;
+import org.junit.jupiter.api.Test;
+
+import org.apache.isis.applib.services.jaxb.JaxbService;
+import org.apache.isis.applib.services.metamodel.MetaModelService;
+import org.apache.isis.schema.metamodel.v1.DomainClassDto;
+import org.apache.isis.schema.metamodel.v1.MetamodelDto;
+
+import static org.approvaltests.Approvals.getReporter;
+import static org.approvaltests.Approvals.verify;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assume.assumeThat;
+
+import domainapp.application.integtests.ApplicationIntegTestAbstract;
+
+class MetaModelService_IntegTest extends ApplicationIntegTestAbstract {
+
+ @Inject MetaModelService metaModelService;
+ @Inject JaxbService jaxbService;
+
+ //
+ // learn...
+ //
+ // ... move the resultant files in "received" directory over to "approved".
+ //
+ @UseReporter(QuietReporter.class)
+ @Test
+ void _1_learn() throws Exception {
+
+ assumeThat(System.getProperty("lockdown.learn"), is(notNullValue()));
+
+ // when
+ MetamodelDto metamodelDto =
+ metaModelService.exportMetaModel(
+ new MetaModelService.Config()
+ .withIgnoreNoop()
+ .withIgnoreAbstractClasses()
+ .withIgnoreBuiltInValueTypes()
+ .withIgnoreInterfaces()
+ .withPackagePrefix("domainapp")
+ );
+
+ // then
+ final List<DomainClassDto> domainClassDto = metamodelDto.getDomainClassDto();
+ for (final DomainClassDto domainClass : domainClassDto) {
+ try {
+ verifyClass(domainClass);
+ } catch (Error e) {
+ //ignore ... learning.
+ }
+ }
+ }
+
+
+ //
+ // verify ...
+ //
+ // ... ie compare the current metamodel to that previously captured.
+ //
+ @UseReporter(DiffReporter.class)
+ @Test
+ void _2_verify() throws Exception {
+
+ assumeThat(System.getProperty("lockdown.verify"), is(notNullValue()));
+
+ // when
+ MetamodelDto metamodelDto =
+ metaModelService.exportMetaModel(
+ new MetaModelService.Config()
+ .withIgnoreNoop()
+ .withIgnoreAbstractClasses()
+ .withIgnoreBuiltInValueTypes()
+ .withIgnoreInterfaces()
+ .withPackagePrefix("domainapp")
+ );
+
+ // then
+ final List<DomainClassDto> domainClassDto = metamodelDto.getDomainClassDto();
+ for (final DomainClassDto domainClass : domainClassDto) {
+ verifyClass(domainClass);
+ }
+ }
+
+ private void verifyClass(final DomainClassDto domainClass) {
+ String asXml = jaxbService.toXml(domainClass);
+ verify(new ApprovalTextWriter(asXml, "xml"){
+ @Override public String writeReceivedFile(final String received) {
+ return super.writeReceivedFile(received);
+ }
+
+ @Override public String getReceivedFilename(final String base) {
+ return toFilename("received", base);
+ }
+
+ @Override public String getApprovalFilename(final String base) {
+ return toFilename("approved", base);
+ }
+
+ private String toFilename(final String prefix, final String base) {
+ final File file = new File(base);
+ final File parentFile = file.getParentFile();
+ final String localName = file.getName();
+ final File newDir = new File(parentFile, prefix);
+ final File newFile = new File(newDir, localName + ".xml");
+ return newFile.toString();
+ }
+
+ }, new StackTraceNamer() {
+ @Override public String getApprovalName() {
+ return domainClass.getId();
+ }
+ }, getReporter());
+ }
+
+}
\ No newline at end of file
diff --git a/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider.xml b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider.xml
new file mode 100644
index 0000000..84cfa08
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider" service="true" xmlns:mml="http://isis.apache.org/schema/metamodel">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.named.NamedFacetInferred">
+ <mml:attr name="escaped">true</mml:attr>
+ <mml:attr name="value">Domain App Fixture Scripts Specification Provider</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.DomainServiceFacetAnnotation">
+ <mml:attr name="natureOfService">DOMAIN</mml:attr>
+ <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+ <mml:attr name="menuBar">PRIMARY</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.metamodel.facets.object.grid.GridFacetDefault"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+ <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.layout.LayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.layout.LayoutFacetFallback">
+ <mml:attr name="derived">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromIoCNamingStrategy">
+ <mml:attr name="value">domainAppFixtureScriptsSpecificationProvider</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="value">25</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="value">Domain App Fixture Scripts Specification Providers</mml:attr>
+ </mml:facet>
+ </mml:facets>
+</mml:domainClassDto>
diff --git a/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.health.HealthCheckServiceImpl.xml b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.health.HealthCheckServiceImpl.xml
new file mode 100644
index 0000000..ec21c6c
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.health.HealthCheckServiceImpl.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.application.services.health.HealthCheckServiceImpl" service="true" xmlns:mml="http://isis.apache.org/schema/metamodel">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.named.NamedFacetInferred">
+ <mml:attr name="escaped">true</mml:attr>
+ <mml:attr name="value">Health Check Service Impl</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.DomainServiceFacetAnnotation">
+ <mml:attr name="natureOfService">DOMAIN</mml:attr>
+ <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+ <mml:attr name="menuBar">PRIMARY</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.metamodel.facets.object.grid.GridFacetDefault"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+ <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.layout.LayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.layout.LayoutFacetFallback">
+ <mml:attr name="derived">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromIoCNamingStrategy">
+ <mml:attr name="value">healthCheckServiceImpl</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="value">25</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="value">Health Check Service Impls</mml:attr>
+ </mml:facet>
+ </mml:facets>
+</mml:domainClassDto>
diff --git a/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml
new file mode 100644
index 0000000..867f66a
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml
@@ -0,0 +1,617 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.application.services.homepage.HomePageViewModel" xmlns:mml="http://isis.apache.org/schema/metamodel">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.named.NamedFacetInferred">
+ <mml:attr name="escaped">true</mml:attr>
+ <mml:attr name="value">Home Page View Model</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.metamodel.facets.object.grid.GridFacetDefault"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.layout.LayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.layout.LayoutFacetFallback">
+ <mml:attr name="derived">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForDomainObjectAnnotation">
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName</mml:attr>
+ <mml:attr name="value">domainapp.application.services.homepage.HomePageViewModel</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="value">25</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="value">Home Page View Models</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.metamodel.facets.object.title.methods.TitleFacetViaTitleMethod">
+ <mml:attr name="intent.title">UI_HINT</mml:attr>
+ <mml:attr name="methods">public org.apache.isis.applib.services.i18n.TranslatableString domainapp.application.services.homepage.HomePageViewModel.title()</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.viewmodel.ViewModelFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobject.recreatable.RecreatableObjectFacetForDomainObjectAnnotation">
+ <mml:attr name="recreationMechanism">INITIALIZES</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:properties>
+ <mml:prop id="objectIdentifier">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.prop">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.prop()</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier</mml:attr>
+ <mml:attr name="returnType">java.lang.String</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#objectIdentifier()</mml:attr>
+ <mml:attr name="originalText">Object Identifier</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="reason">Contributed property</mml:attr>
+ <mml:attr name="semantics">DISABLED</mml:attr>
+ <mml:attr name="where">ANYWHERE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.HiddenFacetAbstract" fqcn="org.apache.isis.metamodel.facets.actions.layout.HiddenFacetForActionLayoutAnnotation">
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="where">ALL_TABLES</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">700.2</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetForPropertyAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:prop>
+ <mml:prop id="objectType">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_objectType.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_objectType.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.prop">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_objectType.prop()</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_objectType</mml:attr>
+ <mml:attr name="returnType">java.lang.String</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#objectType()</mml:attr>
+ <mml:attr name="originalText">Object Type</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="reason">Contributed property</mml:attr>
+ <mml:attr name="semantics">DISABLED</mml:attr>
+ <mml:attr name="where">ANYWHERE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.HiddenFacetAbstract" fqcn="org.apache.isis.metamodel.facets.actions.layout.HiddenFacetForActionLayoutAnnotation">
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="where">ALL_TABLES</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">700.1</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetForPropertyAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:prop>
+ </mml:properties>
+ <mml:collections>
+ <mml:coll id="objects">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics">
+ <mml:attr name="value">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#objects</mml:attr>
+ <mml:attr name="originalText">Objects</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.modify.CollectionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.collections.collection.modify.CollectionDomainEventFacetDefault">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.collections.collection.modify.CollectionDomainEventFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.CollectionDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.modify.CollectionAddToFacet" fqcn="org.apache.isis.metamodel.facets.collections.collection.modify.CollectionAddToFacetForDomainEventFromDefault">
+ <mml:attr name="collectionAddToFacet">org.apache.isis.metamodel.facets.collections.modify.CollectionAddToFacetViaAccessor</mml:attr>
+ <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessor</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.collections.modify.CollectionAddToFacetViaAccessor</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.CollectionDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.modify.CollectionClearFacet" fqcn="org.apache.isis.metamodel.facets.collections.clear.CollectionClearFacetViaAccessor">
+ <mml:attr name="intent.getObjects">ACCESSOR</mml:attr>
+ <mml:attr name="methods">public java.util.List<domainapp.modules.simple.dom.impl.SimpleObject> domainapp.application.services.homepage.HomePageViewModel.getObjects()</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.modify.CollectionRemoveFromFacet" fqcn="org.apache.isis.metamodel.facets.collections.collection.modify.CollectionRemoveFromFacetForDomainEventFromDefault">
+ <mml:attr name="collectionRemoveFromFacet">org.apache.isis.metamodel.facets.collections.modify.CollectionRemoveFromFacetViaAccessor</mml:attr>
+ <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessor</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.collections.modify.CollectionRemoveFromFacetViaAccessor</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.CollectionDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collparam.semantics.CollectionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.collparam.semantics.CollectionSemanticsFacetDefault">
+ <mml:attr name="value">LIST_INTERFACE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="value">12</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.recreatable.DisabledFacetOnCollectionDerivedFromRecreatableObject" fqcn="org.apache.isis.metamodel.facets.object.recreatable.DisabledFacetOnCollectionDerivedFromRecreatableObject">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">DISABLED</mml:attr>
+ <mml:attr name="where">ANYWHERE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessor">
+ <mml:attr name="intent.getObjects">ACCESSOR</mml:attr>
+ <mml:attr name="methods">public java.util.List<domainapp.modules.simple.dom.impl.SimpleObject> domainapp.application.services.homepage.HomePageViewModel.getObjects()</mml:attr>
+ <mml:attr name="onType">domainapp.application.services.homepage.HomePageViewModel</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>domainapp.modules.simple.dom.impl.SimpleObject</mml:type>
+ </mml:coll>
+ </mml:collections>
+ <mml:actions>
+ <mml:act id="downloadLayoutXml">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.act">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml</mml:attr>
+ <mml:attr name="returnType">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ACTION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+ <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+ <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#downloadLayoutXml()</mml:attr>
+ <mml:attr name="originalText">Download Layout Xml</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+ <mml:attr name="position">LEFT</mml:attr>
+ <mml:attr name="value">fa fa-fw fa-download</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">700.1</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>java.lang.Object</mml:returnType>
+ <mml:params>
+ <mml:param xsi:type="mml:scalarParam" id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.DescribedAsFacetTranslated">
+ <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+ <mml:attr name="originalText">File name extension can be omitted.</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.DescribedAsFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+ <mml:attr name="originalText">File name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+ <mml:attr name="intent.default0Act">DEFAULTS</mml:attr>
+ <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.default0Act()</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:param>
+ <mml:param xsi:type="mml:scalarParam" id="style" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+ <mml:attr name="originalText">Style</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.name.NamedFacetForParameterUsingReflection</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+ <mml:attr name="intent.default1Act">DEFAULTS</mml:attr>
+ <mml:attr name="methods">public org.apache.isis.applib.services.layout.LayoutService$Style org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.default1Act()</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>org.apache.isis.applib.services.layout.LayoutService$Style</mml:type>
+ </mml:param>
+ </mml:params>
+ </mml:act>
+ <mml:act id="downloadMetaModelXml">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.act">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.act(java.lang.String)</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml</mml:attr>
+ <mml:attr name="returnType">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ACTION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+ <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+ <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#downloadMetaModelXml()</mml:attr>
+ <mml:attr name="originalText">Download Meta Model Xml</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+ <mml:attr name="position">LEFT</mml:attr>
+ <mml:attr name="value">fa fa-fw fa-download</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">700.2</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>java.lang.Object</mml:returnType>
+ <mml:params>
+ <mml:param xsi:type="mml:scalarParam" id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.DescribedAsFacetTranslated">
+ <mml:attr name="context">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml#act(java.lang.String)</mml:attr>
+ <mml:attr name="originalText">File name extension can be omitted.</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.DescribedAsFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml#act(java.lang.String)</mml:attr>
+ <mml:attr name="originalText">File name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+ <mml:attr name="intent.default0Act">DEFAULTS</mml:attr>
+ <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.default0Act()</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:param>
+ </mml:params>
+ </mml:act>
+ <mml:act id="openRestApi">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.act">EXECUTE</mml:attr>
+ <mml:attr name="methods">public org.apache.isis.applib.value.LocalResourcePath org.apache.isis.applib.mixins.layout.Object_openRestApi.act()</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_openRestApi</mml:attr>
+ <mml:attr name="returnType">org.apache.isis.applib.value.LocalResourcePath</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ACTION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+ <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+ <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#openRestApi()</mml:attr>
+ <mml:attr name="originalText">Open Rest Api</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+ <mml:attr name="position">LEFT</mml:attr>
+ <mml:attr name="value">fa fa-fw fa-external-link</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">750.1</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>org.apache.isis.applib.value.LocalResourcePath</mml:returnType>
+ <mml:params/>
+ </mml:act>
+ <mml:act id="rebuildMetamodel">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.act">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.act()</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel</mml:attr>
+ <mml:attr name="returnType">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ACTION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+ <mml:attr name="position">PANEL</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+ <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">IDEMPOTENT</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#rebuildMetamodel()</mml:attr>
+ <mml:attr name="originalText">Rebuild Metamodel</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+ <mml:attr name="position">LEFT</mml:attr>
+ <mml:attr name="value">fa fa-fw fa-refresh</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">800.1</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>java.lang.Object</mml:returnType>
+ <mml:params/>
+ </mml:act>
+ </mml:actions>
+</mml:domainClassDto>
diff --git a/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml
new file mode 100644
index 0000000..b664f8d
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml
@@ -0,0 +1,1182 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.modules.simple.dom.impl.SimpleObject" xmlns:mml="http://isis.apache.org/schema/metamodel">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacet" fqcn="org.apache.isis.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacetAnnotation">
+ <mml:attr name="strategy">IDENTITY</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet" fqcn="org.apache.isis.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacetAnnotation">
+ <mml:attr name="identityType">DATASTORE</mml:attr>
+ <mml:attr name="schema">simple</mml:attr>
+ <mml:attr name="table">SimpleObject</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.jdo.metamodel.facets.object.version.JdoVersionFacet" fqcn="org.apache.isis.jdo.metamodel.facets.object.version.JdoVersionFacetFromAnnotation"/>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.named.NamedFacetInferred">
+ <mml:attr name="escaped">true</mml:attr>
+ <mml:attr name="value">Simple Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.jaxb.XmlJavaTypeAdapterFacet" fqcn="org.apache.isis.metamodel.facets.jaxb.XmlJavaTypeAdapterFacetDefault">
+ <mml:attr name="value">org.apache.isis.schema.utils.jaxbadapters.PersistentEntityAdapter</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.cssclass.CssClassFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent">
+ <mml:attr name="cssClassUiEventClass">org.apache.isis.applib.events.ui.CssClassUiEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.audit.AuditableFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobject.auditing.AuditableFacetForDomainObjectAnnotation">
+ <mml:attr name="enablement">ENABLED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.BookmarkPolicyFacetForDomainObjectLayoutAnnotation">
+ <mml:attr name="bookmarkPolicy">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+ <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.metamodel.facets.object.grid.GridFacetDefault"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent">
+ <mml:attr name="iconUiEventClass">org.apache.isis.applib.events.ui.IconUiEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.layout.LayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.LayoutFacetViaDomainObjectLayoutAnnotationUsingLayoutUiEvent">
+ <mml:attr name="layoutUiEventClass">org.apache.isis.applib.events.ui.LayoutUiEvent.Default</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.layout.LayoutFacetFallback</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.jdo.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForJdoPersistenceCapableAnnotation">
+ <mml:attr name="value">simple.SimpleObject</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="value">25</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.PluralFacetForDomainObjectLayoutAnnotation"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent">
+ <mml:attr name="titleUiEventClass">org.apache.isis.applib.events.ui.TitleUiEvent.Default</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.title.methods.TitleFacetViaTitleMethod</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:properties>
+ <mml:prop id="datanucleusIdLong">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.prop">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.Long org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong.prop()</mml:attr>
+ <mml:attr name="onType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong</mml:attr>
+ <mml:attr name="returnType">java.lang.Long</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#datanucleusIdLong()</mml:attr>
+ <mml:attr name="originalText">Id</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="reason">Contributed property</mml:attr>
+ <mml:attr name="semantics">DISABLED</mml:attr>
+ <mml:attr name="where">ANYWHERE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacetViaMethod">
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="intent.hideProp">CHECK_IF_HIDDEN</mml:attr>
+ <mml:attr name="methods">public boolean org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong.hideProp()</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">800.1</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="where">ALL_TABLES</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.Long</mml:type>
+ </mml:prop>
+ <mml:prop id="datanucleusVersionLong">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionLong.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionLong.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.prop">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.Long org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionLong.prop()</mml:attr>
+ <mml:attr name="onType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionLong</mml:attr>
+ <mml:attr name="returnType">java.lang.Long</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#datanucleusVersionLong()</mml:attr>
+ <mml:attr name="originalText">Version</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="reason">Contributed property</mml:attr>
+ <mml:attr name="semantics">DISABLED</mml:attr>
+ <mml:attr name="where">ANYWHERE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacetViaMethod">
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="intent.hideProp">CHECK_IF_HIDDEN</mml:attr>
+ <mml:attr name="methods">public boolean org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionLong.hideProp()</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">800.2</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="where">ALL_TABLES</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.Long</mml:type>
+ </mml:prop>
+ <mml:prop id="datanucleusVersionTimestamp">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.prop">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.sql.Timestamp org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp.prop()</mml:attr>
+ <mml:attr name="onType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp</mml:attr>
+ <mml:attr name="returnType">java.sql.Timestamp</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#datanucleusVersionTimestamp()</mml:attr>
+ <mml:attr name="originalText">Version</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="reason">Contributed property</mml:attr>
+ <mml:attr name="semantics">DISABLED</mml:attr>
+ <mml:attr name="where">ANYWHERE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacetViaMethod">
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="intent.hideProp">CHECK_IF_HIDDEN</mml:attr>
+ <mml:attr name="methods">public boolean org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp.hideProp()</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">800.2</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="where">ALL_TABLES</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.sql.Timestamp</mml:type>
+ </mml:prop>
+ <mml:prop id="name">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#name</mml:attr>
+ <mml:attr name="originalText">Name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.disabled.DisabledFacetForPropertyAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">DISABLED</mml:attr>
+ <mml:attr name="where">EVERYWHERE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.jdo.metamodel.facets.prop.column.MandatoryFacetDerivedFromJdoColumn</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.maxlength.MaxLengthFacetForPropertyAnnotation">
+ <mml:attr name="underlyingFacet">org.apache.isis.jdo.metamodel.facets.prop.column.MaxLengthFacetDerivedFromJdoColumn</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">40</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.mustsatisfy.MustSatisfySpecificationFacetForPropertyAnnotation">
+ <mml:attr name="specifications">domainapp.modules.simple.dom.types.Name$NoExclamationMarks</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.properties.typicallen.fromtype.TypicalLengthFacetOnPropertyDerivedFromType">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor">
+ <mml:attr name="intent.getName">ACCESSOR</mml:attr>
+ <mml:attr name="methods">public java.lang.String domainapp.modules.simple.dom.impl.SimpleObject.getName()</mml:attr>
+ <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet" fqcn="org.apache.isis.metamodel.facets.properties.defaults.fromtype.PropertyDefaultFacetDerivedFromDefaultedFacet">
+ <mml:attr name="typeFacet">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetDefault">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyClearFacetForDomainEventFromDefault">
+ <mml:attr name="clearFacet">org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+ <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.update.init.PropertyInitializationFacet" fqcn="org.apache.isis.metamodel.facets.properties.update.init.PropertyInitializationFacetViaSetterMethod">
+ <mml:attr name="intent.setName">MODIFY_PROPERTY</mml:attr>
+ <mml:attr name="methods">public void domainapp.modules.simple.dom.impl.SimpleObject.setName(java.lang.String)</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertySetterFacetForDomainEventFromDefault">
+ <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+ <mml:attr name="setterFacet">org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.validating.PropertyValidateFacet" fqcn="org.apache.isis.metamodel.facets.properties.validating.dflt.PropertyValidateFacetDefault">
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:prop>
+ <mml:prop id="notes">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#notes</mml:attr>
+ <mml:attr name="originalText">Notes</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.disabled.DisabledFacetForPropertyAnnotationInvertedSemantics">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="inverted">true</mml:attr>
+ <mml:attr name="semantics">ENABLED</mml:attr>
+ <mml:attr name="where">EVERYWHERE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.jdo.metamodel.facets.prop.column.MandatoryFacetDerivedFromJdoColumn</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.maxlength.MaxLengthFacetForPropertyAnnotation">
+ <mml:attr name="underlyingFacet">org.apache.isis.jdo.metamodel.facets.prop.column.MaxLengthFacetDerivedFromJdoColumn</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">4000</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.properties.typicallen.fromtype.TypicalLengthFacetOnPropertyDerivedFromType">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor">
+ <mml:attr name="intent.getNotes">ACCESSOR</mml:attr>
+ <mml:attr name="methods">public java.lang.String domainapp.modules.simple.dom.impl.SimpleObject.getNotes()</mml:attr>
+ <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet" fqcn="org.apache.isis.metamodel.facets.properties.defaults.fromtype.PropertyDefaultFacetDerivedFromDefaultedFacet">
+ <mml:attr name="typeFacet">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetDefault">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyClearFacetForDomainEventFromDefault">
+ <mml:attr name="clearFacet">org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+ <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.update.init.PropertyInitializationFacet" fqcn="org.apache.isis.metamodel.facets.properties.update.init.PropertyInitializationFacetViaSetterMethod">
+ <mml:attr name="intent.setNotes">MODIFY_PROPERTY</mml:attr>
+ <mml:attr name="methods">public void domainapp.modules.simple.dom.impl.SimpleObject.setNotes(java.lang.String)</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertySetterFacetForDomainEventFromDefault">
+ <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+ <mml:attr name="setterFacet">org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.validating.PropertyValidateFacet" fqcn="org.apache.isis.metamodel.facets.properties.validating.dflt.PropertyValidateFacetDefault">
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:prop>
+ <mml:prop id="objectIdentifier">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.prop">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.prop()</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier</mml:attr>
+ <mml:attr name="returnType">java.lang.String</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#objectIdentifier()</mml:attr>
+ <mml:attr name="originalText">Object Identifier</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="reason">Contributed property</mml:attr>
+ <mml:attr name="semantics">DISABLED</mml:attr>
+ <mml:attr name="where">ANYWHERE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.HiddenFacetAbstract" fqcn="org.apache.isis.metamodel.facets.actions.layout.HiddenFacetForActionLayoutAnnotation">
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="where">ALL_TABLES</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">700.2</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetForPropertyAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:prop>
+ <mml:prop id="objectType">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_objectType.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_objectType.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.prop">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_objectType.prop()</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_objectType</mml:attr>
+ <mml:attr name="returnType">java.lang.String</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#objectType()</mml:attr>
+ <mml:attr name="originalText">Object Type</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="reason">Contributed property</mml:attr>
+ <mml:attr name="semantics">DISABLED</mml:attr>
+ <mml:attr name="where">ANYWHERE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.HiddenFacetAbstract" fqcn="org.apache.isis.metamodel.facets.actions.layout.HiddenFacetForActionLayoutAnnotation">
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="where">ALL_TABLES</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">700.1</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetForPropertyAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:prop>
+ </mml:properties>
+ <mml:collections/>
+ <mml:actions>
+ <mml:act id="delete">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+ <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ <mml:attr name="intent.delete">EXECUTE</mml:attr>
+ <mml:attr name="methods">public void domainapp.modules.simple.dom.impl.SimpleObject.delete()</mml:attr>
+ <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+ <mml:attr name="returnType">void</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacetFallback">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">NON_IDEMPOTENT_ARE_YOU_SURE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#delete()</mml:attr>
+ <mml:attr name="originalText">Delete</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>void</mml:returnType>
+ <mml:params/>
+ </mml:act>
+ <mml:act id="downloadJdoMetadata">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.act">EXECUTE</mml:attr>
+ <mml:attr name="methods">public org.apache.isis.applib.value.Clob org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata.act(java.lang.String) throws javax.xml.bind.JAXBException,java.io.IOException</mml:attr>
+ <mml:attr name="onType">org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata</mml:attr>
+ <mml:attr name="returnType">org.apache.isis.applib.value.Clob</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ACTION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+ <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+ <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#downloadJdoMetadata()</mml:attr>
+ <mml:attr name="originalText">Download Jdo Metadata</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+ <mml:attr name="position">LEFT</mml:attr>
+ <mml:attr name="value">fa fa-fw fa-download</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">710.1</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>org.apache.isis.applib.value.Clob</mml:returnType>
+ <mml:params>
+ <mml:param xsi:type="mml:scalarParam" id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata#act(java.lang.String)</mml:attr>
+ <mml:attr name="originalText">File name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+ <mml:attr name="intent.default0Act">DEFAULTS</mml:attr>
+ <mml:attr name="methods">public java.lang.String org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata.default0Act()</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:param>
+ </mml:params>
+ </mml:act>
+ <mml:act id="downloadLayoutXml">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.act">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml</mml:attr>
+ <mml:attr name="returnType">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ACTION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+ <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+ <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#downloadLayoutXml()</mml:attr>
+ <mml:attr name="originalText">Download Layout Xml</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+ <mml:attr name="position">LEFT</mml:attr>
+ <mml:attr name="value">fa fa-fw fa-download</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">700.1</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>java.lang.Object</mml:returnType>
+ <mml:params>
+ <mml:param xsi:type="mml:scalarParam" id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.DescribedAsFacetTranslated">
+ <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+ <mml:attr name="originalText">File name extension can be omitted.</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.DescribedAsFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+ <mml:attr name="originalText">File name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+ <mml:attr name="intent.default0Act">DEFAULTS</mml:attr>
+ <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.default0Act()</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:param>
+ <mml:param xsi:type="mml:scalarParam" id="style" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+ <mml:attr name="originalText">Style</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.name.NamedFacetForParameterUsingReflection</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+ <mml:attr name="intent.default1Act">DEFAULTS</mml:attr>
+ <mml:attr name="methods">public org.apache.isis.applib.services.layout.LayoutService$Style org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.default1Act()</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>org.apache.isis.applib.services.layout.LayoutService$Style</mml:type>
+ </mml:param>
+ </mml:params>
+ </mml:act>
+ <mml:act id="downloadMetaModelXml">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.act">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.act(java.lang.String)</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml</mml:attr>
+ <mml:attr name="returnType">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ACTION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+ <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+ <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#downloadMetaModelXml()</mml:attr>
+ <mml:attr name="originalText">Download Meta Model Xml</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+ <mml:attr name="position">LEFT</mml:attr>
+ <mml:attr name="value">fa fa-fw fa-download</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">700.2</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>java.lang.Object</mml:returnType>
+ <mml:params>
+ <mml:param xsi:type="mml:scalarParam" id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.DescribedAsFacetTranslated">
+ <mml:attr name="context">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml#act(java.lang.String)</mml:attr>
+ <mml:attr name="originalText">File name extension can be omitted.</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.DescribedAsFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml#act(java.lang.String)</mml:attr>
+ <mml:attr name="originalText">File name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+ <mml:attr name="intent.default0Act">DEFAULTS</mml:attr>
+ <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.default0Act()</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:param>
+ </mml:params>
+ </mml:act>
+ <mml:act id="openRestApi">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.act">EXECUTE</mml:attr>
+ <mml:attr name="methods">public org.apache.isis.applib.value.LocalResourcePath org.apache.isis.applib.mixins.layout.Object_openRestApi.act()</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_openRestApi</mml:attr>
+ <mml:attr name="returnType">org.apache.isis.applib.value.LocalResourcePath</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ACTION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+ <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+ <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#openRestApi()</mml:attr>
+ <mml:attr name="originalText">Open Rest Api</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+ <mml:attr name="position">LEFT</mml:attr>
+ <mml:attr name="value">fa fa-fw fa-external-link</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">750.1</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>org.apache.isis.applib.value.LocalResourcePath</mml:returnType>
+ <mml:params/>
+ </mml:act>
+ <mml:act id="rebuildMetamodel">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+ <mml:attr name="intent.act">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.act()</mml:attr>
+ <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel</mml:attr>
+ <mml:attr name="returnType">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+ <mml:attr name="contributed">AS_ACTION</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+ <mml:attr name="position">PANEL</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+ <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">IDEMPOTENT</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#rebuildMetamodel()</mml:attr>
+ <mml:attr name="originalText">Rebuild Metamodel</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+ <mml:attr name="position">LEFT</mml:attr>
+ <mml:attr name="value">fa fa-fw fa-refresh</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+ <mml:attr name="name">metadata</mml:attr>
+ <mml:attr name="originalName">metadata</mml:attr>
+ <mml:attr name="sequence">800.1</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>java.lang.Object</mml:returnType>
+ <mml:params/>
+ </mml:act>
+ <mml:act id="updateName">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.associateWith.AssociatedWithFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.associateWith.AssociatedWithFacetForActionAnnotation">
+ <mml:attr name="value">name</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+ <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ <mml:attr name="intent.updateName">EXECUTE</mml:attr>
+ <mml:attr name="methods">public domainapp.modules.simple.dom.impl.SimpleObject domainapp.modules.simple.dom.impl.SimpleObject.updateName(java.lang.String)</mml:attr>
+ <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+ <mml:attr name="returnType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.command.CommandFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.command.CommandFacetForActionAnnotation">
+ <mml:attr name="disabled">false</mml:attr>
+ <mml:attr name="executeIn">FOREGROUND</mml:attr>
+ <mml:attr name="persistence">PERSISTED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.publish.PublishedActionFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.publishing.PublishedActionFacetForActionAnnotation"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacetFallback">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">IDEMPOTENT</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#updateName()</mml:attr>
+ <mml:attr name="originalText">Update Name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetForActionAnnotation">
+ <mml:attr name="name">name</mml:attr>
+ <mml:attr name="originalName">name</mml:attr>
+ <mml:attr name="sequence">1</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>domainapp.modules.simple.dom.impl.SimpleObject</mml:returnType>
+ <mml:params>
+ <mml:param xsi:type="mml:scalarParam" id="name" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+ <mml:attr name="defaultFacets">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+ <mml:attr name="derived">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#updateName(java.lang.String)</mml:attr>
+ <mml:attr name="originalText">Name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.maxlen.MaxLengthFacetForParameterAnnotation">
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">40</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation">
+ <mml:attr name="specifications">domainapp.modules.simple.dom.types.Name$NoExclamationMarks</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+ <mml:attr name="intent.default0UpdateName">DEFAULTS</mml:attr>
+ <mml:attr name="methods">public java.lang.String domainapp.modules.simple.dom.impl.SimpleObject.default0UpdateName()</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:param>
+ </mml:params>
+ </mml:act>
+ </mml:actions>
+</mml:domainClassDto>
diff --git a/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObjects.xml b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObjects.xml
new file mode 100644
index 0000000..6e0d844
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObjects.xml
@@ -0,0 +1,399 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.modules.simple.dom.impl.SimpleObjects" service="true" xmlns:mml="http://isis.apache.org/schema/metamodel">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.named.NamedFacetInferred">
+ <mml:attr name="escaped">true</mml:attr>
+ <mml:attr name="value">Simple Objects</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.DomainServiceFacetAnnotation">
+ <mml:attr name="natureOfService">VIEW</mml:attr>
+ <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+ <mml:attr name="menuBar">PRIMARY</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.metamodel.facets.object.grid.GridFacetDefault"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+ <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.layout.LayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.layout.LayoutFacetFallback">
+ <mml:attr name="derived">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromIoCNamingStrategy">
+ <mml:attr name="value">simple.SimpleObjects</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="value">25</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="value">Simple Objectses</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:actions>
+ <mml:act id="create">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">domainapp.modules.simple.dom.impl.SimpleObjects.CreateDomainEvent</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+ <mml:attr name="eventType">domainapp.modules.simple.dom.impl.SimpleObjects.CreateDomainEvent</mml:attr>
+ <mml:attr name="intent.create">EXECUTE</mml:attr>
+ <mml:attr name="methods">public domainapp.modules.simple.dom.impl.SimpleObject domainapp.modules.simple.dom.impl.SimpleObjects.create(java.lang.String)</mml:attr>
+ <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+ <mml:attr name="returnType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
+ <mml:attr name="value">NON_IDEMPOTENT</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#create()</mml:attr>
+ <mml:attr name="originalText">Create</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.PromptStyleFacetForActionLayoutAnnotation">
+ <mml:attr name="promptStyle">DIALOG_MODAL</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>domainapp.modules.simple.dom.impl.SimpleObject</mml:returnType>
+ <mml:params>
+ <mml:param xsi:type="mml:scalarParam" id="name" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+ <mml:attr name="defaultFacets">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+ <mml:attr name="derived">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#create(java.lang.String)</mml:attr>
+ <mml:attr name="originalText">Name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.maxlen.MaxLengthFacetForParameterAnnotation">
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">40</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation">
+ <mml:attr name="specifications">domainapp.modules.simple.dom.types.Name$NoExclamationMarks</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:param>
+ </mml:params>
+ </mml:act>
+ <mml:act id="findByName">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics">
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics</mml:attr>
+ <mml:attr name="value">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+ <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ <mml:attr name="intent.findByName">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.util.List<domainapp.modules.simple.dom.impl.SimpleObject> domainapp.modules.simple.dom.impl.SimpleObjects.findByName(java.lang.String)</mml:attr>
+ <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+ <mml:attr name="returnType">java.util.List</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#findByName()</mml:attr>
+ <mml:attr name="originalText">Find By Name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.BookmarkPolicyFacetForActionLayoutAnnotation">
+ <mml:attr name="bookmarkPolicy">AS_ROOT</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.PromptStyleFacetForActionLayoutAnnotation">
+ <mml:attr name="promptStyle">DIALOG_SIDEBAR</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>java.util.List</mml:returnType>
+ <mml:params>
+ <mml:param xsi:type="mml:scalarParam" id="name" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+ <mml:attr name="defaultFacets">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+ <mml:attr name="derived">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#findByName(java.lang.String)</mml:attr>
+ <mml:attr name="originalText">Name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.maxlen.MaxLengthFacetForParameterAnnotation">
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">40</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation">
+ <mml:attr name="specifications">domainapp.modules.simple.dom.types.Name$NoExclamationMarks</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:param>
+ </mml:params>
+ </mml:act>
+ <mml:act id="findByNameExact">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+ <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ <mml:attr name="intent.findByNameExact">EXECUTE</mml:attr>
+ <mml:attr name="methods">public domainapp.modules.simple.dom.impl.SimpleObject domainapp.modules.simple.dom.impl.SimpleObjects.findByNameExact(java.lang.String)</mml:attr>
+ <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+ <mml:attr name="returnType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacetFallback">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
+ <mml:attr name="value">NON_IDEMPOTENT</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#findByNameExact()</mml:attr>
+ <mml:attr name="originalText">Find By Name Exact</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>domainapp.modules.simple.dom.impl.SimpleObject</mml:returnType>
+ <mml:params>
+ <mml:param xsi:type="mml:scalarParam" id="name" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+ <mml:attr name="defaultFacets">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+ <mml:attr name="derived">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#findByNameExact(java.lang.String)</mml:attr>
+ <mml:attr name="originalText">Name</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.name.NamedFacetForParameterUsingReflection</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+ <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+ <mml:attr name="inverted">false</mml:attr>
+ <mml:attr name="semantics">REQUIRED</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+ <mml:attr name="derived">true</mml:attr>
+ <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:type>java.lang.String</mml:type>
+ </mml:param>
+ </mml:params>
+ </mml:act>
+ <mml:act id="listAll">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics">
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics</mml:attr>
+ <mml:attr name="value">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+ <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ <mml:attr name="intent.listAll">EXECUTE</mml:attr>
+ <mml:attr name="methods">public java.util.List<domainapp.modules.simple.dom.impl.SimpleObject> domainapp.modules.simple.dom.impl.SimpleObjects.listAll()</mml:attr>
+ <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+ <mml:attr name="returnType">java.util.List</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+ <mml:attr name="value">SAFE</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#listAll()</mml:attr>
+ <mml:attr name="originalText">List All</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.BookmarkPolicyFacetForActionLayoutAnnotation">
+ <mml:attr name="bookmarkPolicy">AS_ROOT</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>java.util.List</mml:returnType>
+ <mml:params/>
+ </mml:act>
+ <mml:act id="ping">
+ <mml:facets>
+ <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+ <mml:attr name="disabling">true</mml:attr>
+ <mml:attr name="hiding">true</mml:attr>
+ <mml:attr name="validating">true</mml:attr>
+ <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+ <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+ <mml:attr name="intent.ping">EXECUTE</mml:attr>
+ <mml:attr name="methods">public void domainapp.modules.simple.dom.impl.SimpleObjects.ping()</mml:attr>
+ <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+ <mml:attr name="returnType">void</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+ <mml:attr name="position">BELOW</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacetFallback">
+ <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
+ <mml:attr name="value">NON_IDEMPOTENT</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+ <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+ <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#ping()</mml:attr>
+ <mml:attr name="originalText">Ping</mml:attr>
+ <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+ <mml:attr name="value">hidden</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+ <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+ </mml:facet>
+ <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+ <mml:attr name="promptStyle">INLINE</mml:attr>
+ </mml:facet>
+ </mml:facets>
+ <mml:returnType>void</mml:returnType>
+ <mml:params/>
+ </mml:act>
+ </mml:actions>
+</mml:domainClassDto>
diff --git a/application/src/test/java/domainapp/application/integtests/mml/received/.gitignore b/application/src/test/java/domainapp/application/integtests/mml/received/.gitignore
new file mode 100644
index 0000000..b81c795
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/received/.gitignore
@@ -0,0 +1 @@
+*.xml
\ No newline at end of file
diff --git a/application/src/test/java/domainapp/application/integtests/smoke/Smoke_IntegTest.java b/application/src/test/java/domainapp/application/integtests/smoke/Smoke_IntegTest.java
new file mode 100644
index 0000000..559c36c
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/smoke/Smoke_IntegTest.java
@@ -0,0 +1,102 @@
+/*
+ * 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 domainapp.application.integtests.smoke;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.transaction.annotation.Transactional;
+
+import org.apache.isis.applib.services.xactn.TransactionService;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import domainapp.application.integtests.ApplicationIntegTestAbstract;
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+
+@Transactional
+class Smoke_IntegTest extends ApplicationIntegTestAbstract {
+
+ @Inject SimpleObjects menu;
+ @Inject TransactionService transactionService;
+
+ @Test
+ void create() {
+
+ // when
+ List<SimpleObject> all = wrap(menu).listAll();
+
+ // then
+ assertThat(all).isEmpty();
+
+
+
+ // when
+ final SimpleObject fred = wrap(menu).create("Fred");
+ transactionService.flushTransaction();
+
+ // then
+ all = wrap(menu).listAll();
+ assertThat(all).hasSize(1);
+ assertThat(all).contains(fred);
+
+
+
+ // when
+ final SimpleObject bill = wrap(menu).create("Bill");
+ transactionService.flushTransaction();
+
+ // then
+ all = wrap(menu).listAll();
+ assertThat(all).hasSize(2);
+ assertThat(all).contains(fred, bill);
+
+
+
+ // when
+ wrap(fred).updateName("Freddy");
+ transactionService.flushTransaction();
+
+ // then
+ assertThat(wrap(fred).getName()).isEqualTo("Freddy");
+
+
+ // when
+ wrap(fred).setNotes("These are some notes");
+ transactionService.flushTransaction();
+
+ // then
+ assertThat(wrap(fred).getNotes()).isEqualTo("These are some notes");
+
+
+ // when
+ wrap(fred).delete();
+ transactionService.flushTransaction();
+
+
+ all = wrap(menu).listAll();
+ assertThat(all).hasSize(1);
+
+ }
+
+}
+
diff --git a/enhance-all.sh b/enhance-all.sh
new file mode 100644
index 0000000..63572d1
--- /dev/null
+++ b/enhance-all.sh
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+mvn -pl module-simple datanucleus:enhance -o
\ No newline at end of file
diff --git a/module-simple/.gitignore b/module-simple/.gitignore
new file mode 100644
index 0000000..85cb54f
--- /dev/null
+++ b/module-simple/.gitignore
@@ -0,0 +1,8 @@
+.gradle
+translations.pot
+*.jar
+gradle/wrapper
+!gradle-wrapper.jar
+/.apt_generated/
+/.factorypath
+/.apt_generated_tests/
diff --git a/module-simple/log4j2-test.xml b/module-simple/log4j2-test.xml
new file mode 100644
index 0000000..56e8ad6
--- /dev/null
+++ b/module-simple/log4j2-test.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN">
+ <Properties>
+ <Property name="PID">????</Property>
+ <Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
+ <Property name="LOG_LEVEL_PATTERN">%5p</Property>
+ <Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
+ <Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+ <Property name="FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+ </Properties>
+ <Appenders>
+ <Console name="Console" target="SYSTEM_OUT" follow="true">
+ <PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" />
+ </Console>
+ </Appenders>
+ <Loggers>
+ <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
+ <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
+ <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
+ <logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
+ <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
+ <Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
+ <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
+ <logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
+
+ <logger name="org.apache.directory" level="warn"/>
+ <logger name="org.apache.directory.api.ldap.model.entry.Value" level="off"/>
+
+ <logger name="DataNucleus.Persistence" level="info"/>
+ <logger name="DataNucleus.Transaction" level="info"/>
+ <logger name="DataNucleus.Datastore.Schema" level="info"/>
+ <logger name="DataNucleus.Datastore.Native" level="info"/>
+
+ <Root level="info">
+ <AppenderRef ref="Console" />
+ </Root>
+ </Loggers>
+</Configuration>
+
+<!-- # DataNucleus Logging Categories -->
+<!-- DataNucleus.Persistence - All messages relating to the persistence process -->
+<!-- DataNucleus.Transaction - All messages relating to transactions -->
+<!-- DataNucleus.Connection - All messages relating to Connections. -->
+<!-- DataNucleus.Query - All messages relating to queries -->
+<!-- DataNucleus.Cache - All messages relating to the DataNucleus Cache -->
+<!-- DataNucleus.MetaData - All messages relating to MetaData -->
+<!-- DataNucleus.Datastore - All general datastore messages -->
+<!-- DataNucleus.Datastore.Schema - All schema related datastore log messages -->
+<!-- DataNucleus.Datastore.Persist - All datastore persistence messages -->
+<!-- DataNucleus.Datastore.Retrieve - All datastore retrieval messages -->
+<!-- DataNucleus.Datastore.Native - Log of all 'native' statements sent to the datastore -->
+<!-- DataNucleus.General - All general operational messages -->
+<!-- DataNucleus.Lifecycle - All messages relating to object lifecycle changes -->
+<!-- DataNucleus.ValueGeneration - All messages relating to value generation -->
+<!-- DataNucleus.Enhancer - All messages from the DataNucleus Enhancer. -->
+<!-- DataNucleus.SchemaTool - All messages from DataNucleus SchemaTool -->
+<!-- DataNucleus.JDO - All messages general to JDO -->
+<!-- DataNucleus.JPA - All messages general to JPA -->
+<!-- DataNucleus.JCA - All messages relating to Connector JCA. -->
+<!-- DataNucleus.IDE - Messages from the DataNucleus IDE. -->
\ No newline at end of file
diff --git a/module-simple/logging-dn-enhance.properties b/module-simple/logging-dn-enhance.properties
new file mode 100644
index 0000000..ca165ac
--- /dev/null
+++ b/module-simple/logging-dn-enhance.properties
@@ -0,0 +1,41 @@
+# 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.
+
+# LOG4J Configuration
+# ===================
+
+# Basic logging goes to "datanucleus.log"
+log4j.appender.A1=org.apache.log4j.FileAppender
+log4j.appender.A1.File=datanucleus.log
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} (%t) %-5p [%c] - %m%n
+#log4j.appender.A1.Threshold=INFO
+
+# Categories
+# Each category can be set to a "level", and to direct to an appender
+
+# Default to DEBUG level for all DataNucleus categories
+log4j.logger.DataNucleus = DEBUG, A1
+
+log4j.category.com.mchange.v2.c3p0=INFO, A1
+log4j.category.com.mchange.v2.resourcepool=INFO, A1
+log4j.category.org.logicalcobwebs.proxool=INFO,A1
+
+
+# Hbase libs logging
+log4j.category.org.apache.hadoop=INFO,A1
+log4j.category.org.apache.zookeeper=INFO,A1
\ No newline at end of file
diff --git a/module-simple/pom.xml b/module-simple/pom.xml
new file mode 100644
index 0000000..274583b
--- /dev/null
+++ b/module-simple/pom.xml
@@ -0,0 +1,84 @@
+<?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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.isis.examples.apps</groupId>
+ <artifactId>simpleapp</artifactId>
+ <version>2.0.0-M3-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>simpleapp-module-simple</artifactId>
+ <name>Apache Isis App - SimpleApp Simple Module</name>
+
+ <properties>
+ <maven-checkstyle-plugin.configLocation>${project.parent.basedir}/_checks/checkstyle.xml</maven-checkstyle-plugin.configLocation>
+ <maven-pmd-plugin.ruleset>${project.parent.basedir}/_checks/pmd.xml</maven-pmd-plugin.ruleset>
+ </properties>
+
+ <build>
+ <resources>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ </build>
+
+ <dependencies>
+
+ <!-- ISIS API -->
+
+ <dependency>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-applib</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-persistence-jdo-datanucleus5</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.extensions</groupId>
+ <artifactId>isis-extensions-fixtures</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.extensions</groupId>
+ <artifactId>isis-extensions-specsupport</artifactId>
+ </dependency>
+
+ <!-- TESTS -->
+ <dependency>
+ <groupId>org.apache.isis.mavendeps</groupId>
+ <artifactId>isis-mavendeps-testing</artifactId>
+ <type>pom</type>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+</project>
diff --git a/module-simple/src/main/java/META-INF/persistence.xml b/module-simple/src/main/java/META-INF/persistence.xml
new file mode 100644
index 0000000..8824aa1
--- /dev/null
+++ b/module-simple/src/main/java/META-INF/persistence.xml
@@ -0,0 +1,26 @@
+<?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.
+-->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
+
+ <persistence-unit name="simple">
+ </persistence-unit>
+</persistence>
diff --git a/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java b/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
new file mode 100644
index 0000000..a2c757e
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
@@ -0,0 +1,53 @@
+/*
+ * 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 domainapp.modules.simple;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScript;
+import org.apache.isis.extensions.fixtures.legacy.teardown.TeardownFixtureAbstract2;
+import org.apache.isis.extensions.fixtures.modules.Module;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+
+@Configuration
+@ComponentScan
+public class SimpleModule implements Module {
+
+ @Override
+ public FixtureScript getTeardownFixture() {
+ return new TeardownFixtureAbstract2() {
+ @Override
+ protected void execute(ExecutionContext executionContext) {
+ deleteFrom(SimpleObject.class);
+ }
+ };
+ }
+
+ public static class PropertyDomainEvent<S,T>
+ extends org.apache.isis.applib.events.domain.PropertyDomainEvent<S,T> {}
+
+ public static class CollectionDomainEvent<S,T>
+ extends org.apache.isis.applib.events.domain.CollectionDomainEvent<S,T> {}
+
+ public static class ActionDomainEvent<S> extends
+ org.apache.isis.applib.events.domain.ActionDomainEvent<S> {}
+
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
new file mode 100644
index 0000000..58254b9
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
@@ -0,0 +1,116 @@
+/*
+ * 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 domainapp.modules.simple.dom.impl;
+
+import java.util.Comparator;
+
+import javax.inject.Inject;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.VersionStrategy;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Auditing;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.DomainObjectLayout;
+import org.apache.isis.applib.annotation.Publishing;
+import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.services.title.TitleService;
+import org.apache.isis.schema.utils.jaxbadapters.PersistentEntityAdapter;
+
+import lombok.Getter;
+import lombok.Setter;
+import static org.apache.isis.applib.annotation.CommandReification.ENABLED;
+import static org.apache.isis.applib.annotation.SemanticsOf.IDEMPOTENT;
+import static org.apache.isis.applib.annotation.SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE;
+
+import domainapp.modules.simple.dom.types.Name;
+import domainapp.modules.simple.dom.types.Notes;
+import lombok.val;
+
+@javax.jdo.annotations.PersistenceCapable(identityType=IdentityType.DATASTORE, schema = "simple")
+@javax.jdo.annotations.DatastoreIdentity(strategy=IdGeneratorStrategy.IDENTITY, column="id")
+@javax.jdo.annotations.Version(strategy= VersionStrategy.DATE_TIME, column="version")
+@javax.jdo.annotations.Unique(name="SimpleObject_name_UNQ", members = {"name"})
+@DomainObject(auditing = Auditing.ENABLED)
+@DomainObjectLayout() // causes UI events to be triggered
+@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
+public class SimpleObject implements Comparable<SimpleObject> {
+
+ private SimpleObject() {}
+
+ public String title() {
+ return "Object: " + getName();
+ }
+
+ @lombok.Getter @lombok.Setter //@lombok.NonNull XXX lombok+JDOQ issue
+ @Name private String name;
+
+ @lombok.Getter @lombok.Setter
+ @Notes private String notes;
+
+
+ @Action(semantics = IDEMPOTENT, command = ENABLED, publishing = Publishing.ENABLED, associateWith = "name")
+ public SimpleObject updateName(
+ @Name final String name) {
+ setName(name);
+ return this;
+ }
+ public String default0UpdateName() {
+ return getName();
+ }
+
+
+ @Action(semantics = NON_IDEMPOTENT_ARE_YOU_SURE)
+ public void delete() {
+ final String title = titleService.titleOf(this);
+ messageService.informUser(String.format("'%s' deleted", title));
+ repositoryService.removeAndFlush(this);
+ }
+
+ @Override
+ public String toString() {
+ return getName();
+ }
+
+ private final static Comparator<SimpleObject> comparator =
+ Comparator.comparing(SimpleObject::getName);
+
+ @Override
+ public int compareTo(final SimpleObject other) {
+ return comparator.compare(this, other);
+ }
+
+
+ @Inject RepositoryService repositoryService;
+ @Inject TitleService titleService;
+ @Inject MessageService messageService;
+
+ // FACTORY
+
+ public static SimpleObject ofName(String name) {
+ val simpleObject = new SimpleObject();
+ simpleObject.setName(name);
+ return simpleObject;
+ }
+
+}
\ No newline at end of file
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.layout.xml b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.layout.xml
new file mode 100644
index 0000000..7b5442c
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.layout.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ 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.
+-->
+<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns:c="http://isis.apache.org/applib/layout/component" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <bs3:row>
+ <bs3:col span="12" unreferencedActions="true">
+ <c:domainObject bookmarking="AS_ROOT"/>
+ </bs3:col>
+ </bs3:row>
+ <bs3:row>
+ <bs3:col span="6">
+ <bs3:tabGroup>
+ <bs3:tab name="General">
+ <bs3:row>
+ <bs3:col span="12">
+ <c:fieldSet name="Name">
+ <c:action id="delete">
+ <c:describedAs>Deletes this object from the persistent datastore</c:describedAs>
+ </c:action>
+ <c:property id="name" namedEscaped="true">
+ <c:action id="updateName" promptStyle="INLINE"/>
+ </c:property>
+ <c:property id="notes" namedEscaped="true" multiLine="10" hidden="ALL_TABLES"/>
+ </c:fieldSet>
+ </bs3:col>
+ </bs3:row>
+ </bs3:tab>
+ <bs3:tab name="Metadata">
+ <bs3:row>
+ <bs3:col span="12">
+ <c:fieldSet name="Metadata"/>
+ </bs3:col>
+ </bs3:row>
+ </bs3:tab>
+ <bs3:tab name="Other">
+ <bs3:row>
+ <bs3:col span="12">
+ <c:fieldSet name="Other" unreferencedProperties="true"/>
+ </bs3:col>
+ </bs3:row>
+ </bs3:tab>
+ </bs3:tabGroup>
+ <bs3:tabGroup>
+ </bs3:tabGroup>
+ </bs3:col>
+ <bs3:col span="6">
+ <bs3:tabGroup unreferencedCollections="true">
+ </bs3:tabGroup>
+ </bs3:col>
+ </bs3:row>
+</bs3:grid>
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.png b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.png
new file mode 100644
index 0000000..0bd6f57
Binary files /dev/null and b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.png differ
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
new file mode 100644
index 0000000..6b3cbb9
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
@@ -0,0 +1,96 @@
+/*
+ * 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 domainapp.modules.simple.dom.impl;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.jdo.JDOQLTypedQuery;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.events.domain.ActionDomainEvent;
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.jdo.jdosupport.IsisJdoSupport_v3_2;
+
+import domainapp.modules.simple.dom.types.Name;
+
+@DomainService(
+ nature = NatureOfService.VIEW,
+ objectType = "simple.SimpleObjects"
+ )
+public class SimpleObjects {
+
+ public static class CreateDomainEvent extends ActionDomainEvent<SimpleObjects> {}
+
+ @Action(domainEvent = CreateDomainEvent.class)
+ @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+ public SimpleObject create(
+ @Name final String name
+ ) {
+ return repositoryService.persist(SimpleObject.ofName(name));
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT, promptStyle = PromptStyle.DIALOG_SIDEBAR)
+ public List<SimpleObject> findByName(
+ @Name final String name
+ ) {
+ JDOQLTypedQuery<SimpleObject> q = isisJdoSupport.newTypesafeQuery(SimpleObject.class);
+ final QSimpleObject cand = QSimpleObject.candidate();
+ q = q.filter(
+ cand.name.indexOf(q.stringParameter("name")).ne(-1)
+ );
+ return q.setParameter("name", name)
+ .executeList();
+ }
+
+ public SimpleObject findByNameExact(final String name) {
+ JDOQLTypedQuery<SimpleObject> q = isisJdoSupport.newTypesafeQuery(SimpleObject.class);
+ final QSimpleObject cand = QSimpleObject.candidate();
+ q = q.filter(
+ cand.name.eq(q.stringParameter("name"))
+ );
+ return q.setParameter("name", name)
+ .executeUnique();
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT)
+ public List<SimpleObject> listAll() {
+ return repositoryService.allInstances(SimpleObject.class);
+ }
+
+ public void ping() {
+ JDOQLTypedQuery<SimpleObject> q = isisJdoSupport.newTypesafeQuery(SimpleObject.class);
+ final QSimpleObject candidate = QSimpleObject.candidate();
+ q.range(0,2);
+ q.orderBy(candidate.name.asc());
+ q.executeList();
+ }
+
+ @Inject RepositoryService repositoryService;
+ @Inject IsisJdoSupport_v3_2 isisJdoSupport;
+
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java b/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
new file mode 100644
index 0000000..9cd2b22
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
@@ -0,0 +1,54 @@
+/*
+ * 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 domainapp.modules.simple.dom.types;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.jdo.annotations.Column;
+
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.applib.annotation.ParameterLayout;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.services.i18n.TranslatableString;
+import org.apache.isis.applib.spec.AbstractSpecification2;
+
+@Column(length = Name.MAX_LEN, allowsNull = "false")
+@Property(editing = Editing.DISABLED, mustSatisfy = Name.NoExclamationMarks.class, maxLength = Name.MAX_LEN)
+@Parameter(mustSatisfy = Name.NoExclamationMarks.class, maxLength = Name.MAX_LEN)
+@ParameterLayout(named = "Name")
+@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Name {
+
+ int MAX_LEN = 40;
+
+ class NoExclamationMarks extends AbstractSpecification2<String> {
+
+ @Override
+ public TranslatableString satisfiesTranslatableSafely(final String name) {
+ return name != null && name.contains("!")
+ ? TranslatableString.tr("Exclamation mark is not allowed")
+ : null;
+ }
+ }
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/types/Notes.java b/module-simple/src/main/java/domainapp/modules/simple/dom/types/Notes.java
new file mode 100644
index 0000000..d5fb397
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/types/Notes.java
@@ -0,0 +1,43 @@
+/*
+ * 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 domainapp.modules.simple.dom.types;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.jdo.annotations.Column;
+
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.applib.annotation.ParameterLayout;
+import org.apache.isis.applib.annotation.Property;
+
+@Column(length = Notes.MAX_LEN, allowsNull = "true")
+@Property(editing = Editing.ENABLED, maxLength = Notes.MAX_LEN)
+@Parameter(maxLength = Notes.MAX_LEN)
+@ParameterLayout(named = "Notes")
+@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Notes {
+
+ int MAX_LEN = 4000;
+
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
new file mode 100644
index 0000000..7f1ee24
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
@@ -0,0 +1,50 @@
+/*
+ * 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 domainapp.modules.simple.fixture;
+
+import javax.inject.Inject;
+
+import org.apache.isis.extensions.fixtures.fixturescripts.BuilderScriptWithResult;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+@Accessors(chain = true)
+public class SimpleObjectBuilder extends BuilderScriptWithResult<SimpleObject> {
+
+ @Getter @Setter
+ private String name;
+
+ @Override
+ protected SimpleObject buildResult(final ExecutionContext ec) {
+
+ checkParam("name", ec, String.class);
+
+ return wrap(simpleObjects).create(name);
+ }
+
+ // -- DEPENDENCIES
+
+ @Inject SimpleObjects simpleObjects;
+
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
new file mode 100644
index 0000000..19c378b
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
@@ -0,0 +1,66 @@
+/*
+ * 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 domainapp.modules.simple.fixture;
+
+import org.apache.isis.applib.services.registry.ServiceRegistry;
+import org.apache.isis.extensions.fixtures.api.PersonaWithBuilderScript;
+import org.apache.isis.extensions.fixtures.api.PersonaWithFinder;
+import org.apache.isis.extensions.fixtures.legacy.setup.PersonaEnumPersistAll;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public enum SimpleObject_persona
+implements PersonaWithBuilderScript<SimpleObjectBuilder>, PersonaWithFinder<SimpleObject> {
+
+ FOO("Foo"),
+ BAR("Bar"),
+ BAZ("Baz"),
+ FRODO("Frodo"),
+ FROYO("Froyo"),
+ FIZZ("Fizz"),
+ BIP("Bip"),
+ BOP("Bop"),
+ BANG("Bang"),
+ BOO("Boo");
+
+ private final String name;
+
+ @Override
+ public SimpleObjectBuilder builder() {
+ return new SimpleObjectBuilder().setName(name);
+ }
+
+ @Override
+ public SimpleObject findUsing(final ServiceRegistry serviceRegistry) {
+ SimpleObjects simpleObjects = serviceRegistry.lookupService(SimpleObjects.class).orElse(null);
+ return simpleObjects.findByNameExact(name);
+ }
+
+ public static class PersistAll
+ extends PersonaEnumPersistAll<SimpleObject_persona, SimpleObject> {
+
+ public PersistAll() {
+ super(SimpleObject_persona.class);
+ }
+ }
+}
diff --git a/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java b/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java
new file mode 100644
index 0000000..8ad7b15
--- /dev/null
+++ b/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java
@@ -0,0 +1,50 @@
+/**
+ * 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 domainapp.modules.simple.dom.impl;
+
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class SimpleObject_Test {
+
+ SimpleObject simpleObject;
+
+ @BeforeEach
+ public void setUp() throws Exception {
+ simpleObject = SimpleObject.ofName("Foobar");
+ }
+
+ public static class Name extends SimpleObject_Test {
+
+ @Test
+ public void happyCase() throws Exception {
+ // given
+ assertThat(simpleObject.getName()).isEqualTo("Foobar");
+
+ // when
+ String name = "Foobar - updated";
+ simpleObject.setName(name);
+
+ // then
+ assertThat(simpleObject.getName()).isEqualTo(name);
+ }
+ }
+
+}
diff --git a/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java b/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java
new file mode 100644
index 0000000..732d0e9
--- /dev/null
+++ b/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java
@@ -0,0 +1,115 @@
+/**
+ * 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 domainapp.modules.simple.dom.impl;
+
+import java.util.List;
+
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeMatcher;
+import org.jmock.Expectations;
+import org.jmock.auto.Mock;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.unittestsupport.jmocking.JMockActions;
+import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class SimpleObjects_Test {
+
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
+
+ @Mock
+ RepositoryService mockRepositoryService;
+
+ SimpleObjects simpleObjects;
+
+ @Before
+ public void setUp() {
+ simpleObjects = new SimpleObjects();
+ simpleObjects.repositoryService = mockRepositoryService;
+ }
+
+ public static class Create extends SimpleObjects_Test {
+
+ @Test
+ public void happyCase() {
+
+ final String someName = "Foobar";
+
+ // given
+ context.checking(new Expectations() {
+ {
+ oneOf(mockRepositoryService).persist(with(nameOf(someName)));
+ will(JMockActions.returnArgument(0));
+ }
+
+ });
+
+ // when
+ final SimpleObject obj = simpleObjects.create(someName);
+
+ // then
+ assertThat(obj).isNotNull();
+ assertThat(obj.getName()).isEqualTo(someName);
+ }
+
+ private static Matcher<SimpleObject> nameOf(final String name) {
+ return new TypeSafeMatcher<SimpleObject>() {
+ @Override
+ protected boolean matchesSafely(final SimpleObject item) {
+ return name.equals(item.getName());
+ }
+
+ @Override
+ public void describeTo(final Description description) {
+ description.appendText("has name of '" + name + "'");
+ }
+ };
+ }
+ }
+
+ public static class ListAll extends SimpleObjects_Test {
+
+ @Test
+ public void happyCase() {
+
+ // given
+ final List<SimpleObject> all = _Lists.newArrayList();
+
+ context.checking(new Expectations() {
+ {
+ oneOf(mockRepositoryService).allInstances(SimpleObject.class);
+ will(returnValue(all));
+ }
+ });
+
+ // when
+ final List<SimpleObject> list = simpleObjects.listAll();
+
+ // then
+ assertThat(list).isEqualTo(all);
+ }
+ }
+}
diff --git a/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java b/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
new file mode 100644
index 0000000..65334a1
--- /dev/null
+++ b/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
@@ -0,0 +1,56 @@
+/*
+ * 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 domainapp.modules.simple.integtests;
+
+import domainapp.modules.simple.SimpleModule;
+
+import org.apache.isis.config.IsisPresets;
+import org.apache.isis.extensions.fixtures.IsisExtFixturesModule;
+import org.apache.isis.extensions.fixtures.IsisIntegrationTestAbstractWithFixtures;
+import org.apache.isis.jdo.IsisBootDataNucleus;
+import org.apache.isis.runtime.spring.IsisBoot;
+import org.apache.isis.security.bypass.IsisBootSecurityBypass;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.annotation.PropertySources;
+
+
+@SpringBootTest(classes = SimpleModuleIntegTestAbstract.AppManifest.class)
+public abstract class SimpleModuleIntegTestAbstract extends IsisIntegrationTestAbstractWithFixtures {
+
+ @Configuration
+ @PropertySources({
+ @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
+ @PropertySource(IsisPresets.Log4j2Test),
+ @PropertySource(IsisPresets.DataNucleusAutoCreate),
+ })
+ @Import({
+ IsisBoot.class,
+ IsisBootSecurityBypass.class,
+ IsisBootDataNucleus.class,
+ IsisExtFixturesModule.class,
+ SimpleModule.class
+ })
+ public static class AppManifest {
+ }
+
+}
+
diff --git a/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java b/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
new file mode 100644
index 0000000..7901c41
--- /dev/null
+++ b/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
@@ -0,0 +1,153 @@
+/*
+ * 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 domainapp.modules.simple.integtests.tests;
+
+import java.sql.Timestamp;
+
+import javax.inject.Inject;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.transaction.annotation.Transactional;
+
+import org.apache.isis.applib.services.title.TitleService;
+import org.apache.isis.applib.services.wrapper.DisabledException;
+import org.apache.isis.applib.services.wrapper.InvalidException;
+import org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong;
+import org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.junit.Assert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.fixture.SimpleObject_persona;
+import domainapp.modules.simple.integtests.SimpleModuleIntegTestAbstract;
+
+@Transactional
+public class SimpleObject_IntegTest extends SimpleModuleIntegTestAbstract {
+
+ SimpleObject simpleObject;
+
+ @BeforeEach
+ public void setUp() {
+ // given
+ simpleObject = fixtureScripts.runPersona(SimpleObject_persona.FOO);
+ }
+
+ public static class Name extends SimpleObject_IntegTest {
+
+ @Test
+ public void accessible() {
+ // when
+ final String name = wrap(simpleObject).getName();
+
+ // then
+ assertThat(name).isEqualTo(simpleObject.getName());
+ }
+
+ @Test
+ public void not_editable() {
+
+ // expect
+ assertThrows(DisabledException.class, ()->{
+
+ // when
+ wrap(simpleObject).setName("new name");
+
+ });
+ }
+
+ }
+
+ public static class UpdateName extends SimpleObject_IntegTest {
+
+ @Test
+ public void can_be_updated_directly() {
+
+ // when
+ wrap(simpleObject).updateName("new name");
+ transactionService.flushTransaction();
+
+ // then
+ assertThat(wrap(simpleObject).getName()).isEqualTo("new name");
+ }
+
+ @Test
+ public void failsValidation() {
+
+ // expect
+ InvalidException cause = assertThrows(InvalidException.class, ()->{
+
+ // when
+ wrap(simpleObject).updateName("new name!");
+
+ });
+
+ // also expect
+ assertThat(cause.getMessage(), containsString("Exclamation mark is not allowed."));
+
+ }
+ }
+
+
+ public static class Title extends SimpleObject_IntegTest {
+
+ @Inject
+ TitleService titleService;
+
+ @Test
+ public void interpolatesName() {
+
+ // given
+ final String name = wrap(simpleObject).getName();
+
+ // when
+ final String title = titleService.titleOf(simpleObject);
+
+ // then
+ assertThat(title).isEqualTo("Object: " + name);
+ }
+ }
+
+ public static class DataNucleusId extends SimpleObject_IntegTest {
+
+ @Test
+ public void should_be_populated() {
+ // when
+ final Long id = mixin(Persistable_datanucleusIdLong.class, simpleObject).prop();
+
+ // then
+ assertThat(id).isGreaterThanOrEqualTo(0);
+ }
+ }
+
+ public static class DataNucleusVersionTimestamp extends SimpleObject_IntegTest {
+
+ @Test
+ public void should_be_populated() {
+ // when
+ final Timestamp timestamp = mixin(Persistable_datanucleusVersionTimestamp.class, simpleObject).prop();
+ // then
+ assertThat(timestamp).isNotNull();
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java b/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
new file mode 100644
index 0000000..1769414
--- /dev/null
+++ b/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
@@ -0,0 +1,111 @@
+/*
+ * 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 domainapp.modules.simple.integtests.tests;
+
+import java.sql.SQLIntegrityConstraintViolationException;
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.jdo.JDODataStoreException;
+
+import org.hamcrest.MatcherAssert;
+import org.junit.jupiter.api.Test;
+import org.springframework.transaction.annotation.Transactional;
+
+import org.apache.isis.integtestsupport.ThrowableMatchers;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+import domainapp.modules.simple.fixture.SimpleObject_persona;
+import domainapp.modules.simple.integtests.SimpleModuleIntegTestAbstract;
+
+@Transactional
+public class SimpleObjects_IntegTest extends SimpleModuleIntegTestAbstract {
+
+ @Inject
+ SimpleObjects menu;
+
+ public static class ListAll extends SimpleObjects_IntegTest {
+
+ @Test
+ public void happyCase() {
+
+ // given
+ fixtureScripts.run(new SimpleObject_persona.PersistAll());
+ transactionService.flushTransaction();
+
+ // when
+ final List<SimpleObject> all = wrap(menu).listAll();
+
+ // then
+ assertThat(all).hasSize(SimpleObject_persona.values().length);
+ }
+
+ @Test
+ public void whenNone() {
+
+ // when
+ final List<SimpleObject> all = wrap(menu).listAll();
+
+ // then
+ assertThat(all).hasSize(0);
+ }
+ }
+
+ public static class Create extends SimpleObjects_IntegTest {
+
+ @Test
+ public void happyCase() {
+
+ wrap(menu).create("Faz");
+
+ // then
+ final List<SimpleObject> all = wrap(menu).listAll();
+ assertThat(all).hasSize(1);
+ }
+
+ @Test
+ public void whenAlreadyExists() {
+
+ // given
+ fixtureScripts.runPersona(SimpleObject_persona.FIZZ);
+ transactionService.flushTransaction();
+
+ // expect
+ Throwable cause = assertThrows(Throwable.class, ()->{
+
+ // when
+ wrap(menu).create("Fizz");
+ transactionService.flushTransaction();
+
+ });
+
+ // also expect
+ MatcherAssert.assertThat(cause,
+ ThrowableMatchers.causedBy(JDODataStoreException.class));
+
+ }
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..1f56c56
--- /dev/null
+++ b/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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.isis.app</groupId>
+ <artifactId>isis-app-starter-parent</artifactId>
+ <version>2.0.0-M3-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.apache.isis.examples.apps</groupId>
+ <artifactId>simpleapp</artifactId>
+
+ <name>Apache Isis App - SimpleApp Parent</name>
+
+ <packaging>pom</packaging>
+
+ <dependencyManagement>
+ <dependencies>
+
+ <!-- this project's own modules -->
+ <dependency>
+ <groupId>org.apache.isis.examples.apps</groupId>
+ <artifactId>simpleapp-module-simple</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.examples.apps</groupId>
+ <artifactId>simpleapp-module-simple</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ <type>test-jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.examples.apps</groupId>
+ <artifactId>simpleapp-application</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.examples.apps</groupId>
+ <artifactId>simpleapp-webapp</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <modules>
+ <module>module-simple</module>
+ <module>application</module>
+ <module>webapp</module>
+ </modules>
+
+</project>
diff --git a/webapp/lib/.gitignore b/webapp/lib/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/webapp/pom.xml b/webapp/pom.xml
new file mode 100644
index 0000000..a3758f8
--- /dev/null
+++ b/webapp/pom.xml
@@ -0,0 +1,243 @@
+<?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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.isis.examples.apps</groupId>
+ <artifactId>simpleapp</artifactId>
+ <version>2.0.0-M3-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>simpleapp-webapp</artifactId>
+ <name>Apache Isis App - SimpleApp Webapp</name>
+
+ <description>This assemblies and runs both the Wicket viewer and the Restfulobjects viewer in a single webapp configured to run using the datanucleus object store.</description>
+
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven-war-plugin.warName>${project.parent.artifactId}</maven-war-plugin.warName>
+ </properties>
+
+ <build>
+ <resources>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <filtering>false</filtering>
+ <directory>src/main/java</directory>
+ <includes>
+ <include>**</include>
+ </includes>
+ <excludes>
+ <exclude>**/*.java</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ </build>
+
+ <dependencies>
+
+ <!-- this app -->
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>simpleapp-application</artifactId>
+ </dependency>
+
+ <!-- isis -->
+ <dependency>
+ <groupId>org.apache.isis.mavendeps</groupId>
+ <artifactId>isis-mavendeps-webapp</artifactId>
+ <type>pom</type>
+ </dependency>
+
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ </dependency>
+
+ <!-- test -->
+ <dependency>
+ <groupId>org.apache.isis.mavendeps</groupId>
+ <artifactId>isis-mavendeps-testing</artifactId>
+ <type>pom</type>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <profiles>
+
+ <profile>
+ <id>actuator</id>
+ <activation>
+ <property>
+ <name>!skip.actuator</name>
+ </property>
+ </activation>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-actuator-autoconfigure</artifactId>
+ </dependency>
+ </dependencies>
+ </profile>
+
+ <!-- running: mvn spring-boot:run -->
+ <profile>
+ <id>package-as-jar</id>
+ <activation>
+ <property>
+ <name>!skip.package-as-jar</name>
+ </property>
+ </activation>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>${spring-boot.version}</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ <profile>
+ <id>jdbc-logging</id>
+ <activation>
+ <property>
+ <name>jdbc-logging</name>
+ </property>
+ </activation>
+ <dependencies>
+ <dependency>
+ <groupId>org.lazyluke</groupId>
+ <artifactId>log4jdbc-remix</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ </profile>
+
+ <profile>
+ <id>lockdown</id>
+ <activation>
+ <property>
+ <name>lockdown</name>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>list</id>
+ <phase>generate-test-resources</phase>
+ <goals>
+ <goal>list</goal>
+ </goals>
+ <configuration>
+ <outputFile>${project.build.directory}/test-classes/domain/webapp/lockdown/LockDownMavenDeps_Test.list.actual.txt</outputFile>
+ </configuration>
+ </execution>
+ <execution>
+ <id>tree</id>
+ <phase>generate-test-resources</phase>
+ <goals>
+ <goal>tree</goal>
+ </goals>
+ <configuration>
+ <outputFile>${project.build.directory}/test-classes/domain/webapp/lockdown/LockDownMavenDeps_Test.tree.actual.txt</outputFile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ <profile>
+ <id>docker</id>
+ <activation>
+ <property>
+ <name>docker</name>
+ </property>
+ </activation>
+ <properties>
+ <packaging.type>jar</packaging.type>
+ <package-as-war>false</package-as-war>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.google.cloud.tools</groupId>
+ <artifactId>jib-maven-plugin</artifactId>
+ <configuration>
+ <from>
+ <image>openjdk:13-alpine</image>
+ </from>
+ <container>
+ <jvmFlags>
+ <jvmFlag>-Xmx512m</jvmFlag>
+ </jvmFlags>
+ <mainClass>domainapp.application.HelloWorldApp</mainClass>
+ <ports>
+ <port>8080</port>
+ </ports>
+ </container>
+ <to>
+ <image>docker.io/apacheisis/simpleapp:latest</image>
+ <auth>
+ <username>${env.DOCKER_REGISTRY_USERNAME}</username>
+ <password>${env.DOCKER_REGISTRY_PASSWORD}</password>
+ </auth>
+ </to>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
diff --git a/webapp/src/main/java/domainapp/webapp/SimpleApp.java b/webapp/src/main/java/domainapp/webapp/SimpleApp.java
new file mode 100644
index 0000000..e4396e0
--- /dev/null
+++ b/webapp/src/main/java/domainapp/webapp/SimpleApp.java
@@ -0,0 +1,75 @@
+/*
+ * 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 domainapp.webapp;
+
+import domainapp.application.ApplicationModule;
+import domainapp.application.fixture.scenarios.DomainAppDemo;
+
+import org.apache.isis.extensions.fixtures.IsisExtFixturesModule;
+import org.apache.isis.jdo.IsisBootDataNucleus;
+import org.apache.isis.runtime.spring.IsisBoot;
+import org.apache.isis.security.shiro.IsisBootSecurityShiro;
+import org.apache.isis.viewer.restfulobjects.IsisBootViewerRestfulObjects;
+import org.apache.isis.viewer.wicket.viewer.IsisBootViewerWicket;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.isis.config.IsisPresets;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.annotation.PropertySources;
+
+@SpringBootApplication
+@Import({
+ SimpleApp.AppManifest.class,
+})
+public class SimpleApp extends SpringBootServletInitializer {
+
+ @Configuration
+ @PropertySources({
+ @PropertySource(IsisPresets.NoTranslations),
+ @PropertySource(IsisPresets.DataNucleusAutoCreate),
+ })
+ @Import({
+ IsisBoot.class,
+ IsisBootSecurityShiro.class,
+ IsisBootDataNucleus.class,
+ IsisBootViewerRestfulObjects.class,
+ IsisBootViewerWicket.class,
+
+ IsisExtFixturesModule.class,
+
+ ApplicationModule.class,
+ DomainAppDemo.class // register this fixture
+ })
+ public static class AppManifest {
+ }
+
+ /**
+ * @implNote this is to support the <em>Spring Boot Maven Plugin</em>, which auto-detects an
+ * entry point by searching for classes having a {@code main(...)}
+ */
+ public static void main(String[] args) {
+ IsisPresets.prototyping();
+ SpringApplication.run(new Class[] { SimpleApp.class }, args);
+ }
+
+}
diff --git a/webapp/src/main/java/domainapp/webapp/layout/menubars.layout.xml b/webapp/src/main/java/domainapp/webapp/layout/menubars.layout.xml
new file mode 100644
index 0000000..d286f2d
--- /dev/null
+++ b/webapp/src/main/java/domainapp/webapp/layout/menubars.layout.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ 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.
+-->
+<mb3:menuBars xsi:schemaLocation="http://isis.apache.org/applib/layout/menubars/bootstrap3 http://isis.apache.org/applib/layout/menubars/bootstrap3/menubars.xsd http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd" xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:lnk="http://isis.apache.org/applib/layout/links" xmlns:mb3="h [...]
+ <mb3:primary>
+ <mb3:menu>
+ <mb3:named>Simple Objects</mb3:named>
+ <mb3:section>
+ <mb3:serviceAction objectType="simple.SimpleObjects" id="create">
+ <cpt:named>Create</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="simple.SimpleObjects" id="findByName">
+ <cpt:named>Find By Name</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="simple.SimpleObjects" id="listAll">
+ <cpt:named>List All</cpt:named>
+ </mb3:serviceAction>
+ </mb3:section>
+ </mb3:menu>
+ <mb3:menu unreferencedActions="true">
+ <mb3:named>Other</mb3:named>
+ </mb3:menu>
+ </mb3:primary>
+ <mb3:secondary>
+ <mb3:menu>
+ <mb3:named>Prototyping</mb3:named>
+ <mb3:section>
+ <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScript">
+ <cpt:named>Run Fixture Script</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScriptWithAutoComplete">
+ <cpt:named>Run Fixture Script</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="recreateObjectsAndReturnFirst">
+ <cpt:named>Recreate Objects And Return First</cpt:named>
+ </mb3:serviceAction>
+ </mb3:section>
+ <mb3:section>
+ <mb3:serviceAction objectType="isisApplib.LayoutServiceMenu" id="downloadLayouts">
+ <cpt:named>Download Object Layouts (ZIP)</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="isisApplib.LayoutServiceMenu" id="downloadMenuBarsLayout">
+ <cpt:named>Download Menu Bars Layout (XML)</cpt:named>
+ </mb3:serviceAction>
+ </mb3:section>
+ <mb3:section>
+ <mb3:serviceAction objectType="isisApplib.MetaModelServicesMenu" id="downloadMetaModelXml">
+ <cpt:named>Download Meta Model (XML)</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="isisApplib.MetaModelServicesMenu" id="downloadMetaModelCsv">
+ <cpt:named>Download Meta Model (CSV)</cpt:named>
+ </mb3:serviceAction>
+ </mb3:section>
+ <mb3:section>
+ <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="openSwaggerUi">
+ <cpt:named>Open Swagger Ui</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="openRestApi">
+ <cpt:named>Open Rest Api</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="downloadSwaggerSchemaDefinition">
+ <cpt:named>Download Swagger Schema Definition</cpt:named>
+ </mb3:serviceAction>
+ </mb3:section>
+ <mb3:section>
+ <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="downloadTranslations">
+ <cpt:named>Download Translations</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="resetTranslationCache">
+ <cpt:named>Clear translation cache</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="switchToReadingTranslations">
+ <cpt:named>Switch To Reading Translations</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="switchToWritingTranslations">
+ <cpt:named>Switch To Writing Translations</cpt:named>
+ </mb3:serviceAction>
+ </mb3:section>
+ <mb3:section>
+ <mb3:serviceAction objectType="isisApplib.HsqlDbManagerMenu" id="hsqlDbManager">
+ <cpt:named>HSQL DB Manager</cpt:named>
+ </mb3:serviceAction>
+ <mb3:serviceAction objectType="isisApplib.H2ManagerMenu" id="openH2Console">
+ <cpt:named>H2 Console</cpt:named>
+ </mb3:serviceAction>
+ </mb3:section>
+ </mb3:menu>
+ </mb3:secondary>
+ <mb3:tertiary>
+ <mb3:menu>
+ <mb3:named>Configuration Service Menu</mb3:named>
+ <mb3:section>
+ <mb3:serviceAction objectType="isisApplib.ConfigurationMenu" id="configuration">
+ <cpt:named>Configuration</cpt:named>
+ </mb3:serviceAction>
+ </mb3:section>
+ </mb3:menu>
+ </mb3:tertiary>
+</mb3:menuBars>
diff --git a/webapp/src/main/resources/application.yml b/webapp/src/main/resources/application.yml
new file mode 100644
index 0000000..cb8143a
--- /dev/null
+++ b/webapp/src/main/resources/application.yml
@@ -0,0 +1,145 @@
+#
+# Recommend use for static configuration that does not change between environments.
+#
+# See also config/application.properties
+#
+isis:
+ reflector:
+ validator:
+ allowDeprecated: false
+ noParamsOnly: true
+ explicitObjectType: true
+ serviceActionsOnly: true
+ mixinsOnly: true
+
+ facet:
+ cssClassFa:
+ patterns:
+ new.*:fa-plus,\
+ add.*:fa-plus-square,\
+ create.*:fa-plus,\
+ update.*:fa-edit,\
+ delete.*:fa-trash,\
+ save.*:fa-floppy-o,\
+ change.*:fa-edit,\
+ edit.*:fa-pencil-square-o,\
+ maintain.*:fa-edit,\
+ remove.*:fa-minus-square,\
+ copy.*:fa-copy,\
+ move.*:fa-exchange,\
+ first.*:fa-star,\
+ find.*:fa-search,\
+ lookup.*:fa-search,\
+ search.*:fa-search,\
+ view.*:fa-search,\
+ clear.*:fa-remove,\
+ previous.*:fa-step-backward,\
+ next.*:fa-step-forward,\
+ list.*:fa-list, \
+ all.*:fa-list, \
+ download.*:fa-download, \
+ upload.*:fa-upload, \
+ export.*:fa-download,\
+ switch.*:fa-exchange,\
+ import.*:fa-upload,\
+ execute.*:fa-bolt, \
+ run.*:fa-bolt, \
+ calculate.*:fa-calculator, \
+ verify.*:fa-check-circle, \
+ refresh.*:fa-refresh, \
+ install.*:fa-wrench,\
+ stop.*:fa-stop,\
+ terminate.*:fa-stop,\
+ cancel.*:fa-stop,\
+ discard.*:fa-trash-o,\
+ pause.*:fa-pause,\
+ suspend.*:fa-pause,\
+ resume.*:fa-play,\
+ renew.*:fa-repeat,\
+ reset.*:fa-repeat,\
+ categorise.*:fa-folder-open-o,\
+ assign.*:fa-hand-o-right,\
+ approve.*:fa-thumbs-o-up,\
+ decline.*:fa-thumbs-o-down
+
+ cssClass:
+ patterns:
+ delete.*:btn-danger,\
+ discard.*:btn-warning,\
+ remove.*:btn-warning
+
+ explicitAnnotations:
+ action: true
+
+ objects:
+ editing: false
+
+ services:
+ audit:
+ objects: all
+ command:
+ actions: ignore_safe
+ properties: all
+ publish:
+ objects: all
+ actions: all
+ properties: all
+
+ injector:
+ setPrefix: false
+
+ value:
+ format:
+ date: dd-MM-yyyy
+
+ viewer:
+ wicket:
+ application:
+ menubarsLayoutXml: domainapp/webapp/layout/menubars.layout.xml
+ brandLogoHeader: /images/apache-isis/logo-48x48.png
+ faviconUrl: /images/favicon.png
+ name: Simple App
+ css: css/application.css
+ js: scripts/application.js
+ about: Simple App
+ welcome:
+ file: welcome.html
+
+ credit[0]:
+ image: /images/apache-isis/logo-48x48.png
+ name: Apache Isis
+ url: http://isis.apache.org
+
+ themes:
+ initial: Flatly
+ showChooser: true
+ enabled: bootstrap-theme, Cerulean, Cosmo, Cyborg, Darkly, Flatly, Journal, Lumen, Paper, Readable, Sandstone, Simplex, Slate, Spacelab, Superhero, United, Yeti
+
+ maxTitleLengthInStandaloneTables: 0
+ maxTitleLengthInParentedTables: 0
+
+ developmentUtilities:
+ enable: true
+
+ persistor:
+ datanucleus:
+ impl:
+ datanucleus:
+ schema:
+ validateTables: true
+ validateConstraints: true
+
+ persistenceByReachabilityAtCommit: false
+ identifier:
+ case: MixedCase
+
+ cache:
+ level2:
+ type: none
+ mode: ENABLE_SELECTIVE
+
+ standaloneCollection:
+ bulkLoad: false
+spring:
+ banner:
+ location: banner.txt
diff --git a/webapp/src/main/resources/banner.txt b/webapp/src/main/resources/banner.txt
new file mode 100644
index 0000000..1348a76
--- /dev/null
+++ b/webapp/src/main/resources/banner.txt
@@ -0,0 +1,6 @@
+ _ _ ___ _
+ / \ _ __ __ _ ___| |__ ___ |_ _|___(_)___
+ / _ \ | '_ \ / _` |/ __| '_ \ / _ \ | |/ __| / __|
+ / ___ \| |_) | (_| | (__| | | | __/ | |\__ \ \__ \
+ /_/ \_\ .__/ \__,_|\___|_| |_|\___| |___|___/_|___/
+ |_|
\ No newline at end of file
diff --git a/webapp/src/main/resources/config/application.properties b/webapp/src/main/resources/config/application.properties
new file mode 100644
index 0000000..13ec292
--- /dev/null
+++ b/webapp/src/main/resources/config/application.properties
@@ -0,0 +1,12 @@
+#
+# Recommend use for configuration that changes between environments.
+#
+# To override externally, see Spring Boot docs
+# https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
+#
+# See also /application.yml
+#
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL = jdbc:h2:mem:test
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName = org.h2.Driver
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName = sa
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword =
\ No newline at end of file
diff --git a/webapp/src/main/resources/shiro.ini b/webapp/src/main/resources/shiro.ini
new file mode 100644
index 0000000..019f356
--- /dev/null
+++ b/webapp/src/main/resources/shiro.ini
@@ -0,0 +1,93 @@
+#
+# 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.
+#
+
+[main]
+
+contextFactory = org.apache.isis.security.shiro.IsisLdapContextFactory
+contextFactory.url = ldap://localhost:10389
+contextFactory.authenticationMechanism = CRAM-MD5
+contextFactory.systemAuthenticationMechanism = simple
+contextFactory.systemUsername = uid=admin,ou=system
+contextFactory.systemPassword = secret
+
+ldapRealm = org.apache.isis.security.shiro.IsisLdapRealm
+ldapRealm.contextFactory = $contextFactory
+
+ldapRealm.searchBase = ou=groups,o=mojo
+ldapRealm.groupObjectClass = groupOfUniqueNames
+ldapRealm.uniqueMemberAttribute = uniqueMember
+ldapRealm.uniqueMemberAttributeValueTemplate = uid={0}
+
+# optional mapping from physical groups to logical application roles
+#ldapRealm.rolesByGroup = \
+# LDN_USERS: user_role,\
+# NYK_USERS: user_role,\
+# HKG_USERS: user_role,\
+# GLOBAL_ADMIN: admin_role,\
+# DEMOS: self-install_role
+
+ldapRealm.permissionsByRole=\
+ user_role = *:SimpleObjectMenu:*:*,\
+ *:SimpleObject:*:*; \
+ self-install_role = *:FixtureScriptsDefault:*:* ; \
+ admin_role = *
+
+# to use ldap...
+# (see docs for details of how to setup users/groups in Apache Directory Studio).
+#securityManager.realms = $ldapRealm
+
+# to use .ini file
+securityManager.realms = $iniRealm
+
+
+
+# -----------------------------------------------------------------------------
+# Users and their assigned roles
+#
+# Each line conforms to the format defined in the
+# org.apache.shiro.realm.text.TextConfigurationRealm#setUserDefinitions JavaDoc
+# -----------------------------------------------------------------------------
+
+[users]
+# user = password, role1, role2, role3, ...
+
+
+sven = pass, admin_role
+dick = pass, user_role, self-install_role
+bob = pass, user_role, self-install_role
+joe = pass, user_role, self-install_role
+guest = guest, user_role
+
+
+
+# -----------------------------------------------------------------------------
+# Roles with assigned permissions
+#
+# Each line conforms to the format defined in the
+# org.apache.shiro.realm.text.TextConfigurationRealm#setRoleDefinitions JavaDoc
+# -----------------------------------------------------------------------------
+
+[roles]
+# role = perm1, perm2, perm3, ...
+# perm in format: packageName:className:memberName:r,w
+
+user_role = *:SimpleObjectMenu:*:*,\
+ *:SimpleObject:*:*
+self-install_role = *:FixtureScriptsDefault:*:*
+admin_role = *
diff --git a/webapp/src/main/resources/static/css/application.css b/webapp/src/main/resources/static/css/application.css
new file mode 100644
index 0000000..9f1612a
--- /dev/null
+++ b/webapp/src/main/resources/static/css/application.css
@@ -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.
+ */
+
diff --git a/webapp/src/main/resources/static/images/apache-isis/logo-48x48.png b/webapp/src/main/resources/static/images/apache-isis/logo-48x48.png
new file mode 100644
index 0000000..08e012c
Binary files /dev/null and b/webapp/src/main/resources/static/images/apache-isis/logo-48x48.png differ
diff --git a/webapp/src/main/resources/static/images/apache-isis/logo.png b/webapp/src/main/resources/static/images/apache-isis/logo.png
new file mode 100644
index 0000000..5284fe7
Binary files /dev/null and b/webapp/src/main/resources/static/images/apache-isis/logo.png differ
diff --git a/webapp/src/main/resources/static/images/favicon.png b/webapp/src/main/resources/static/images/favicon.png
new file mode 100644
index 0000000..2586589
Binary files /dev/null and b/webapp/src/main/resources/static/images/favicon.png differ
diff --git a/webapp/src/main/resources/static/index.html b/webapp/src/main/resources/static/index.html
new file mode 100644
index 0000000..e25c772
--- /dev/null
+++ b/webapp/src/main/resources/static/index.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+ 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.
+-->
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title>Apache Isis™ SimpleApp</title>
+
+ <style type="text/css">
+body {
+ background-color: #1A467B;
+ font-family: Verdana, Helvetica, Arial, serif;
+ font-size: 90%;
+}
+
+li {
+ margin-top: 6px;
+ margin-bottom: 6px;
+}
+table {
+ border-collapse: collapse;
+}
+table, th, td {
+ border: 1px;
+ border-style: solid;
+ border-color: lightgray;
+}
+th, td {
+ padding: 10px;
+}
+#wrapper {
+ background-color: #ffffff;
+ width: 900px;
+ margin: 8px auto;
+ padding: 12px;
+}
+ </style>
+ </head>
+ <body>
+ <div id="wrapper">
+ <img alt="Isis Logo" src="images/apache-isis/logo.png" />
+
+ <p>
+ This app has been generated using Apache Isis'
+ <a href="http://isis.apache.org/arch/simlpe%61pp/about.html" target="_blank">SimpleApp</a> archetype,
+ to create a purposefully minimal application that nevertheless includes fixture data, integration tests and BDD specs.
+ <br/>
+ <br/>
+ The application's business logic resides in a single (maven) module, <a href="https://github.com/apache/isis/tree/master/example/application/simple%61pp/module-simple" target="_blank">module-simple</a>, that in turn contains a single domain entity, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java" target="_blank">SimpleObject</a>. The module has its own <a [...]
+ <br/>
+ <br/>
+ The app also defines the <a href="https://github.com/apache/isis/tree/master/example/application/simple%61pp/application" target="_blank">application</a> (maven) module; this holds <a href="https://github.com/apache/isis/tree/master/example/application/simple%61pp/application/src/main/java/domainapp/application/fixture" target="_blank">fixtures</a>, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/application/src/test/java/domainapp/ap [...]
+ <br/>
+ <br/>
+ The app's <a href="https://github.com/apache/isis/tree/master/example/application/simple%61pp/webapp" target="_blank">webapp</a> (maven) module is used to assemble the application into a WAR file.
+ </p>
+
+ <p>To access the app:</p>
+ <ul>
+ <li>
+ <p>
+ <b><a href="wicket/">wicket/</a></b>
+ </p>
+ <p>
+ provides access to a generic UI for end-users,
+ Apache Isis' <a href="http://isis.apache.org/guides/ugvw/ugvw.html" target="_blank">Wicket Viewer</a>.
+ As its name suggests, this viewer is built on top of <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>™.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>
+ <a href="swagger-ui/index.template.html">swagger-ui/</a>
+ </b>
+ </p>
+ <p>
+ provides access to a Swagger UI which uses a subset of the framework's automatically
+ generated <a href="restful/">RESTful API</a> (provided by the
+ <a href="http://isis.apache.org/guides/ugvro/ugvro.html" target="_blank">Restful Objects viewer</a>). There are
+ three versions of the Swagger spec files (that drive the UI):
+ <a href="restful/swagger/public">public</a> (for use by "third-party" apps),
+ <a href="restful/swagger/private">private</a> (for use by internal apps), and
+ <a href="restful/swagger/prototyping">prototyping</a> (an extended version of the private
+ API). The Swagger spec files are themselves dynamically generated and can be used to generate
+ client-side stubs.
+ </p>
+ <p>The RESTful API can return both simple representations and also richer hypermedia representations
+ that are conformant with the <a href="http://restfulobjects.org" target="_blank">Restful Objects</a> spec.
+ The HTTP <code>Accept</code> header is used to select which representation should be generated.
+ </p>
+ </li>
+ </ul>
+
+ <p>
+ The default user/password is <b><i>sven/pass</i></b> (as configured in the
+ <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file).
+ </p>
+
+ </div>
+ </body>
+</html>
diff --git a/webapp/src/main/resources/static/scripts/application.js b/webapp/src/main/resources/static/scripts/application.js
new file mode 100644
index 0000000..d8cf6fe
--- /dev/null
+++ b/webapp/src/main/resources/static/scripts/application.js
@@ -0,0 +1,3 @@
+$(document).ready(function() {
+ /// here...
+});
\ No newline at end of file
diff --git a/webapp/src/main/webapp/WEB-INF/translations-en.po b/webapp/src/main/webapp/WEB-INF/translations-en.po
new file mode 100644
index 0000000..4e59ee2
--- /dev/null
+++ b/webapp/src/main/webapp/WEB-INF/translations-en.po
@@ -0,0 +1,674 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2016-06-16 15:34:40+\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel(java.lang.String)
+msgid ".csv file name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#$$(java.lang.String)
+msgid ".jdo file name"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
+msgid ".pot file name"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#ACTION
+msgid "Action"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Are you sure?"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "AutoLabel.CSS.required"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Cancel"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#clearHints()
+#: domainapp.dom.simple.SimpleObject#clearHints()
+msgid "Clear Hints"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
+msgid "Clear translation cache"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#COLLECTION
+msgid "Collection"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsAjaxTablePanelFactory.Table"
+msgstr "Table"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsUnresolvedPanel.Hide"
+msgstr "Hide"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#COMPLETE
+msgid "Complete"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationServiceMenu#configuration()
+msgid "Configuration"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Confirm"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#create()
+msgid "Create"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#CURRENT
+msgid "Current"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#delete()
+msgid "Delete"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#downloadJdoMetadata()
+msgid "Download Jdo Metadata"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#downloadLayoutXml()
+#: domainapp.dom.simple.SimpleObject#downloadLayoutXml()
+msgid "Download Layout Xml"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu#downloadLayouts()
+msgid "Download Layouts (XML)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel()
+msgid "Download Meta Model (CSV)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec()
+msgid "Download Swagger Spec"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
+msgid "Download Translations"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.dto.Dto_downloadXml#$$(java.lang.String)
+#: org.apache.isis.applib.services.dto.Dto_downloadXsd#$$(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#$$(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
+msgid "File name"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Exclamation mark is not allowed"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec(java.lang.String,org.apache.isis.applib.services.swagger.SwaggerService$Visibility,org.apache.isis.applib.services.swagger.SwaggerService$Format)
+msgid "Filename"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#findByName()
+msgid "Find By Name"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
+msgid "Fixture script"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#friendlyName
+#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
+msgid "Friendly Name"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "General"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageService#homePage()
+msgid "Home Page"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusIdLong()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong#$$()
+msgid "Id"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT
+msgid "Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT_ARE_YOU_SURE
+msgid "Idempotent Are You Sure"
+msgstr "Are you sure?"
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#IGNORE
+msgid "Ignore"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#INCLUDE
+msgid "Include"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#JSON
+msgid "Json"
+msgstr "JSON"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#key
+msgid "Key"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#listAll()
+msgid "List All"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
+msgid "Lookup"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml
+#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata
+#: org.apache.isis.viewer.wicket.viewer.services.Object_clearHints
+msgid "Metadata"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#MINIMAL
+msgid "Minimal"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
+msgid "Name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureFactory#newApplicationFeature()
+msgid "New Application Feature"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT
+msgid "Non Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT_ARE_YOU_SURE
+msgid "Non Idempotent Are You Sure"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#NORMALIZED
+msgid "Normalized"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#number
+msgid "Number"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
+msgid "Object"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#title()
+msgid "Object: {name}"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#objects
+msgid "Objects"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Parameters"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE
+msgid "Private"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE_WITH_PROTOTYPING
+msgid "Private With Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#PROPERTY
+msgid "Property"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
+msgid "Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PUBLIC
+msgid "Public"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#rebuildMetamodel()
+#: domainapp.dom.simple.SimpleObject#rebuildMetamodel()
+msgid "Rebuild Metamodel"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
+msgid "Recreate Objects And Return First"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#object
+msgid "Result"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#className
+msgid "Result class"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#key
+msgid "Result key"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
+msgid "Run Fixture Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE
+msgid "Safe"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE_AND_REQUEST_CACHEABLE
+msgid "Safe And Request Cacheable"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects
+#: org.apache.isis.applib.fixturescripts.FixtureScript
+msgid "Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#title()
+msgid "Simple Objects"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
+msgid "Switch To Reading Translations"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
+msgid "Switch To Writing Translations"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Update Name"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#value
+msgid "Value"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionLong()
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionTimestamp()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong#$$()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp#$$()
+msgid "Version"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#YAML
+msgid "Yaml"
+msgstr "YAML"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "aboutLabel"
+msgstr "About"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "cancelLabel"
+msgstr "Cancel"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "datanucleusIdLong"
+msgstr "Id"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortPlural"
+msgstr "Please enter {number} more characters"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortSingular"
+msgstr "Please enter 1 more character"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "loadMore"
+msgstr "Load more"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "loginHeader"
+msgstr "Login"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "logoutLabel"
+msgstr "Logout"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "name"
+msgstr ""
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "noMatches"
+msgstr "No matches"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel
+msgid "objects"
+msgstr "Objects"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "okLabel"
+msgstr "OK"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "rememberMeLabel"
+msgstr "Remember Me"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "resetButtonLabel"
+msgstr "Reset"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "searching"
+msgstr "Searching..."
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigPlural"
+msgstr "You can only select {limit} items"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigSingular"
+msgstr "You can only select 1 item"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signInButtonLabel"
+msgstr "Sign in"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#title()
+msgid "{num} objects"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "confirmPasswordLabel"
+msgstr "Confirm password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "datatable.no-records-found"
+msgstr "No Records Found"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "editLabel"
+msgstr "Edit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailIsNotAvailable"
+msgstr "The given email is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailPlaceholder"
+msgstr "Enter your email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailPlaceholder"
+msgstr "Enter an email for the new account"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailLabel"
+msgstr "Email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailSentMessage"
+msgstr "An email has been sent to '${email}' for verification."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "forgotPasswordLinkLabel"
+msgstr "Forgot your password?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeSuccessful"
+msgstr "The password has been changed successfully. You can <a class=\"alert-success\" style=\"text-decoration:underline;\" href=\"${signInUrl}\">login</a> now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeUnsuccessful"
+msgstr "There was a problem while updating the password. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordPlaceholder"
+msgstr "Enter password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetExpiredOrInvalidToken"
+msgstr "You are trying to reset the password for an expired or invalid token"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetHeader"
+msgstr "Forgot password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetSubmitLabel"
+msgstr "Submit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "registerButtonLabel"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "registerHeader"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noSuchUserByEmail"
+msgstr "There is no account with this email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noUserForAnEmailValidToken"
+msgstr "The account seems to be either already deleted or has changed its email address. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signUpButtonLabel"
+msgstr "Don't have an account? Sign up now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "signUpButtonLabel"
+msgstr "Verify email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+msgid "signUpHeader"
+msgstr "Sign Up"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameIsNotAvailable"
+msgstr "The provided username is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernamePlaceholder"
+msgstr "Username"
+
diff --git a/webapp/src/main/webapp/WEB-INF/translations-es.po b/webapp/src/main/webapp/WEB-INF/translations-es.po
new file mode 100644
index 0000000..d519350
--- /dev/null
+++ b/webapp/src/main/webapp/WEB-INF/translations-es.po
@@ -0,0 +1,673 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2016-06-16 15:34:40+\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel(java.lang.String)
+msgid ".csv file name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#$$(java.lang.String)
+msgid ".jdo file name"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
+msgid ".pot file name"
+msgstr "fichero .pot"
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#ACTION
+msgid "Action"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Are you sure?"
+msgstr "¿Estas seguro?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "AutoLabel.CSS.required"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Cancel"
+msgstr "Cancelar"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#clearHints()
+#: domainapp.dom.simple.SimpleObject#clearHints()
+msgid "Clear Hints"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
+msgid "Clear translation cache"
+msgstr "Limpiar la caché de traducciones"
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#COLLECTION
+msgid "Collection"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsAjaxTablePanelFactory.Table"
+msgstr "Table"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsUnresolvedPanel.Hide"
+msgstr "Hide"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#COMPLETE
+msgid "Complete"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationServiceMenu#configuration()
+msgid "Configuration"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Confirm"
+msgstr "Confirmar"
+
+
+#: domainapp.dom.simple.SimpleObjects#create()
+msgid "Create"
+msgstr "Crear"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#CURRENT
+msgid "Current"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#delete()
+msgid "Delete"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#downloadJdoMetadata()
+msgid "Download Jdo Metadata"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#downloadLayoutXml()
+#: domainapp.dom.simple.SimpleObject#downloadLayoutXml()
+msgid "Download Layout Xml"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu#downloadLayouts()
+msgid "Download Layouts (XML)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel()
+msgid "Download Meta Model (CSV)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec()
+msgid "Download Swagger Spec"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
+msgid "Download Translations"
+msgstr "Descargar traducciones"
+
+
+#: org.apache.isis.applib.services.dto.Dto_downloadXml#$$(java.lang.String)
+#: org.apache.isis.applib.services.dto.Dto_downloadXsd#$$(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#$$(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
+msgid "File name"
+msgstr ""
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Exclamation mark is not allowed"
+msgstr "No se admite el signo de exclamación"
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec(java.lang.String,org.apache.isis.applib.services.swagger.SwaggerService$Visibility,org.apache.isis.applib.services.swagger.SwaggerService$Format)
+msgid "Filename"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#findByName()
+msgid "Find By Name"
+msgstr "Buscar por Nombre"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
+msgid "Fixture script"
+msgstr "Script de Instalación"
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#friendlyName
+#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
+msgid "Friendly Name"
+msgstr "Nombre común"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "General"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageService#homePage()
+msgid "Home Page"
+msgstr "Página de Inicio"
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusIdLong()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong#$$()
+msgid "Id"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT
+msgid "Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT_ARE_YOU_SURE
+msgid "Idempotent Are You Sure"
+msgstr "¿Estas seguro?"
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#IGNORE
+msgid "Ignore"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#INCLUDE
+msgid "Include"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#JSON
+msgid "Json"
+msgstr "JSON"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#key
+msgid "Key"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#listAll()
+msgid "List All"
+msgstr "Listar Todos"
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
+msgid "Lookup"
+msgstr "Buscar"
+
+
+#: domainapp.dom.simple.SimpleObject
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml
+#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata
+#: org.apache.isis.viewer.wicket.viewer.services.Object_clearHints
+msgid "Metadata"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#MINIMAL
+msgid "Minimal"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
+msgid "Name"
+msgstr "Nombre"
+
+
+#: org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureFactory#newApplicationFeature()
+msgid "New Application Feature"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT
+msgid "Non Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT_ARE_YOU_SURE
+msgid "Non Idempotent Are You Sure"
+msgstr "¿Estas seguro?"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#NORMALIZED
+msgid "Normalized"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#number
+msgid "Number"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
+msgid "Object"
+msgstr "Objeto"
+
+
+#: domainapp.dom.simple.SimpleObject#title()
+msgid "Object: {name}"
+msgstr "Objeto: {name}"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#objects
+msgid "Objects"
+msgstr "Objetos"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Parameters"
+msgstr "Parámetros"
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE
+msgid "Private"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE_WITH_PROTOTYPING
+msgid "Private With Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#PROPERTY
+msgid "Property"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
+msgid "Prototyping"
+msgstr "Prototipo"
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PUBLIC
+msgid "Public"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#rebuildMetamodel()
+#: domainapp.dom.simple.SimpleObject#rebuildMetamodel()
+msgid "Rebuild Metamodel"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
+msgid "Recreate Objects And Return First"
+msgstr "Recrear Objetos y Devolver el Primero"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#object
+msgid "Result"
+msgstr "Resultado"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#name
+msgid "Result class"
+msgstr "Clase del resultado"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#key
+msgid "Result key"
+msgstr "Clave del Resultado"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
+msgid "Run Fixture Script"
+msgstr "Ejecutar Script de Instalación"
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE
+msgid "Safe"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE_AND_REQUEST_CACHEABLE
+msgid "Safe And Request Cacheable"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects
+#: org.apache.isis.applib.fixturescripts.FixtureScript
+msgid "Script"
+msgstr "Script"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
+msgstr "Parámetros especÃficos del Script (si hay alguno). El formato depende de la implementación del script (por ejemplo, clave=valor, CSV, JSON, XML, etc.)"
+
+
+#: domainapp.dom.simple.SimpleObjects#title()
+msgid "Simple Objects"
+msgstr "Objetos básicos"
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
+msgid "Switch To Reading Translations"
+msgstr "Cambiar a Lectura de Traducciones"
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
+msgid "Switch To Writing Translations"
+msgstr "Cambiar a Escritura de Traducciones"
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Update Name"
+msgstr "Nombre de la Actualización"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#value
+msgid "Value"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionLong()
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionTimestamp()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong#$$()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp#$$()
+msgid "Version"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#YAML
+msgid "Yaml"
+msgstr "YAML"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "aboutLabel"
+msgstr "About"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "cancelLabel"
+msgstr "Cancel"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "datanucleusIdLong"
+msgstr "Id"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortPlural"
+msgstr "Please enter {number} more characters"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortSingular"
+msgstr "Please enter 1 more character"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "loadMore"
+msgstr "Load more"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "loginHeader"
+msgstr "Login"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "logoutLabel"
+msgstr "Logout"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "name"
+msgstr ""
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "noMatches"
+msgstr "No matches"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel
+msgid "objects"
+msgstr "Objects"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "okLabel"
+msgstr "OK"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "rememberMeLabel"
+msgstr "Remember Me"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "resetButtonLabel"
+msgstr "Reset"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "searching"
+msgstr "Searching..."
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigPlural"
+msgstr "You can only select {limit} items"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigSingular"
+msgstr "You can only select 1 item"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signInButtonLabel"
+msgstr "Sign in"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#title()
+msgid "{num} objects"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "confirmPasswordLabel"
+msgstr "Confirm password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "datatable.no-records-found"
+msgstr "No Records Found"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "editLabel"
+msgstr "Edit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailIsNotAvailable"
+msgstr "The given email is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailPlaceholder"
+msgstr "Enter your email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailPlaceholder"
+msgstr "Enter an email for the new account"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailLabel"
+msgstr "Email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailSentMessage"
+msgstr "An email has been sent to '${email}' for verification."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "forgotPasswordLinkLabel"
+msgstr "Forgot your password?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeSuccessful"
+msgstr "The password has been changed successfully. You can <a class=\"alert-success\" style=\"text-decoration:underline;\" href=\"${signInUrl}\">login</a> now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeUnsuccessful"
+msgstr "There was a problem while updating the password. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordPlaceholder"
+msgstr "Enter password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetExpiredOrInvalidToken"
+msgstr "You are trying to reset the password for an expired or invalid token"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetHeader"
+msgstr "Forgot password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetSubmitLabel"
+msgstr "Submit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "registerButtonLabel"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "registerHeader"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noSuchUserByEmail"
+msgstr "There is no account with this email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noUserForAnEmailValidToken"
+msgstr "The account seems to be either already deleted or has changed its email address. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signUpButtonLabel"
+msgstr "Don't have an account? Sign up now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "signUpButtonLabel"
+msgstr "Verify email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+msgid "signUpHeader"
+msgstr "Sign Up"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameIsNotAvailable"
+msgstr "The provided username is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernamePlaceholder"
+msgstr "Username"
+
diff --git a/webapp/src/main/webapp/WEB-INF/translations-nl.po b/webapp/src/main/webapp/WEB-INF/translations-nl.po
new file mode 100644
index 0000000..af4babf
--- /dev/null
+++ b/webapp/src/main/webapp/WEB-INF/translations-nl.po
@@ -0,0 +1,674 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2016-06-16 15:34:40+\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel(java.lang.String)
+msgid ".csv file name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#$$(java.lang.String)
+msgid ".jdo file name"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
+msgid ".pot file name"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#ACTION
+msgid "Action"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Are you sure?"
+msgstr "Weet je het zeker?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "AutoLabel.CSS.required"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Cancel"
+msgstr "Annuleer"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#clearHints()
+#: domainapp.dom.simple.SimpleObject#clearHints()
+msgid "Clear Hints"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
+msgid "Clear translation cache"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#COLLECTION
+msgid "Collection"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsAjaxTablePanelFactory.Table"
+msgstr "Table"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsUnresolvedPanel.Hide"
+msgstr "Hide"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#COMPLETE
+msgid "Complete"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationServiceMenu#configuration()
+msgid "Configuration"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Confirm"
+msgstr "Bevestigen"
+
+
+#: domainapp.dom.simple.SimpleObjects#create()
+msgid "Create"
+msgstr "Creëren"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#CURRENT
+msgid "Current"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#delete()
+msgid "Delete"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#downloadJdoMetadata()
+msgid "Download Jdo Metadata"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#downloadLayoutXml()
+#: domainapp.dom.simple.SimpleObject#downloadLayoutXml()
+msgid "Download Layout Xml"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu#downloadLayouts()
+msgid "Download Layouts (XML)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel()
+msgid "Download Meta Model (CSV)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec()
+msgid "Download Swagger Spec"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
+msgid "Download Translations"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.dto.Dto_downloadXml#$$(java.lang.String)
+#: org.apache.isis.applib.services.dto.Dto_downloadXsd#$$(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#$$(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
+msgid "File name"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Exclamation mark is not allowed"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec(java.lang.String,org.apache.isis.applib.services.swagger.SwaggerService$Visibility,org.apache.isis.applib.services.swagger.SwaggerService$Format)
+msgid "Filename"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#findByName()
+msgid "Find By Name"
+msgstr "Zoek op Naam"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
+msgid "Fixture script"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#friendlyName
+#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
+msgid "Friendly Name"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "General"
+msgstr "Algemeen"
+
+
+#: domainapp.app.services.homepage.HomePageService#homePage()
+msgid "Home Page"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusIdLong()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong#$$()
+msgid "Id"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT
+msgid "Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT_ARE_YOU_SURE
+msgid "Idempotent Are You Sure"
+msgstr "Weet je het zeker?"
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#IGNORE
+msgid "Ignore"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#INCLUDE
+msgid "Include"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#JSON
+msgid "Json"
+msgstr "JSON"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#key
+msgid "Key"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#listAll()
+msgid "List All"
+msgstr "Lijst Alle"
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
+msgid "Lookup"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml
+#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata
+#: org.apache.isis.viewer.wicket.viewer.services.Object_clearHints
+msgid "Metadata"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#MINIMAL
+msgid "Minimal"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
+msgid "Name"
+msgstr "Naam"
+
+
+#: org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureFactory#newApplicationFeature()
+msgid "New Application Feature"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT
+msgid "Non Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT_ARE_YOU_SURE
+msgid "Non Idempotent Are You Sure"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#NORMALIZED
+msgid "Normalized"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#number
+msgid "Number"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
+msgid "Object"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#title()
+msgid "Object: {name}"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#objects
+msgid "Objects"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Parameters"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE
+msgid "Private"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE_WITH_PROTOTYPING
+msgid "Private With Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#PROPERTY
+msgid "Property"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
+msgid "Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PUBLIC
+msgid "Public"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#rebuildMetamodel()
+#: domainapp.dom.simple.SimpleObject#rebuildMetamodel()
+msgid "Rebuild Metamodel"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
+msgid "Recreate Objects And Return First"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#object
+msgid "Result"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#className
+msgid "Result class"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#key
+msgid "Result key"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
+msgid "Run Fixture Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE
+msgid "Safe"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE_AND_REQUEST_CACHEABLE
+msgid "Safe And Request Cacheable"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects
+#: org.apache.isis.applib.fixturescripts.FixtureScript
+msgid "Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#title()
+msgid "Simple Objects"
+msgstr "Eenvoudige Objecten"
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
+msgid "Switch To Reading Translations"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
+msgid "Switch To Writing Translations"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Update Name"
+msgstr "Updaten Naam"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#value
+msgid "Value"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionLong()
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionTimestamp()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong#$$()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp#$$()
+msgid "Version"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#YAML
+msgid "Yaml"
+msgstr "YAML"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "aboutLabel"
+msgstr "About"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "cancelLabel"
+msgstr "Cancel"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "datanucleusIdLong"
+msgstr "Id"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortPlural"
+msgstr "Please enter {number} more characters"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortSingular"
+msgstr "Please enter 1 more character"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "loadMore"
+msgstr "Load more"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "loginHeader"
+msgstr "Login"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "logoutLabel"
+msgstr "Logout"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "name"
+msgstr ""
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "noMatches"
+msgstr "No matches"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel
+msgid "objects"
+msgstr "Objects"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "okLabel"
+msgstr "OK"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "rememberMeLabel"
+msgstr "Remember Me"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "resetButtonLabel"
+msgstr "Reset"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "searching"
+msgstr "Searching..."
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigPlural"
+msgstr "You can only select {limit} items"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigSingular"
+msgstr "You can only select 1 item"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signInButtonLabel"
+msgstr "Sign in"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#title()
+msgid "{num} objects"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "confirmPasswordLabel"
+msgstr "Confirm password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "datatable.no-records-found"
+msgstr "No Records Found"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "editLabel"
+msgstr "Edit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailIsNotAvailable"
+msgstr "The given email is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailPlaceholder"
+msgstr "Enter your email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailPlaceholder"
+msgstr "Enter an email for the new account"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailLabel"
+msgstr "Email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailSentMessage"
+msgstr "An email has been sent to '${email}' for verification."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "forgotPasswordLinkLabel"
+msgstr "Forgot your password?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeSuccessful"
+msgstr "The password has been changed successfully. You can <a class=\"alert-success\" style=\"text-decoration:underline;\" href=\"${signInUrl}\">login</a> now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeUnsuccessful"
+msgstr "There was a problem while updating the password. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordPlaceholder"
+msgstr "Enter password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetExpiredOrInvalidToken"
+msgstr "You are trying to reset the password for an expired or invalid token"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetHeader"
+msgstr "Forgot password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetSubmitLabel"
+msgstr "Submit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "registerButtonLabel"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "registerHeader"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noSuchUserByEmail"
+msgstr "There is no account with this email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noUserForAnEmailValidToken"
+msgstr "The account seems to be either already deleted or has changed its email address. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signUpButtonLabel"
+msgstr "Don't have an account? Sign up now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "signUpButtonLabel"
+msgstr "Verify email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+msgid "signUpHeader"
+msgstr "Sign Up"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameIsNotAvailable"
+msgstr "The provided username is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernamePlaceholder"
+msgstr "Username"
+
diff --git a/webapp/src/main/webapp/WEB-INF/translations.po b/webapp/src/main/webapp/WEB-INF/translations.po
new file mode 100644
index 0000000..adae60c
--- /dev/null
+++ b/webapp/src/main/webapp/WEB-INF/translations.po
@@ -0,0 +1,673 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2016-06-16 15:34:40+\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel(java.lang.String)
+msgid ".csv file name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#$$(java.lang.String)
+msgid ".jdo file name"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
+msgid ".pot file name"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#ACTION
+msgid "Action"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Are you sure?"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "AutoLabel.CSS.required"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Cancel"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#clearHints()
+#: domainapp.dom.simple.SimpleObject#clearHints()
+msgid "Clear Hints"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
+msgid "Clear translation cache"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#COLLECTION
+msgid "Collection"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsAjaxTablePanelFactory.Table"
+msgstr "Table"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsUnresolvedPanel.Hide"
+msgstr "Hide"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#COMPLETE
+msgid "Complete"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationServiceMenu#configuration()
+msgid "Configuration"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Confirm"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#create()
+msgid "Create"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#CURRENT
+msgid "Current"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#delete()
+msgid "Delete"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#downloadJdoMetadata()
+msgid "Download Jdo Metadata"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#downloadLayoutXml()
+#: domainapp.dom.simple.SimpleObject#downloadLayoutXml()
+msgid "Download Layout Xml"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu#downloadLayouts()
+msgid "Download Layouts (XML)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel()
+msgid "Download Meta Model (CSV)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec()
+msgid "Download Swagger Spec"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
+msgid "Download Translations"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.dto.Dto_downloadXml#$$(java.lang.String)
+#: org.apache.isis.applib.services.dto.Dto_downloadXsd#$$(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#$$(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
+msgid "File name"
+msgstr ""
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Exclamation mark is not allowed"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec(java.lang.String,org.apache.isis.applib.services.swagger.SwaggerService$Visibility,org.apache.isis.applib.services.swagger.SwaggerService$Format)
+msgid "Filename"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#findByName()
+msgid "Find By Name"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
+msgid "Fixture script"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#friendlyName
+#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
+msgid "Friendly Name"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "General"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageService#homePage()
+msgid "Home Page"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusIdLong()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong#$$()
+msgid "Id"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT
+msgid "Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT_ARE_YOU_SURE
+msgid "Idempotent Are You Sure"
+msgstr "Are you sure?"
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#IGNORE
+msgid "Ignore"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#INCLUDE
+msgid "Include"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#JSON
+msgid "Json"
+msgstr "JSON"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#key
+msgid "Key"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#listAll()
+msgid "List All"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
+msgid "Lookup"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml
+#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata
+#: org.apache.isis.viewer.wicket.viewer.services.Object_clearHints
+msgid "Metadata"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#MINIMAL
+msgid "Minimal"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
+msgid "Name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureFactory#newApplicationFeature()
+msgid "New Application Feature"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT
+msgid "Non Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT_ARE_YOU_SURE
+msgid "Non Idempotent Are You Sure"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#NORMALIZED
+msgid "Normalized"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#number
+msgid "Number"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
+msgid "Object"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#title()
+msgid "Object: {name}"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#objects
+msgid "Objects"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Parameters"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE
+msgid "Private"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE_WITH_PROTOTYPING
+msgid "Private With Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#PROPERTY
+msgid "Property"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
+msgid "Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PUBLIC
+msgid "Public"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#rebuildMetamodel()
+#: domainapp.dom.simple.SimpleObject#rebuildMetamodel()
+msgid "Rebuild Metamodel"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
+msgid "Recreate Objects And Return First"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#object
+msgid "Result"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#className
+msgid "Result class"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#key
+msgid "Result key"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
+msgid "Run Fixture Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE
+msgid "Safe"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE_AND_REQUEST_CACHEABLE
+msgid "Safe And Request Cacheable"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects
+#: org.apache.isis.applib.fixturescripts.FixtureScript
+msgid "Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#title()
+msgid "Simple Objects"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
+msgid "Switch To Reading Translations"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
+msgid "Switch To Writing Translations"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Update Name"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#value
+msgid "Value"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionLong()
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionTimestamp()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong#$$()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp#$$()
+msgid "Version"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#YAML
+msgid "Yaml"
+msgstr "YAML"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "aboutLabel"
+msgstr "About"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "cancelLabel"
+msgstr "Cancel"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "datanucleusIdLong"
+msgstr "Id"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortPlural"
+msgstr "Please enter {number} more characters"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortSingular"
+msgstr "Please enter 1 more character"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "loadMore"
+msgstr "Load more"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "loginHeader"
+msgstr "Login"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "logoutLabel"
+msgstr "Logout"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "name"
+msgstr ""
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "noMatches"
+msgstr "No matches"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel
+msgid "objects"
+msgstr "Objects"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "okLabel"
+msgstr "OK"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "rememberMeLabel"
+msgstr "Remember Me"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "resetButtonLabel"
+msgstr "Reset"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "searching"
+msgstr "Searching..."
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigPlural"
+msgstr "You can only select {limit} items"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigSingular"
+msgstr "You can only select 1 item"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signInButtonLabel"
+msgstr "Sign in"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#title()
+msgid "{num} objects"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "confirmPasswordLabel"
+msgstr "Confirm password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "datatable.no-records-found"
+msgstr "No Records Found"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "editLabel"
+msgstr "Edit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailIsNotAvailable"
+msgstr "The given email is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailPlaceholder"
+msgstr "Enter your email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailPlaceholder"
+msgstr "Enter an email for the new account"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailLabel"
+msgstr "Email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailSentMessage"
+msgstr "An email has been sent to '${email}' for verification."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "forgotPasswordLinkLabel"
+msgstr "Forgot your password?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeSuccessful"
+msgstr "The password has been changed successfully. You can <a class=\"alert-success\" style=\"text-decoration:underline;\" href=\"${signInUrl}\">login</a> now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeUnsuccessful"
+msgstr "There was a problem while updating the password. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordPlaceholder"
+msgstr "Enter password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetExpiredOrInvalidToken"
+msgstr "You are trying to reset the password for an expired or invalid token"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetHeader"
+msgstr "Forgot password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetSubmitLabel"
+msgstr "Submit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "registerButtonLabel"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "registerHeader"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noSuchUserByEmail"
+msgstr "There is no account with this email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noUserForAnEmailValidToken"
+msgstr "The account seems to be either already deleted or has changed its email address. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signUpButtonLabel"
+msgstr "Don't have an account? Sign up now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "signUpButtonLabel"
+msgstr "Verify email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+msgid "signUpHeader"
+msgstr "Sign Up"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameIsNotAvailable"
+msgstr "The provided username is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernamePlaceholder"
+msgstr "Username"
+
diff --git a/webapp/src/main/webapp/WEB-INF/web.xml b/webapp/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..fc6da0b
--- /dev/null
+++ b/webapp/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,27 @@
+<?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.
+-->
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
+ id="WebApp_ID" version="3.1">
+
+ <display-name>Simple App</display-name>
+
+</web-app>
diff --git a/webapp/src/test/java/domain/webapp/lockdown/.gitignore b/webapp/src/test/java/domain/webapp/lockdown/.gitignore
new file mode 100644
index 0000000..e66bc56
--- /dev/null
+++ b/webapp/src/test/java/domain/webapp/lockdown/.gitignore
@@ -0,0 +1 @@
+*.received.txt
\ No newline at end of file
diff --git a/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.java b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.java
new file mode 100644
index 0000000..600ce9e
--- /dev/null
+++ b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.java
@@ -0,0 +1,50 @@
+package domain.webapp.lockdown;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Arrays;
+
+import org.approvaltests.Approvals;
+import org.approvaltests.reporters.DiffReporter;
+import org.approvaltests.reporters.UseReporter;
+import org.assertj.core.api.Assumptions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import com.google.common.base.Charsets;
+import com.google.common.io.Resources;
+
+import static org.hamcrest.CoreMatchers.*;
+
+public class LockDownMavenDeps_Test {
+
+ @BeforeEach
+ public void setUp() throws Exception {
+ Assumptions.assumeThat(System.getProperty("lockdown")).isNotNull();
+ }
+
+ @UseReporter(DiffReporter.class)
+ @Test
+ public void list() throws Exception {
+ Approvals.verify(sort(read("list")));
+ }
+
+ @UseReporter(DiffReporter.class)
+ @Test
+ public void tree() throws Exception {
+ Approvals.verify(read("tree"));
+ }
+
+ private String read(final String goal) throws IOException {
+ final URL resource = Resources.getResource(getClass(),
+ String.format("%s.%s.actual.txt", getClass().getSimpleName(), goal));
+ return Resources.toString(resource, Charsets.UTF_8);
+ }
+
+ private static String sort(final String unsorted) {
+ final String[] lines = unsorted.split("[\r\n]+");
+ Arrays.sort(lines);
+ return String.join("\n", lines);
+ }
+
+}
diff --git a/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.list.approved.txt b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.list.approved.txt
new file mode 100644
index 0000000..fc40d79
--- /dev/null
+++ b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.list.approved.txt
@@ -0,0 +1,225 @@
+
+ args4j:args4j:jar:2.0.26:compile
+ cglib:cglib-nodep:jar:3.2.12:compile
+ cglib:cglib:jar:3.2.8:runtime
+ com.approvaltests:approvaltests-util:jar:4.0.2:test
+ com.approvaltests:approvaltests:jar:4.0.2:test
+ com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile
+ com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile
+ com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile
+ com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.10.0:compile
+ com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.10.0:compile
+ com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.10.0:compile
+ com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.10.0:compile
+ com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.10.0:compile
+ com.fasterxml:classmate:jar:1.5.1:compile
+ com.github.openjson:openjson:jar:1.0.10:compile
+ com.google.code.findbugs:annotations:jar:2.0.1:compile
+ com.google.code.findbugs:jsr305:jar:3.0.2:compile
+ com.google.code.gson:gson:jar:2.8.6:compile
+ com.google.errorprone:error_prone_annotations:jar:2.3.2:compile
+ com.google.guava:failureaccess:jar:1.0.1:compile
+ com.google.guava:guava:jar:28.1-jre:compile
+ com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
+ com.google.j2objc:j2objc-annotations:jar:1.3:compile
+ com.google.javascript:closure-compiler-externs:jar:v20190325:compile
+ com.google.javascript:closure-compiler-unshaded:jar:v20190325:compile
+ com.google.jsinterop:jsinterop-annotations:jar:1.0.0:compile
+ com.h2database:h2:jar:1.4.200:compile
+ com.jayway.jsonpath:json-path:jar:2.4.0:compile
+ com.sun.mail:javax.mail:jar:1.6.0:compile
+ com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:compile
+ commons-beanutils:commons-beanutils:jar:1.9.3:compile
+ commons-codec:commons-codec:jar:1.13:compile
+ commons-collections:commons-collections:jar:3.2.2:compile
+ commons-fileupload:commons-fileupload:jar:1.4:compile
+ commons-io:commons-io:jar:2.6:compile
+ commons-logging:commons-logging:jar:1.2:compile
+ de.agilecoders.wicket.webjars:wicket-webjars:jar:2.0.15:compile
+ de.agilecoders.wicket:jquery-selectors:jar:2.0.7:compile
+ de.agilecoders.wicket:wicket-bootstrap-core:jar:2.0.11:compile
+ de.agilecoders.wicket:wicket-bootstrap-extensions:jar:2.0.11:compile
+ de.agilecoders.wicket:wicket-bootstrap-themes:jar:2.0.11:compile
+ io.cucumber:cucumber-core:jar:4.8.0:compile
+ io.cucumber:cucumber-expressions:jar:7.0.2:compile
+ io.cucumber:cucumber-java:jar:4.8.0:compile
+ io.cucumber:cucumber-junit:jar:4.8.0:compile
+ io.cucumber:cucumber-spring:jar:4.8.0:compile
+ io.cucumber:datatable-dependencies:jar:1.1.14:compile
+ io.cucumber:datatable:jar:1.1.14:compile
+ io.cucumber:gherkin:jar:5.1.0:compile
+ io.cucumber:tag-expressions:jar:1.1.1:compile
+ io.swagger:swagger-annotations:jar:1.5.21:compile
+ io.swagger:swagger-core:jar:1.5.21:compile
+ io.swagger:swagger-models:jar:1.5.21:compile
+ jakarta.activation:jakarta.activation-api:jar:1.2.1:compile
+ jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
+ jakarta.validation:jakarta.validation-api:jar:2.0.1:compile
+ jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.2:compile
+ javax.activation:activation:jar:1.1:compile
+ javax.inject:javax.inject:jar:1:compile
+ javax.json.bind:javax.json.bind-api:jar:1.0:compile
+ javax.transaction:transaction-api:jar:1.1:compile
+ javax:javaee-api:jar:8.0:compile
+ joda-time:joda-time:jar:2.10.5:compile
+ junit:junit:jar:4.12:compile
+ net.bytebuddy:byte-buddy:jar:1.10.2:compile
+ net.ftlines.wicket-source:wicket-source:jar:7.0.0:compile
+ net.jcip:jcip-annotations:jar:1.0:compile
+ net.minidev:accessors-smart:jar:1.2:compile
+ net.minidev:json-smart:jar:2.3:compile
+ org.apache-extras.beanshell:bsh:jar:2.0b6:compile
+ org.apache.commons:commons-collections4:jar:4.3:compile
+ org.apache.commons:commons-email:jar:1.4:compile
+ org.apache.commons:commons-lang3:jar:3.9:compile
+ org.apache.httpcomponents:httpclient:jar:4.5.10:compile
+ org.apache.httpcomponents:httpcore:jar:4.4.12:compile
+ org.apache.isis.core:isis-applib:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-codegen-bytebuddy:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-commons:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-config:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-integtestsupport:jar:2.0.0-M3-SNAPSHOT:test
+ org.apache.isis.core:isis-metamodel:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-persistence-jdo-common:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-persistence-jdo-datanucleus5:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-runtime-extensions:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-runtime-services:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-runtime-web:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-runtime:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-schema:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-security-bypass:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-security-keycloak:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-security-shiro:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-security:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-unittestsupport:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-viewer-restfulobjects-applib:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-viewer-restfulobjects-jaxrsresteasy4:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-viewer-restfulobjects-rendering:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-viewer-restfulobjects-server:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-viewer-wicket-impl:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-viewer-wicket-model:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.core:isis-viewer-wicket-ui:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.examples.apps:simpleapp-application:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.examples.apps:simpleapp-module-simple:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.extensions:isis-extensions-fixtures:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.extensions:isis-extensions-specsupport:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.extensions:isis-extensions-spring:jar:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.mavendeps:isis-mavendeps-jdk11:pom:2.0.0-M3-SNAPSHOT:compile
+ org.apache.isis.mavendeps:isis-mavendeps-testing:pom:2.0.0-M3-SNAPSHOT:test
+ org.apache.isis.mavendeps:isis-mavendeps-webapp:pom:2.0.0-M3-SNAPSHOT:compile
+ org.apache.logging.log4j:log4j-api:jar:2.12.1:compile
+ org.apache.logging.log4j:log4j-core:jar:2.12.1:compile
+ org.apache.logging.log4j:log4j-jul:jar:2.12.1:compile
+ org.apache.logging.log4j:log4j-slf4j-impl:jar:2.12.1:compile
+ org.apache.shiro:shiro-cache:jar:1.4.1:compile
+ org.apache.shiro:shiro-config-core:jar:1.4.1:compile
+ org.apache.shiro:shiro-config-ogdl:jar:1.4.1:compile
+ org.apache.shiro:shiro-core:jar:1.4.1:compile
+ org.apache.shiro:shiro-crypto-cipher:jar:1.4.1:compile
+ org.apache.shiro:shiro-crypto-core:jar:1.4.1:compile
+ org.apache.shiro:shiro-crypto-hash:jar:1.4.1:compile
+ org.apache.shiro:shiro-event:jar:1.4.1:compile
+ org.apache.shiro:shiro-lang:jar:1.4.1:compile
+ org.apache.shiro:shiro-web:jar:1.4.1:compile
+ org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.27:compile
+ org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.27:compile
+ org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.27:compile
+ org.apache.wicket:wicket-auth-roles:jar:8.6.1:compile
+ org.apache.wicket:wicket-core:jar:8.6.1:compile
+ org.apache.wicket:wicket-devutils:jar:8.6.1:compile
+ org.apache.wicket:wicket-extensions:jar:8.6.1:compile
+ org.apache.wicket:wicket-ioc:jar:8.6.1:compile
+ org.apache.wicket:wicket-request:jar:8.6.1:compile
+ org.apache.wicket:wicket-spring:jar:8.6.1:compile
+ org.apache.wicket:wicket-util:jar:8.6.1:compile
+ org.apache.wicket:wicket:pom:8.6.1:compile
+ org.apiguardian:apiguardian-api:jar:1.1.0:compile
+ org.assertj:assertj-core:jar:3.13.2:compile
+ org.checkerframework:checker-qual:jar:2.8.1:compile
+ org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile
+ org.codehaus.jackson:jackson-jaxrs:jar:1.9.13:compile
+ org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile
+ org.codehaus.jackson:jackson-xc:jar:1.9.13:compile
+ org.codehaus.mojo:animal-sniffer-annotations:jar:1.18:compile
+ org.danekja:jdk-serializable-functional:jar:1.8.5:compile
+ org.datanucleus:datanucleus-api-jdo:jar:5.2.2:compile
+ org.datanucleus:datanucleus-core:jar:5.2.2:compile
+ org.datanucleus:datanucleus-jdo-query:jar:5.0.9:compile
+ org.datanucleus:datanucleus-jodatime:jar:5.2.0-release:compile
+ org.datanucleus:datanucleus-rdbms:jar:5.2.1:compile
+ org.datanucleus:javax.jdo:jar:3.2.0-m12:compile
+ org.hamcrest:hamcrest-core:jar:2.1:compile
+ org.hamcrest:hamcrest-library:jar:2.1:compile
+ org.hamcrest:hamcrest:jar:2.1:compile
+ org.hibernate.validator:hibernate-validator:jar:6.0.18.Final:compile
+ org.hsqldb:hsqldb:jar:2.5.0:test
+ org.jboss.logging:jboss-logging:jar:3.4.1.Final:compile
+ org.jboss.resteasy:resteasy-jackson-provider:jar:4.0.0.Beta5:compile
+ org.jboss.resteasy:resteasy-jaxb-provider:jar:4.0.0.Beta5:compile
+ org.jboss.resteasy:resteasy-jaxrs-services:jar:4.0.0.Beta5:compile
+ org.jboss.resteasy:resteasy-jaxrs:jar:4.0.0.Beta5:compile
+ org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:jar:1.0.0.Final:compile
+ org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:jar:1.0.1.Final:compile
+ org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:jar:1.0.0.Final:compile
+ org.jmock:jmock-imposters:jar:2.11.0:runtime
+ org.jmock:jmock-junit4:jar:2.11.0:compile
+ org.jmock:jmock-legacy:jar:2.11.0:runtime
+ org.jmock:jmock-testjar:jar:2.11.0:compile
+ org.jmock:jmock:jar:2.11.0:compile
+ org.junit.jupiter:junit-jupiter-api:jar:5.5.2:compile
+ org.junit.jupiter:junit-jupiter-engine:jar:5.5.2:compile
+ org.junit.jupiter:junit-jupiter-params:jar:5.5.2:compile
+ org.junit.jupiter:junit-jupiter:jar:5.5.2:compile
+ org.junit.platform:junit-platform-commons:jar:1.5.2:compile
+ org.junit.platform:junit-platform-engine:jar:1.5.2:compile
+ org.junit.vintage:junit-vintage-engine:jar:5.5.2:compile
+ org.mockito:mockito-core:jar:3.1.0:compile
+ org.mockito:mockito-junit-jupiter:jar:3.1.0:compile
+ org.objenesis:objenesis:jar:2.2:compile
+ org.opentest4j:opentest4j:jar:1.2.0:compile
+ org.ow2.asm:asm-analysis:jar:7.1:compile
+ org.ow2.asm:asm-tree:jar:7.1:compile
+ org.ow2.asm:asm-util:jar:7.1:compile
+ org.picocontainer:picocontainer:jar:2.15:compile
+ org.projectlombok:lombok:jar:1.18.10:provided
+ org.reactivestreams:reactive-streams:jar:1.0.3:compile
+ org.skyscreamer:jsonassert:jar:1.5.0:compile
+ org.slf4j:jul-to-slf4j:jar:1.7.29:compile
+ org.slf4j:slf4j-api:jar:1.7.29:compile
+ org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot-actuator:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot-autoconfigure:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot-starter-json:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot-starter-log4j2:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot-starter-test:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot-starter-tomcat:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot-starter-validation:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot-starter-web:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot-starter:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot-test-autoconfigure:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot-test:jar:2.2.1.RELEASE:compile
+ org.springframework.boot:spring-boot:jar:2.2.1.RELEASE:compile
+ org.springframework:spring-aop:jar:5.2.1.RELEASE:compile
+ org.springframework:spring-beans:jar:5.2.1.RELEASE:compile
+ org.springframework:spring-context:jar:5.2.1.RELEASE:compile
+ org.springframework:spring-core:jar:5.2.1.RELEASE:compile
+ org.springframework:spring-expression:jar:5.2.1.RELEASE:compile
+ org.springframework:spring-jcl:jar:5.2.1.RELEASE:compile
+ org.springframework:spring-test:jar:5.2.1.RELEASE:compile
+ org.springframework:spring-tx:jar:5.2.1.RELEASE:compile
+ org.springframework:spring-web:jar:5.2.1.RELEASE:compile
+ org.springframework:spring-webmvc:jar:5.2.1.RELEASE:compile
+ org.webjars.bower:momentjs:jar:2.24.0:compile
+ org.webjars.bower:summernote:jar:0.8.11:compile
+ org.webjars:Eonasdan-bootstrap-datetimepicker:jar:4.17.37-1:compile
+ org.webjars:animate.css:jar:3.5.2:compile
+ org.webjars:bootstrap:jar:3.4.0:compile
+ org.webjars:font-awesome:jar:4.7.0:compile
+ org.webjars:jquery-ui:jar:1.12.1:compile
+ org.webjars:jquery:jar:1.11.1:compile
+ org.webjars:modernizr:jar:2.8.3-1:compile
+ org.webjars:select2:jar:4.0.10:compile
+ org.wicketstuff:wicketstuff-select2:jar:8.6.0:compile
+ org.xmlunit:xmlunit-core:jar:2.6.3:compile
+ org.yaml:snakeyaml:jar:1.25:runtime
+The following files have been resolved:
diff --git a/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.tree.approved.txt b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.tree.approved.txt
new file mode 100644
index 0000000..1ade18f
--- /dev/null
+++ b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.tree.approved.txt
@@ -0,0 +1,224 @@
+org.apache.isis.examples.apps:simpleapp-webapp:jar:2.0.0-M3-SNAPSHOT
++- org.apache.isis.examples.apps:simpleapp-application:jar:2.0.0-M3-SNAPSHOT:compile
+| +- org.apache.isis.examples.apps:simpleapp-module-simple:jar:2.0.0-M3-SNAPSHOT:compile
+| | +- org.apache.isis.extensions:isis-extensions-fixtures:jar:2.0.0-M3-SNAPSHOT:compile
+| | | \- org.apache.isis.extensions:isis-extensions-spring:jar:2.0.0-M3-SNAPSHOT:compile
+| | \- org.apache.isis.extensions:isis-extensions-specsupport:jar:2.0.0-M3-SNAPSHOT:compile
+| | +- io.cucumber:cucumber-java:jar:4.8.0:compile
+| | | \- io.cucumber:cucumber-core:jar:4.8.0:compile
+| | | +- io.cucumber:gherkin:jar:5.1.0:compile
+| | | +- io.cucumber:tag-expressions:jar:1.1.1:compile
+| | | +- io.cucumber:cucumber-expressions:jar:7.0.2:compile
+| | | \- io.cucumber:datatable:jar:1.1.14:compile
+| | | \- io.cucumber:datatable-dependencies:jar:1.1.14:compile
+| | +- io.cucumber:cucumber-spring:jar:4.8.0:compile
+| | \- io.cucumber:cucumber-junit:jar:4.8.0:compile
+| \- org.apache.isis.mavendeps:isis-mavendeps-jdk11:pom:2.0.0-M3-SNAPSHOT:compile
++- org.apache.isis.mavendeps:isis-mavendeps-webapp:pom:2.0.0-M3-SNAPSHOT:compile
+| +- org.springframework.boot:spring-boot-starter-web:jar:2.2.1.RELEASE:compile
+| | +- org.springframework.boot:spring-boot-starter:jar:2.2.1.RELEASE:compile
+| | | +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
+| | | \- org.yaml:snakeyaml:jar:1.25:runtime
+| | +- org.springframework.boot:spring-boot-starter-json:jar:2.2.1.RELEASE:compile
+| | | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.10.0:compile
+| | | \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.10.0:compile
+| | +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.2.1.RELEASE:compile
+| | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.27:compile
+| | | +- org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.27:compile
+| | | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.27:compile
+| | +- org.springframework.boot:spring-boot-starter-validation:jar:2.2.1.RELEASE:compile
+| | | +- jakarta.validation:jakarta.validation-api:jar:2.0.1:compile
+| | | \- org.hibernate.validator:hibernate-validator:jar:6.0.18.Final:compile
+| | | +- org.jboss.logging:jboss-logging:jar:3.4.1.Final:compile
+| | | \- com.fasterxml:classmate:jar:1.5.1:compile
+| | +- org.springframework:spring-web:jar:5.2.1.RELEASE:compile
+| | \- org.springframework:spring-webmvc:jar:5.2.1.RELEASE:compile
+| +- org.apache.isis.core:isis-applib:jar:2.0.0-M3-SNAPSHOT:compile
+| | \- org.apache.isis.core:isis-commons:jar:2.0.0-M3-SNAPSHOT:compile
+| | +- javax:javaee-api:jar:8.0:compile
+| | | \- com.sun.mail:javax.mail:jar:1.6.0:compile
+| | | \- javax.activation:activation:jar:1.1:compile
+| | +- com.google.code.findbugs:annotations:jar:2.0.1:compile
+| | +- org.springframework:spring-tx:jar:5.2.1.RELEASE:compile
+| | \- org.springframework.boot:spring-boot-starter-log4j2:jar:2.2.1.RELEASE:compile
+| | +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.12.1:compile
+| | | \- org.apache.logging.log4j:log4j-api:jar:2.12.1:compile
+| | +- org.apache.logging.log4j:log4j-core:jar:2.12.1:compile
+| | +- org.apache.logging.log4j:log4j-jul:jar:2.12.1:compile
+| | \- org.slf4j:jul-to-slf4j:jar:1.7.29:compile
+| +- org.apache.isis.core:isis-schema:jar:2.0.0-M3-SNAPSHOT:compile
+| | \- joda-time:joda-time:jar:2.10.5:compile
+| +- org.apache.isis.core:isis-codegen-bytebuddy:jar:2.0.0-M3-SNAPSHOT:compile
+| | +- net.bytebuddy:byte-buddy:jar:1.10.2:compile
+| | \- org.objenesis:objenesis:jar:2.2:compile
+| +- org.apache.isis.core:isis-viewer-wicket-impl:jar:2.0.0-M3-SNAPSHOT:compile
+| | +- org.apache.isis.core:isis-viewer-wicket-ui:jar:2.0.0-M3-SNAPSHOT:compile
+| | | +- org.apache.isis.core:isis-viewer-wicket-model:jar:2.0.0-M3-SNAPSHOT:compile
+| | | +- org.apache.wicket:wicket-core:jar:8.6.1:compile
+| | | | +- com.github.openjson:openjson:jar:1.0.10:compile
+| | | | +- org.apache.wicket:wicket-request:jar:8.6.1:compile
+| | | | +- org.apache.wicket:wicket-util:jar:8.6.1:compile
+| | | | | +- commons-fileupload:commons-fileupload:jar:1.4:compile
+| | | | | \- org.apache.commons:commons-collections4:jar:4.3:compile
+| | | | \- org.danekja:jdk-serializable-functional:jar:1.8.5:compile
+| | | +- org.apache.wicket:wicket-devutils:jar:8.6.1:compile
+| | | +- org.apache.wicket:wicket-extensions:jar:8.6.1:compile
+| | | +- org.wicketstuff:wicketstuff-select2:jar:8.6.0:compile
+| | | +- org.webjars:select2:jar:4.0.10:compile
+| | | | \- org.webjars:jquery:jar:1.11.1:compile
+| | | +- org.webjars:jquery-ui:jar:1.12.1:compile
+| | | +- de.agilecoders.wicket.webjars:wicket-webjars:jar:2.0.15:compile
+| | | +- de.agilecoders.wicket:wicket-bootstrap-extensions:jar:2.0.11:compile
+| | | | +- org.webjars:Eonasdan-bootstrap-datetimepicker:jar:4.17.37-1:compile
+| | | | +- org.webjars.bower:momentjs:jar:2.24.0:compile
+| | | | +- org.webjars:font-awesome:jar:4.7.0:compile
+| | | | +- com.google.javascript:closure-compiler-unshaded:jar:v20190325:compile
+| | | | | +- com.google.javascript:closure-compiler-externs:jar:v20190325:compile
+| | | | | +- args4j:args4j:jar:2.0.26:compile
+| | | | | +- com.google.code.gson:gson:jar:2.8.6:compile
+| | | | | \- com.google.jsinterop:jsinterop-annotations:jar:1.0.0:compile
+| | | | \- org.webjars:animate.css:jar:3.5.2:compile
+| | | +- org.webjars.bower:summernote:jar:0.8.11:compile
+| | | \- de.agilecoders.wicket:wicket-bootstrap-themes:jar:2.0.11:compile
+| | +- org.apache.wicket:wicket-spring:jar:8.6.1:compile
+| | | \- org.apache.wicket:wicket-ioc:jar:8.6.1:compile
+| | | +- cglib:cglib-nodep:jar:3.2.12:compile
+| | | +- javax.inject:javax.inject:jar:1:compile
+| | | \- org.ow2.asm:asm-util:jar:7.1:compile
+| | | +- org.ow2.asm:asm-tree:jar:7.1:compile
+| | | \- org.ow2.asm:asm-analysis:jar:7.1:compile
+| | +- org.apache.wicket:wicket-auth-roles:jar:8.6.1:compile
+| | +- de.agilecoders.wicket:wicket-bootstrap-core:jar:2.0.11:compile
+| | | +- de.agilecoders.wicket:jquery-selectors:jar:2.0.7:compile
+| | | +- org.webjars:bootstrap:jar:3.4.0:compile
+| | | +- org.webjars:modernizr:jar:2.8.3-1:compile
+| | | \- org.apache.commons:commons-lang3:jar:3.9:compile
+| | +- net.ftlines.wicket-source:wicket-source:jar:7.0.0:compile
+| | | \- org.apache.wicket:wicket:pom:8.6.1:compile
+| | \- commons-io:commons-io:jar:2.6:compile
+| +- org.apache.isis.core:isis-viewer-restfulobjects-server:jar:2.0.0-M3-SNAPSHOT:compile
+| | +- org.apache.isis.core:isis-runtime-web:jar:2.0.0-M3-SNAPSHOT:compile
+| | +- org.apache.isis.core:isis-viewer-restfulobjects-rendering:jar:2.0.0-M3-SNAPSHOT:compile
+| | | +- org.apache.isis.core:isis-metamodel:jar:2.0.0-M3-SNAPSHOT:compile
+| | | | \- io.swagger:swagger-core:jar:1.5.21:compile
+| | | | +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.10.0:compile
+| | | | \- io.swagger:swagger-models:jar:1.5.21:compile
+| | | | \- io.swagger:swagger-annotations:jar:1.5.21:compile
+| | | \- org.apache.isis.core:isis-viewer-restfulobjects-applib:jar:2.0.0-M3-SNAPSHOT:compile
+| | \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.10.0:compile
+| | +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.2:compile
+| | \- jakarta.activation:jakarta.activation-api:jar:1.2.1:compile
+| +- org.apache.isis.core:isis-viewer-restfulobjects-jaxrsresteasy4:jar:2.0.0-M3-SNAPSHOT:compile
+| | +- org.jboss.resteasy:resteasy-jackson-provider:jar:4.0.0.Beta5:compile
+| | | +- org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile
+| | | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile
+| | | +- org.codehaus.jackson:jackson-jaxrs:jar:1.9.13:compile
+| | | \- org.codehaus.jackson:jackson-xc:jar:1.9.13:compile
+| | +- org.jboss.resteasy:resteasy-jaxb-provider:jar:4.0.0.Beta5:compile
+| | | \- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:jar:1.0.0.Final:compile
+| | +- org.jboss.resteasy:resteasy-jaxrs:jar:4.0.0.Beta5:compile
+| | | +- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:jar:1.0.1.Final:compile
+| | | +- org.jboss.resteasy:resteasy-jaxrs-services:jar:4.0.0.Beta5:compile
+| | | +- org.reactivestreams:reactive-streams:jar:1.0.3:compile
+| | | +- org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:jar:1.0.0.Final:compile
+| | | +- org.apache.httpcomponents:httpclient:jar:4.5.10:compile
+| | | | +- org.apache.httpcomponents:httpcore:jar:4.4.12:compile
+| | | | \- commons-codec:commons-codec:jar:1.13:compile
+| | | +- net.jcip:jcip-annotations:jar:1.0:compile
+| | | \- javax.json.bind:javax.json.bind-api:jar:1.0:compile
+| | +- commons-logging:commons-logging:jar:1.2:compile
+| | +- com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile
+| | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile
+| +- org.apache.isis.core:isis-security:jar:2.0.0-M3-SNAPSHOT:compile
+| | \- org.apache.isis.core:isis-config:jar:2.0.0-M3-SNAPSHOT:compile
+| +- org.apache.isis.core:isis-security-bypass:jar:2.0.0-M3-SNAPSHOT:compile
+| | \- org.apache.isis.core:isis-runtime-services:jar:2.0.0-M3-SNAPSHOT:compile
+| +- org.apache.isis.core:isis-security-shiro:jar:2.0.0-M3-SNAPSHOT:compile
+| | +- org.apache.shiro:shiro-core:jar:1.4.1:compile
+| | | +- org.apache.shiro:shiro-lang:jar:1.4.1:compile
+| | | +- org.apache.shiro:shiro-cache:jar:1.4.1:compile
+| | | +- org.apache.shiro:shiro-crypto-hash:jar:1.4.1:compile
+| | | | \- org.apache.shiro:shiro-crypto-core:jar:1.4.1:compile
+| | | +- org.apache.shiro:shiro-crypto-cipher:jar:1.4.1:compile
+| | | +- org.apache.shiro:shiro-config-core:jar:1.4.1:compile
+| | | +- org.apache.shiro:shiro-config-ogdl:jar:1.4.1:compile
+| | | | \- commons-beanutils:commons-beanutils:jar:1.9.3:compile
+| | | | \- commons-collections:commons-collections:jar:3.2.2:compile
+| | | \- org.apache.shiro:shiro-event:jar:1.4.1:compile
+| | \- org.apache.shiro:shiro-web:jar:1.4.1:compile
+| +- org.apache.isis.core:isis-security-keycloak:jar:2.0.0-M3-SNAPSHOT:compile
+| +- org.apache.isis.core:isis-persistence-jdo-datanucleus5:jar:2.0.0-M3-SNAPSHOT:compile
+| | +- org.datanucleus:javax.jdo:jar:3.2.0-m12:compile
+| | | \- javax.transaction:transaction-api:jar:1.1:compile
+| | +- org.datanucleus:datanucleus-core:jar:5.2.2:compile
+| | +- org.datanucleus:datanucleus-api-jdo:jar:5.2.2:compile
+| | +- org.datanucleus:datanucleus-jdo-query:jar:5.0.9:compile
+| | +- org.datanucleus:datanucleus-rdbms:jar:5.2.1:compile
+| | +- org.datanucleus:datanucleus-jodatime:jar:5.2.0-release:compile
+| | +- org.apache.isis.core:isis-runtime:jar:2.0.0-M3-SNAPSHOT:compile
+| | | \- org.apache.commons:commons-email:jar:1.4:compile
+| | +- org.apache.isis.core:isis-runtime-extensions:jar:2.0.0-M3-SNAPSHOT:compile
+| | \- org.apache.isis.core:isis-persistence-jdo-common:jar:2.0.0-M3-SNAPSHOT:compile
+| \- com.google.guava:guava:jar:28.1-jre:compile
+| +- com.google.guava:failureaccess:jar:1.0.1:compile
+| +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
+| +- com.google.code.findbugs:jsr305:jar:3.0.2:compile
+| +- org.checkerframework:checker-qual:jar:2.8.1:compile
+| +- com.google.errorprone:error_prone_annotations:jar:2.3.2:compile
+| +- com.google.j2objc:j2objc-annotations:jar:1.3:compile
+| \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.18:compile
++- com.h2database:h2:jar:1.4.200:compile
++- org.apache.isis.mavendeps:isis-mavendeps-testing:pom:2.0.0-M3-SNAPSHOT:test
+| +- org.apache.isis.core:isis-unittestsupport:jar:2.0.0-M3-SNAPSHOT:compile
+| | +- org.junit.jupiter:junit-jupiter-api:jar:5.5.2:compile
+| | | +- org.apiguardian:apiguardian-api:jar:1.1.0:compile
+| | | +- org.opentest4j:opentest4j:jar:1.2.0:compile
+| | | \- org.junit.platform:junit-platform-commons:jar:1.5.2:compile
+| | +- org.junit.jupiter:junit-jupiter-engine:jar:5.5.2:compile
+| | | \- org.junit.platform:junit-platform-engine:jar:1.5.2:compile
+| | +- org.junit.vintage:junit-vintage-engine:jar:5.5.2:compile
+| | | \- junit:junit:jar:4.12:compile
+| | +- org.mockito:mockito-core:jar:3.1.0:compile
+| | +- org.slf4j:slf4j-api:jar:1.7.29:compile
+| | +- org.springframework.boot:spring-boot-starter-test:jar:2.2.1.RELEASE:compile
+| | | +- org.springframework.boot:spring-boot-test:jar:2.2.1.RELEASE:compile
+| | | +- org.springframework.boot:spring-boot-test-autoconfigure:jar:2.2.1.RELEASE:compile
+| | | +- com.jayway.jsonpath:json-path:jar:2.4.0:compile
+| | | | \- net.minidev:json-smart:jar:2.3:compile
+| | | | \- net.minidev:accessors-smart:jar:1.2:compile
+| | | +- org.junit.jupiter:junit-jupiter:jar:5.5.2:compile
+| | | | \- org.junit.jupiter:junit-jupiter-params:jar:5.5.2:compile
+| | | +- org.mockito:mockito-junit-jupiter:jar:3.1.0:compile
+| | | +- org.hamcrest:hamcrest:jar:2.1:compile
+| | | +- org.skyscreamer:jsonassert:jar:1.5.0:compile
+| | | | \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:compile
+| | | \- org.xmlunit:xmlunit-core:jar:2.6.3:compile
+| | +- org.springframework:spring-test:jar:5.2.1.RELEASE:compile
+| | +- org.jmock:jmock:jar:2.11.0:compile
+| | | +- org.jmock:jmock-testjar:jar:2.11.0:compile
+| | | \- org.apache-extras.beanshell:bsh:jar:2.0b6:compile
+| | \- org.jmock:jmock-junit4:jar:2.11.0:compile
+| | +- org.jmock:jmock-legacy:jar:2.11.0:runtime
+| | | \- cglib:cglib:jar:3.2.8:runtime
+| | \- org.jmock:jmock-imposters:jar:2.11.0:runtime
+| +- org.apache.isis.core:isis-integtestsupport:jar:2.0.0-M3-SNAPSHOT:test
+| +- org.hamcrest:hamcrest-library:jar:2.1:compile
+| | \- org.hamcrest:hamcrest-core:jar:2.1:compile
+| +- org.assertj:assertj-core:jar:3.13.2:compile
+| +- com.approvaltests:approvaltests:jar:4.0.2:test
+| | \- com.approvaltests:approvaltests-util:jar:4.0.2:test
+| +- org.picocontainer:picocontainer:jar:2.15:compile
+| \- org.hsqldb:hsqldb:jar:2.5.0:test
++- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.2.1.RELEASE:compile
+| +- org.springframework.boot:spring-boot-actuator:jar:2.2.1.RELEASE:compile
+| | \- org.springframework.boot:spring-boot:jar:2.2.1.RELEASE:compile
+| +- org.springframework.boot:spring-boot-autoconfigure:jar:2.2.1.RELEASE:compile
+| +- com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile
+| +- org.springframework:spring-core:jar:5.2.1.RELEASE:compile
+| | \- org.springframework:spring-jcl:jar:5.2.1.RELEASE:compile
+| +- org.springframework:spring-context:jar:5.2.1.RELEASE:compile
+| | +- org.springframework:spring-aop:jar:5.2.1.RELEASE:compile
+| | +- org.springframework:spring-beans:jar:5.2.1.RELEASE:compile
+| | \- org.springframework:spring-expression:jar:5.2.1.RELEASE:compile
+| \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.10.0:compile
+\- org.projectlombok:lombok:jar:1.18.10:provided