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)