You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@twill.apache.org by "Terence Yim (JIRA)" <ji...@apache.org> on 2016/01/07 02:29:40 UTC
[jira] [Updated] (TWILL-54) Add a better way to programmatically
build a TwillSpecification
[ https://issues.apache.org/jira/browse/TWILL-54?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Terence Yim updated TWILL-54:
-----------------------------
Fix Version/s: (was: 0.7.0-incubating)
0.8.0-incubating
> Add a better way to programmatically build a TwillSpecification
> ---------------------------------------------------------------
>
> Key: TWILL-54
> URL: https://issues.apache.org/jira/browse/TWILL-54
> Project: Apache Twill
> Issue Type: Improvement
> Components: api
> Reporter: Andreas Neumann
> Assignee: Alvin Wang
> Fix For: 0.8.0-incubating
>
>
> I am writing a framework that builds a Twill app from a specification. While the builder pattern is convenient and foolproof for verbose construction of the app spec, it is cumbersome to use programmatically:
> TwillSpecification.Builder.MoreRunnable builder =
> TwillSpecification.Builder.with().setName(className).withRunnable();
> // iterate over my spec and add runnables
> TwillSpecification.Builder.RunnableSetter setter = null;
> for (...) {
> ResourceSpecification resources = ...
> String name = ...
> TwillRunnable runnable = ...
> setter = setter == null ?
> builder.add(name, runnable, resources).noLocalFiles() :
> builder.add(name, runnable, resources).noLocalFiles(); }
> }
> // iterate over my spec and configure the order of runnables
> TwillSpecification.Builder.NextOrder nextOrder = null;
> for (...) {
> String runnableName = ... // my logic
> String[] runnableNames = ... // my logic
> nextOrder = nextOrder == null ?
> setter.withOrder().begin(runnableName, runnableNames) :
> nextOrder.nextWhenCompleted(runnableName, runnableNames);
> }
> return nextOrder == null ? setter.anyOrder().build() : nextOrder.build();
> If would be easier if I did not have to use the builder pattern...
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)