You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2014/11/14 14:46:26 UTC
[2/2] isis git commit: ISIS-928: recreating todoapp archetype
ISIS-928: recreating todoapp archetype
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/853f6213
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/853f6213
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/853f6213
Branch: refs/heads/master
Commit: 853f62137a6d7c15b0a8e54b7094b22721c06cd6
Parents: 2fa4bcf
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Nov 14 13:10:32 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Nov 14 13:10:32 2014 +0000
----------------------------------------------------------------------
example/archetype/todoapp/pom.xml | 2 +-
.../dom/src/main/java/app/ToDoAppDashboard.png | Bin 684 -> 834 bytes
.../dom/src/main/java/app/ToDoItemAnalysis.java | 5 +-
.../java/app/ToDoItemsByCategoryViewModel.png | Bin 0 -> 684 bytes
.../java/app/ToDoItemsByDateRangeViewModel.png | Bin 0 -> 613 bytes
.../dom/src/main/java/dom/todo/ToDoItem.java | 26 +++++++-
.../src/main/java/dom/todo/ToDoItem.layout.json | 57 +++++++++++-----
.../java/dom/todo/ToDoItemContributions.java | 4 +-
.../java/dom/todo/ToDoItemSubscriptions.java | 66 +++++++++++++++----
.../dom/src/main/java/dom/todo/ToDoItems.java | 5 ++
.../fixture/todo/ToDoItemsFixturesService.java | 14 ++--
.../archetype-resources/integtests/pom.xml | 2 +-
.../integration/tests/ToDoItemIntegTest.java | 28 ++++----
.../main/resources/archetype-resources/pom.xml | 4 +-
.../archetype-resources/webapp/pom.xml | 4 --
.../src/main/java/webapp/ToDoApplication.java | 19 +++++-
.../prototyping/ExternalLinksService.java | 3 +-
.../src/main/webapp/WEB-INF/isis.properties | 2 +
.../WEB-INF/viewer_restfulobjects.properties | 42 +++++++++++-
.../webapp/WEB-INF/viewer_wicket.properties | 45 +++++++++----
.../projects/basic/archetype.properties | 2 +-
21 files changed, 254 insertions(+), 76 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/pom.xml b/example/archetype/todoapp/pom.xml
index 1922cdb..a1ce46a 100644
--- a/example/archetype/todoapp/pom.xml
+++ b/example/archetype/todoapp/pom.xml
@@ -17,7 +17,7 @@
specific language governing permissions and limitations
under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.isis.archetype</groupId>
<artifactId>todoapp-archetype</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.png
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.png b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.png
index c22ab2b..fe6e6a1 100644
Binary files a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.png and b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.png differ
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java
index 5f7eeef..fdf23e3 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java
@@ -47,7 +47,9 @@ public class ToDoItemAnalysis {
}
//endregion
+
//region > byCategory (action)
+ @CssClassFa("fa fa-pie-chart")
@Named("By Category")
@Bookmarkable
@ActionSemantics(Of.SAFE)
@@ -77,7 +79,8 @@ public class ToDoItemAnalysis {
Later,
Unknown,
}
-
+
+ @CssClassFa("fa fa-calendar")
@Named("By Date Range")
@Bookmarkable
@ActionSemantics(Of.SAFE)
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.png
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.png b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.png
new file mode 100644
index 0000000..c22ab2b
Binary files /dev/null and b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.png differ
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.png
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.png b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.png
new file mode 100644
index 0000000..034a1f9
Binary files /dev/null and b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.png differ
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
index c32b3a8..74a84f1 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
@@ -137,7 +137,7 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
@javax.jdo.annotations.Column(allowsNull="false", length=100)
@PropertyInteraction()
- @RegEx(validation = "${symbol_escape}${symbol_escape}w[@&:${symbol_escape}${symbol_escape}-${symbol_escape}${symbol_escape},${symbol_escape}${symbol_escape}.${symbol_escape}${symbol_escape}+ ${symbol_escape}${symbol_escape}w]*")
+ @RegEx(validation = "${symbol_escape}${symbol_escape}w[@&:${symbol_escape}${symbol_escape}-${symbol_escape}${symbol_escape},${symbol_escape}${symbol_escape}.${symbol_escape}${symbol_escape}+ ${symbol_escape}${symbol_escape}w]*")
public String getDescription() {
return description;
}
@@ -600,7 +600,7 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
container.informUser("Deleted " + container.titleOf(this));
// invalid to return 'this' (cannot render a deleted object)
- return toDoItems.notYetComplete();
+ return toDoItems.notYetComplete();
}
//endregion
@@ -692,6 +692,25 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
//region > object-level validation
/**
+ * Prevent user from viewing another user's data.
+ */
+ public boolean hidden() {
+ // uncomment to enable. As things stand, the disabled() method below instead will make object "read-only".
+ //return !Objects.equal(getOwnedBy(), container.getUser().getName());
+ return false;
+ }
+
+ /**
+ * Prevent user from modifying any other user's data.
+ */
+ public String disabled(Identifier.Type type){
+ final UserMemento currentUser = container.getUser();
+ final String currentUserName = currentUser.getName();
+ if(Objects.equal(getOwnedBy(), currentUserName)) { return null; }
+ return "This object is owned by '" + getOwnedBy() + "' and cannot be modified by you";
+ }
+
+ /**
* In a real app, if this were actually a rule, then we'd expect that
* invoking the {@link ${symbol_pound}completed() done} action would clear the {@link ${symbol_pound}getDueBy() dueBy}
* property (rather than require the user to have to clear manually).
@@ -702,8 +721,11 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
}
return null;
}
+
+
//endregion
+
//region > programmatic helpers
@Programmatic // excluded from the framework's metamodel
public boolean isDue() {
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.layout.json
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.layout.json b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.layout.json
index f15424d..4ad0a90 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.layout.json
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.layout.json
@@ -22,18 +22,26 @@
"General": {
"members": {
"description": {
- "typicalLength": { "value": 50 }
+ "typicalLength": { "value": 50 },
+ "labelAt": { "value": "TOP" }
},
"category": {
+ "named": { "value": "Category/subcategory" },
+ "labelAt": { "value": "TOP" }
},
"subcategory": {
+ "labelAt": { "value": "NONE" },
"actions": {
"updateCategory": {
"named": {
"value": "Update"
}
},
- "analyseCategory": {}
+ "analyseCategory": {
+ "cssClassFa": {
+ "value": "fa fa-pie-chart"
+ }
+ }
}
},
"ownedBy": {
@@ -44,12 +52,16 @@
"completed": {
"named": { "value": "Done" },
"describedAs": {
- "value": "Mark this todo item as having been completed"
+ "value": "Update this todo item as complete"
},
- "cssClass": { "value": "x-highlight" }
+ "cssClassFa": { "value": "fa fa-thumbs-up" }
},
"notYetCompleted": {
- "named": { "value": "Not done" }
+ "named": { "value": "Not done" },
+ "describedAs": {
+ "value": "Update this todo item as not yet complete"
+ },
+ "cssClassFa": { "value": "fa fa-thumbs-down" }
},
"scheduleExplicitly": {
},
@@ -84,8 +96,12 @@
"members": {
"relativePriority": {
"actions": {
- "previous": {},
- "next": {}
+ "previous": {
+ "cssClassFa": { "value": "fa fa-step-backward" }
+ },
+ "next": {
+ "cssClassFa": { "value": "fa fa-step-forward" }
+ }
}
},
"dueBy": {
@@ -98,9 +114,8 @@
"cost": {
"actions": {
"updateCost":{
- "named": {
- "value": "Update"
- }
+ "named": { "value": "Update" },
+ "cssClassFa": { "value": "fa fa-dollar" }
}
}
},
@@ -110,7 +125,8 @@
},
"hidden": {
"where": "ALL_TABLES"
- }
+ },
+ "labelAt": { "value": "TOP" }
},
"attachment": {
"hidden": {
@@ -135,9 +151,12 @@
"dependencies": {
"disabled": {},
"actions": {
- "add":{},
+ "add":{
+ "cssClassFa": { "value": "fa fa-plus-square" }
+ },
"remove": {
- "cssClass": { "value": "x-caution" }
+ "cssClass": { "value": "x-caution btn-danger" },
+ "cssClassFa": { "value": "fa fa-minus-square" }
}
},
"paged": {
@@ -162,15 +181,17 @@
"actions": {
"totalCost": {},
"delete": {
- "cssClass": { "value": "x-caution" }
+ "cssClass": { "value": "btn btn-danger" },
+ "cssClassFa": { "value": "fa fa-trash fa-lg" }
},
"duplicate": {
- "named": {
- "value": "Clone"
- },
+ "named": {
+ "value": "Clone"
+ },
"describedAs": {
"value": "Create a new todo item from this one"
- }
+ },
+ "cssClassFa": { "value": "fa fa-copy fa-lg" }
}
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemContributions.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemContributions.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemContributions.java
index 789796d..51ce968 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemContributions.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemContributions.java
@@ -118,7 +118,7 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
}
// //////////////////////////////////////
-
+
@DescribedAs("The previous item not yet completed")
@NotInServiceMenu
@ActionSemantics(Of.SAFE)
@@ -164,7 +164,7 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
@NotContributed(As.ACTION)
public List<ToDoItem> similarTo(final ToDoItem toDoItem) {
final List<ToDoItem> similarToDoItems = allMatches(
- new QueryDefault<ToDoItem>(ToDoItem.class,
+ new QueryDefault<ToDoItem>(ToDoItem.class,
"findByOwnedByAndCategory",
"ownedBy", currentUserName(),
"category", toDoItem.getCategory()));
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
index 1230090..fe641f5 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
@@ -23,6 +23,8 @@ package dom.todo;
import java.util.EventObject;
import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
@@ -40,6 +42,16 @@ import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
import static com.google.common.collect.Lists.newArrayList;
+/**
+ * Subscribes to changes made to the {@link dom.todo.ToDoItem} entity.
+ *
+ * <p>
+ * (For demo purposes) the behaviour can be influenced using {@link ${symbol_pound}subscriberBehaviour(dom.todo.ToDoItemSubscriptions.Behaviour)}.
+ * In particular, the subscriber can be used to hide/disable/validate actions, or just to perform pre- or post-execute
+ * tasks. This also includes being set to throw an exception during the execution of the action (also in effect
+ * vetoing the change).
+ * </p>
+ */
@DomainService
public class ToDoItemSubscriptions {
@@ -47,6 +59,38 @@ public class ToDoItemSubscriptions {
private final static org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(ToDoItemSubscriptions.class);
//endregion
+ //region > postConstruct, preDestroy
+
+ /**
+ * Registers this service with the {@link org.apache.isis.applib.services.eventbus.EventBusService}.
+ *
+ * <p>
+ * Because this service is a singleton, this is called during initial bootstrap.
+ * </p>
+ */
+ @Programmatic
+ @PostConstruct
+ public void postConstruct() {
+ LOG.info("postConstruct: registering to event bus");
+ eventBusService.register(this);
+ }
+
+ /**
+ * Unregisters this service from the {@link org.apache.isis.applib.services.eventbus.EventBusService}.
+ *
+ * <p>
+ * Because this service is a singleton, this is only done when the system is shutdown.
+ * </p>
+ */
+ @Programmatic
+ @PreDestroy
+ public void preDestroy() {
+ LOG.info("preDestroy: unregistering from event bus");
+ eventBusService.unregister(this);
+ }
+ //endregion
+
+
//region > on(Event)...
public static enum Behaviour {
@@ -68,6 +112,10 @@ public class ToDoItemSubscriptions {
DependenciesCollectionInvalidateRemove,
SimilarToCollectionHide
}
+
+ /**
+ * The desired behaviour of this service.
+ */
private Behaviour behaviour = Behaviour.AnyExecuteAccept;
/**
@@ -76,13 +124,13 @@ public class ToDoItemSubscriptions {
@Prototype
@MemberOrder(name = "Prototyping", sequence = "80")
@Named("Set subscriber behaviour")
+ @NotContributed
@ActionSemantics(ActionSemantics.Of.IDEMPOTENT)
- public ToDoItem subscriberBehaviour(ToDoItem toDoItem, @Named("Behaviour") Behaviour behaviour) {
+ public void subscriberBehaviour(@Named("Behaviour") Behaviour behaviour) {
this.behaviour = behaviour;
container.informUser("Subscriber behaviour set to: " + behaviour);
- return toDoItem;
}
- public Behaviour default1SubscriberBehaviour() {
+ public Behaviour default0SubscriberBehaviour() {
return this.behaviour;
}
@@ -95,7 +143,7 @@ public class ToDoItemSubscriptions {
throw new RecoverableException("Rejecting event (recoverable exception thrown)");
}
if(behaviour == Behaviour.AnyExecuteVetoWithNonRecoverableException) {
- throw new NonRecoverableException("Rejecting event (recoverable exception thrown)");
+ throw new NonRecoverableException("Rejecting event (non-recoverable exception thrown)");
}
if(behaviour == Behaviour.AnyExecuteVetoWithOtherException) {
throw new RuntimeException("Throwing some other exception");
@@ -148,7 +196,7 @@ public class ToDoItemSubscriptions {
case VALIDATE:
if(getSubscriberBehaviour() == Behaviour.UpdateCostActionInvalidate &&
ev.getIdentifier().getMemberName().equals("updateCost")) {
- ev.disable("ToDoItemSubscriptions says: can't invoke updateCostaction with these args!");
+ ev.invalidate("ToDoItemSubscriptions says: can't invoke updateCost action with these args!");
}
break;
case EXECUTING:
@@ -304,7 +352,7 @@ public class ToDoItemSubscriptions {
@Programmatic
public void reset() {
receivedEvents.clear();
- subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteAccept);
+ subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteAccept);
}
//endregion
@@ -312,12 +360,8 @@ public class ToDoItemSubscriptions {
@javax.inject.Inject
private DomainObjectContainer container;
- @SuppressWarnings("unused")
+ @javax.inject.Inject
private EventBusService eventBusService;
- @Programmatic
- public final void injectEventBusService(EventBusService eventBusService) {
- eventBusService.register(this);
- }
//endregion
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
index 07d3c66..8ed6957 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
@@ -39,6 +39,7 @@ import org.apache.isis.applib.services.clock.ClockService;
public class ToDoItems {
//region > notYetComplete (action)
+ @CssClassFa("fa fa-thumbs-down")
@Bookmarkable
@ActionSemantics(Of.SAFE)
@MemberOrder(sequence = "10")
@@ -60,6 +61,7 @@ public class ToDoItems {
//endregion
//region > complete (action)
+ @CssClassFa("fa fa-thumbs-up")
@ActionSemantics(Of.SAFE)
@MemberOrder(sequence = "20")
public List<ToDoItem> complete() {
@@ -84,6 +86,7 @@ public class ToDoItems {
@Bookmarkable
@ActionSemantics(Of.SAFE)
@MemberOrder(sequence = "40")
+ @CssClassFa("fa fa-question")
public List<ToDoItem> categorized(
@Named("Category") final Category category,
@Named("Subcategory") final Subcategory subcategory,
@@ -117,6 +120,7 @@ public class ToDoItems {
//endregion
//region > newToDo (action)
+ @CssClassFa("fa fa-plus")
@MemberOrder(sequence = "5")
public ToDoItem newToDo(
final @RegEx(validation = "${symbol_escape}${symbol_escape}w[@&:${symbol_escape}${symbol_escape}-${symbol_escape}${symbol_escape},${symbol_escape}${symbol_escape}.${symbol_escape}${symbol_escape}+ ${symbol_escape}${symbol_escape}w]*") @Named("Description") String description,
@@ -148,6 +152,7 @@ public class ToDoItems {
//endregion
//region > allToDos (action)
+ @CssClassFa("fa fa-globe")
@Prototype
@ActionSemantics(Of.SAFE)
@MemberOrder(sequence = "50")
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
index dcaa956..0396bba 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
@@ -24,10 +24,7 @@ package fixture.todo;
import fixture.todo.scenarios.RecreateToDoItemsAndCompleteSeveralForCurrent;
import java.util.List;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.Prototype;
+import org.apache.isis.applib.annotation.*;
import org.apache.isis.applib.fixturescripts.FixtureResult;
import org.apache.isis.applib.fixturescripts.FixtureScript;
import org.apache.isis.applib.fixturescripts.FixtureScripts;
@@ -43,6 +40,12 @@ public class ToDoItemsFixturesService extends FixtureScripts {
super("fixture.todo");
}
+ @CssClassFa("fa fa-bolt")
+ @Override
+ public List<FixtureResult> runFixtureScript(FixtureScript fixtureScript, @Named("Parameters") @DescribedAs("Script-specific parameters (if any). The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)") @MultiLine(numberOfLines = 10) @Optional String parameters) {
+ return super.runFixtureScript(fixtureScript, parameters);
+ }
+
@Override
public FixtureScript default0RunFixtureScript() {
return findFixtureScriptFor(RecreateToDoItemsAndCompleteSeveralForCurrent.class);
@@ -61,8 +64,9 @@ public class ToDoItemsFixturesService extends FixtureScripts {
@Prototype
+ @CssClassFa("fa fa-list")
@MemberOrder(sequence="20")
- public Object recreateToDoItemsForCurrentAndReturnFirst() {
+ public Object recreateToDoItemsReturnFirst() {
final List<FixtureResult> run = findFixtureScriptFor(RecreateToDoItemsAndCompleteSeveralForCurrent.class).run(null);
return run.get(0).getObject();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/pom.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/pom.xml
index 1396994..1ec97ae 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/pom.xml
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/pom.xml
@@ -77,7 +77,7 @@
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
- <artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
+ <artifactId>isis-core-runtime</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java
index ccfd19c..90bb098 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java
@@ -236,7 +236,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberVetoesEventWithRecoverableException() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
// then
expectedExceptions.expect(RecoverableException.class);
@@ -249,7 +249,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
// then
expectedExceptions.expect(NonRecoverableException.class);
@@ -262,7 +262,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
// when
toDoItem.completed();
@@ -295,8 +295,12 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
scenarioExecution().replaceService(originalEventBusService, mockEventBusService);
scenarioExecution().closeSession();
scenarioExecution().openSession();
+
+ final List<ToDoItem> all = toDoItems.notYetComplete();
+ toDoItem = wrap(all.get(0));
}
+
@After
public void reinstateOriginalEventBusService() throws Exception {
scenarioExecution().replaceService(mockEventBusService, originalEventBusService);
@@ -535,7 +539,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberVetoesEventWithRecoverableException() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
// then
expectedExceptions.expect(RecoverableException.class);
@@ -548,7 +552,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
// then
expectedExceptions.expect(NonRecoverableException.class);
@@ -561,7 +565,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
// when
toDoItem.add(otherToDoItem);
@@ -633,7 +637,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberVetoesEventWithRecoverableException() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
// then
expectedExceptions.expect(RecoverableException.class);
@@ -646,7 +650,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
// then
expectedExceptions.expect(NonRecoverableException.class);
@@ -659,7 +663,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
// when
toDoItem.remove(otherToDoItem);
@@ -872,7 +876,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberVetoesEventWithRecoverableException() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
// then
expectedExceptions.expect(RecoverableException.class);
@@ -886,7 +890,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
// then
expectedExceptions.expect(NonRecoverableException.class);
@@ -900,7 +904,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
// given
- toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
+ toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
// when
toDoItem.setDescription("Buy bread and butter");
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/pom.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/pom.xml
index 97fd96f..0c91870 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/pom.xml
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/pom.xml
@@ -64,8 +64,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
- <source>1.6</source>
- <target>1.6</target>
+ <source>1.7</source>
+ <target>1.7</target>
</configuration>
<executions>
<execution>
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/pom.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/pom.xml
index c4bdfc4..406385b 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/pom.xml
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/pom.xml
@@ -156,10 +156,6 @@
<!-- other isis components -->
<dependency>
- <groupId>org.apache.isis.core</groupId>
- <artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
- </dependency>
- <dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-impl</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/ToDoApplication.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/ToDoApplication.java b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/ToDoApplication.java
index 459970c..299f3f9 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/ToDoApplication.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/ToDoApplication.java
@@ -21,6 +21,11 @@
*/
package webapp;
+import de.agilecoders.wicket.core.Bootstrap;
+import de.agilecoders.wicket.core.settings.IBootstrapSettings;
+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;
@@ -63,15 +68,23 @@ public class ToDoApplication extends IsisWicketApplication {
private static final long serialVersionUID = 1L;
/**
- * uncomment for a (slightly hacky) way of allowing logins using query args, eg:
+ * set to true for a (slightly hacky) way of allowing logins using query args, eg:
*
* <tt>?user=sven&pass=pass</tt>
*
* <p>
- * for demos only, obvious.
+ * for demos only, obviously.
*/
private final static boolean DEMO_MODE_USING_CREDENTIALS_AS_QUERYARGS = false;
-
+
+ @Override
+ protected void init() {
+ super.init();
+
+ IBootstrapSettings 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) {
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
index c3b6be3..7697ea8 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
@@ -48,7 +48,8 @@ public class ExternalLinksService {
return title;
}
}
-
+
+ @CssClassFa("fa-external-link")
@Prototype
@ActionSemantics(Of.SAFE)
@MemberOrder(name="Prototyping", sequence="91.1")
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
index 6961bb1..b9cf19e 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -196,3 +196,5 @@ ${symbol_pound}
${symbol_pound}isis.viewers.paged.standalone=30
${symbol_pound}isis.viewers.paged.parented=10
+${symbol_pound}isis.viewers.labelAt.property=LEFT
+${symbol_pound}isis.viewers.labelAt.parameter=LEFT
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
index 10cbce9..85e658a 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
@@ -26,4 +26,44 @@ ${symbol_pound} the baseUrl for hrefs in the events generated by the RO EventSer
isis.viewer.restfulobjects.RestfulObjectsSpecEventSerializer.baseUrl=http://localhost:8080/restful/
${symbol_pound} renders param details in the (incorrect) form that they were for GSOC2013 viewers
-${symbol_pound} isis.viewer.restfulobjects.gsoc2013.legacyParamDetails=true
\ No newline at end of file
+${symbol_pound} isis.viewer.restfulobjects.gsoc2013.legacyParamDetails=true
+
+${symbol_pound} whether to honor UI hints, in particular Render(EAGERLY). Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.honorUiHints=false
+
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbo
l_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}
+${symbol_pound} Non-standard configuration settings.
+${symbol_pound}
+${symbol_pound} If enabled of the following are enabled then the viewer is deviating from the
+${symbol_pound} RO spec standard; compatibility may be compromised with RO clients.
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbo
l_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}
+
+${symbol_pound} whether to show only object properties for object members
+${symbol_pound} (on the object representation only)
+${symbol_pound} Takes precedence over the other 'suppress' below.
+${symbol_pound}isis.viewer.restfulobjects.objectPropertyValuesOnly=true
+
+${symbol_pound} whether to suppress "describedby" links. Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressDescribedByLinks=true
+
+${symbol_pound} whether to suppress "update" links. Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressUpdateLink=true
+
+${symbol_pound} whether to suppress "id" json-prop for object members. Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressMemberId=true
+
+${symbol_pound} whether to suppress "links" json-prop for object members
+${symbol_pound} (on the object representation only). Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressMemberLinks=true
+
+${symbol_pound} whether to suppress "extensions" json-prop for object members
+${symbol_pound} (on the object representation only). Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressMemberExtensions=true
+
+${symbol_pound} whether to suppress "disabledReason" json-prop for object members
+${symbol_pound} (on the object representation only). Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressMemberDisabledReason=true
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbo
l_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
index 9e4fb9d..84e8f10 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
@@ -35,32 +35,55 @@ 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-yy
+${symbol_pound}isis.viewer.wicket.datePattern=dd-MM-yyyy
+${symbol_pound}isis.viewer.wicket.dateTimePattern=dd-MM-yyyy HH:mm
+${symbol_pound}isis.viewer.wicket.datePickerPattern=DD-MM-YYYY
${symbol_pound}isis.viewer.wicket.datePattern=dd/MM/yy
${symbol_pound}isis.viewer.wicket.dateTimePattern=dd/MM/yy HH:mm
-${symbol_pound}isis.viewer.wicket.datePickerPattern=dd/mm/y
+${symbol_pound}isis.viewer.wicket.datePickerPattern=DD/MM/YY
-${symbol_pound} default is for wicket tags to be stripped in production (Isis SERVER mode == Wicket deployment mode),
-${symbol_pound} not stripped otherwise (Isis' PROTOTYPE mode == Wicket's DEVELOPMENT mode)
-${symbol_pound} isis.viewer.wicket.stripWicketTags=false
+${symbol_pound}
+${symbol_pound} whether to strip wicket tags from markup (default is true, as they may break some CSS rules)
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.stripWicketTags=false
-${symbol_pound}isis.viewer.wicket.suppressRememberMe=true
+
+${symbol_pound}
+${symbol_pound} whether to suppress the 'rememberMe' checkbox on the login page (default is false)
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.suppressRememberMe=false
${symbol_pound}
${symbol_pound} if user attempts to access a protected URL before signing in, then as a convenience the viewer will continue
${symbol_pound} through to that destination after successful login. If you consider this to be a security risk then this flag
-${symbol_pound} disables that behaviour.
+${symbol_pound} disables that behaviour (default is false).
${symbol_pound}
${symbol_pound}isis.viewer.wicket.clearOriginalDestination=true
-${symbol_pound}isis.viewer.wicket.disableModalDialogs=true
+${symbol_pound}
+${symbol_pound} whether to show action dialogs on their own page rather than as a modal dialog (default is false)
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.disableModalDialogs=false
+
+
+${symbol_pound}
+${symbol_pound} the maximum number of pages to list in bookmark (default is 15)
+${symbol_pound}
${symbol_pound}isis.viewer.wicket.bookmarkedPages.maxSize=15
-${symbol_pound}isis.viewer.wicket.regularCase=false
+${symbol_pound}
+${symbol_pound} whether to show the bootstrap theme chooser (defaults false)
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.themes.showChooser=false
+isis.viewer.wicket.themes.showChooser=true
+
+${symbol_pound}
+${symbol_pound} comma-separated list of themes to choose from (default is to show all themes from bootswatch.com).
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.themes.enabled=bootstrap-theme,Cosmo,Flatly,Darkly,Sandstone,United
+isis.viewer.wicket.themes.enabled=bootstrap-theme,Cosmo,Flatly,Darkly,Sandstone,United
http://git-wip-us.apache.org/repos/asf/isis/blob/853f6213/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
index d48dc88..0d38840 100644
--- a/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Mon Oct 13 23:45:24 BST 2014
+#Fri Nov 14 13:10:25 GMT 2014
package=it.pkg
version=0.1-SNAPSHOT
groupId=archetype.it