You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@twill.apache.org by "Andreas Neumann (JIRA)" <ji...@apache.org> on 2014/03/08 00:03:42 UTC

[jira] [Created] (TWILL-54) Add a better way to programmatically build a TwillSpecification

Andreas Neumann created TWILL-54:
------------------------------------

             Summary: 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


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.2#6252)