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 2017/11/27 15:21:23 UTC
[isis] 02/02: ISIS-1784: adds BuilderFixtureScript,
and ability to fine-tune logging (tracing) of fixture scripts
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 819800933e318e01403f5f285880a3ba45ed5d45
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Nov 27 15:21:12 2017 +0000
ISIS-1784: adds BuilderFixtureScript, and ability to fine-tune logging (tracing) of fixture scripts
---
.../fixturescripts/BuilderScriptAbstract.java | 67 ++++++++++++++++++++++
.../isis/applib/fixturescripts/FixtureScript.java | 20 ++++++-
2 files changed, 85 insertions(+), 2 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/BuilderScriptAbstract.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/BuilderScriptAbstract.java
new file mode 100644
index 0000000..cfa281e
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/BuilderScriptAbstract.java
@@ -0,0 +1,67 @@
+/*
+ *
+ * Copyright 2012-2014 Eurocommercial Properties NV
+ *
+ *
+ * Licensed 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 org.apache.isis.applib.fixturescripts;
+
+import org.apache.isis.applib.annotation.Programmatic;
+
+public abstract class BuilderScriptAbstract<T extends BuilderScriptAbstract>
+ extends FixtureScript implements FixtureScriptWithExecutionStrategy {
+
+ private final FixtureScripts.MultipleExecutionStrategy executionStrategy;
+
+ /**
+ * Typically we expect builders to have value semantics, so this is provided as a convenience.
+ */
+ protected BuilderScriptAbstract() {
+ this(FixtureScripts.MultipleExecutionStrategy.EXECUTE_ONCE_BY_VALUE);
+ }
+
+ protected BuilderScriptAbstract(final FixtureScripts.MultipleExecutionStrategy executionStrategy) {
+ this.executionStrategy = executionStrategy;
+ }
+
+ @Override
+ public FixtureScripts.MultipleExecutionStrategy getMultipleExecutionStrategy() {
+ return executionStrategy;
+ }
+
+ @Programmatic
+ public T build(
+ final FixtureScript parentFixtureScript,
+ ExecutionContext executionContext) {
+
+ // returns the fixture script that is run
+ // (either this one, or possibly one previously executed).
+ return (T)executionContext.executeChildT(parentFixtureScript, this);
+ }
+
+ @Programmatic
+ public T build(ExecutionContext executionContext) {
+
+ final FixtureScript anonymousParent = new FixtureScript() {
+ @Override
+ protected void execute(ExecutionContext executionContext) { }
+ };
+
+ return build(anonymousParent, executionContext);
+ }
+
+
+}
+
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
index 7e25720..729ffcc 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
@@ -83,6 +83,9 @@ public abstract class FixtureScript
public FixtureScript(final String friendlyName, final String localName) {
this(friendlyName, localName, Discoverability.NON_DISCOVERABLE);
}
+ public FixtureScript(final String friendlyName, final String localName, final PrintStream printStream) {
+ this(friendlyName, localName, Discoverability.NON_DISCOVERABLE, printStream);
+ }
/**
* @param friendlyName - if null, will be derived from class name
@@ -93,13 +96,26 @@ public abstract class FixtureScript
final String friendlyName,
final String localName,
final Discoverability discoverability) {
+ this(friendlyName, localName, discoverability,
+ // enable tracing by default, to stdout
+ System.out);
+ }
+ /**
+ * @param friendlyName - if null, will be derived from class name
+ * @param localName - if null, will be derived from class name
+ * @param discoverability - whether this fixture script can be rendered as a choice to execute through {@link org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(FixtureScript, String)}}.
+ */
+ public FixtureScript(
+ final String friendlyName,
+ final String localName,
+ final Discoverability discoverability,
+ final PrintStream printStream) {
this.localName = localNameElseDerived(localName);
this.friendlyName = friendlyNameElseDerived(friendlyName);
this.parentPath = "";
this.discoverability = discoverability;
- // enable tracing by default, to stdout
- withTracing();
+ withTracing(printStream);
}
protected String localNameElseDerived(final String str) {
return str != null ? str : StringUtil.asLowerDashed(friendlyNameElseDerived(str));
--
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.