Project: springxd
Issue XD-2285: Change composed module behavior to "black box" 
Composed Module currently behave as "white boxes". As soon as a module is composed (say "http | filter") then all options of the children modules are available (as e.g. http.port and filter.expression in the example above). Change this so that a composed module is a black box: user has to explicitly expose an option for it to be available (most certainly using a short name). Hardcoding of values would be retained (and possibly overridable). Possible syntaxes : 1) {code} module compose foo --definition "http --port=${myport:1234} | filter" {code} 2) {code} module compose foo --definition "http | filter" --expose port {code} 2.1) in case of ambiguity (simulated in this particular example): {code} module compose foo --definition "http | filter" --expose http.port {code} 2.2) for specifying a default: {code} module compose foo --definition "http | filter" --expose port=1234 {code} 3) allow both 1) and 2), using 1) mainly for cases where we don't map 1 to 1 with the underlying option, e.g.: {code} filter --expression=${expr}+'foo' {code}
Story points: 8