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/05/11 13:32:31 UTC
git commit: ISIS-776: minor enhancements to todo app's fixtures
Repository: isis
Updated Branches:
refs/heads/master 55c4ea853 -> 4743b3836
ISIS-776: minor enhancements to todo app's fixtures
1. install fixtures for current as a convenience method
2. split out ToDoItemsCreateFor into a new ToDoItemsCompleteForUser, (latter does the completion of the object), as a better demonstration of the composability of fixture scripts.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/4743b383
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/4743b383
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/4743b383
Branch: refs/heads/master
Commit: 4743b3836a80dcaf7032008250190db3774d3e26
Parents: 55c4ea8
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sun May 11 12:32:19 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sun May 11 12:32:19 2014 +0100
----------------------------------------------------------------------
.../fixture/todo/ToDoItemsCompleteForUser.java | 92 ++++++++++++++++++++
.../fixture/todo/ToDoItemsCreateForUser.java | 4 +-
.../java/fixture/todo/ToDoItemsFixture.java | 5 ++
.../fixture/todo/ToDoItemsFixturesService.java | 21 +++++
.../fixture/todo/ToDoItemsResetForUser.java | 1 +
5 files changed, 121 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/4743b383/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCompleteForUser.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCompleteForUser.java b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCompleteForUser.java
new file mode 100644
index 0000000..b425fa6
--- /dev/null
+++ b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCompleteForUser.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package fixture.todo;
+
+import java.util.Collection;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
+
+import dom.todo.ToDoItem;
+import dom.todo.ToDoItems;
+
+import org.apache.isis.applib.fixturescripts.FixtureResultList;
+import org.apache.isis.applib.fixturescripts.SimpleFixtureScript;
+
+public class ToDoItemsCompleteForUser extends SimpleFixtureScript {
+
+ // //////////////////////////////////////
+ // Constructor
+ // //////////////////////////////////////
+
+ private final String user;
+
+ public ToDoItemsCompleteForUser(String user) {
+ super(friendlyNameFor(user), localNameFor(user));
+ this.user = user;
+ }
+
+ static String localNameFor(String user) {
+ return user != null? user: "current";
+ }
+
+ static String friendlyNameFor(String user) {
+ return "Complete selected ToDoItems for " + (user != null ? "'" + user + "'" : "current user");
+ }
+
+ @Override
+ protected void doRun(final FixtureResultList resultList) {
+ final String ownedBy = user != null? user: getContainer().getUser().getName();
+ installFor(ownedBy, resultList);
+ getContainer().flush();
+ }
+
+ private void installFor(final String user, final FixtureResultList resultList) {
+ complete(user, "Buy stamps", resultList);
+ complete(user, "Write blog post", resultList);
+
+ getContainer().flush();
+ }
+
+ private void complete(final String user, String description, final FixtureResultList resultList) {
+ final ToDoItem toDoItem = findToDoItem(description, user);
+ toDoItem.setComplete(true);
+ resultList.add(this, toDoItem);
+ }
+
+ private ToDoItem findToDoItem(final String description, final String user) {
+ final Collection<ToDoItem> filtered = Collections2.filter(toDoItems.allToDos(), new Predicate<ToDoItem>() {
+ @Override
+ public boolean apply(ToDoItem input) {
+ return Objects.equal(description, input.getDescription()) &&
+ Objects.equal(user, input.getOwnedBy());
+ }
+ });
+ return filtered.isEmpty()? null: filtered.iterator().next();
+ }
+
+
+ // //////////////////////////////////////
+ // Injected services
+ // //////////////////////////////////////
+
+ @javax.inject.Inject
+ private ToDoItems toDoItems;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/4743b383/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCreateForUser.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCreateForUser.java b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCreateForUser.java
index 33c7ada..9f81af1 100644
--- a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCreateForUser.java
+++ b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsCreateForUser.java
@@ -63,7 +63,7 @@ public class ToDoItemsCreateForUser extends SimpleFixtureScript {
createToDoItemForUser("Buy milk", Category.Domestic, Subcategory.Shopping, user, daysFromToday(0), new BigDecimal("0.75"), resultList);
createToDoItemForUser("Buy bread", Category.Domestic, Subcategory.Shopping, user, daysFromToday(0), new BigDecimal("1.75"), resultList);
- createToDoItemForUser("Buy stamps", Category.Domestic, Subcategory.Shopping, user, daysFromToday(0), new BigDecimal("10.00"), resultList).setComplete(true);
+ createToDoItemForUser("Buy stamps", Category.Domestic, Subcategory.Shopping, user, daysFromToday(0), new BigDecimal("10.00"), resultList);
createToDoItemForUser("Pick up laundry", Category.Domestic, Subcategory.Chores, user, daysFromToday(6), new BigDecimal("7.50"), resultList);
createToDoItemForUser("Mow lawn", Category.Domestic, Subcategory.Garden, user, daysFromToday(6), null, resultList);
createToDoItemForUser("Vacuum house", Category.Domestic, Subcategory.Housework, user, daysFromToday(3), null, resultList);
@@ -71,7 +71,7 @@ public class ToDoItemsCreateForUser extends SimpleFixtureScript {
createToDoItemForUser("Write to penpal", Category.Other, Subcategory.Other, user, null, null, resultList);
- createToDoItemForUser("Write blog post", Category.Professional, Subcategory.Marketing, user, daysFromToday(7), null, resultList).setComplete(true);
+ createToDoItemForUser("Write blog post", Category.Professional, Subcategory.Marketing, user, daysFromToday(7), null, resultList);
createToDoItemForUser("Organize brown bag", Category.Professional, Subcategory.Consulting, user, daysFromToday(14), null, resultList);
createToDoItemForUser("Submit conference session", Category.Professional, Subcategory.Education, user, daysFromToday(21), null, resultList);
createToDoItemForUser("Stage Isis release", Category.Professional, Subcategory.OpenSource, user, null, null, resultList);
http://git-wip-us.apache.org/repos/asf/isis/blob/4743b383/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java
index ece3726..3d561ad 100644
--- a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java
+++ b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java
@@ -19,7 +19,11 @@
package fixture.todo;
+import org.apache.isis.applib.fixturescripts.FixtureScript;
+/**
+ * Refactored to reuse the newer {@link FixtureScript} API.
+ */
public class ToDoItemsFixture extends ToDoItemsResetForUser {
public ToDoItemsFixture() {
@@ -28,6 +32,7 @@ public class ToDoItemsFixture extends ToDoItemsResetForUser {
public ToDoItemsFixture(String user) {
super(user);
+ setDiscoverability(Discoverability.NON_DISCOVERABLE);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4743b383/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
index 76d7d63..12ba74a 100644
--- a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
+++ b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
@@ -18,7 +18,13 @@
*/
package fixture.todo;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.applib.annotation.Prototype;
+import org.apache.isis.applib.fixturescripts.FixtureResult;
+import org.apache.isis.applib.fixturescripts.FixtureScript;
import org.apache.isis.applib.fixturescripts.FixtureScripts;
/**
@@ -31,4 +37,19 @@ public class ToDoItemsFixturesService extends FixtureScripts {
super("fixture.todo");
}
+ @Prototype
+ public List<FixtureResult> runFixtureScriptForCurrent() {
+ return findFixtureScriptFor("current").run();
+ }
+ public String disableRunFixtureScriptForCurrent() {
+ return findFixtureScriptFor("current") == null? "Could not find fixture script 'current'": null;
+ }
+ private FixtureScript findFixtureScriptFor(String qualifiedName) {
+ List<FixtureScript> fixtureScripts = choices0RunFixtureScript();
+ for (FixtureScript fs : fixtureScripts) {
+ fs.getQualifiedName().equals(qualifiedName);
+ return fs;
+ }
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4743b383/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsResetForUser.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsResetForUser.java b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsResetForUser.java
index 49793a3..527067a 100644
--- a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsResetForUser.java
+++ b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsResetForUser.java
@@ -71,5 +71,6 @@ public class ToDoItemsResetForUser extends CompositeFixtureScript {
protected void addChildren() {
add("delete", new ToDoItemsDeleteForUser(user));
add("create", new ToDoItemsCreateForUser(user));
+ add("complete", new ToDoItemsCompleteForUser(user));
}
}
\ No newline at end of file