From 10fb952d85e93386a5b79e3b898fbd7361d5de4d Mon Sep 17 00:00:00 2001 From: Robert Volkmann <20912167+robertvolkmann@users.noreply.github.com> Date: Mon, 21 Nov 2022 17:59:09 +0100 Subject: [PATCH] feature: remove naked objects implementation (#2336) --- naked-objects/.gitattributes | 51 --- naked-objects/.gitignore | 42 --- naked-objects/README.md | 5 +- .../dom/etc/naked-objects-dom.urm.puml | 2 - naked-objects/dom/pom.xml | 204 ---------- .../src/main/java/META-INF/persistence.xml | 30 -- .../dom/app/homepage/HomePageService.java | 59 --- .../dom/app/homepage/HomePageViewModel.java | 62 --- .../homepage/HomePageViewModel.layout.json | 27 -- .../dom/app/homepage/HomePageViewModel.png | Bin 456 -> 0 bytes .../dom/modules/simple/SimpleObject.java | 141 ------- .../modules/simple/SimpleObject.layout.json | 40 -- .../dom/modules/simple/SimpleObject.png | Bin 653 -> 0 bytes .../dom/modules/simple/SimpleObjects.java | 107 ------ .../dom/modules/simple/SimpleObjectTest.java | 58 --- .../dom/modules/simple/SimpleObjectsTest.java | 107 ------ naked-objects/etc/naked-objects.png | Bin 75022 -> 0 bytes naked-objects/etc/naked-objects.ucls | 162 -------- naked-objects/etc/naked-objects.urm.puml | 2 - .../etc/naked-objects-fixture.urm.puml | 2 - naked-objects/fixture/pom.xml | 42 --- .../fixture/DomainAppFixturesProvider.java | 47 --- .../modules/simple/SimpleObjectCreate.java | 79 ---- .../modules/simple/SimpleObjectsTearDown.java | 43 --- .../scenarios/RecreateSimpleObjects.java | 109 ------ naked-objects/integtests/.gitignore | 1 - .../etc/naked-objects-integtests.urm.puml | 2 - naked-objects/integtests/pom.xml | 131 ------- .../bootstrap/SimpleAppSystemInitializer.java | 68 ---- .../specglue/BootstrappingGlue.java | 51 --- .../specglue/CatalogOfFixturesGlue.java | 40 -- .../modules/simple/SimpleObjectGlue.java | 58 --- .../domainapp/integtests/specs/RunSpecs.java | 42 --- .../SimpleObjectSpec_listAllAndCreate.feature | 26 -- .../integtests/tests/SimpleAppIntegTest.java | 46 --- .../modules/simple/SimpleObjectIntegTest.java | 120 ------ .../simple/SimpleObjectsIntegTest.java | 138 ------- naked-objects/pom.xml | 352 ------------------ .../webapp/etc/naked-objects-webapp.urm.puml | 2 - .../webapp/ide/eclipse/launch/.gitignore | 4 - .../webapp/ide/intellij/launch/README.txt | 27 -- .../intellij/launch/SimpleApp_PROTOTYPE.xml | 55 --- .../launch/SimpleApp__enhance_only_.xml | 50 --- naked-objects/webapp/lib/.gitignore | 5 - naked-objects/webapp/pom.xml | 299 --------------- .../domainapp/webapp/SimpleApplication.java | 155 -------- .../src/main/jettyconsole/isis-banner.pdn | Bin 69658 -> 0 bytes .../src/main/jettyconsole/isis-banner.png | Bin 30776 -> 0 bytes .../resources/domainapp/webapp/welcome.html | 41 -- .../src/main/webapp/WEB-INF/isis.properties | 308 --------------- .../main/webapp/WEB-INF/persistor.properties | 136 ------- .../WEB-INF/persistor_datanucleus.properties | 101 ----- .../webapp/src/main/webapp/WEB-INF/shiro.ini | 93 ----- .../main/webapp/WEB-INF/translations-en.po | 213 ----------- .../main/webapp/WEB-INF/translations-es.po | 208 ----------- .../main/webapp/WEB-INF/translations-nl.po | 208 ----------- .../src/main/webapp/WEB-INF/translations.po | 213 ----------- .../WEB-INF/viewer_restfulobjects.properties | 74 ---- .../webapp/WEB-INF/viewer_wicket.properties | 99 ----- .../webapp/src/main/webapp/WEB-INF/web.xml | 278 -------------- .../main/webapp/about/images/isis-logo.png | Bin 14160 -> 0 bytes .../webapp/src/main/webapp/about/index.html | 128 ------- .../src/main/webapp/css/application.css | 24 -- .../src/main/webapp/images/spinning-icon.gif | Bin 5266 -> 0 bytes .../src/main/webapp/scripts/application.js | 27 -- pom.xml | 1 - 66 files changed, 1 insertion(+), 5244 deletions(-) delete mode 100644 naked-objects/.gitattributes delete mode 100644 naked-objects/.gitignore delete mode 100644 naked-objects/dom/etc/naked-objects-dom.urm.puml delete mode 100644 naked-objects/dom/pom.xml delete mode 100644 naked-objects/dom/src/main/java/META-INF/persistence.xml delete mode 100644 naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageService.java delete mode 100644 naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.java delete mode 100644 naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.layout.json delete mode 100644 naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.png delete mode 100644 naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.java delete mode 100644 naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.layout.json delete mode 100644 naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.png delete mode 100644 naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObjects.java delete mode 100644 naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectTest.java delete mode 100644 naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectsTest.java delete mode 100644 naked-objects/etc/naked-objects.png delete mode 100644 naked-objects/etc/naked-objects.ucls delete mode 100644 naked-objects/etc/naked-objects.urm.puml delete mode 100644 naked-objects/fixture/etc/naked-objects-fixture.urm.puml delete mode 100644 naked-objects/fixture/pom.xml delete mode 100644 naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java delete mode 100644 naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java delete mode 100644 naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java delete mode 100644 naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java delete mode 100644 naked-objects/integtests/.gitignore delete mode 100644 naked-objects/integtests/etc/naked-objects-integtests.urm.puml delete mode 100644 naked-objects/integtests/pom.xml delete mode 100644 naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java delete mode 100644 naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java delete mode 100644 naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java delete mode 100644 naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java delete mode 100644 naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java delete mode 100644 naked-objects/integtests/src/test/java/domainapp/integtests/specs/modules/simple/SimpleObjectSpec_listAllAndCreate.feature delete mode 100644 naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java delete mode 100644 naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java delete mode 100644 naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java delete mode 100644 naked-objects/pom.xml delete mode 100644 naked-objects/webapp/etc/naked-objects-webapp.urm.puml delete mode 100644 naked-objects/webapp/ide/eclipse/launch/.gitignore delete mode 100644 naked-objects/webapp/ide/intellij/launch/README.txt delete mode 100644 naked-objects/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml delete mode 100644 naked-objects/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml delete mode 100644 naked-objects/webapp/lib/.gitignore delete mode 100644 naked-objects/webapp/pom.xml delete mode 100644 naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java delete mode 100644 naked-objects/webapp/src/main/jettyconsole/isis-banner.pdn delete mode 100644 naked-objects/webapp/src/main/jettyconsole/isis-banner.png delete mode 100644 naked-objects/webapp/src/main/resources/domainapp/webapp/welcome.html delete mode 100644 naked-objects/webapp/src/main/webapp/WEB-INF/isis.properties delete mode 100644 naked-objects/webapp/src/main/webapp/WEB-INF/persistor.properties delete mode 100644 naked-objects/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties delete mode 100644 naked-objects/webapp/src/main/webapp/WEB-INF/shiro.ini delete mode 100644 naked-objects/webapp/src/main/webapp/WEB-INF/translations-en.po delete mode 100644 naked-objects/webapp/src/main/webapp/WEB-INF/translations-es.po delete mode 100644 naked-objects/webapp/src/main/webapp/WEB-INF/translations-nl.po delete mode 100644 naked-objects/webapp/src/main/webapp/WEB-INF/translations.po delete mode 100644 naked-objects/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties delete mode 100644 naked-objects/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties delete mode 100644 naked-objects/webapp/src/main/webapp/WEB-INF/web.xml delete mode 100644 naked-objects/webapp/src/main/webapp/about/images/isis-logo.png delete mode 100644 naked-objects/webapp/src/main/webapp/about/index.html delete mode 100644 naked-objects/webapp/src/main/webapp/css/application.css delete mode 100644 naked-objects/webapp/src/main/webapp/images/spinning-icon.gif delete mode 100644 naked-objects/webapp/src/main/webapp/scripts/application.js diff --git a/naked-objects/.gitattributes b/naked-objects/.gitattributes deleted file mode 100644 index b1eafb692..000000000 --- a/naked-objects/.gitattributes +++ /dev/null @@ -1,51 +0,0 @@ -# -# -# 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/naked-objects/.gitignore b/naked-objects/.gitignore deleted file mode 100644 index 0558e54af..000000000 --- a/naked-objects/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -*~ -*.swp -*.class -bin/ -target/ -target-ide/ -logs/ -.settings/ -.project -.classpath -.idea -*.iml - -JArchitectOut/ -*.jdproj - -neo4j_DB/ - -# log files -datanucleus.log -isis.log -i18n-po.log -hs_err_pid*.log - -# Package Files # -*.jar -*.war -*.ear - -dependency-reduced-pom.xml -pom.xml.tag -pom.xml.next -pom.xml.releaseBackup -pom.xml.versionsBackup - -.clover/ -*.jdproj -JArchitectOut/ - - -rebel.xml -/translations.pot diff --git a/naked-objects/README.md b/naked-objects/README.md index cfa736013..60349741b 100644 --- a/naked-objects/README.md +++ b/naked-objects/README.md @@ -11,9 +11,6 @@ The Naked Objects architectural pattern is well suited for rapid prototyping. Using the pattern, you only need to write the domain objects, everything else is autogenerated by the framework. -## Class diagram -![alt text](./etc/naked-objects.png "Naked Objects") - ## Applicability Use the Naked Objects pattern when @@ -23,7 +20,7 @@ Use the Naked Objects pattern when ## Real world examples -* [Apache Isis](https://isis.apache.org/) +* [Apache Isis](https://isis.apache.org/docs/2.0.0-M9/starters/simpleapp.html) ## Credits diff --git a/naked-objects/dom/etc/naked-objects-dom.urm.puml b/naked-objects/dom/etc/naked-objects-dom.urm.puml deleted file mode 100644 index 02af47ddf..000000000 --- a/naked-objects/dom/etc/naked-objects-dom.urm.puml +++ /dev/null @@ -1,2 +0,0 @@ -@startuml -@enduml \ No newline at end of file diff --git a/naked-objects/dom/pom.xml b/naked-objects/dom/pom.xml deleted file mode 100644 index f824a9547..000000000 --- a/naked-objects/dom/pom.xml +++ /dev/null @@ -1,204 +0,0 @@ - - - - 4.0.0 - - com.iluwatar - naked-objects - 1.26.0-SNAPSHOT - - naked-objects-dom - - - - src/main/resources - - - src/main/java - - ** - - - **/*.java - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - - - - org.apache.isis.core - isis-core-applib - - - org.apache.isis.core - isis-core-unittestsupport - test - - - org.junit.vintage - junit-vintage-engine - test - - - - org.objenesis - objenesis - test - - - org.assertj - assertj-core - test - - - - - enhance - - true - - - 5.2.1 - - - - - - - org.eclipse.m2e - lifecycle-mapping - 1.0.0 - - - - - - org.datanucleus - datanucleus-maven-plugin - [${datanucleus-maven-plugin.version},) - - enhance - - - - - - - - - - - - - - - org.datanucleus - datanucleus-maven-plugin - ${datanucleus-maven-plugin.version} - - false - true - ${basedir}/datanucleus.properties - - - - process-classes - - enhance - - - - - - - - - org.datanucleus - datanucleus-core - - - org.datanucleus - datanucleus-jodatime - - - org.datanucleus - datanucleus-api-jdo - - - - - isis-validate - - - - - org.apache.isis.tool - isis-maven-plugin - 1.9.0-SNAPSHOT - - ../webapp/src/main/webapp/WEB-INF - - - - org.apache.isis.example.application - simpleapp-dom - 1.9.0-SNAPSHOT - - - - com.google.guava - guava - 16.0.1 - - - - - test - - validate - - - - - - - - - diff --git a/naked-objects/dom/src/main/java/META-INF/persistence.xml b/naked-objects/dom/src/main/java/META-INF/persistence.xml deleted file mode 100644 index 7ebc7af04..000000000 --- a/naked-objects/dom/src/main/java/META-INF/persistence.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageService.java b/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageService.java deleted file mode 100644 index 22e25aa45..000000000 --- a/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageService.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.dom.app.homepage; - -import org.apache.isis.applib.DomainObjectContainer; -import org.apache.isis.applib.annotation.Action; -import org.apache.isis.applib.annotation.DomainService; -import org.apache.isis.applib.annotation.HomePage; -import org.apache.isis.applib.annotation.NatureOfService; -import org.apache.isis.applib.annotation.SemanticsOf; - -/** - * HomePage Domain Service. - * - * @see HomePageViewModel linked view to HomePage - */ -@DomainService(nature = NatureOfService.VIEW_CONTRIBUTIONS_ONLY) -public class HomePageService { - - // endregion - - // region > injected services - - @javax.inject.Inject - DomainObjectContainer container; - - // endregion - - // region > homePage (action) - - @Action(semantics = SemanticsOf.SAFE) - @HomePage - public HomePageViewModel homePage() { - return container.injectServicesInto(new HomePageViewModel()); - } - -} diff --git a/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.java b/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.java deleted file mode 100644 index bcb0802d9..000000000 --- a/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.dom.app.homepage; - -import domainapp.dom.modules.simple.SimpleObject; -import domainapp.dom.modules.simple.SimpleObjects; -import java.util.List; -import org.apache.isis.applib.annotation.ViewModel; - -/** - * Model linked to the HomePage The underlying layout is specified by json. - * - * @see HomePageService - Service Linked to the HomePage - */ -@ViewModel -public class HomePageViewModel { - - // endregion - - // region > injected services - - @javax.inject.Inject - SimpleObjects simpleObjects; - - // endregion - - // region > title - public String title() { - return getObjects().size() + " objects"; - } - - // endregion - - // region > object (collection) - @org.apache.isis.applib.annotation.HomePage - public List getObjects() { - return simpleObjects.listAll(); - } - -} diff --git a/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.layout.json b/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.layout.json deleted file mode 100644 index fe39b5b42..000000000 --- a/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.layout.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "columns": [ - { - "span": 0, - "memberGroups": {} - }, - { - "span": 0, - "memberGroups": {} - }, - { - "span": 0, - "memberGroups": {} - }, - { - "span": 12, - "collections": { - "objects": { - "collectionLayout": { - "render": "EAGERLY" - } - } - } - } - ], - "actions": {} -} \ No newline at end of file diff --git a/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.png b/naked-objects/dom/src/main/java/domainapp/dom/app/homepage/HomePageViewModel.png deleted file mode 100644 index cb03785f714e60f93499a4e9136339aab1b07a23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)Uv68@LBPf$L12Bj6Fx+;`w0%>S7_6hH-Efc;Qu4qPN4Zh@QV`Z4et z&l>{J6t{XQi0S}M@wcG9mvN#hKuTQiSVOj^AgTeB#O)QNAgTbA#I+DLw761Ee2iU$ zUEH@F070*G$UFQbqEAEAG0Sp!QKy(6(74L#*g;kt{wZwZt7(i`t zH-rGD5_dreKw)B$s%*F4@otyc=z3kswdh;`3X3gZD)EvND*-6Y^we6R8eLDWc(u7r z8_t29f;X`fn!7A@L9Wgj@RYfE8oq!^@5dnIJTZWZo;coYD@>yQ$VuCvN~N9w!L9*l zJ3ag*fQ2pg*nthe#({t1z}Os6qb0lG0l0Lup^jLkB;0k>xC8XXyp{uYe$&1%&`Rsykl*L6`8At^Ozg0000= 0 ")}) -@javax.jdo.annotations.Unique(name = "SimpleObject_name_UNQ", members = {"name"}) -@DomainObject -@DomainObjectLayout(bookmarking = BookmarkPolicy.AS_ROOT, cssClassFa = "fa-flag") -public class SimpleObject implements Comparable { - - // endregion - - // region > name (property) - - private String name; - - // region > identificatiom - public TranslatableString title() { - return TranslatableString.tr("Object: {name}", "name", getName()); - } - - @javax.jdo.annotations.Column(allowsNull = "false", length = 40) - @Title(sequence = "1") - @Property(editing = Editing.DISABLED) - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } - - // endregion - - // region > updateName (action) - - /** - * Event used to update the Name in the Domain. - */ - public static class UpdateNameDomainEvent extends ActionDomainEvent { - public UpdateNameDomainEvent(final SimpleObject source, final Identifier identifier, - final Object... arguments) { - super(source, identifier, arguments); - } - } - - @Action(domainEvent = UpdateNameDomainEvent.class) - public SimpleObject updateName( - @Parameter(maxLength = 40) @ParameterLayout(named = "New name") final String name) { - setName(name); - return this; - } - - public String default0UpdateName() { - return getName(); - } - - public TranslatableString validateUpdateName(final String name) { - return name.contains("!") ? TranslatableString.tr("Exclamation mark is not allowed") : null; - } - - // endregion - - // region > version (derived property) - public Long getVersionSequence() { - return (Long) JDOHelper.getVersion(this); - } - - // endregion - - // region > compareTo - - @Override - public int compareTo(final SimpleObject other) { - return ObjectContracts.compare(this, other, "name"); - } - - // endregion - - // region > injected services - - @javax.inject.Inject - @SuppressWarnings("unused") - private DomainObjectContainer container; - - // endregion - - -} diff --git a/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.layout.json b/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.layout.json deleted file mode 100644 index 998c419f2..000000000 --- a/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.layout.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "columns": [ - { - "span": 6, - "memberGroups": { - "General": { - "members": { - "name": { - "actions": { - "updateName": { - "actionLayout": { - "position": "BOTTOM" - } - } - } - }, - "versionSequence": { - "propertyLayout": { - "name": "version" - } - } - } - } - } - }, - { - "span": 0, - "memberGroups": {} - }, - { - "span": 0, - "memberGroups": {} - }, - { - "span": 6, - "collections": {} - } - ], - "actions": {} -} \ No newline at end of file diff --git a/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.png b/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObject.png deleted file mode 100644 index 0bd6f575646cc5b68b3d86c59c61876f84351722..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmV;80&@L{P)TeaDl*`3}}y6WnFwrAe! z*FQ5ik$<+yNc=5be-qtj41skKxl`Z`5xI|$7()QSH3j7}B$_Qsz(;SOAr+zoEc#DH zpVJgHs}LdJqd!psN6}h{5b)72De$X^gj8rHkVb#31b7dr&`KbU{zD1Oi%3X?J_1CH zv@0Tl+`9@$?k#%j0O<~n~zr^w+?>@8L3-7 zLx9a*227AQjp|H9N~4$2e4u+S4%l-Ffs{EBA|Z^)xiKHGU&qCiB$eQhLQ;y&l=LY8 z%pUG3i3n(E4d53J98$9sn8Eh1NMykQPP-r_L1o*ti>g67chbmhvs@cOf+DjbVgphV zF%SMMA`~g};>SvJfPx_%%jy{+k%E)+v~@cv@Z?ewtJ=dult9HtbtLjEc&-N0&3*Aq zQ~4@P{A{UqRNp9O=6^Lj;BF5aKdpH|SsPH3E!Ns@?8)Ei=G; n?H);Ya24xV-yDd5Hm&&vexQ+2Y+_lE00000NkvXXu0mjfQKuRg diff --git a/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObjects.java b/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObjects.java deleted file mode 100644 index afefbc0b3..000000000 --- a/naked-objects/dom/src/main/java/domainapp/dom/modules/simple/SimpleObjects.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.dom.modules.simple; - -import java.util.List; -import org.apache.isis.applib.DomainObjectContainer; -import org.apache.isis.applib.Identifier; -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.DomainServiceLayout; -import org.apache.isis.applib.annotation.MemberOrder; -import org.apache.isis.applib.annotation.ParameterLayout; -import org.apache.isis.applib.annotation.SemanticsOf; -import org.apache.isis.applib.query.QueryDefault; -import org.apache.isis.applib.services.eventbus.ActionDomainEvent; -import org.apache.isis.applib.services.i18n.TranslatableString; - -/** - * Domain Service for Simple Objects. - */ -@DomainService(repositoryFor = SimpleObject.class) -@DomainServiceLayout(menuOrder = "10") -public class SimpleObjects { - // endregion - - // region > injected services - - @javax.inject.Inject - DomainObjectContainer container; - - // endregion - - // region > title - public TranslatableString title() { - return TranslatableString.tr("Simple Objects"); - } - - // endregion - - // region > listAll (action) - @Action(semantics = SemanticsOf.SAFE) - @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT) - @MemberOrder(sequence = "1") - public List listAll() { - return container.allInstances(SimpleObject.class); - } - - // endregion - - // region > findByName (action) - @Action(semantics = SemanticsOf.SAFE) - @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT) - @MemberOrder(sequence = "2") - public List findByName(@ParameterLayout(named = "Name") final String name) { - return container.allMatches(new QueryDefault<>(SimpleObject.class, "findByName", "name", name)); - } - - // endregion - - /** - * Create Domain Event on SimpleObjects. - */ - // region > create (action) - public static class CreateDomainEvent extends ActionDomainEvent { - public CreateDomainEvent(final SimpleObjects source, final Identifier identifier, - final Object... arguments) { - super(source, identifier, arguments); - } - } - - /** - * Create simple object. - */ - @Action(domainEvent = CreateDomainEvent.class) - @MemberOrder(sequence = "3") - public SimpleObject create(@ParameterLayout(named = "Name") final String name) { - final SimpleObject obj = container.newTransientInstance(SimpleObject.class); - obj.setName(name); - container.persistIfNotAlready(obj); - return obj; - } - -} diff --git a/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectTest.java b/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectTest.java deleted file mode 100644 index 0dd50eeec..000000000 --- a/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectTest.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.dom.modules.simple; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -import org.junit.Before; -import org.junit.Test; - -/** - * Test for SimpleObject - */ -class SimpleObjectTest { - - SimpleObject simpleObject; - - @Before - void setUp() { - simpleObject = new SimpleObject(); - } - - @Test - void testName() { - // given - String name = "Foobar"; - assertNull(simpleObject.getName()); - - // when - simpleObject.setName(name); - - // then - assertEquals(name, simpleObject.getName()); - } - -} diff --git a/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectsTest.java b/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectsTest.java deleted file mode 100644 index 66a9afc42..000000000 --- a/naked-objects/dom/src/test/java/domainapp/dom/modules/simple/SimpleObjectsTest.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.dom.modules.simple; - -import static org.junit.Assert.assertEquals; - -import com.google.common.collect.Lists; -import java.util.List; -import org.apache.isis.applib.DomainObjectContainer; -import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2; -import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode; -import org.jmock.Expectations; -import org.jmock.Sequence; -import org.jmock.auto.Mock; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; - -/** - * Test for SimpleObjects - */ -class SimpleObjectsTest { - - @Rule - public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES); - - @Mock - DomainObjectContainer mockContainer; - - SimpleObjects simpleObjects; - - @Before - void setUp() { - simpleObjects = new SimpleObjects(); - simpleObjects.container = mockContainer; - } - - @Test - void testCreate() { - - // given - final SimpleObject simpleObject = new SimpleObject(); - - final Sequence seq = context.sequence("create"); - context.checking(new Expectations() { - { - oneOf(mockContainer).newTransientInstance(SimpleObject.class); - inSequence(seq); - will(returnValue(simpleObject)); - - oneOf(mockContainer).persistIfNotAlready(simpleObject); - inSequence(seq); - } - }); - - // when - String objectName = "Foobar"; - final SimpleObject obj = simpleObjects.create(objectName); - - // then - assertEquals(simpleObject, obj); - assertEquals(objectName, obj.getName()); - } - - @Test - void testListAll() { - - // given - final List all = Lists.newArrayList(); - - context.checking(new Expectations() { - { - oneOf(mockContainer).allInstances(SimpleObject.class); - will(returnValue(all)); - } - }); - - // when - final List list = simpleObjects.listAll(); - - // then - assertEquals(all, list); - } - -} diff --git a/naked-objects/etc/naked-objects.png b/naked-objects/etc/naked-objects.png deleted file mode 100644 index eda8439a2896339adc829e61b5cde85ca7d1af4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75022 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°gp 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

p0NZ!WK-SDvpILX1AY_?Sw+>6=zV1W^cNhBJ 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 diff --git a/naked-objects/etc/naked-objects.ucls b/naked-objects/etc/naked-objects.ucls deleted file mode 100644 index 8e9afac6d..000000000 --- a/naked-objects/etc/naked-objects.ucls +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/naked-objects/etc/naked-objects.urm.puml b/naked-objects/etc/naked-objects.urm.puml deleted file mode 100644 index 02af47ddf..000000000 --- a/naked-objects/etc/naked-objects.urm.puml +++ /dev/null @@ -1,2 +0,0 @@ -@startuml -@enduml \ No newline at end of file diff --git a/naked-objects/fixture/etc/naked-objects-fixture.urm.puml b/naked-objects/fixture/etc/naked-objects-fixture.urm.puml deleted file mode 100644 index 02af47ddf..000000000 --- a/naked-objects/fixture/etc/naked-objects-fixture.urm.puml +++ /dev/null @@ -1,2 +0,0 @@ -@startuml -@enduml \ No newline at end of file diff --git a/naked-objects/fixture/pom.xml b/naked-objects/fixture/pom.xml deleted file mode 100644 index 29f05ed55..000000000 --- a/naked-objects/fixture/pom.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - 4.0.0 - - com.iluwatar - naked-objects - 1.26.0-SNAPSHOT - - naked-objects-fixture - - - ${project.groupId} - naked-objects-dom - - - diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java b/naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java deleted file mode 100644 index c5a6bfb7d..000000000 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/DomainAppFixturesProvider.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.fixture; - -import domainapp.fixture.scenarios.RecreateSimpleObjects; -import org.apache.isis.applib.annotation.DomainService; -import org.apache.isis.applib.annotation.NatureOfService; -import org.apache.isis.applib.fixturescripts.FixtureScripts; -import org.apache.isis.applib.services.fixturespec.FixtureScriptsSpecification; -import org.apache.isis.applib.services.fixturespec.FixtureScriptsSpecificationProvider; - -/** - * Specifies where to find fixtures, and other settings. - */ -@DomainService(nature = NatureOfService.DOMAIN) -public class DomainAppFixturesProvider implements FixtureScriptsSpecificationProvider { - @Override - public FixtureScriptsSpecification getSpecification() { - return FixtureScriptsSpecification.builder(DomainAppFixturesProvider.class) - .with(FixtureScripts.MultipleExecutionStrategy.EXECUTE) - .withRunScriptDefault(RecreateSimpleObjects.class) - .withRunScriptDropDown(FixtureScriptsSpecification.DropDownPolicy.CHOICES) - .withRecreate(RecreateSimpleObjects.class).build(); - } -} diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java b/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java deleted file mode 100644 index b85161917..000000000 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectCreate.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.fixture.modules.simple; - -import domainapp.dom.modules.simple.SimpleObject; -import domainapp.dom.modules.simple.SimpleObjects; -import org.apache.isis.applib.fixturescripts.FixtureScript; - -/** - * Fixture to create a simple object. - */ -public class SimpleObjectCreate extends FixtureScript { - - // endregion - - - // region > simpleObject (output) - private SimpleObject simpleObject; - - @javax.inject.Inject - private SimpleObjects simpleObjects; - - // region > name (input) - private String name; - - /** - * Name of the object (required). - */ - public String getName() { - return name; - } - - public SimpleObjectCreate setName(final String name) { - this.name = name; - return this; - } - - /** - * The created simple object (output). - */ - public SimpleObject getSimpleObject() { - return simpleObject; - } - - // endregion - - @Override - protected void execute(final ExecutionContext ec) { - var paramName = checkParam("name", ec, String.class); - - this.simpleObject = wrap(simpleObjects).create(paramName); - - // also make available to UI - ec.addResult(this, simpleObject); - } - -} diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java b/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java deleted file mode 100644 index 2612039aa..000000000 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/modules/simple/SimpleObjectsTearDown.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.fixture.modules.simple; - -import org.apache.isis.applib.fixturescripts.FixtureScript; -import org.apache.isis.applib.services.jdosupport.IsisJdoSupport; - -/** - * TearDown/Cleanup for SimpleObjects. - */ -public class SimpleObjectsTearDown extends FixtureScript { - - @javax.inject.Inject - private IsisJdoSupport isisJdoSupport; - - @Override - protected void execute(ExecutionContext executionContext) { - isisJdoSupport.executeUpdate("delete from \"simple\".\"SimpleObject\""); - } - -} diff --git a/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java b/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java deleted file mode 100644 index 7b835387b..000000000 --- a/naked-objects/fixture/src/main/java/domainapp/fixture/scenarios/RecreateSimpleObjects.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.fixture.scenarios; - -import com.google.common.collect.Lists; -import domainapp.dom.modules.simple.SimpleObject; -import domainapp.fixture.modules.simple.SimpleObjectCreate; -import domainapp.fixture.modules.simple.SimpleObjectsTearDown; -import java.util.List; -import org.apache.isis.applib.fixturescripts.FixtureScript; - - -/** - * Create a bunch of simple Objects. - */ -public class RecreateSimpleObjects extends FixtureScript { - - public final List names = List.of( - "Foo", - "Bar", - "Baz", - "Frodo", - "Froyo", - "Fizz", - "Bip", - "Bop", - "Bang", - "Boo" - ); - - // region > number (optional input) - private Integer number; - - // endregion - - // region > simpleObjects (output) - private final List simpleObjects = Lists.newArrayList(); - - public RecreateSimpleObjects() { - withDiscoverability(Discoverability.DISCOVERABLE); - } - - /** - * The number of objects to create, up to 10; optional, defaults to 3. - */ - public Integer getNumber() { - return number; - } - - public RecreateSimpleObjects setNumber(final Integer number) { - this.number = number; - return this; - } - - /** - * The simpleobjects created by this fixture (output). - */ - public List getSimpleObjects() { - return simpleObjects; - } - - // endregion - - @Override - protected void execute(final ExecutionContext ec) { - - // defaults - final var paramNumber = defaultParam("number", ec, 3); - - // validate - if (paramNumber < 0 || paramNumber > names.size()) { - throw new IllegalArgumentException(String.format("number must be in range [0,%d)", - names.size())); - } - - // - // execute - // - ec.executeChild(this, new SimpleObjectsTearDown()); - - for (var i = 0; i < paramNumber; i++) { - final var fs = new SimpleObjectCreate().setName(names.get(i)); - ec.executeChild(this, fs.getName(), fs); - simpleObjects.add(fs.getSimpleObject()); - } - } -} diff --git a/naked-objects/integtests/.gitignore b/naked-objects/integtests/.gitignore deleted file mode 100644 index 88dfbbca9..000000000 --- a/naked-objects/integtests/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/translations.pot diff --git a/naked-objects/integtests/etc/naked-objects-integtests.urm.puml b/naked-objects/integtests/etc/naked-objects-integtests.urm.puml deleted file mode 100644 index 02af47ddf..000000000 --- a/naked-objects/integtests/etc/naked-objects-integtests.urm.puml +++ /dev/null @@ -1,2 +0,0 @@ -@startuml -@enduml \ No newline at end of file diff --git a/naked-objects/integtests/pom.xml b/naked-objects/integtests/pom.xml deleted file mode 100644 index 71c65b2a8..000000000 --- a/naked-objects/integtests/pom.xml +++ /dev/null @@ -1,131 +0,0 @@ - - - - 4.0.0 - - com.iluwatar - naked-objects - 1.26.0-SNAPSHOT - - naked-objects-integtests - - - - src/test/resources - - - src/test/java - - ** - - - **/*.java - - - - - - - - ${project.groupId} - naked-objects-fixture - - - org.apache.isis.core - isis-core-unittestsupport - - - org.apache.isis.core - isis-core-integtestsupport - - - org.apache.isis.core - isis-core-specsupport - - - org.hamcrest - hamcrest-library - - - org.apache.isis.core - isis-core-wrapper - - - org.apache.isis.core - isis-core-runtime - - - org.assertj - assertj-core - test - - - org.junit.vintage - junit-vintage-engine - test - - - org.hsqldb - hsqldb - - - javax.annotation - javax.annotation-api - - - - - diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java b/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java deleted file mode 100644 index 39b34de16..000000000 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/bootstrap/SimpleAppSystemInitializer.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.integtests.bootstrap; - -import org.apache.isis.core.commons.config.IsisConfiguration; -import org.apache.isis.core.integtestsupport.IsisSystemForTest; -import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller; -import org.apache.isis.objectstore.jdo.datanucleus.IsisConfigurationForJdoIntegTests; - -/** - * Initializer for the Simple App - */ -public final class SimpleAppSystemInitializer { - - private SimpleAppSystemInitializer() { - } - - /** - * Init test system - */ - public static void initIsft() { - var isft = IsisSystemForTest.getElseNull(); - if (isft == null) { - isft = new SimpleAppSystemBuilder().build().setUpSystem(); - IsisSystemForTest.set(isft); - } - } - - private static class SimpleAppSystemBuilder extends IsisSystemForTest.Builder { - - public SimpleAppSystemBuilder() { - with(testConfiguration()); - with(new DataNucleusPersistenceMechanismInstaller()); - - // services annotated with @DomainService - withServicesIn("domainapp"); - } - - private static IsisConfiguration testConfiguration() { - final var testConfiguration = new IsisConfigurationForJdoIntegTests(); - - testConfiguration.addRegisterEntitiesPackagePrefix("domainapp.dom.modules"); - return testConfiguration; - } - } -} diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java deleted file mode 100644 index 1835b07db..000000000 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/BootstrappingGlue.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.integtests.specglue; - -import org.apache.isis.core.specsupport.scenarios.ScenarioExecutionScope; -import org.apache.isis.core.specsupport.specs.CukeGlueAbstract; - -import cucumber.api.java.After; -import cucumber.api.java.Before; -import domainapp.integtests.bootstrap.SimpleAppSystemInitializer; - -/** - * BootStrapping IntegrationTesting Before and After Steps - */ -public class BootstrappingGlue extends CukeGlueAbstract { - - @Before(value = {"@integration"}, order = 100) - public void beforeScenarioIntegrationScope() { - SimpleAppSystemInitializer.initIsft(); - - before(ScenarioExecutionScope.INTEGRATION); - } - - @After - public void afterScenario(cucumber.api.Scenario sc) { - assertMocksSatisfied(); - after(sc); - } -} diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java deleted file mode 100644 index 640067a36..000000000 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/CatalogOfFixturesGlue.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.integtests.specglue; - -import cucumber.api.java.Before; -import domainapp.fixture.scenarios.RecreateSimpleObjects; -import org.apache.isis.core.specsupport.specs.CukeGlueAbstract; - -/** - * Test Execution to append a fixture of SimpleObjects - */ -public class CatalogOfFixturesGlue extends CukeGlueAbstract { - - @Before(value = {"@integration", "@SimpleObjectsFixture"}, order = 20000) - public void integrationFixtures() { - scenarioExecution().install(new RecreateSimpleObjects()); - } -} diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java deleted file mode 100644 index 30b7171fc..000000000 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specglue/modules/simple/SimpleObjectGlue.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.integtests.specglue.modules.simple; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -import cucumber.api.java.en.Given; -import cucumber.api.java.en.When; -import domainapp.dom.modules.simple.SimpleObjects; -import java.util.UUID; -import org.apache.isis.core.specsupport.specs.CukeGlueAbstract; - -/** - * Test Simple Object Operations - */ -public class SimpleObjectGlue extends CukeGlueAbstract { - - @Given("^there are.* (\\d+) simple objects$") - public void thereAreNumSimpleObjects(int n) { - try { - final var findAll = service(SimpleObjects.class).listAll(); - assertThat(findAll.size(), is(n)); - putVar("list", "all", findAll); - - } finally { - assertMocksSatisfied(); - } - } - - @When("^I create a new simple object$") - public void createNewSimpleObject() { - service(SimpleObjects.class).create(UUID.randomUUID().toString()); - } - -} diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java b/naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java deleted file mode 100644 index 78fcd0889..000000000 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specs/RunSpecs.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.integtests.specs; - -import org.junit.runner.RunWith; - -import cucumber.api.CucumberOptions; -import cucumber.api.junit.Cucumber; - - -/** - * Runs scenarios in all .feature files (this package and any subpackages). - */ -@RunWith(Cucumber.class) -@CucumberOptions(format = {"html:target/cucumber-html-report", "json:target/cucumber.json"}, - glue = {"classpath:domainapp.integtests.specglue"}, strict = true, tags = {"~@backlog", - "~@ignore"}) -public class RunSpecs { - // intentionally empty -} diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/specs/modules/simple/SimpleObjectSpec_listAllAndCreate.feature b/naked-objects/integtests/src/test/java/domainapp/integtests/specs/modules/simple/SimpleObjectSpec_listAllAndCreate.feature deleted file mode 100644 index 346aa2562..000000000 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/specs/modules/simple/SimpleObjectSpec_listAllAndCreate.feature +++ /dev/null @@ -1,26 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -@SimpleObjectsFixture -Feature: List and Create New Simple Objects - - @integration - 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/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java deleted file mode 100644 index 6e0e6c7ec..000000000 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/SimpleAppIntegTest.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.integtests.tests; - -import org.junit.BeforeClass; - -import org.apache.isis.core.integtestsupport.IntegrationTestAbstract; -import org.apache.isis.core.integtestsupport.scenarios.ScenarioExecutionForIntegration; - -import domainapp.integtests.bootstrap.SimpleAppSystemInitializer; - -/** - * SimpleApp Integration Tests will implement this Abstract Class. - */ -public abstract class SimpleAppIntegTest extends IntegrationTestAbstract { - - @BeforeClass - public static void initClass() { - SimpleAppSystemInitializer.initIsft(); - - // instantiating will install onto ThreadLocal - new ScenarioExecutionForIntegration(); - } -} diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java deleted file mode 100644 index 39b7fdfa9..000000000 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectIntegTest.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.integtests.tests.modules.simple; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import domainapp.dom.modules.simple.SimpleObject; -import domainapp.fixture.scenarios.RecreateSimpleObjects; -import domainapp.integtests.tests.SimpleAppIntegTest; -import javax.inject.Inject; -import org.apache.isis.applib.DomainObjectContainer; -import org.apache.isis.applib.fixturescripts.FixtureScripts; -import org.apache.isis.applib.services.wrapper.DisabledException; -import org.apache.isis.applib.services.wrapper.InvalidException; -import org.junit.Before; -import org.junit.Test; - -/** - * Test Fixtures with Simple Objects - */ -public class SimpleObjectIntegTest extends SimpleAppIntegTest { - - @Inject - FixtureScripts fixtureScripts; - @Inject - DomainObjectContainer container; - - RecreateSimpleObjects fs; - SimpleObject simpleObjectPojo; - SimpleObject simpleObjectWrapped; - - private static final String NEW_NAME = "new name"; - - @Before - public void setUp() { - // given - fs = new RecreateSimpleObjects().setNumber(1); - fixtureScripts.runFixtureScript(fs, null); - - simpleObjectPojo = fs.getSimpleObjects().get(0); - - assertNotNull(simpleObjectPojo); - simpleObjectWrapped = wrap(simpleObjectPojo); - } - - @Test - public void testNameAccessible() { - /* when */ - final var name = simpleObjectWrapped.getName(); - // then - assertEquals(fs.names.get(0), name); - } - - @Test - public void testNameCannotBeUpdatedDirectly() { - - // expect - expectedExceptions.expect(DisabledException.class); - - // when - simpleObjectWrapped.setName(NEW_NAME); - } - - @Test - public void testUpdateName() { - - // when - simpleObjectWrapped.updateName(NEW_NAME); - - // then - assertEquals(NEW_NAME, simpleObjectWrapped.getName()); - } - - @Test - public void testUpdateNameFailsValidation() { - - // expect - expectedExceptions.expect(InvalidException.class); - expectedExceptions.expectMessage("Exclamation mark is not allowed"); - - // when - simpleObjectWrapped.updateName(NEW_NAME + "!"); - } - - @Test - public void testInterpolatesName() { - - // given - final var name = simpleObjectWrapped.getName(); - - // when - final var title = container.titleOf(simpleObjectWrapped); - - // then - assertEquals("Object: " + name, title); - } -} diff --git a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java b/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java deleted file mode 100644 index 250cb1883..000000000 --- a/naked-objects/integtests/src/test/java/domainapp/integtests/tests/modules/simple/SimpleObjectsIntegTest.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.integtests.tests.modules.simple; - -import static org.junit.Assert.assertEquals; - -import com.google.common.base.Throwables; -import domainapp.dom.modules.simple.SimpleObjects; -import domainapp.fixture.modules.simple.SimpleObjectsTearDown; -import domainapp.fixture.scenarios.RecreateSimpleObjects; -import domainapp.integtests.tests.SimpleAppIntegTest; -import java.sql.SQLIntegrityConstraintViolationException; -import javax.inject.Inject; -import org.apache.isis.applib.fixturescripts.FixtureScript; -import org.apache.isis.applib.fixturescripts.FixtureScripts; -import org.hamcrest.Description; -import org.hamcrest.Matcher; -import org.hamcrest.TypeSafeMatcher; -import org.junit.Test; - -/** - * Fixture Pattern Integration Test - */ -public class SimpleObjectsIntegTest extends SimpleAppIntegTest { - - @Inject - FixtureScripts fixtureScripts; - - @Inject - SimpleObjects simpleObjects; - - @Test - public void testListAll() { - - // given - var fs = new RecreateSimpleObjects(); - fixtureScripts.runFixtureScript(fs, null); - nextTransaction(); - - // when - final var all = wrap(simpleObjects).listAll(); - - // then - assertEquals(fs.getSimpleObjects().size(), all.size()); - - var simpleObject = wrap(all.get(0)); - assertEquals(fs.getSimpleObjects().get(0).getName(), simpleObject.getName()); - } - - @Test - public void testListAllWhenNone() { - - // given - FixtureScript fs = new SimpleObjectsTearDown(); - fixtureScripts.runFixtureScript(fs, null); - nextTransaction(); - - // when - final var all = wrap(simpleObjects).listAll(); - - // then - assertEquals(0, all.size()); - } - - @Test - public void testCreate() { - - // given - FixtureScript fs = new SimpleObjectsTearDown(); - fixtureScripts.runFixtureScript(fs, null); - nextTransaction(); - - // when - wrap(simpleObjects).create("Faz"); - - // then - final var all = wrap(simpleObjects).listAll(); - assertEquals(1, all.size()); - } - - @Test - public void testCreateWhenAlreadyExists() { - - // given - FixtureScript fs = new SimpleObjectsTearDown(); - fixtureScripts.runFixtureScript(fs, null); - nextTransaction(); - wrap(simpleObjects).create("Faz"); - nextTransaction(); - - // then - expectedExceptions - .expectCause(causalChainContains(SQLIntegrityConstraintViolationException.class)); - - // when - wrap(simpleObjects).create("Faz"); - nextTransaction(); - } - - @SuppressWarnings("SameParameterValue") - private static Matcher causalChainContains(final Class cls) { - return new TypeSafeMatcher<>() { - @Override - @SuppressWarnings("UnstableApiUsage") - protected boolean matchesSafely(Throwable item) { - final var causalChain = Throwables.getCausalChain(item); - return causalChain.stream().map(Throwable::getClass).anyMatch(cls::isAssignableFrom); - } - - @Override - public void describeTo(Description description) { - description.appendText("exception with causal chain containing " + cls.getSimpleName()); - } - }; - } -} diff --git a/naked-objects/pom.xml b/naked-objects/pom.xml deleted file mode 100644 index 2ff5b2d08..000000000 --- a/naked-objects/pom.xml +++ /dev/null @@ -1,352 +0,0 @@ - - - - 4.0.0 - - java-design-patterns - com.iluwatar - 1.26.0-SNAPSHOT - - naked-objects - pom - - 1.9.0 - UTF-8 - UTF-8 - 2.0.0 - - - - apache.snapshots - Apache Snapshots - https://repository.apache.org/content/repositories/snapshots/ - - false - - - - - Cloudbees snapshots - https://repository-estatio.forge.cloudbees.com/snapshot/ - - - false - - - - - - - - org.apache.maven.plugins - maven-enforcer-plugin - 1.3.1 - - - - [3.2.1,) - - - [1.8.0,) - - - All plugin versions must be - defined! - true - true - - - - - - - validate-enforce - validate - - enforce - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - **/*Test.java - **/*Test$*.java - **/*Test_*.java - **/*Spec*.java - - - **/Test*.java - **/*ForTesting.java - **/*Abstract*.java - - true - true - ${project.build.directory}/surefire-reports - - - - org.apache.maven.plugins - maven-surefire-report-plugin - 2.16 - - false - - - - test - - - - - maven-clean-plugin - 2.5 - - - maven-resources-plugin - 2.6 - - - maven-jar-plugin - 2.4 - - - maven-install-plugin - 2.5.1 - - - maven-deploy-plugin - 2.8.1 - - - maven-site-plugin - 3.3 - - - maven-war-plugin - 3.3.2 - - - org.mortbay.jetty - maven-jetty-plugin - 6.1.26 - - - org.apache.maven.plugins - maven-shade-plugin - 2.2 - - - org.apache.maven.plugins - maven-antrun-plugin - 1.7 - - - - run - - - - - - - org.simplericity.jettyconsole - jetty-console-maven-plugin - 1.56 - - - - org.apache.rat - apache-rat-plugin - 0.10 - - true - true - - **/target/** - **/target-ide/** - **/*.project - **/.classpath - **/.settings/** - **/*.launch - **/ide/eclipse/launch/** - **/ide/intellij/launch/** - src/site/resources/ide/eclipse/** - **/rebel.xml - **/*.gitignore - **/*.log - **/*.pdn - **/*.svg - **/*.json - **/*.min.js - **/*.js - **/translations.pot - **/translations*.po - - - - AL2 - Apache License 2.0 - - - Licensed to the Apache Software Foundation (ASF) under one - - - - JQRY - MIT - - - Dual licensed under the MIT or GPL Version 2 licenses. - - - - JMOCK - JMock - - - Copyright (c) 2000-2007, jMock.org - - - - DOCBK - DocBook 4.5 - - - Permission to copy in any form is granted for use - Permission to use, copy, modify and distribute the DocBook DTD - is hereby granted in perpetuity, provided that the above copyright - This is the catalog data file for DocBook XML V4.5. It is provided as - XML Catalog data for DocBook XML V4.5 - DocBook additional general entities V4.5 - XML EXCHANGE TABLE MODEL DECLARATION MODULE - - - - W3C - XHTML - - - Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio), - - - - - - Apache License 2.0 - - - MIT - - - JMock - - - DocBook 4.5 - - - XHTML - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - org.apache.maven.plugins - maven-surefire-report-plugin - - - - - - - org.apache.isis.core - isis - ${isis.version} - pom - import - - - org.apache.isis.viewer - isis-viewer-wicket - ${isis.version} - pom - import - - - org.assertj - assertj-core - ${assertj-core.version} - - - - ${project.groupId} - naked-objects-dom - 1.26.0-SNAPSHOT - - - ${project.groupId} - naked-objects-fixture - 1.26.0-SNAPSHOT - - - ${project.groupId} - naked-objects-webapp - 1.26.0-SNAPSHOT - - - - - - m2e - - - m2e.version - - - - target-ide - - - - - dom - fixture - integtests - webapp - - diff --git a/naked-objects/webapp/etc/naked-objects-webapp.urm.puml b/naked-objects/webapp/etc/naked-objects-webapp.urm.puml deleted file mode 100644 index 02af47ddf..000000000 --- a/naked-objects/webapp/etc/naked-objects-webapp.urm.puml +++ /dev/null @@ -1,2 +0,0 @@ -@startuml -@enduml \ No newline at end of file diff --git a/naked-objects/webapp/ide/eclipse/launch/.gitignore b/naked-objects/webapp/ide/eclipse/launch/.gitignore deleted file mode 100644 index 3cefd2567..000000000 --- a/naked-objects/webapp/ide/eclipse/launch/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/SimpleApp-PROTOTYPE-jrebel.launch -/SimpleApp-PROTOTYPE-no-fixtures.launch -/SimpleApp-PROTOTYPE-with-fixtures.launch -/SimpleApp-SERVER-no-fixtures.launch diff --git a/naked-objects/webapp/ide/intellij/launch/README.txt b/naked-objects/webapp/ide/intellij/launch/README.txt deleted file mode 100644 index 59efab77d..000000000 --- a/naked-objects/webapp/ide/intellij/launch/README.txt +++ /dev/null @@ -1,27 +0,0 @@ -==== - This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - - The MIT License - Copyright © 2014-2022 Ilkka Seppälä - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -==== - -Copy into workspace\.idea\runConfigurations directory, and adjust file paths for Maven tasks. - diff --git a/naked-objects/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml b/naked-objects/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml deleted file mode 100644 index 9b8e300ce..000000000 --- a/naked-objects/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - diff --git a/naked-objects/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml b/naked-objects/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml deleted file mode 100644 index c5942af1d..000000000 --- a/naked-objects/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - s - - - - diff --git a/naked-objects/webapp/lib/.gitignore b/naked-objects/webapp/lib/.gitignore deleted file mode 100644 index 70eee7e4f..000000000 --- a/naked-objects/webapp/lib/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# -# explicitly ignoring Microsoft JDBC4 jar -# (cannot redistribute, licensing) -# -sqljdbc4.jar diff --git a/naked-objects/webapp/pom.xml b/naked-objects/webapp/pom.xml deleted file mode 100644 index 175c4025d..000000000 --- a/naked-objects/webapp/pom.xml +++ /dev/null @@ -1,299 +0,0 @@ - - - - 4.0.0 - - com.iluwatar - naked-objects - 1.26.0-SNAPSHOT - - naked-objects-webapp - This module runs both the Wicket viewer and the Restfulobjects viewer in a single webapp configured to run using the datanucleus object store. - war - - .. - - - - - org.mortbay.jetty - maven-jetty-plugin - - - - org.simplericity.jettyconsole - jetty-console-maven-plugin - - - - createconsole - - - ${basedir}/src/main/jettyconsole/isis-banner.png - ${project.build.directory}/${project.build.finalName}-jetty-console.jar - - package - - - - - org.codehaus.mojo - build-helper-maven-plugin - 1.8 - - - validate - - maven-version - - - - - - maven-war-plugin - - simpleapp - - - false - - - ${maven.build.timestamp} - ${agent.name} - ${user.name} - Maven ${maven.version} - ${java.version} - ${os.name} - ${project.version} - - - WEB-INF/lib/isis-core-webserver*.jar, - WEB-INF/lib/javax.servlet-api-*.jar, - WEB-INF/lib/javax.websocket-api-*.jar, - WEB-INF/lib/jetty-all-*.jar - - - - - - - - org.eclipse.m2e - lifecycle-mapping - 1.0.0 - - - - - - org.codehaus.mojo - build-helper-maven-plugin - [1.5,) - - maven-version - - - - - - - - - - - - - - - - - ${project.groupId} - naked-objects-dom - - - - org.datanucleus - datanucleus-enhancer - - - - - ${project.groupId} - naked-objects-fixture - - - - org.datanucleus - datanucleus-enhancer - - - - - - org.apache.isis.viewer - isis-viewer-wicket-impl - - - org.apache.isis.core - isis-core-viewer-restfulobjects-server - - - org.apache.isis.core - isis-core-security-shiro - - - - org.apache.isis.core - isis-core-runtime - - - org.apache.isis.core - isis-core-wrapper - - - org.apache.isis.core - isis-core-security - - - - org.apache.isis.core - isis-core-webserver - runtime - true - - - org.apache.geronimo.specs - geronimo-servlet_3.0_spec - - - - org.hsqldb - hsqldb - - - junit - junit - test - - - org.junit.vintage - junit-vintage-engine - test - - - - - self-host - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - - - - - - - - - - - - intellij - - - idea.version - - - - - org.apache.geronimo.specs - geronimo-servlet_3.0_spec - - compile - - - - - jrebel - - - target - dom.simple,org.apache.isis.objectstore.jdo.applib - warn - - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java b/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java deleted file mode 100644 index dac14f53d..000000000 --- a/naked-objects/webapp/src/main/java/domainapp/webapp/SimpleApplication.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package domainapp.webapp; - -import com.google.common.base.Joiner; -import com.google.common.io.Resources; -import com.google.inject.AbstractModule; -import com.google.inject.Module; -import com.google.inject.name.Names; -import com.google.inject.util.Modules; -import com.google.inject.util.Providers; -import de.agilecoders.wicket.core.Bootstrap; -import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchTheme; -import de.agilecoders.wicket.themes.markup.html.bootswatch.BootswatchThemeProvider; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; -import javax.servlet.http.HttpServletRequest; -import lombok.extern.slf4j.Slf4j; -import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication; -import org.apache.isis.viewer.wicket.viewer.integration.wicket.AuthenticatedWebSessionForIsis; -import org.apache.wicket.Session; -import org.apache.wicket.request.Request; -import org.apache.wicket.request.Response; -import org.apache.wicket.request.http.WebRequest; - - -/** - * As specified in web.xml. - * - *

See: - * - *

- * <filter>
- *   <filter-name>wicket</filter-name>
- *    <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
- *    <init-param>
- *      <param-name>applicationClassName</param-name>
- *      <param-value>webapp.SimpleApplication</param-value>
- *    </init-param>
- * </filter>
- * 
- */ -@Slf4j -public class SimpleApplication extends IsisWicketApplication { - private static final long serialVersionUID = 1L; - - /** - * uncomment for a (slightly hacky) way of allowing logins using query args, eg: - * - * {@code ?user=sven&pass=pass} - * - *

for demos only, obvious. - */ - private static final boolean DEMO_MODE_USING_CREDENTIALS_AS_QUERYARGS = false; - - - @Override - protected void init() { - super.init(); - - var settings = Bootstrap.getSettings(); - settings.setThemeProvider(new BootswatchThemeProvider(BootswatchTheme.Flatly)); - } - - @Override - public Session newSession(final Request request, final Response response) { - if (!DEMO_MODE_USING_CREDENTIALS_AS_QUERYARGS) { - return super.newSession(request, response); - } - - // else demo mode - final var s = (AuthenticatedWebSessionForIsis) super.newSession(request, response); - var requestParameters = request.getRequestParameters(); - final var user = requestParameters.getParameterValue("user"); - final var password = requestParameters.getParameterValue("pass"); - s.signIn(user.toString(), password.toString()); - return s; - } - - @Override - public WebRequest newWebRequest(HttpServletRequest servletRequest, String filterPath) { - if (!DEMO_MODE_USING_CREDENTIALS_AS_QUERYARGS) { - return super.newWebRequest(servletRequest, filterPath); - } - - // else demo mode - try { - var uname = servletRequest.getParameter("user"); - if (uname != null) { - servletRequest.getSession().invalidate(); - } - } catch (Exception e) { - LOGGER.error(e.getMessage()); - } - return super.newWebRequest(servletRequest, filterPath); - } - - @Override - protected Module newIsisWicketModule() { - final var isisDefaults = super.newIsisWicketModule(); - - final Module overrides = new AbstractModule() { - @Override - protected void configure() { - bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("Simple App"); - bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance( - "css/application.css"); - bind(String.class).annotatedWith(Names.named("applicationJs")).toInstance( - "scripts/application.js"); - bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance( - readLines(getClass(), "welcome.html")); - bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("Simple App"); - bind(InputStream.class).annotatedWith(Names.named("metaInfManifest")).toProvider( - Providers.of(getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF"))); - } - }; - - return Modules.override(isisDefaults).with(overrides); - } - - @SuppressWarnings({"UnstableApiUsage", "SameParameterValue"}) - private static String readLines(final Class contextClass, final String resourceName) { - try { - var resource = Resources.getResource(contextClass, resourceName); - var readLines = Resources.readLines(resource, Charset.defaultCharset()); - return Joiner.on("\n").join(readLines); - } catch (IOException e) { - return "This is a simple app"; - } - } - -} diff --git a/naked-objects/webapp/src/main/jettyconsole/isis-banner.pdn b/naked-objects/webapp/src/main/jettyconsole/isis-banner.pdn deleted file mode 100644 index 37543c93c333124664a254bbd5bb13846195959a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69658 zcmbq*$BwLAwq`#{>7OE9ypyV~gbN4)?_q`~An=}Pzj*JgSLidylZHq#VC}U(x3EM5 zr~dE%`S(-|?>?=|f1TfAYyR^Ofgu0|IYVy8~gwL_txxv_OEHE|MSl`;7#X5K5{*B z;Gg08jpWzhGyCsL@f5iD@BiaRFWTRCxX5rFiB2Vc@6mlww@gBQqh<@ydEC{0NhI6jco3v=Of#mqXFCbnM*Sz`D&xCP&`*XN_-tR4kV)mv^oVqFczUeo; zQcSeL(Rma!j$2k_75P9Nrcp8N?-h@}(Au#(oYu3fkA6tP>3?|t&DYxdEz~}xb3Vq! zJnSGU!&W|?ReVc+{6J{zkD=y5e~Mhd!i-5>IfO+-VxUo0W>4-s%eRA|%%qqb4qqHN zQ)hoNZWSZ=Bw}h~ol#4J=P9o7vqGB9+reNqr<&M=xN^2N9dwnwUe_TcB(!Boq;Q`l z;B7u_lJwURq*8~7$-P)+cV)e|_*@pfeK^E~Bq5|X-!JYp>F1{MJe6@qU2+DN7-E}4 z#n2Gc9KcOc^`gvNl)ZAB`jw_wH@)|3<7*Lar<+RkfhLknY0oDrjJ36_M^KQ@afhWu zrfcL>>ajZ|%t@RQE$EN>V&HPbVlBbpQuh|SbVOuX628lF0>|bCXQ}m^B)zlEWA4RC zRg1MP->+kHn5?-!XVv(O$oQg8y;VdhwtStbUWq{tZ@-dYiXWS{5Y9fx$f^_NPW6=_ zEkRD(vF#1|;>7s9e1iTQUs4@nd!3!ES5yr#cs!A3JB;+W<>l6{^vZ<05yEp4-gK8K zH#lo+C#3yoCbMJMFlzhFVNmg5e*^@Tx5iknK_*l?3x`ZSL(HrN=D_%HHzUk6-$e&Da)IW%XN_l?z6 zTl=Id>npH_K!mx+wN)h~3dx{Om@UWod|rjqP=5;HDkaI3azs_Ra#V1xZdH}BV%^%@ zPOk;d6WQ@mi84yyM4w_#LIdZBe>KmwU$k0pQm=+>3N@a|D)H+c>&_Q{Hx)KZyvZ@E zN0eTU5PX)MGlhFc)3E;Yh+6?l^10_5d3q3T@aL z+Uw6}#4dBwEeKRsstC_+i6>)Lg1NTqlVTkPmn2+FWD=4Of@s5y9etQAi9UEI%|dWt z4Qx@CH?H@h)IKV~f_0y5H>E4yiY>1horgFLPoFb}`?AJ6WnY&M!MRqzsWqIE!<%aL zRt1C;gcET*4mNUV3rk|NjGf3Qnyrr_JAO~E&;i{m&B-4kdc7pMKQf`_-}Srt-t4lq zFM3KUyhlc*d7^HSudQt0i)BYG5M0ms+8HQk0mp8;2!;nKy>`Rf*Q6|aiMLjcLl7El zzJw0&6%_3-$WVem)=rClTUp8vy|Er;TvcKWnx?VHFekn~)7M0j)MvdD{mvO?t=qVw z87NpS?j!a+#OlJ5!v+2&a!7=TlH_^9rHPH9A+{K~U*Oe}b@n|;H{)^OPmos!RuaYQ zsjjXcjBDq90UT6~QR!^bJ;U`hmFSS{o@yZp-e-Ukiey2qTie|U9Qz&Q#;6BHWz9t;ej6ZL|W4l3f&A}Nokh7YQcWTf8Jpy z$=qw;J(k;YwrF>ve1rS?#UnbQOH*EzT+Lqa1)9(?RfPXTVPstteBCg`z|G!}hAjiX z$$rClvMJpKTh!-_s&I4 z(&JX*t#*R(=CXlB=*W1HEiMLHv?~(>(@D}$cnu4%er_lezat)i?T;=G zhi_A))uB2g{%YG8h9P)}%Z!E@Lq3@q8GWc-MDD$Ld}!M?^&sw)p;`#E-{L|-CB9xL zB%Ln9$|6qjL_|l#w<7E+sCCiK=#axGUCj;DD~U*>S!ThNC;&GqhCIf|Z>`nn_RB-v z1Hw$=Ti`Nc*!9C0idGerEH=%GOAjtS~IVNZyvvGo=( zG}Tyhm`@EtsN6Bp-3veyS=#81Q-;l4UG_eQ$W8EpAkFqlSM(R1Q=Qya%*=RMW0{Mi z-^n~b5ZtaEq@Sr=o)z=<6o|XQUOupF$|-vN+FR_)c+5M?SkO#0_!pEW{#A(d6~IKT zX#>?@iW5{yCD|Nw1N67WoRz^B85&1BKuXIe8~&D2gX0CVZ;BSvz_uvysUV%)_8T$2 zO5b1T6BJ~MV$&4EOcc2e$`CLX#6jW+rWZ4|%lM zzcxZw-|5IoGANaaFf2t3gIFP$ZkphJzBr3Lc`L6bmtzZyY|q%mm}OpgwJ_3S9m;{` zkkxi;mWQLLjYU;hCpL7T&qNPZAPD-o0}(CY*N-wOLXmeZM7m|MSc-a0N7rw=&2CrC zVS4qv7{p}Zh)(gQhIFMFodQ-IA}=Fu6D&@|4g0~4t%#QghB~q#B_9?bR!M#=M%!>p zB1Ln1J}kc1RuFE68FQ60}R@W^^;Q8Vt1TuiG6~?RReEbK zHwe~y>M0)?GMt=Yoi(@OEF3V_#hwf}{8cptD{2*1euCtSE=kH3*m)^QzGjgD=9{uJ|?1$CtmK5v*5i#V4BevOc7qD#BrSEc2p~84R z!WwlloqizWzzZ_&)JUo9#*<8?+9&LOaw%n2!2s9GjdJ;v`%g@uEG5$Prr=`_Bl|HV z!IL^jQ@s|+Lb5k5FGj=0OdBy6r9Rj^jul!h*A~v#0MUoW+qTo>C&oR$0r9i;>cgK} z!oNDK%v((nl3~$bOna~LBD^j0`mKri^9|lU*x5&nF+u6Es$wT4)>6frsBO+9VnjgL z3qD>Z1xv-ibOn=VIcWV)g8FnHYwwGRO0s*LIeDU8S`nn3P*RPUm=T(bHg(W^J zG+(ci!(My(Ac92l;Z*r&v#HHqOma~VRCiMqif(LAELg=EgcB{zZh@*l4SWnqCYn{Sd z32bA?WT#6Z1XL{;4I!y{i4u^Y$%^%cARi!mXf6uWD0L#EVuch9d*n$QKv6LqwLOOM z*TDGg0%}RSj|82xky1&taQYU!)X4l$P_tw17vb_@U2A-h%5@>>KGL)Y zIE}dSS-ILLep&#ykP+=<7f|N zXYK=Oc-6I0hJhxWY_S=kxIVB`{oT4kcV_uY7fr=$|M zx9mow0z+mU?L@RTBd5IAX^5L#6>*rJ0r(4~UILzcBtPI>#pcrEkF6!E@WGJ$Sy z%k*oTYy<7x)x0Pf85Qtuy2Lc*y5syc4RFVM_yI)|;Cf;Ko!RxH$QW&)D)ZWm1*>1l z7Vmm|%&hoqGT>~6VG0hc zLmyI{GoP>DrbgWJ(jPRYz;Icx-bs;A8IA{)S(!0sFV%@3SLZBlP9(MG40un8K8n&R zhYu+*tSF|xYqBe`CFln(Lor!Mjs6tm(Z1Zxg)|)SC7X>)(||_Y=pazr$akM%oMB1k z6UgXQOhN5~rEMFaL22=OI!(iWNju9a);@kWOV{C_!Yt9sVgQ4`-iu!UrZC4Qu)8D{ z@fxhBq6Wa~xJAQb^d0)h9Y4p)SMq~+8Y`>p^5%VBn}-65NWiX;LS85smA!HRywu$B zKpL;TLc6FpAexEVr#aWRMOnDGLOx>^fU_Rj{0}X^P@6zZQM2_OsA8zYW zrd4ifCgn2QkzNq@oE`Q$tW^;^x-~s z4;}DoC=9{nu{i+j-f1j?P)sgNRWyqb{0-($6a=SGe1$I|zjLfAW#vH}Cl!69<%ki| zh?->H$Zx`U2p>vw)@Ju8s(9CZ+N&o(dDJJjQF*PpUw^MRe{FLrq06n9?0Z|ZnfgeF zC(l?Oe_XXrX(X0Gqm$P)jvKr8&*Jwaw)NpZ*kO6-9qf24F6``D+GUttJV{}bSE)ma zT>?|HB_qtKFVM6;)Ot7!TM`#!VE4GFxJ>>sfIVaJG-vBagyl%FdUwFrZJn0WSC!%+ zmhgu2BZA_5M~;)6v+DXlhq=QiT3rki7J)4iZlD1ng9#%iOyEg_h0SQWO&k$Cescs2 zJ5ft{H1mmUmo-HRxsQS?2BLCB zv_NbH__3~8GTJzJ)mkYr;L72Ydkaks8vYb+P&$KmHF6rF0L{E3;^x6R_OCI4iY?N% zba&2GQa=C5=gCoH?Ib4CX@X$tr5TE#58ttnSnq0`8cRyk>6>pfJnJVvYcvLx#hT|g z^m)E@nZ8dW{mkx=WG(DpB*f@G>T%)dg*~r}cSX|J;|;oNjrzuCOy)^<{)>@`6*(Az zAc_fMU(U#ae&9_I>iruvriK5I4|BP-x}+vxfT^TprvtWdlR>m;pHsQO)j< zM>J>pZN;uQGlr|~OY)uv4jW^JrxR>?L)iKnCqK9B$*2o7K~{b_w8tRoG3K&K&&42) zif2);-vc9zcfvG1OpsC)FoRSY;&4(68(txMIO{V|kwX*PT%Auh>T7_-2QkBRKr9?T z&ZPj{Js-9nZ8imHE2<}J?XoZ*4l=vSg7Gg5dM8a(>xvZw8GG%ys0ofo(#FReBfi_@ zh<=QDVc&Ab=|?I_)CzR;W?!R@lX|~#9UoFR5_X5+&4wEENI)k)XQ&;nztnd19zxoF zgwVy4f`fWz+2GCjJr5PnQFf$Eyn<>()jRIPA(;rz>5-MbkP&IL_^8DiGB(8-%>LS4 z(2EBFT7>30;H~V<;Y(G|Pg_kqtQpY@U4vj$Ad5`-la%a|LR2?FkM8wEn`1@~ zN6T;UH%%o0JIAzEeg*lgE7Lv1Fgd2W^e=`mL>;z`Z5!bnO3~T4DseM0<*TM*A-`Yu zf>*0j2}i~avEg*waV+!wh$J{mb5k|!BoU0_k_8%aLm`07H62d#9^gGx0&i3`Ufb0dE#3dhwg&=JOyL_McDY}0)cZuTbn(|t4YVg~m zs$x_c)Fu83K8xFUQGP$6n7kUIC7qLLX44$TDOk^|7o8588A|QRx%hbaw)nO0w9@-9 ziHEN1gKXl>>E;oWPu^g&+O_r-bS=PR8Efh#WaWhA$l|Z7E_lQEKr}ZJmo=DdoO6`> zRj@!q?R%ru9SCV^)3PUlk$j>2Xn3e_;n(U?zw6^UBhak!dN#~1>3jv$d^q4}0EE)< zj~u0|S-JUSV&xe|xz7wEZ6#Xr>t}0PDv5mpoXO+KPt1JOrPQl$7z!GzhGh(FR@u=u zhL5wcF<}E5=7N#{oZpkXhx9hrYscAEV*E7?x3Zv88A}OnWq^t3za6pasuqV`ut|f} z+R%|hR7De5fL({JV_m_#@P#%zt(o;^!Lim*EI@P9>(`MLb(z94O z)5+AUI=8Jpuj4~w^dcFU}IGu zLcfshL}TN{*_YzD3;`scz?#E#3j!ZWZB*@HG~r56j_Y(6YFQc)?6-OGO83RUvm3W< zt}qvA5XQy_lyRY0i5!IvwU%)Ddb#kY4=CB!Fk7mJfR_WDGRB`a=*-auClOd^=C)tx z;iqCsvw4iVpftlgV!sJrwq?hbwFYCDl_OgAmz2m?M9jK1(1%s1LuB203-En!eJ9}r z&VbD&+>4Ggk~sr26IP&T(TzDGYWw5pL zFN)T5yEVG_PDOG2T^oE&5?*N=(GsT?CIp*6x#*YbU;!Z>z?gSP?8aUKpzo+|_{OT* zPuK8ApJ!YTK(g^eOojf?Vcn4>GH% zpUF-TZQYn5J}Q>jpD{y^oe-!~%@S~8!T`r?w5nOo71+WF7b1M;G*K41EpwMPZmo({Um57kZ40(H0-Kza;k?f?$plrfBup4nIy$m< zI?E?an?sz|7bj8hkIGPSWZ1j|O|(LHB8#+`k;IkTuV^>Ir&z+&I1OO1~CPK@L5# zJW2jz3;1OLL*E}3Nuwejde-But+E&|xf<<}#F24eu#T}2W*?2eBf35ubw67yIq1m7 zA*u`B^xGM)OF8xy7A+a2H*Z4_AS!W3&t>HV*D#!dWdR9?x~P0_oB%iB-gx&imGEBf ze${VY+L$FI(ED*Sb?)%Se_=HzIqVw`Gd_5#EKp&sBWP9i%-_#EV{d)T%b8#o!LdPN zunxbDL%n;T4zi$zNXo5wo3s6|R~T6?_|Av9jq_z2`0LXjJzkAz=@!-s^a5sIzTx!Z z2QkL`kM#oExhxn^y5nzeAG-jQI3m=#|5SO}F(z*S{k2SheNr}f@~LdP(BTsXT540i zobhM1D>lN`LDGZ7`Yevi*9yg{v0KRwD-YEYayBU1+I6x?gs78x9Wl!WMU%ICs3`7&dTbw zu_qbe0gD^L%Wo9qBJOW`Fx5pXpDTr3Q)CngLZa&qqT2K_e+gk|B`0%>K*{fyCLRyr zudcXK(CdBc_z@YysbdYIJ@TJlw~as;Uki{E=p7*D>hPKg{9@gv9#|7WrN9*U;erU7 zSYsnspm<}4E3lT8%I#B(PG01bdhKw(50Q@`T7Nyv23sN-G2{om$jcm>el;v%t6(Mu z2_Oiv#H@nYy*V%J1Dmxbl2?Z>23{YNGSAQa3|26hmA*CJuwIMG=hL)e!4ZQ~^v=rxL-Hc%{HVqk!SfIz7() zd`sW~cw~AUCoN&?&b?Y9UsKRo_jf`c1KFsq(G?ER4!Q^M5qtORNAGA^fZ)+Q#~*K5 zyYCr=%LK>gN74q6Wied;Ff9vAxDw~zSpn1PZ5(dHxB3Xjy!RN>cbAiw{%HaxgiJe& zvQOOoHs;a!E&>bfvgJ@-BZ&PmDBwA74*KtviM^kY6+NB(`h2^cuHRagpCM4pj4w^ zrMLLF10(4SL>urkek{xc&aEM*SLvAxWixUQLP~Q2rb>C?NN<2Bfk`)<1+x)HKyQye zZ$-f`-Ly&?V~nlM>KV4+1yowzF6RWpJ7AP?-D>p(oA3j;MGk`sGvU>o2nT{K7kF@N z3%bkIYUdJJTMZAb__t~XLG&X|`7i?lNJ9zQVe}icC&!zYS~$KM(lS`avu0ob`=Vc< z+P$9-5he}^koMOl^>zojmB{RmVJ#<;D2nj$5kRHtR{Dziogz9*ht)e9OvB{9v6~Ddk!{cYjCM*uK|kL?&-rxH z$D}0I7R-=V<>ilf4fp5N?J#bYlVx*UE0|9Yj7!qt&Yw8f*Yjk3Q;LS`0jK(y%Xu&+ zlpDtQ3q$t}!J@E%+!WSBLJFAVF7NgIAlIf*d2^bG#$x*3|sAYGpYKQ(R4@UV-J4W#ryNQ7q7 zr6!wABG%uW>A()(fsB?F&v@@WW~NHbLi6srz{~^cF%s0D!XXWG6r|#m`hnH@4%}FL z*01FjvKH-6MnCM2I?qm-4aV7V;4>}eMXhkzY;`BSKS*r1ut_hKSO)nP*d=0FiQx)w zWBt)6d@2mV+H$LXL7XlUt5yE=grr>?dDAbTkr%jC-AXADN{tJz2I%+FP9m&so@pJ5 z(F%P^c5ZlD(PZbFTMcXfPDV|Jw0xNkyHa%(OCZ;Se7*Afs+skR1^u*T;m`99O;K+0 zogGNX@u9S=n6Cg6SGsdz<&WWu(#*3Gv zk=+ps2tf{>tOjR9JP_uHV#fxeK*=wn9YkRXPL*3?TolL`2I3vfeGCu^@VGc~Ew*xj zkH`aM3MyXXlgyka50ybOJF?yCXMa>ckPhxV?bXrRsE&M_&R^$j|mAvxxK6$k@7x0HoQ)N8Z?2RR6N zekST?t}{qw)+P1g=JUl34d>Z$RFlQ4(t)cRLP|-`VEqENEljvseo5*M&98$wh_pZ< zltT+J4YDa>L-;9Xjw>pw1+)hX(ohpS0Ih&Cg>cjA74a5;yHhqgT}A~8%f9pmTp+cAW7@2gVPDpy&jhV`z^RHjeRa$hppv`bVy_wQ8w@ zgBR_-ufx6H`be2h{Fg`NgSGyMMz}%%62fpmkGO33rZrFrW5`ovH>Tq0inF%~M6U{M* z_lC1UgCG8)$Ta$Jju>0i48VhL09K_MUmycIS$ zf0lGW8AUi$@V`I>Y{oCR=9?G!Keri!m>UJ;I35k7$yLB^aGccQrF^+858h(qa}c0F zzVd@YkOMAiKmgs>%EdzOe}1`tH@0<#AScCDRRv-MR%k&LS#1Pvy>NM**%Sjg13Sqi zUjRvO5O@|ij-27hV^LhrlH#B$Eo};$l4zkm4j@$e0`JAV&V6Kidi{l{U$y_?L}09v zcpqZTDa7Dw-hOp%V{;`?@MMrMf9@M(aCsYqLBs%rs|EfOa3H{8!my~J_9zLQ>>Dp` zLclxrIkV+JKubRY0T3!a;Rydv6chkC0+?hy{G0jjInWLywg11*!PomKb1jJZm=ef7 zenVY(Sg2#*e2+kw;bI|KjrS;9R1ANgRIwdkTQRi|TD9PNzCTyKXP@f^*_<7g83-cr z2k3}yURKpHO}%IgPm`drd(K)>Md*xXFP6tr+C7MUa55T4gVD0^X0dP{#1*C$*PixR zTMVax*RNZx=RHiZ58fmV8Mu!H@bLWzs2Wz^+7le%UFYXmX)_@f*Up>Kh5-aXfg{(h z=66|WB0cnb!`$2FPKMEWkRvse3sH4+snRh(Nm5OKg|+@N)L>MVJZ*A?stDxq6&y$W zRNK(LrQjVsD*6c0j6km+4U!29h~+CNwFMdUC{+r>nP~I=9Eo|J7u(v_JYaP=u1dfS zFU8qO^qBpgv2O@eBDD^YfXr$9OMSq&HDG}Z-JrcF#sqT;EDUm)H^kc;3bMc)P*%>; z5?geO9+LUF38W)9e%?>Aq92@w5u`g%cLBB_0c?gFI8f>Zq`F^28{dnn6xrw%p;6oe z?%G#m2E-MEl?4)=M5xr~`_-`flTgvpR{P%!f{KqwYPc)I1Bgsqe;%x&w8&vbTCj&p z8%Din3{5SGJW#{I$V2g~6>js4{sFP!p-r~1St4u+mh%F&qQ3SpQ#;q0f&1$PKRyOO z_sR-}*@DMxwtEan?f{}c`fHT2VeZ@b3-DaSp;> zl`@bt$g`K(Y_OGmx88Em%X3sEG9^n2VvV_R+~3C*xnVd!*IzK2@Ad!Fr}4${^mil2Shzv5PEr97={&5*Yi@sfdJfq%#rmF49i|m|8Thu zd3nyThA4x;5eb-Wul5An90!cMI)QJPY+9awD_nqATX;l3GhQMXN@ZjHny?~C49EsO zw+C7h5Q13i3x^<%hE9O*$}&d0Cz6HAR;4*X20b8Lf@`h-6_Pl<)qogHkK?)vovDZ& zRyQ0-y-t6=!2qt$ww4=-q9_&t4=B^c;{YnAt3NnFysf5_bP)YA9=HH&g+xNDMqXY@ zf%;wS1(@2Z7)+oJDU^oYqMDSHc(xw6kWlEkltRN03k@_3?u)ZC5h4Nz2Qus+TKUFD z-omk}*rrMF>NFii(x73|i`o?cK$pQ+NWV+C0$F>~0@w;+sb>Oz!vx%$p#p9uxZV!% z9q6{M7pJV=Y*_09%qDpB061nP&RFQ+@)I7ouMGPX9gXxwmSTv^eJB7XfdkKK?l_7B z_vYF5>8sNGsNwGJ$LKPgD1IIflrJYp*Jrch>0|aHtI-CEVK=Hu=PmD^@A570S2jrg zLHBu{AhTG#GVNo7O{E2sL6$3vp^JN0-m<^9>ZnKi;FxQ?y_J*gbTw+Q&S+qqVx6`2 zYjh2VxIi}MCI3VokR{|)OKCyDbV@eLAQu1M6Wr>0zZRA6+jFD_pJq) zUz+awes#xF(MghptslBa9H)1$1Yqw`lSDfdr3Fx$au}lIGrn`acGI-{!ljCJCifNs zasizBFe|ZGIxs7cxxY@FZH5Dt{`~_Lf3pUk>9^vOGQ@bskpq&Mm@tF9BW8ykaF|Fk z;pggr2)_LldF}(QVkE)=PkQ|Z8LhTKTUxU5aTPhij*Uc?Aj7QS$?n`&)8Re8U38V6LmD7Lz3^WzH_vQ)om3( zTBUWBP}Z~oo%L#x1Fbm#?xGkjW0U(FHMy~)i7yBxc$e#4zyjdT&Qok*d_>p=+l?fA zKX>*KTL+m^lt{?dw>Sv{NEEEnmU?RBVSLEGW(Ru(_e|5tM};7znVn4pvp&TM0Ww=|1FKHU5uytYCI?kWWzx+)mAvZ=c&`=V8Pa;#o$=uo;g(j zA&%c$e-e6&dbNFMDwW@uz}UiL3-%L-6sL2g3eXIu^_N8TILr}$;>)?XmTJ#d*&U$s z=5Ys92rjhRU@iB9s@;{V`Tl8Rfb~P!|CIuY`@;I`$gq_V)QP#E93=FV^;FaXn*7DR zDf9eAzGLn+E+A`v4>s_3lS*{acQMVJne;FT);TvXdLvyG26&dPq^ax=pcM57*qWZw zdJ*K&8IA`Lz|J)hb_qxgnnHx5D3Dvb(~J=_MfRGnt*|x#?!3~g<5_LX^RJLTLSMDwtS!gdHR;zWbens9 zfpLwmq&{oH31~TJDf5E7gy~%0?@J?wx4m`+%r0i77P=t3z;@l{RZN0q9e%d-2Yd^W zc%?1K%z<>nkBwQ7QO&qFr!eG-4NZ>-2vF7+tiqNMotf zh*8;p6D)@ZPP#?1RVp7a%K~(-Jx>Jr;h=WSsB`uaQ2|f@-xIC)c_QxV!|ABZ21`Mu&zq~TD0X=k0R>{nmaNX<>oo|2U zH8AP^g4lM(s_Glgv7Vq;cp$&Fw52?AW*RG+XPZTPw7=?FRz2jt#4W`lFTclKR zq5IB^LAqHCJcd*#_ga&x>XDQO>)IGuBRt#@pmu)u$NVR4kztqRc0CTNB$XjM?GWbF zkm?g#g!oDSS4sA6o?>tDlBLQ;{@fvHgCZ>fJCCpWz-i1KsbP2t{554^1x{ zI1O%!Hey=v14d+SHZlz9kNJJywwpVm+eKZU0Iv&R5MYlIQrBKCiexXKL22N&c5?oU zjLWd-*SyyrEq#^2aU%{JA%<~LLIle|sRb|{ZMnd!s9<-N$r%0zXw|&5RB2>(1PMO zxkw*gtQqb#Q#t@4xd2Xdz1?mQPF&hbxT&bQ^~UY(r^Fq<2PpcyKLImXE2(*k`Yme$ z{EX1w>?Q3#1?3!3zM3a+RBvYP2Z%890VCsF0-Z1iQHw(9J~bD#6axr`QJ}+Ukk7}Q zxk{j7uv#Q)1e3uUR;#~DUO|E!ep(tx2|yyZe>lP3Fvt_+@qo&IdBNFazR-55vjEW6?+5t;6UO=nWGRI)gP#gWhNtGLU~T5y@H^%St{?{&xNQM<70ff)eBMLo0XP%_Yyr{Q zGKo@9OJ}6Imax6yYm!`Ru9ksqn|vtHlNe}D)YX!nH>y+=h%H$LO#Nn-OWAjKB6S07 zM?}y-SO8dm1i=ix;||mU!_v%a+~u+ zZaMR3RudFpkZxj+Q}YoX!~=<1}SRJaLs1p3i;Rw=5&~yDnOUelw(LzPay>L>maDh{yUo^M44D+een3@XAvuHGPC(OH&nG>b5y zTJof3p7x2AByAQLadjmQkpcC=*iVr*8^{M{kgd}e2jVc>M<2m-0=fKp3^q)kl6fvo z!I+|(fsFs~{$vtJb&SaJq^_8OrUM~DGrp!d2NUxCbzs{lOkXgmA+#}|fz*7_kWB&% zF2oa`dSg?&_Ep0xVL#pAU@e$JEm$moc0J~04@!2Nuc{d4I2_~zX+&|;-&Wdoga@So zRNp=~XdnlA$X$cDnmO#V@;*FUjY;{_@@Wzl_+oXmvTtEwig*J1oQUvU+ZoC%KX6)d zCGs;qsWVEZ2ttQ%)FkJhP*(wH5t2w(V5&X<&qMH15bKD!zDs|30G`8OeSaXu%(KUq z-!t;z)t?NG7rgsr@1MpQhYN^<1_$BTo&@QO>wtC%j#m?5j9&JPcqh;WyutAj^7ZL{ z1W%PKV1Lq0^DfKb%ED_P zsdfUR6eCI**@K>0u4JNvRY2U!u(t}vA7qaM`p*%dr7WJPCBA+rgOhM#D?q5r^GF#8 zKPws6>q-V>W>W^1X{tP;^kGb}ftFHE?~G)StY zgbXlMkYXfT4V6<$Hzb6BIEc>e1Ms)5MFYJ{n?&4tJIVBqER=sa1@vf za|hDf2|(}pUCDob-$>enDEJRX*@WRJdDnE-5*EOE9z*K_DaWbwl;bs5E z$FhWrh?N%Py^Y0U)#v~oEC4jGY)%-}(`X`uHzpB@N^zL;{SYLpv(FiQZZPu{ zwY^yNQy|-{`V9&V?|V;HcOZVU-R$<(Snt(l^%DsHz`vp)a`KCouV1B5JZ1K|1sFxH z7O)%tl6^(1KJ_1dKf>%iKkqxOX|gJTg3b$Z1hhm4218O@s9@(5HQl$6o5tE@rL&~$KIRAzfP8U!{_MXz)u-Dh=VJupg2XE zrfu3Na7@}}ZJH)cxfBJ@^eu--=G}fX)TN%H*|;XYcC z0w?rkbJg!UX5Ux3*dz$jN_|9e5Syy!fO|#?uuXU9PM0CXj042Q!fn+{4YWT8Z|#hh zd8&iMDLZMM!}`@NJwvHpg|uf5zHDzS%Wl|oL?W9Rr5Y4gK^U%$_1QkP9(GG4HL7~J zWC?3gS4-;|GnIjCKx}c00IpZro-pH}Sy3pv>?h8EtJa&)g8EyL0Fz!WqvfctG^TT; z)8W%4W6Lzs&#Fxul{Q3Y#Anqk=$2Pu>SYd0fJALvx5&k&7a0J@tijmASJ+`K!>S>r ztesVN7y}*C6kT@a1z;T2fSb%&k!W$Pz7Y@u@Wz*WH7(RDnu8`SL*HPEw`e)|Ky`(w zziM{F34fXL5^$C4SxA2%Nrv%~4ctZygYj@Z#F9M6^$fd907(WaUS@P@53aJq!kU)^7 zD#E&>l@6#Gij~oJb@!T6E-=0OAd9ETUdRt1E1IFvG`6 z!mEM8rp(MCsphyFW;)>qsR$9v3TADP^>$>;En83)#0p4+Z8-stX12msbq86(;cH`^ zR#I%So%>xi@kz95H_gRFAq>k*eI=~0Wf|Y9JOE)!OC;BAtPQ7-n2FJBFRUgI3i@U; zgmHRUt~#nU7%M(m6^R4`?}+FvD$}UalA&pYgx(WJ(@jsBFY2NLdOc>`9}u?XtK~r# zlcmhE=!RblOk@J=85%*S$Z{eUv9+|tO}isjP!euYqi9)D+;*d6HQ>fqn;|_gt9gYf zSFj|&`;Hw!48_a1My53?if;{jKG)PX-TKPF!PtyiwfVYN#ktMAQC*JpRV^JamZB52 zw7jp)JCRp0o8ShG`n(bgy%{XPCJaihD?TF*OOs?UH@71d<7-u-oV2Og)(J~QCr=Gw zQWn#O!PRONanoh8b}eJb5?~aj6Q-OXFvG}J&&k&v16JWuoI7SvvU#Lru54$clmIa> zz~?~FT~%<-HDDggIEJ7FtvM+9ZPYUqgfFy$X3IgEq9)(n_#iAY){XhrZ7vrrYX%@d zqD}O?+K?j=hVeaP6f*>lpwPbBb3D%`C1xG>`YIM+^FZH(n{3Tj#%foBI9LKeuC6Yl z3Sp^48uhErf&ok_;A*%H2|TJ|T;!9vpCTaa1UTY#*+BF;LPpG_3Gqu(Z-Nqw36fB( zAyp>;Lyrg5oCJhQ&UN%(@ubp%N1?aO6{&Q6-5cHwnppKVA{av4k-(B zK&Oq!8r~$MemRw^R6Js>rLw4kL(@d_scF@%(rAl&D5Xt_#(;Ars@k7M4q)#)VI^do z?JBoBnWcF)@R_x|)NE90AVVT9GSgbu>3EKsQ&|#Q23}8>Ao;R(d%kLo@?;utQGG?> zp+L_|<~Z5_CAx36T70X!sZ1CblrQ38B?Gev7C5$}cxzdkVR=)T)Rft*4^c6L(5X3u z>Zc${7FJxAY9J0iOO?Eldx8s&-$@f&dW))8nj+9}shJ)Ce{DG_+*5(W3zK!Jv9hYd zXq*$1zyyNUYEI{!$)b+ic8evfjWDT(n7qJUx(8k`0Hb3AC!;%!&bH0Aof)c*6THDlc$k&eU6L7!v17Jw85zTmz`4A-+cB7*2d zpEJiDfdpY5mI87r*_3=v=y20|c_xt?F3I~y1Y8c^PnEmJbQMMsEgBFU`0tF;8dQ_A zXe-O}yri_uDd*?&+(Y_7$yqqDzrZ|$o(#ZeV3hI>u?#A{L36GG$X*E8K`5>+&Lo&c zy091}GesMfquvOZt=;94n@g;Wa_mG^IeDOz!4sCbCYM2A5M5@q2)ybOu1_@ShALPh zS%O9QEUW|)&$ins15eceoiTOQ0GH`Dlqr(}rfH8(Nf7`n5#FB>U8YQLSb)hHifdNb zb;X*wReU4cZQonfmZ%O*kpc%=X+EH7skT|DHK2P3Zh?s7oigyf!`vKUiJla5T?YY- zTp4Ej)l_E3R;EdS&!)DvKWlls$koej5dq2xxb7PcyJ!tiu^n+;BFTCvvEYU_!qO!O zZe-RB+0fEFr8tXqD`Fb6NCya<^?2g12Sc3|n{CI9SM{jh1~?495WwS1wL86mKXw-& zO*3L@2-#_70~c8H8>`=ss&wD!`J_VN_{24;G!I0ih9uTXuADaofJ9X*T2t@v-GtC3 z4XAdYnxxVz3zHUQ6&UDBhh;{dJlOEH29rkVdNE3H4zy(E!vJK{@Lq_`+h(EX76Alg z#p(!xB=r(Oq|@G_VtDnqJ5T^Yv6`X-nVlvTsv(%Y`NY*`>8e}-#iYi(q9aYY#70&> zYEW1#*l0U;k!f1;{f1p9bpvzbrDFAwVQ)d=glSbc1*n6*yXoS~WiSA$Sw91!Eg)h? z)FwBFxoQ&IbY#>5UoQ1Pg(axwGTCBVc~$i`aAFmYNpd>2V0eHxmHCG79m9V zJy6x_u6(}SQ)dnxw8^=}K%}|VR4m(5N2^o`36kJ(T9v^88;}{z_JX8^wMR)LMkT!G zXp0ry3`&5mpBZITT*a9n*nNA}tR;#fmsP_K>-AN;i8RV{Y^l{@jmeGu09I40ytM5A z_N9%vr8;3Z4SOYTM!BzFqj+^0`Y--?A9(mhFr6K!6yx)-6 zdPL%2sFgw5XB1Rx*#_jJ$`CIp`zyVfvk?tE0$A~M*61>&eQ#LNG0?dS2?~bjq3#eI zVd3&>Tb)G>;rgsGW>62>GKR z^hOh2N@rCHxS2eV=ZKc27^RYs!5pSR@D=KCQ(BB0c1_iL!tPibdH9?j!@^leVDSrw z&86iuH~AD?@)SXa2v*A4-MSRg>hAGE7K86Sq2O#_inkDKIvtZ z>sU`nmnhg$wOX%dOiXah*O$t&H0QvbwT^j|#*FEv53#yBiAw>{z>(UJ%0R@012)>0 z4iF|6w^`Hl5~YsnZKYc6 zEZEKS{-C`AIjcriNt#Zl2lkXOD`mVnWfkDUbSxOivOYJ(NFX)1-Nmqi)o_Wn`oIV? zyQr1`w(ORRfgwU+leU<#d94eea&VB1<$l%#rJqu-0SrMb+FIbR z6}Ih~hJids$;Xry1hLEhX4Pj9I+V~9TQa3SsAMjMQbS?_tXbFX^~P&+3j=%;3p`&s z{fOznLMC3t4m}qP)lBn6%qUK-vaIe;#gStOiIAGwYTT0A9oIu)$_G;TuAtFT4L$F4|I0fwH(yn`0E(*Rm>`w_orWucuFe^mc62xdo z-v-pph-(f=KtA#|=b%$BUh!QksCj^QfYul{Fvp83P`k5@u5W2#6=)(Vb%c}%Kt2fT zYGqHW3IqknXz)<6{m7$}b){Yl#f}cQ0+Kks$~4CKP%P&j9;KjL)Qc;vN*%93L*llC z#ZZz1TpPvp=on?WxpkQN5mSbgKs4YM00Jfq{yR zgb(RXn!A-86h=CtTw|BkXtGKz5?ue&GO}oygPOIl;unlQmnCC#8sjk?B&?X+b9__u2a z%qP`0FHN{6AW>5T__X!zR0he+Es6AOq3Kr89%gWOnJ=@;)?lHox)`T>QHu$hCE06s zCXFha!CY2WTdVcP7zYWk6;@$Ao6{n2VHY#mvup@?&A35z(&6gS3fBSZNa9_6B~)NK zN@Wmo z1px9s>ByxGkToGZJE7WmuLk_O@(`#2d}}tvk^;Kd#89?wOjah>)w2NR1#f7~ut=@j zb#ZHN2GttxIB{Bb0avz8R|()2s;h`^4^UY{c*_7D`X(GL(|$N5fmt-=^{Bhv#8W!L zqo%|zc*R}%lgN)Y0qGLF-mcbKEf9rM)yYFbTRfE}7MY{^*y$aD1fMj1DL~{+K%mz|390zz=pYlQ@EDx&2I9vnH zfl0JJQ6@;$k>+^a?ZOJX*C&OZPgJI1FrhHO9JcLNOky_33@zH5hU-_nN{2+qtvMZF zacuU}N)xSSJosLLCS28*p;h6V5k>pdwlZF@0C)Ff+s@d56f1R4b}&1ZChd|^>B$Ry zxoE^Z?{d|#5eD@#rY$>w%b3aWc;ouZ1fv8;D6d3rMIz(Y2(u(L+5!X#mVuzu>jQlQ zWp&lA+u)yy6)Z^?O>i3nDuoC5pr5DEGo`4_(!(w@Zkez=WIT12sI_h_8dSDUt&Lj4 z215oEX>aQ&U5YRPA)TeamC6fGWD{fL4*VX-Ah!lCGaD=Jyh4!>XNa;g=uOR}dZ#uC z7D0cg5dO5M_8Suwt!s;2@S& zj?gyfP_+2CEHWY5mqUXDnlph@vbU|eQZUIt%$j!QA<&BFc?V$sTzw^qNnK8>az&9e zS3)XkxN6kN-f-y;T6V|r6%g^vy|h$qOJF+DYeNL^th#k#jnp@bO{v>Xct1_ld~Rb9 zVD&f6sNY}1B{U*fbEK^f(V3=8VK`5>WloAVY)NiQrKrXXX-rT&MqI&|vv&yjLi5inF`pQ#xee=M#STa-Dce@ex~T&gV^Ir+AWhSrFTmNVI7@_Vj>v&J z$!9fm<`YO3Z@p4!A>tA3wmG`LuJpX6*hd9Ks!JVO0HG?%)tO?B3`R9lFI6PGq7ytp zE$bO?=M6Q`vr5Yo_#X7jEx6ugJ)oVWB62f94|oRfZj}%q1|pSprPg|( z0`v=Q)m-o6FLK-BNz(Fdq;GwonrZOvAz5cL2&%o!oG6&XbL=Di8N3_JP zbs`u?rN+B^HBdceL7!uok}im^ zHr#%hz$V!?D%U`}I-cTTYbmu?QhP&_n{_EomjMDi$6=Guwcdc5+Gw*s0sxP;>#L(| zi~(A!27BRshf;F9z!u;`R9z;PCDQnhPg3r&+NFo+rnDj3Qiwn6x-sQB@tL-(m;c3H+sZ0mi;Z;T4z~c2&$cWCE3Ypz3D<* zCbGO*bi+vZTCkm|d~GZ4}sHZ|}ERA50%g#BSSf)xVbskXbvi`r}? zdk|S}FIAXnB{7ph98BeVZGZQ80mTzwy+V9=6vE9}AdRZc{0PeH?HFXJJkU=Ul)b$~cavlBI{i*(seDHRt*d`h5UFBIVphKGqvLg%t-e^>vbM5sWHKcJThEdZ4!K3 zU-K@Yus2f!{Cpb|1-Z;sGXuN`f#Ma-+ad$6Nm}DAgg}{GBP)WGEfZ4+L39GhX8Hm~ zPhm+Jh7^dggAf314mxJOVrqPC<4)KGWwbkul{%+bGA3INgrDT~5Tpa6z@^w`!%nwN z2>@v-lYlG{0rDkrrc79@nQ2BtCCzpR;u#(YFa(b3DWvL&PS%qY8y3+ZYIG z0eq}k_Ij*@P<=h>Day(U`ve0L*wC&TWUB+h>xu@lO2`(3XOS8=cG+~SQpq-G*eJiH zm!QJ!R>~d6p^Z*9gyjYcIxWB)0tnAyVF&~%urS$-ZIJWB%5~tg2pYcuBnnA@A_3K3 zueDVSYe{CrS7c(?cXQAa5H^g;I}umbjpB^<~GzC+45zC?t9}ff= z#JD8rZ0p#JDut!cSm}dNuMZh8BoI(Qn%fQppT`4m-2}as?lh^1?@c)iTp$gW>$__L z+T7Y=$2K02j0SP0s-*&}qhE_nPG!|;op)8dHidiu6IulcBHaXkQh79vtx63QotVty za@YhSL*_K5YZhFhpqUeT+h&l1;ymcbbk_8Az7#4AEAN$o+rlFqx<^9Al0MTN2z7ow z83`7`phHnAh4OOC^v7L)(#e5}5l!=D2;kP))|dRGB|8Ie4PvZZ%B&oA#zbAFo~`1s zFqtZ~4IKxF)UzzNEt8T?PBtE7ad8HX5~#Y5C7WF0rkz9hZsEqhWpIN+rrQeSrLu-h z2xu=hC$s9bsS%CwWCNg43pgVlwJnr zLAG`twt+E=Gp#WPIySXx5esbaBah6(Ihuzia7GN>YD3}~aFfrfO(X>wgR&bf0|GEz zWE`kQWjqnBZ5RzAH0BJH8r7G>Ht@W`xix`hWV>p(RcW~d{%Ln8TA&R8Y)d_?wYQa_ zxb*A9Xsts&iDqpId=ObNqwX|oP)M4$JzrcbW4@H5QxKf>K~<*PoHhss0b%GtRTWCJ zdA#J-AhHnyZEX~cVZcIaJtei~75^X-6GLhISkz7acwtaA8yB+Xs^_DI; z?lA*#7NiJv3R1Qf=1QBJrP{KBVza{TVgqC(v!=XQtcQWRZOs>Y9i){qp#F4|W&<=% zhpe2`YQj91mkn&rbpv!5DKyM`wH|A#x|u90{=9`E5Z3m`Jpk|Y-Jv-EHZX54quioL z(I#X(5vjM^Ne>p8%5c~NR$9pz<3Z#^yzLDLWUAmZ*@beQ57~r3k3A2?TG1yrHM`B z%p%gj7bcb}VTP<4oH}!7Wti~zP$zVhwJI$qfqYq}3vvo(Kw~&B>!KqjlE>=A1X=J~ zndXJkmNgx9uC!3Lr3+G9?$~rV8mdzU;QDcI<;XdJn@JY00)9TkR-K4eu-3E(zGKd9 zXDPA<>ByDSnhe;M1ilyE(zYOkPIDM=O=`2H>&$AVTh&%hms!RUFa`Sq2CL&;EE`3_ zkfQZY(sIbwDB<+lYGt>4kS*0nV?zHeK(?z>EjDDJwU{?xI(nEg&P6 z*aWHM@d%;;BdQdeqsh?1NN~ZlNKWq1Nj?R=X$UtMyrRie;`L`VfI2u?UW{x?BWv?f zz_lThLfoF<(i$J)t435M=mBuOR{;q+j3zRrAovgxD`N>H{ob-ABarOMnNum{2!;kx z;!v)X^vRr+My-i1GxO2VFZc67o6%;u?k>P+o-8qNy;>^{AcN`x@Ju+7n3>Q>ry)++ zG6%L6VFDp>qHU{fm@_6g-d5|Sx;r8pV zo+3RO)C}WtMz8}=lfz5qWZN3zjX4_d2npe1xWj%Hl!Iu#g$z+62w1j>fkL!!K~F$+ z!(>3jyHghspl{6bO3n5fLW?%L8y8=y zXyDCjRp2T>o|M6+OZecHUgXANWoP!P-fmhY7xEhs#w>C%0lg)dt8u#x zx^`3vm6|I`5HlvPKu~nfRv~!g$!j(8-N}MuL#TcdqI|hM89CTYbeqITP$zCl=~%sC z!gnXFMOPzAD~&-*-fCTo`=BM?UDai!rr6uLq*Y7p$tLDX^dJ_el%q=9ED~+5JI-a0 zQ4-b^r&#L+m{p+f>r0j=17?4bFdpggQpgIN(j>;!dVA287LjFV(X0evaU$TjtxuGN z7N~!e2U!kEfh;%>II(Q@{D_@+^+8Z`VA4j)xkPoD8K}1))N%$f+AS=tg)O2ts-i@$ zC~cnmxZ-9rB2j?>*fp1(ZDp_k6n}58P-L>XDMphv|9nn3(HlF#AU- z4chQ>qcVl@M_6u+$RYia90%aW-vSv!Y3XDRYN~+&K2J#E#betV14!~r?-@b8-x!a^ z&22`{F+hOEm1?a`*6TDG$A~}g>#2a#KzgY|4x`Gtz4o&{?vptPqejdS9jrnyqUNPW z8mvGAaZ+{0^&VKE45Z%yM2TohTr8{#cKQ}C&jDZq(dbobGJut>xDz7+h5P=7Sc??V z>ghPz?=Lo!%1BF=NfV}7N->+ZuB@w59pu1DrtFnr*flr?V03GCA zo77Ck5+>}BX#hcU(k(}%rFwIH}Pf&FoJx1E;ratfpteWW(e@*Zn`*( zb?<{t>6Vw}uy+{iZfGJzfC1~ii!T+cKu^{+NM4Be#qnI!OJFcAuH-D5kTk6Tr5s{zQf3T+1W9y_77N;o(Wu(7eH}*LWWtv_2xO=f z$Kzz&cOaZT8Fm{p0$A7^6x`17s@p6uNP?bo^UWYNh7QC&C#AB6wDsyLmRg`qC$NB9 z=o)JjQkmsZBVF}|{s4n`@^FA8a%I#}>xR)o11_XW)U+-|9U*Ur=%_Z8XWk@Kw{2pi zddndr4N0%H+V(0~-j2GOQ7h8}cM-R28w+(0kEt5jfwTt<j=LHS%#T(C5>UGM80prmRPJMnD#&cnGp#96fiQ)Q$&@x#?;IWJOq}i+xDI)3ZV74}en^y8v=>)dNxS z08*GJvoYS#`r~Ft=JXt5S__o{@^tJw+bsua)DUxsVW8PUFrba@;W##qBZZJ0-$sA59Az{Ts+7^1`gjCCNh0tBfowUpm zfq>quL-yBvTO8vP4Dy>!^npXSCIpP>YlQNU$e5)N6)Uh-!jRp@^L7GJt4@zEg{c;c zn~5}ca~yK~4Tlsf|21UqnqsuOOamuvUpf;YJ0!~i&=jDkSgFOJ%W8F+bZO9)#z>WBLC1k_P>n9EyAW}OMYXsb#}%@)fJ}rD zm8Kqm%_<=FH3H;~75l*w0YD#c>(~J#R74^D=bDr4{!Dkk8tZA`ZS{ISB)f zAk*4l0=}TE(yN!WIzk9}bvmR=rm?No(RCK|vK$SOsZ94~b0Nk7)457o`C`dnp_8K$@Y&#e;B|wuTg_I{))64i- zhgfqXc?P;Ykn=^K1K!r8 zCsoPydPB^@CE6KrWo|@o%vp_gfI61)e1&EqMPf zy)MX7!36VgoNw9Lm}!XXuo@(b*``CyRFNS;L}eHxI@%w%OOU+~=wK^XGPE3e9GWp( zEuXKN8fe8RAXQ}4{peAD5r(m(`PdVLn? zTO0a3&HAcM>Bh!3zY1cZ!CzrC{Nc{J%StqNWRJ=ZSLp}Ro1W?W8f z59?%=_3NE7>p9X)+tNA>jBI*Ln>0kXTT8AasxcYNrmQp8YkH7o4bX@Q=y18I<#8)> z(`jp2!4=?R_4=zRqmM_+Li)tXAv;2S>0|~9E^cEnadEBUh9V@K;RgmzIru1ZDyUwY ztb8yH%G=t8l$>dU&+6MnXV~Ed&EHH&dBM*6R2c)^kOte9^(aAN#J~o4Mg{GL$o7>n zZ_WXaZfo2;YLhj$mLi6appsJued-C#CgP~7RojFF0Q<=AqM)AdHZ2k(TwwqDP01TA z1c{nvV~yZ!z#h1rfe(XM29SJ70e%{2+y|hHJleEWuUW%}(}@rR6$Ekxb5#)(snI~O zI~8&>hn&P?mMU9y03(9#SkIjX)oRoQ72y(zTWXPFxQ=h>@)#qw4GqM>)t=(#?KzNb z#0;ROpd)HlAd~cJiB_i;sEME=K+F(BMIk3sD>vgM2J0y*+q$a&A4biHL(4Q= zaTul20OyrSYpS%VsJeqhCT>->0F**IL1j8vS3xe5nLzq#j&tkm5E6V)u4RsxaYqAu zi2+y(-87W7QJMm*s#O6=M?jDbAZ7frVH1lvxk<3mC{`iFf{(&#$s@K~yKfEwjN0yE zFcbp3QR;wE?~c?uJ9E6421iJ*i5aBDL4^kdZnkxki7zOhN1J( z2%>J4RS>KueMrgI2`zBnZb)^CH=CWBOiOJv8$_WFlDagoaKp+}gshvZ+?~>uF+C-K zH^9lw5d<$*azy4xg+d5`2!hg-g4ILF1uY4+Eh#EmhI6p!wLAk-*esSosa>JhN(=4< zlKL>}G+4HYX?@BlQoPlgBxHvH)lO%&mchhAIx>KPVnBg|+&+YtDj2$ixFia7Bw z-ay=%e?76T2vd9$DCl5mz@bK_p3NF?lp*C~Sb_GrU!talk`&}L(5(<(k!|?#Q z7`5tv)v?+|44^|8^T6{k7OYqu#49JQk-BV~H1|Tskgg+hw7UFcw!;3 zDFiB@D{6xTGBtsgXMxcJU@%$+asdM5f>FVRmpVx_5)17br@f1{V72*p;b9@<;^P4{ zP5|Yw<0*9F$}`ZEB8ZMh!OXmp{8sDKlgsCx4f2~w8v3vkO#{}~t=YMI_QHRA_8fv& z@wa##{Q%hX`??)Kp0%_$OV4WSseb0k!`U*i!{D6iS@jBX76>&o&O)0whM#$IYvrY@ zKih!H{wz2L(tLVHKM+b~2b%=s;O{L9Jqs!R`_GFo8Vv}T z)G?SOYcr&YA5mQG!+!4~L$eTwOOJ#v9%LtNJBh+%Hr?;(8@TWz*7h`A>|e}mYmx3G zdN!Mm>~wK7IQEvpEY*u!JocV9Q+UI|btZfE?b-9deGlCG$M-!^wbo$c9yYTfe+ zc!F#Aw{t}C$^K$fJh~%_@9w|8i*NQv`Vt=U0b;q-H^oCJoo^RU>X`d{kU&L0^gi#i z!wq*IoalaA%;D!)Yo{M~op8DTe8CQiKjg~xraR}$ zv&=3!3H%6}#!*KVkM=Go^a}^}>^UulVvGCy-)JI5%^W4qbPxgbHb*mhvgj|v%%0Ac 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 z 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 diff --git a/naked-objects/webapp/src/main/jettyconsole/isis-banner.png b/naked-objects/webapp/src/main/jettyconsole/isis-banner.png deleted file mode 100644 index cd9ecfe02a1f78352a0fb42d056430178a53ea3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30776 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 - -

- Apache Isis™ is a platform to let you rapidly develop - domain-driven apps in Java. -
-
- This app has been generated using Apache Isis' - SimpleApp archetype, - to create a purposefully minimal application that nevertheless includes fixture data, integration tests and BDD specs. -
-
- The app itself consists of a single domain class, SimpleObject, - along with an equally simple (factory/repository) domain service, SimpleObjects. -
-
- For more details, see the Apache Isis website. -

diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/isis.properties b/naked-objects/webapp/src/main/webapp/WEB-INF/isis.properties deleted file mode 100644 index 017c7d339..000000000 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/isis.properties +++ /dev/null @@ -1,308 +0,0 @@ -# -# This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). -# -# The MIT License -# Copyright © 2014-2022 Ilkka Seppälä -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# - - -################################################################################# -# -# specify system components. -# -# The values correspond to the named components in the installer-registry.properties file -# in the org.apache.isis.core:isis-core-runtime JAR (in the org.apache.isis.core.runtime package) -# -# Although all configuration could reside in isis.properties, the recommendation is -# to split out into component specific files: -# -# xxx_yyy.properties files -# -# where -# * xxx is the component type, and -# * yyy is the component name. -# -# For example, viewer_wicket.properties holds configuration information specific to the Wicket viewer. -# -################################################################################# - - -# -# configure the persistor (object store) to use -# - -# JDO/DataNucleus objectstore -isis.persistor=datanucleus - - - -# -# configure authentication mechanism to use (to logon to the system) -# - -#isis.authentication=bypass -isis.authentication=shiro - - -# -# configure authorization mechanism to use -# - -#isis.authorization=bypass -isis.authorization=shiro - - - - - -################################################################################# -# -# MetaModel -# -# The metamodel typically does not require additional configuration, although -# the system components (defined above) may refine the metamodel for their needs. -# -################################################################################# - - -# -# Additional programming model facet factories, or remove standard facet factories. -# Comma separated list of fully qualified class names. -# -#isis.reflector.facets.include= -#isis.reflector.facets.exclude= - - -# -# Metamodel validation (in addition to that automatically performed by the programming model facet factories) -# Default implementation does nothing. -# -# Use a custom implementation to enforce additional constraints specific to your app/project/company. -# -#isis.reflector.validator=org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault - - - -# -# Whether to allow deprecated annotations/method prefixes (otherwise raise metamodel validation errors). -# If not specified, default is to allow. -# -isis.reflector.validator.allowDeprecated=false - - - -# -# Implementation to use for reading dynamic layout. Default implementation reads Xxx.layout.json files from classpath. -# -#isis.reflector.layoutMetadataReaders=org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson - - - -# -# patterns for applying CssClassFa facet (font-awesome icons), matching on action names -# -isis.reflector.facet.cssClassFa.patterns=\ - new.*:fa-plus,\ - add.*:fa-plus-square,\ - create.*:fa-plus,\ - update.*:fa-edit,\ - change.*:fa-edit,\ - remove.*:fa-minus-square,\ - move.*:fa-exchange,\ - first.*:fa-star,\ - find.*:fa-search,\ - lookup.*: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, \ - execute.*:fa-bolt, \ - run.*:fa-bolt, \ - calculate.*:fa-calculator, \ - verify.*:fa-check-circle, \ - refresh.*:fa-refresh, \ - install.*:fa-wrench - - -# -# patterns for applying CssClass facet (CSS styles), matching on member names -# -isis.reflector.facet.cssClass.patterns=\ - delete.*:btn-warning - - -################################################################################# -# -# Value facet defaults -# -# (see also viewer-specific config files, eg viewer_wicket.properties) -# -################################################################################# - -# as used by @Title of a date -isis.value.format.date=dd-MM-yyyy - - - -################################################################################# -# -# Application Services and fixtures -# -################################################################################# - -# -# Specify the domain services. -# -# These are the most important configuration properties in the system, as they define -# the set of the classes for Isis to instantiate as domain service singletons. -# From these domain service instances the rest of the metamodel is discovered, while the -# end-user gains access to other domain objects by invoking the actions of the domain services. -# -isis.services-installer=configuration-and-annotation -isis.services.ServicesInstallerFromAnnotation.packagePrefix=domainapp - -# additional services/overriding default (@DomainService) implementations -isis.services = - - - -# Specify the (optional) test fixtures -# -# Fixtures are used to seed the object store with an initial set of data. For the -# in-memory object store, the fixtures are installed on every run. For other -# object stores, they are used only when the object store is first initialized. -# -isis.fixtures=domainapp.fixture.scenarios.RecreateSimpleObjects - - -# -# required by EmailServiceDefault -# -#isis.service.email.sender.address=some.valid@email.address -#isis.service.email.sender.password=the.password.for-isis.notification.email.sender.address - - - -# -# whether ExceptionRecognizers should also log any recognized exceptions -# (default false; enable for diagnostics/debugging) -# -#isis.services.exceprecog.logRecognizedExceptions=true - - -# -# disable to (automatically registered) ExceptionRecognizerCompositeForJdoObjectStore service -# almost all of this service should be registered. Since all exception recognizer implementations -# are consulted in the event of an exception, it's not sufficient to override the implementation -# (in isis.services); instead this configuration property disables this particular implementation. -# -#isis.services.ExceptionRecognizerCompositeForJdoObjectStore.disable=true - - -################################################################################ -# -# Auditing, Publishing, Command -# -################################################################################ - -# -# Whether changes to objects should be audited; if not set, defaults to "none" -# - if not set or set to "none", can explicitly enable using @DomainObject(auditing=Auditing.ENABLED) -# - if set to "all", can explicitly disable using @Object(auditing=Auditing.DISABLED) -# -#isis.services.audit.objects=all|none - -# -# Whether changes to objects should be published; if not set, defaults to "none" -# - if not set or set to "none", can explicitly enable using @DomainObject(publishing=Publishing.ENABLED) -# - if set to "all", can explicitly disable using @Object(publishing=Publishing.DISABLED) -# -#isis.services.publish.objects=all|none - -# -# Whether all (or all non-query only) actions should be published; if not set, defaults to "none" -# - if not set or set to "none", can explicitly enable using @Action(publishing=Publishing.ENABLED) -# - if set to "all", can explicitly disable using @Action(publishing=Publishing.DISABLED) -# -#isis.services.publish.actions=all|none|ignoreQueryOnly - - -# -# Whether all (or all non-query only) actions should be reified as commands; if not set, defaults to "none" -# - if not set or set to "none", can explicitly enable using @Action(command=CommandReification.ENABLED) -# - if set to "all", can explicitly disable using @Action(command=CommandReification.DISABLED) -# -#isis.services.command.actions=all|none|ignoreQueryOnly - - - - - -################################################################################ -# -# Policies -# -################################################################################# - -# -# Whether editing of object properties is allowed; if not set, defaults to "true" -# - if not set or set to "true", can explicitly disable using @DomainObject(editing=Editing.DISABLED) -# - if set to "false", can explicitly enable using @DomainObject(editing=Editing.ENABLED) -# -#isis.objects.editing=true|false - - - - - -################################################################################ -# -# i18n -# -################################################################################# - -# -# force read translations, even if running in prototype mode -# -#isis.services.translation.po.mode=read - - - - - -################################################################################ -# -# Viewer defaults -# -################################################################################# - -# -# Specify viewer defaults -# -#isis.viewers.paged.standalone=30 -#isis.viewers.paged.parented=10 - - -#isis.viewers.propertyLayout.labelPosition=LEFT -#isis.viewers.parameterLayout.labelPosition=LEFT diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/persistor.properties b/naked-objects/webapp/src/main/webapp/WEB-INF/persistor.properties deleted file mode 100644 index dbc0102eb..000000000 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/persistor.properties +++ /dev/null @@ -1,136 +0,0 @@ -# -# This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). -# -# The MIT License -# Copyright © 2014-2022 Ilkka Seppälä -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# - - - -################################################################################# -# -# Persistor -# -################################################################################# - - - -# generally speaking this should not be enabled -isis.persistor.disableConcurrencyChecking=false - - - - -################################################################################# -# -# JDBC configuration -# -################################################################################# - -# -# configuration file holding the JDO objectstore's JDBC configuration -# (this is a bit of a hack... just exploiting fact that Isis also loads this file) -# - - -# -# JDBC connection details -# (also update the pom.xml to reference the appropriate JDBC driver) -# - -# -# HSQLDB in-memory -# -isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.hsqldb.jdbcDriver -isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:hsqldb:mem:test -isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa -isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword= - -# -# HSQLDB in-memory (using log4jdbc-remix) -# -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:hsqldb:mem:test -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword= - - - -# -# HSQLDB to file -# -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.hsqldb.jdbcDriver -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:hsqldb:file:/tmp/isis-simple-app/hsql-db;hsqldb.write_delay=false;shutdown=true -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword= - -# -# HSQLDB to file (using log4jdbc-remix) -# -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:hsqldb:file:/tmp/isis-simple-app/hsql-db;hsqldb.write_delay=false;shutdown=true -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword= - - - -# -# PostgreSQL Server -# -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.postgresql.Driver -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:postgresql://localhost:5432/isis -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=isis -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=isis - -# -# PostgreSQL Server (using log4jdbc-remix) -# -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:postgresql://localhost:5432/isis -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=isis -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=isis - - - -# -# MS SQL Server -# -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=com.microsoft.sqlserver.jdbc.SQLServerDriver -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:sqlserver://127.0.0.1:1433;instance=.;databaseName=simple -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=p4ssword - -# -# MS SQL Server (using log4jdbc-remix) -# -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:sqlserver://127.0.0.1:1433;instance=SQLEXPRESS;databaseName=jdo -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=jdo -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=jdopass - - - -# -# neo4j -# (experimental; run with -P neo4j profile in webapp project) -# -#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=neo4j:neo4j_DB - diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties b/naked-objects/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties deleted file mode 100644 index 11a54f59a..000000000 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties +++ /dev/null @@ -1,101 +0,0 @@ -# -# This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). -# -# The MIT License -# Copyright © 2014-2022 Ilkka Seppälä -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# - -# -# configuration file for the JDO/DataNucleus objectstore -# - -# identifies @PersistenceCapable entities to be eagerly registered -# if move class to other package (eg com.mycompany.myapp.dom) then update -isis.persistor.datanucleus.RegisterEntities.packagePrefix=domainapp.dom.modules - -# -# hook to perform additional initialization when JDO class metadata is loaded -# default implementation will attempt to run 'create schema' for the specified schema. -# -#isis.persistor.datanucleus.classMetadataLoadedListener=org.apache.isis.objectstore.jdo.datanucleus.CreateSchemaFromClassMetadata - - -# whether to persist the event data as a "clob" or as a "zipped" byte[] -# default is "zipped" -#isis.persistor.datanucleus.PublishingService.serializedForm=zipped - - -##################################################################### -# -# DataNucleus' configuration -# -# The 'isis.persistor.datanucleus.impl' prefix is stripped off, -# remainder is passed through to DataNucleus -# -##################################################################### - -isis.persistor.datanucleus.impl.datanucleus.schema.autoCreateAll=true -isis.persistor.datanucleus.impl.datanucleus.schema.validateTables=true -isis.persistor.datanucleus.impl.datanucleus.schema.validateConstraints=true - - -# -# Require explicit persistence (since entities are Comparable and using ObjectContracts#compareTo). -# see http://www.datanucleus.org/products/accessplatform_3_0/jdo/transaction_types.html -# -isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false - - -# -# How column names are identified -# (http://www.datanucleus.org/products/datanucleus/jdo/orm/datastore_identifiers.html) -# -isis.persistor.datanucleus.impl.datanucleus.identifier.case=MixedCase - -# -# L2 cache -# off except if explicitly marked as cacheable -# http://www.datanucleus.org/products/datanucleus/jdo/cache.html -# -isis.persistor.datanucleus.impl.datanucleus.cache.level2.type=none -isis.persistor.datanucleus.impl.datanucleus.cache.level2.mode=ENABLE_SELECTIVE - - - -# -# uncomment to use JNDI rather than direct JDBC -# -#isis.persistor.datanucleus.impl.datanucleus.ConnectionFactoryName=java:comp/env/jdbc/quickstart - -# -# uncomment to use JTA resource -# -#isis.persistor.datanucleus.impl.datanucleus.ConnectionFactory2Name=java:comp/env/jdbc/quickstart-nontx -#isis.persistor.datanucleus.impl.javax.jdo.option.TransactionType=JTA - - - -# -# -# JDBC connection details -# ... are in persistor.properties -# -# diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/shiro.ini b/naked-objects/webapp/src/main/webapp/WEB-INF/shiro.ini deleted file mode 100644 index 971ae697f..000000000 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/shiro.ini +++ /dev/null @@ -1,93 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -[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 = *:ToDoItemsJdo:*:*,\ - *:ToDoItem:*:*; \ - self-install_role = *:ToDoItemsFixturesService:install:* ; \ - 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 = *:SimpleObjects:*:*,\ - *:SimpleObject:*:* -self-install_role = *:DomainAppFixtureService:*:* -admin_role = * diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/translations-en.po b/naked-objects/webapp/src/main/webapp/WEB-INF/translations-en.po deleted file mode 100644 index 47b82d11e..000000000 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/translations-en.po +++ /dev/null @@ -1,213 +0,0 @@ -############################################################################## -# -# .pot file -# -# Translate this file to each required language and place in WEB-INF, eg: -# -# /WEB-INF/translations-en_US.po -# /WEB-INF/translations-en.po -# /WEB-INF/translations-fr_FR.po -# /WEB-INF/translations-fr.po -# /WEB-INF/translations.po -# -# If the app uses TranslatableString (eg for internationalized validation -# messages), or if the app calls the TranslationService directly, then ensure -# that all text to be translated has been captured by running a full -# integration test suite that exercises all relevant behaviour -# -############################################################################## - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String) -msgid ".pot file name" -msgstr ".pot file name" - - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache() -msgid "Clear translation cache" -msgstr "Clear translation cache" - - -#: domainapp.dom.modules.simple.SimpleObjects#create() -msgid "Create" -msgstr "Create" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable -msgid "Discoverable" -msgstr "Discoverable" - - -#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS -msgid "Domain Objects" -msgstr "Domain Objects" - - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations() -msgid "Download Translations" -msgstr "Download Translations" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName() -msgid "Exclamation mark is not allowed" -msgstr "Exclamation mark is not allowed" - - -#: domainapp.dom.modules.simple.SimpleObjects#findByName() -msgid "Find By Name" -msgstr "Find By Name" - - -#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName -msgid "Fixture script" -msgstr "Fixture script" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName -msgid "Friendly Name" -msgstr "Friendly Name" - - -#: domainapp.dom.modules.simple.SimpleObject -msgid "General" -msgstr "General" - - -#: domainapp.dom.app.homepage.HomePageService#homePage() -msgid "Home Page" -msgstr "Home Page" - - -#: domainapp.dom.modules.simple.SimpleObjects#listAll() -msgid "List All" -msgstr "List All" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#localName -msgid "Local Name" -msgstr "Local Name" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#lookup() -#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup() -msgid "Lookup" -msgstr "Lookup" - - -#: domainapp.dom.modules.simple.SimpleObject#name -#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String) -#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String) -msgid "Name" -msgstr "Name" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String) -msgid "New name" -msgstr "New name" - - -#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object() -msgid "Object" -msgstr "Object" - - -#: domainapp.dom.modules.simple.SimpleObject#title() -msgid "Object: {name}" -msgstr "Object: {name}" - - -#: domainapp.dom.app.homepage.HomePageViewModel#objects -msgid "Objects" -msgstr "Objects" - - -#: org.apache.isis.applib.fixtures.FixtureType#OTHER -msgid "Other" -msgstr "Other" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -msgid "Parameters" -msgstr "Parameters" - - -#: domainapp.fixture.DomainAppFixturesService -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu -msgid "Prototyping" -msgstr "Prototyping" - - -#: domainapp.fixture.DomainAppFixturesService#recreateObjectsAndReturnFirst() -msgid "Recreate Objects And Return First" -msgstr "Recreate Objects And Return First" - - -#: org.apache.isis.applib.fixturescripts.FixtureResult#object -msgid "Result" -msgstr "Result" - - -#: org.apache.isis.applib.fixturescripts.FixtureResult#className -msgid "Result class" -msgstr "Result class" - - -#: org.apache.isis.applib.fixturescripts.FixtureResult#key -msgid "Result key" -msgstr "Result key" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript() -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript() -msgid "Run Fixture Script" -msgstr "Run Fixture Script" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript -msgid "Script" -msgstr "Script" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(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 "Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)" - - -#: domainapp.dom.modules.simple.SimpleObjects#title() -msgid "Simple Objects" -msgstr "Simple Objects" - - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations() -msgid "Switch To Reading Translations" -msgstr "Switch To Reading Translations" - - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations() -msgid "Switch To Writing Translations" -msgstr "Switch To Writing Translations" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#type -msgid "Type" -msgstr "Type" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName() -msgid "Update Name" -msgstr "Update Name" - - -#: domainapp.dom.modules.simple.SimpleObject -msgid "name" -msgstr "" - - - - - -############################################################################## -# end of .pot file -############################################################################## - diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/translations-es.po b/naked-objects/webapp/src/main/webapp/WEB-INF/translations-es.po deleted file mode 100644 index 8b4c2d7bd..000000000 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/translations-es.po +++ /dev/null @@ -1,208 +0,0 @@ -############################################################################## -# -# .pot file -# -# Translate this file to each required language and place in WEB-INF, eg: -# -# /WEB-INF/translations-en_US.po -# /WEB-INF/translations-en.po -# /WEB-INF/translations-fr_FR.po -# /WEB-INF/translations-fr.po -# /WEB-INF/translations.po -# -# If the app uses TranslatableString (eg for internationalized validation -# messages), or if the app calls the TranslationService directly, then ensure -# that all text to be translated has been captured by running a full -# integration test suite that exercises all relevant behaviour -# -############################################################################## - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String) -msgid ".pot file name" -msgstr "fichero .pot" - - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache() -msgid "Clear translation cache" -msgstr "Limpiar la caché de traducciones" - - -#: domainapp.dom.modules.simple.SimpleObjects#create() -msgid "Create" -msgstr "Crear" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable -msgid "Discoverable" -msgstr "Descubrible" - - -#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS -msgid "Domain Objects" -msgstr "Domain Objects" - - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations() -msgid "Download Translations" -msgstr "Descargar traducciones" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName() -msgid "Exclamation mark is not allowed" -msgstr "No se admite el signo de exclamación" - - -#: domainapp.dom.modules.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" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName -msgid "Friendly Name" -msgstr "Nombre común" - - -#: domainapp.dom.app.homepage.HomePageService#homePage() -msgid "Home Page" -msgstr "Página de Inicio" - - -#: domainapp.dom.modules.simple.SimpleObjects#listAll() -msgid "List All" -msgstr "Listar Todos" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#localName -msgid "Local Name" -msgstr "Nombre Local" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#lookup() -#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup() -msgid "Lookup" -msgstr "Buscar" - - -#: domainapp.dom.modules.simple.SimpleObject#name -#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String) -#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String) -msgid "Name" -msgstr "Nombre" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String) -msgid "New name" -msgstr "Nuevo nombre" - - -#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object() -msgid "Object" -msgstr "Objeto" - - -#: domainapp.dom.modules.simple.SimpleObject#title() -msgid "Object: {name}" -msgstr "Objeto: {name}" - - -#: domainapp.dom.app.homepage.HomePageViewModel#objects -msgid "Objects" -msgstr "Objetos" - - -#: org.apache.isis.applib.fixtures.FixtureType#OTHER -msgid "Other" -msgstr "Other" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -msgid "Parameters" -msgstr "Parámetros" - - -#: domainapp.fixture.DomainAppFixturesService -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu -msgid "Prototyping" -msgstr "Prototipo" - - -#: domainapp.fixture.DomainAppFixturesService#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#className -msgid "Result class" -msgstr "Clase del resultado" - - -#: org.apache.isis.applib.fixturescripts.FixtureResult#key -msgid "Result key" -msgstr "Clave del Resultado" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript() -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript() -msgid "Run Fixture Script" -msgstr "Ejecutar Script de Instalación" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript -msgid "Script" -msgstr "Script" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(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.modules.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" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#type -msgid "Type" -msgstr "Tipo" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName() -msgid "Update Name" -msgstr "Nombre de la Actualización" - - -#: domainapp.dom.modules.simple.SimpleObject -msgid "name" -msgstr "" - - - - - -############################################################################## -# end of .pot file -############################################################################## - diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/translations-nl.po b/naked-objects/webapp/src/main/webapp/WEB-INF/translations-nl.po deleted file mode 100644 index 4e35a228f..000000000 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/translations-nl.po +++ /dev/null @@ -1,208 +0,0 @@ -############################################################################## -# -# .pot file -# -# Translate this file to each required language and place in WEB-INF, eg: -# -# /WEB-INF/translations-en_US.po -# /WEB-INF/translations-en.po -# /WEB-INF/translations-fr_FR.po -# /WEB-INF/translations-fr.po -# /WEB-INF/translations.po -# -# If the app uses TranslatableString (eg for internationalized validation -# messages), or if the app calls the TranslationService directly, then ensure -# that all text to be translated has been captured by running a full -# integration test suite that exercises all relevant behaviour -# -############################################################################## - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String) -msgid ".pot file name" -msgstr "" - - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache() -msgid "Clear translation cache" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObjects#create() -msgid "Create" -msgstr "Creëren" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable -msgid "Discoverable" -msgstr "Discoverable" - - -#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS -msgid "Domain Objects" -msgstr "Domain Objects" - - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations() -msgid "Download Translations" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName() -msgid "Exclamation mark is not allowed" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObjects#findByName() -msgid "Find By Name" -msgstr "Zoek op Naam" - - -#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName -msgid "Fixture script" -msgstr "" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName -msgid "Friendly Name" -msgstr "" - - -#: domainapp.dom.app.homepage.HomePageService#homePage() -msgid "Home Page" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObjects#listAll() -msgid "List All" -msgstr "Lijst Alle" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#localName -msgid "Local Name" -msgstr "" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#lookup() -#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup() -msgid "Lookup" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObject#name -#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String) -#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String) -msgid "Name" -msgstr "Naam" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String) -msgid "New name" -msgstr "Nieuwe naam" - - -#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object() -msgid "Object" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObject#title() -msgid "Object: {name}" -msgstr "" - - -#: domainapp.dom.app.homepage.HomePageViewModel#objects -msgid "Objects" -msgstr "Objects" - - -#: org.apache.isis.applib.fixtures.FixtureType#OTHER -msgid "Other" -msgstr "Other" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -msgid "Parameters" -msgstr "" - - -#: domainapp.fixture.DomainAppFixturesService -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu -msgid "Prototyping" -msgstr "" - - -#: domainapp.fixture.DomainAppFixturesService#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 "" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript() -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript() -msgid "Run Fixture Script" -msgstr "" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript -msgid "Script" -msgstr "" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(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.modules.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 "" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#type -msgid "Type" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName() -msgid "Update Name" -msgstr "Updaten Naam" - - -#: domainapp.dom.modules.simple.SimpleObject -msgid "name" -msgstr "" - - - - - -############################################################################## -# end of .pot file -############################################################################## - diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/translations.po b/naked-objects/webapp/src/main/webapp/WEB-INF/translations.po deleted file mode 100644 index 3644a2880..000000000 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/translations.po +++ /dev/null @@ -1,213 +0,0 @@ -############################################################################## -# -# .pot file -# -# Translate this file to each required language and place in WEB-INF, eg: -# -# /WEB-INF/translations-en_US.po -# /WEB-INF/translations-en.po -# /WEB-INF/translations-fr_FR.po -# /WEB-INF/translations-fr.po -# /WEB-INF/translations.po -# -# If the app uses TranslatableString (eg for internationalized validation -# messages), or if the app calls the TranslationService directly, then ensure -# that all text to be translated has been captured by running a full -# integration test suite that exercises all relevant behaviour -# -############################################################################## - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String) -msgid ".pot file name" -msgstr "" - - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache() -msgid "Clear translation cache" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObjects#create() -msgid "Create" -msgstr "" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#discoverable -msgid "Discoverable" -msgstr "" - - -#: org.apache.isis.applib.fixtures.FixtureType#DOMAIN_OBJECTS -msgid "Domain Objects" -msgstr "" - - -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations() -msgid "Download Translations" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName() -msgid "Exclamation mark is not allowed" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObjects#findByName() -msgid "Find By Name" -msgstr "" - - -#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName -msgid "Fixture script" -msgstr "" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName -msgid "Friendly Name" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObject -msgid "General" -msgstr "Common" - - -#: domainapp.dom.app.homepage.HomePageService#homePage() -msgid "Home Page" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObjects#listAll() -msgid "List All" -msgstr "" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#localName -msgid "Local Name" -msgstr "" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#lookup() -#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup() -msgid "Lookup" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObject#name -#: domainapp.dom.modules.simple.SimpleObjects#create(java.lang.String) -#: domainapp.dom.modules.simple.SimpleObjects#findByName(java.lang.String) -msgid "Name" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName(java.lang.String) -msgid "New name" -msgstr "" - - -#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object() -msgid "Object" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObject#title() -msgid "Object: {name}" -msgstr "" - - -#: domainapp.dom.app.homepage.HomePageViewModel#objects -msgid "Objects" -msgstr "" - - -#: org.apache.isis.applib.fixtures.FixtureType#OTHER -msgid "Other" -msgstr "" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -msgid "Parameters" -msgstr "" - - -#: domainapp.fixture.DomainAppFixturesService -#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu -msgid "Prototyping" -msgstr "" - - -#: domainapp.fixture.DomainAppFixturesService#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 "" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript() -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript() -msgid "Run Fixture Script" -msgstr "" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript -msgid "Script" -msgstr "" - - -#: domainapp.fixture.DomainAppFixturesService#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String) -#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(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.modules.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 "" - - -#: org.apache.isis.applib.fixturescripts.FixtureScript#type -msgid "Type" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObject#updateName() -msgid "Update Name" -msgstr "" - - -#: domainapp.dom.modules.simple.SimpleObject -msgid "name" -msgstr "" - - - - - -############################################################################## -# end of .pot file -############################################################################## - diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties b/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties deleted file mode 100644 index 0b243424a..000000000 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties +++ /dev/null @@ -1,74 +0,0 @@ -# -# This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). -# -# The MIT License -# Copyright © 2014-2022 Ilkka Seppälä -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# - -# -# configuration file for the Restful Objects viewer -# - -# the baseUrl for hrefs in the events generated by the RO EventSerializer -isis.viewer.restfulobjects.RestfulObjectsSpecEventSerializer.baseUrl=http://localhost:8080/restful/ - -# renders param details in the (incorrect) form that they were for GSOC2013 viewers -# isis.viewer.restfulobjects.gsoc2013.legacyParamDetails=true - -# whether to honor UI hints, in particular Render(EAGERLY). Defaults to false. -#isis.viewer.restfulobjects.honorUiHints=false - - - -############################################################################### -# Non-standard configuration settings. -# -# If enabled of the following are enabled then the viewer is deviating from the -# RO spec standard; compatibility may be compromised with RO clients. -############################################################################### - -# whether to show only object properties for object members -# (on the object representation only) -# Takes precedence over the other 'suppress' below. -#isis.viewer.restfulobjects.objectPropertyValuesOnly=true - -# whether to suppress "describedby" links. Defaults to false. -#isis.viewer.restfulobjects.suppressDescribedByLinks=true - -# whether to suppress "update" links. Defaults to false. -#isis.viewer.restfulobjects.suppressUpdateLink=true - -# whether to suppress "id" json-prop for object members. Defaults to false. -#isis.viewer.restfulobjects.suppressMemberId=true - -# whether to suppress "links" json-prop for object members -# (on the object representation only). Defaults to false. -#isis.viewer.restfulobjects.suppressMemberLinks=true - -# whether to suppress "extensions" json-prop for object members -# (on the object representation only). Defaults to false. -#isis.viewer.restfulobjects.suppressMemberExtensions=true - -# whether to suppress "disabledReason" json-prop for object members -# (on the object representation only). Defaults to false. -#isis.viewer.restfulobjects.suppressMemberDisabledReason=true - -############################################################################### diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties b/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties deleted file mode 100644 index 27a80cca6..000000000 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties +++ /dev/null @@ -1,99 +0,0 @@ -# -# This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). -# -# The MIT License -# Copyright © 2014-2022 Ilkka Seppälä -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# - -# -# configuration file for the Wicket viewer -# - -# -# The maximum length of titles to display in standalone or parented tables. -# Titles longer than this length will be truncated with trailing ellipses (...) -# -# For example, if set to 12, the title -# "Buy milk on 15-Feb-13" will be truncated to "Buy milk ..." -# -# If set to 0, then only the icon will be shown. -# -isis.viewer.wicket.maxTitleLengthInStandaloneTables=0 -isis.viewer.wicket.maxTitleLengthInParentedTables=0 - - -#isis.viewer.wicket.datePattern=dd-MM-yyyy -#isis.viewer.wicket.dateTimePattern=dd-MM-yyyy HH:mm -#isis.viewer.wicket.datePickerPattern=DD-MM-YYYY - -#isis.viewer.wicket.datePattern=dd/MM/yy -#isis.viewer.wicket.dateTimePattern=dd/MM/yy HH:mm -#isis.viewer.wicket.datePickerPattern=DD/MM/YY - - -# -# whether to strip wicket tags from markup (default is true, as they may break some CSS rules) -# -#isis.viewer.wicket.stripWicketTags=false - - -# -# whether to suppress the 'rememberMe' checkbox on the login page (default is false) -# -#isis.viewer.wicket.suppressRememberMe=false - -# -# if user attempts to access a protected URL before signing in, then as a convenience the viewer will continue -# through to that destination after successful login. If you consider this to be a security risk then this flag -# disables that behaviour (default is false). -# -#isis.viewer.wicket.clearOriginalDestination=true - - -# -# whether to show action dialogs on their own page rather than as a modal dialog (default is false) -# -#isis.viewer.wicket.disableModalDialogs=false - - -# -# the maximum number of pages to list in bookmark (default is 15) -# -#isis.viewer.wicket.bookmarkedPages.maxSize=15 - - -# -# whether to show the bootstrap theme chooser (defaults false) -# -#isis.viewer.wicket.themes.showChooser=false -isis.viewer.wicket.themes.showChooser=true - -# -# comma-separated list of themes to choose from (default is to show all themes from bootswatch.com). -# -#isis.viewer.wicket.themes.enabled=bootstrap-theme,Cosmo,Flatly,Darkly,Sandstone,United - - - -# -# whether to automatically select dependent choice when the choice it depends upon changes. -# -#isis.viewer.wicket.disableDependentChoiceAutoSelection=false \ No newline at end of file diff --git a/naked-objects/webapp/src/main/webapp/WEB-INF/web.xml b/naked-objects/webapp/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index c5fd450a6..000000000 --- a/naked-objects/webapp/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,278 +0,0 @@ - - - - Simple app - - about/index.html - - - - org.apache.shiro.web.env.EnvironmentLoaderListener - - - ShiroFilter - org.apache.shiro.web.servlet.ShiroFilter - - - ShiroFilter - /* - - - - - - isis.viewers - wicket,restfulobjects - - - - IsisLogOnExceptionFilter - org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter - - - IsisLogOnExceptionFilter - /wicket/* - - - IsisLogOnExceptionFilter - /restful/* - - - - ResourceCachingFilter - org.apache.isis.core.webapp.content.ResourceCachingFilter - - CacheTime - 86400 - - - - ResourceCachingFilter - *.js - - - ResourceCachingFilter - *.css - - - ResourceCachingFilter - *.png - - - ResourceCachingFilter - *.jpg - - - ResourceCachingFilter - *.gif - - - ResourceCachingFilter - *.html - - - ResourceCachingFilter - *.swf - - - Resource - org.apache.isis.core.webapp.content.ResourceServlet - - - Resource - *.css - - - Resource - *.png - - - Resource - *.jpg - - - Resource - *.gif - - - Resource - *.js - - - Resource - *.html - - - Resource - *.swf - - - - WicketFilter - org.apache.wicket.protocol.http.WicketFilter - - applicationClassName - domainapp.webapp.SimpleApplication - - - - WicketFilter - /wicket/* - - - configuration - - development - - - - - - org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap - - - - javax.ws.rs.Application - org.apache.isis.viewer.restfulobjects.server.RestfulObjectsApplication - - - resteasy.servlet.mapping.prefix - /restful/ - - - - IsisSessionFilterForRestfulObjects - org.apache.isis.core.webapp.IsisSessionFilter - - - authenticationSessionStrategy - org.apache.isis.viewer.restfulobjects.server.authentication.AuthenticationSessionStrategyBasicAuth - - - - whenNoSession - basicAuthChallenge - - - - - IsisSessionFilterForRestfulObjects - RestfulObjectsRestEasyDispatcher - - - IsisTransactionFilterForRestfulObjects - org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects - - - IsisTransactionFilterForRestfulObjects - RestfulObjectsRestEasyDispatcher - - - RestfulObjectsRestEasyDispatcher - org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher - - - RestfulObjectsRestEasyDispatcher - /restful/* - - - - - - diff --git a/naked-objects/webapp/src/main/webapp/about/images/isis-logo.png b/naked-objects/webapp/src/main/webapp/about/images/isis-logo.png deleted file mode 100644 index 5284fe73242502a9dbefd1f79af51ba36c773ecf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14160 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%0AwvS3t7R5SVwRK)Za~97RViV; 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 - - - - - - Apache Isis™ SimpleApp - - - - -
- Isis Logo - -

- This app has been generated using Apache Isis' - SimpleApp archetype, - to create a purposefully minimal application that nevertheless includes fixture data, integration tests and BDD specs. -
-
- The app itself consists of a single domain class, SimpleObject, - along with an equally simple (factory/repository) domain service, SimpleObjects. -

- -

To access the app:

-
    -
  • -

    - wicket/ -

    -

    - provides accesses to a generic UI for end-users, - Isis' Wicket Viewer. - As its name suggests, this viewer is built on top of Apache Wicket™. -

    -
  • -
  • -

    - - restful/ - -

    -

    - provides access to a RESTful API conformant with the - Restful Objects spec. This is part of Apache Isis Core. - The implementation technology is JBoss RestEasy. -

    -
  • -
- -

- The default user/password is sven/pass (as configured in the - shiro.ini file). -

- -
- - diff --git a/naked-objects/webapp/src/main/webapp/css/application.css b/naked-objects/webapp/src/main/webapp/css/application.css deleted file mode 100644 index 40cff4fd0..000000000 --- a/naked-objects/webapp/src/main/webapp/css/application.css +++ /dev/null @@ -1,24 +0,0 @@ -/** - * This project is licensed under the MIT license. Module model-view-viewmodel is using ZK framework licensed under LGPL (see lgpl-3.0.txt). - * - * The MIT License - * Copyright © 2014-2022 Ilkka Seppälä - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ diff --git a/naked-objects/webapp/src/main/webapp/images/spinning-icon.gif b/naked-objects/webapp/src/main/webapp/images/spinning-icon.gif deleted file mode 100644 index 75e3b1e5baa32a169f85a25f2031f3058b834e09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5266 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 object-pool dependency-injection - naked-objects front-controller repository async-method-invocation