Repository: isis Updated Branches: refs/heads/master 647ad2cd7 -> 321e06e9b
ISIS-776: fixture result shows the fixture script that created each entry. Project: http://git-wip-us.apache.org/repos/asf/isis/repo Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/321e06e9 Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/321e06e9 Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/321e06e9 Branch: refs/heads/master Commit: 321e06e9bd0ca457604115b0db313b0b8928aa3b Parents: 647ad2c Author: Dan Haywood <[email protected]> Authored: Mon Jun 2 08:04:12 2014 +0100 Committer: Dan Haywood <[email protected]> Committed: Mon Jun 2 08:04:12 2014 +0100 ---------------------------------------------------------------------- .../viewer/wicket/ui/pages/PageAbstract.css | 10 ++++++- .../applib/fixturescripts/FixtureResult.java | 31 ++++++++++++++------ .../fixturescripts/FixtureResultList.java | 16 ++++++---- .../applib/fixturescripts/FixtureScripts.java | 19 ++++++++---- .../core/commons/matchers/IsisMatchers.java | 13 ++------ .../src/main/java/webapp/admin/Admin.java | 11 ++----- 6 files changed, 59 insertions(+), 41 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/isis/blob/321e06e9/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css ---------------------------------------------------------------------- diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css index a6557f6..6e53e6b 100644 --- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css +++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css @@ -977,4 +977,12 @@ for some reason the containedToggleboxPanel.css is not being picked up... */ .containedToggleboxPanel .containedToggleboxPanelForm { display: inline; -} \ No newline at end of file +} + + + + +.collectionContentsAsAjaxTablePanel table.contents tbody td div.FixtureResult-className label, +.collectionContentsAsAjaxTablePanel table.contents tbody td div.FixtureResult-fixtureScriptClassName label { + text-transform: none; +} http://git-wip-us.apache.org/repos/asf/isis/blob/321e06e9/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResult.java ---------------------------------------------------------------------- diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResult.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResult.java index 552ff8b..8fa2056 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResult.java +++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResult.java @@ -19,10 +19,7 @@ package org.apache.isis.applib.fixturescripts; import org.apache.isis.applib.AbstractViewModel; -import org.apache.isis.applib.annotation.MemberOrder; -import org.apache.isis.applib.annotation.Named; -import org.apache.isis.applib.annotation.Paged; -import org.apache.isis.applib.annotation.Title; +import org.apache.isis.applib.annotation.*; @Paged(500) public class FixtureResult extends AbstractViewModel { @@ -39,8 +36,23 @@ public class FixtureResult extends AbstractViewModel { // ////////////////////////////////////// - private String key; + private String fixtureScriptClassName; + + @Named("Fixture script") + @Optional + @MemberOrder(sequence="1") + public String getFixtureScriptClassName() { + return fixtureScriptClassName; + } + public void setFixtureScriptClassName(String fixtureScriptClassName) { + this.fixtureScriptClassName = fixtureScriptClassName; + } + // ////////////////////////////////////// + + private String key; + + @Named("Result key") @Title(sequence="1", append=": ") @MemberOrder(sequence="1") public String getKey() { @@ -49,11 +61,12 @@ public class FixtureResult extends AbstractViewModel { public void setKey(String key) { this.key = key; } - + // ////////////////////////////////////// - + private Object object; - + + @Named("Result") @Title(sequence="2") @MemberOrder(sequence="1") public Object getObject() { @@ -65,7 +78,7 @@ public class FixtureResult extends AbstractViewModel { // ////////////////////////////////////// - @Named("Class") + @Named("Result class") @MemberOrder(sequence="3") public String getClassName() { return object != null? object.getClass().getName(): null; http://git-wip-us.apache.org/repos/asf/isis/blob/321e06e9/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResultList.java ---------------------------------------------------------------------- diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResultList.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResultList.java index ed0237d..aa28049 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResultList.java +++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResultList.java @@ -18,11 +18,9 @@ */ package org.apache.isis.applib.fixturescripts; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; - import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -35,6 +33,10 @@ import com.google.common.collect.Maps; public class FixtureResultList { private final FixtureScripts fixtureScripts; + /** + * {@link org.apache.isis.applib.fixturescripts.FixtureScript}s used to generate this result list. + */ + private final List<FixtureScript> fixtureScriptList = Lists.newArrayList(); FixtureResultList(FixtureScripts fixtureScripts) { this.fixtureScripts = fixtureScripts; @@ -57,16 +59,18 @@ public class FixtureResultList { * or simply {@link org.apache.isis.applib.fixturescripts.FixtureScripts.NonPersistedObjectsStrategy#IGNORE ignored}. * </P> */ - public <T> T add(final FixtureScript script, final String key, final T object) { - final FixtureResult fr = fixtureScripts.newFixtureResult(script, key, object); + public <T> T add(final FixtureScript fixtureScript, final String key, final T object) { + final boolean firstTime = !fixtureScriptList.contains(fixtureScript); + final FixtureResult fr = fixtureScripts.newFixtureResult(fixtureScript, key, object, firstTime); if(fr != null) { list.add(fr); + if(firstTime) { + fixtureScriptList.add(fixtureScript); + } } return object; } - - public List<FixtureResult> getResults() { return list; } http://git-wip-us.apache.org/repos/asf/isis/blob/321e06e9/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java ---------------------------------------------------------------------- diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java index acb4d7c..3da28ff 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java +++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java @@ -51,7 +51,7 @@ public abstract class FixtureScripts extends AbstractService { /** * How to handle objects that are to be - * {@link org.apache.isis.applib.fixturescripts.FixtureScripts#newFixtureResult(FixtureScript, String, Object) added} + * {@link FixtureScripts#newFixtureResult(FixtureScript, String, Object, boolean) added} * into a {@link org.apache.isis.applib.fixturescripts.FixtureResult} but which are not yet persisted. */ public enum NonPersistedObjectsStrategy { @@ -64,7 +64,7 @@ public abstract class FixtureScripts extends AbstractService { /** * Defaults to {@link org.apache.isis.applib.fixturescripts.FixtureScripts.NonPersistedObjectsStrategy#PERSIST persist} - * strategy if non-persisted objects are {@link #newFixtureResult(FixtureScript, String, Object) added} to a {@link org.apache.isis.applib.fixturescripts.FixtureResultList}. + * strategy if non-persisted objects are {@link #newFixtureResult(FixtureScript, String, Object, boolean) added} to a {@link org.apache.isis.applib.fixturescripts.FixtureResultList}. * * @param packagePrefix - to search for fixture script implementations, eg "com.mycompany" */ @@ -74,7 +74,7 @@ public abstract class FixtureScripts extends AbstractService { /** * @param packagePrefix - to search for fixture script implementations, eg "com.mycompany" - * @param nonPersistedObjectsStrategy - how to handle any non-persisted objects that are {@link #newFixtureResult(FixtureScript, String, Object) added} to a {@link org.apache.isis.applib.fixturescripts.FixtureResultList}. + * @param nonPersistedObjectsStrategy - how to handle any non-persisted objects that are {@link #newFixtureResult(FixtureScript, String, Object, boolean) added} to a {@link org.apache.isis.applib.fixturescripts.FixtureResultList}. */ public FixtureScripts(String packagePrefix, NonPersistedObjectsStrategy nonPersistedObjectsStrategy) { this.packagePrefix = packagePrefix; @@ -218,17 +218,19 @@ public abstract class FixtureScripts extends AbstractService { String mementoFor(FixtureResult fr) { return mementoService.create() + .set("fixtureScriptClassName", fr.getFixtureScriptClassName()) .set("key", fr.getKey()) .set("object", bookmarkService.bookmarkFor(fr.getObject())) .asString(); } void initOf(String mementoStr, FixtureResult fr) { Memento memento = mementoService.parse(mementoStr); + fr.setFixtureScriptClassName(memento.get("fixtureScriptClassName", String.class)); fr.setKey(memento.get("key", String.class)); fr.setObject(bookmarkService.lookup(memento.get("object", Bookmark.class))); } - FixtureResult newFixtureResult(FixtureScript script, String subkey, Object object) { + FixtureResult newFixtureResult(FixtureScript script, String subkey, Object object, boolean firstTime) { if(object == null) { return null; } @@ -243,12 +245,17 @@ public abstract class FixtureScripts extends AbstractService { return null; } } - String mementoFor = mementoFor(script, subkey, object); + String mementoFor = mementoFor(script, subkey, object, firstTime); return getContainer().newViewModelInstance(FixtureResult.class, mementoFor); } - private String mementoFor(FixtureScript script, String subkey, Object object) { + private String mementoFor( + final FixtureScript script, + final String subkey, + final Object object, + final boolean firstTime) { final FixtureResult template = new FixtureResult(); + template.setFixtureScriptClassName(firstTime? script.getClass().getName(): null); template.setKey(script.pathWith(subkey)); template.setObject(object); return mementoFor(template); http://git-wip-us.apache.org/repos/asf/isis/blob/321e06e9/core/metamodel/src/main/java/org/apache/isis/core/commons/matchers/IsisMatchers.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/matchers/IsisMatchers.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/matchers/IsisMatchers.java index bca5178..73b18d7 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/commons/matchers/IsisMatchers.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/matchers/IsisMatchers.java @@ -19,26 +19,19 @@ package org.apache.isis.core.commons.matchers; -import static org.hamcrest.CoreMatchers.nullValue; - import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; - -import org.hamcrest.CoreMatchers; -import org.hamcrest.Description; -import org.hamcrest.Factory; -import org.hamcrest.Matcher; -import org.hamcrest.Matchers; -import org.hamcrest.TypeSafeMatcher; +import org.hamcrest.*; import org.hamcrest.core.IsEqual; import org.hamcrest.core.StringContains; import org.hamcrest.core.StringEndsWith; import org.hamcrest.core.StringStartsWith; - import org.apache.isis.core.commons.lang.StringExtensions; +import static org.hamcrest.CoreMatchers.nullValue; + /** * Hamcrest {@link Matcher} implementations. * http://git-wip-us.apache.org/repos/asf/isis/blob/321e06e9/example/application/quickstart_wicket_restful_jdo/webapp/src/main/java/webapp/admin/Admin.java ---------------------------------------------------------------------- diff --git a/example/application/quickstart_wicket_restful_jdo/webapp/src/main/java/webapp/admin/Admin.java b/example/application/quickstart_wicket_restful_jdo/webapp/src/main/java/webapp/admin/Admin.java index ef8a86b..e1811f4 100644 --- a/example/application/quickstart_wicket_restful_jdo/webapp/src/main/java/webapp/admin/Admin.java +++ b/example/application/quickstart_wicket_restful_jdo/webapp/src/main/java/webapp/admin/Admin.java @@ -18,17 +18,10 @@ package webapp.admin; import java.util.List; import java.util.UUID; - import org.joda.time.LocalDate; - import org.apache.isis.applib.AbstractService; -import org.apache.isis.applib.annotation.ActionSemantics; +import org.apache.isis.applib.annotation.*; import org.apache.isis.applib.annotation.ActionSemantics.Of; -import org.apache.isis.applib.annotation.Bookmarkable; -import org.apache.isis.applib.annotation.MemberOrder; -import org.apache.isis.applib.annotation.Named; -import org.apache.isis.applib.annotation.Optional; -import org.apache.isis.applib.annotation.Prototype; import org.apache.isis.applib.services.clock.ClockService; import org.apache.isis.objectstore.jdo.applib.service.audit.AuditEntryJdo; import org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdoRepository; @@ -39,7 +32,7 @@ import org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJ public class Admin extends AbstractService { - + @ActionSemantics(Of.SAFE) @Bookmarkable @MemberOrder(sequence="10.1")
