/** * Gets or creates a {@link TransformerJob} for a particular {@link TransformerComponentBuilder}. * Since {@link MultiStreamComponent}s are subtypes of {@link Transformer} it is necesary to have * this caching mechanism in place in order to allow diamond-shaped component graphs where * multiple streams include the same component. * * @param validate * @param tjb * @return */ public TransformerJob getOrCreateTransformerJob( boolean validate, TransformerComponentBuilder<?> tjb) { TransformerJob componentJob = (TransformerJob) _componentJobs.get(tjb); if (componentJob == null) { try { componentJob = tjb.toTransformerJob(validate, this); _componentJobs.put(tjb, componentJob); } catch (IllegalStateException e) { throw new IllegalStateException( "Could not create transformer job from builder: " + tjb + ", (" + e.getMessage() + ")", e); } } return componentJob; }