Hi It is a good idea to add a warning/error in that case. Please create an issue in the issue tracker, so we can include the suggestion.
regards, Leonardo 2016-04-22 13:14 GMT-05:00 Bill Lucy <[email protected]>: > I've run in to an interesting scenario with the flow handling logic. If > we have multiple flows with the same IDs and definingDocumentIds, we won't > behave as expected: only one flow will actually be used, but no error or > warning to that effect is emitted. > > Consider if we have two apps in the same EAR, each defining flows with an > ID of "sample-flow", like this: > > final String flowId = "sample-flow"; > flowBuilder.id("", flowId); > > Per the JSF spec, this creates ambiguity: > > 11.4.3.1 > Defining Flows > Flows are defined using the <flow-definition> element. This element must > have an id attribute which uniquely > identifies the flow within the scope of the Application Configuration > Resource file in which the element appears. To > enable multiple flows with the same id to exist in an application, the > <faces-config><name> element is taken to > be the definingDocumentId of the flow. If no <name> element is specified, > the empty string is taken as the value > for definingDocumentId. > > In this case, app1 might define some kind of initializer with the flow, > while app2 doesn't. In that case, app2 might (incorrectly) end up trying > to use an initializer that was intended for app1. A developer might see > issues resulting from the initializer being called from the wrong app, but > it wouldn't be clear that the wrong flow had been entered (due to > ambiguity). > > Mojarra has something like this: > > Caused by: java.lang.IllegalStateException: Flow with id \"sample-flow\" > and definingDocumentId \"\" already exists."}} > > Would it be helpful for us to emit some kind of similar warning/error in > this case? Or do we want to keep the current behavior? > > Thanks, > Bill Lucy >
