/** * Creates a new mock flow service locator. */ public MockFlowBuilderContext(String flowId, AttributeMap<Object> attributes) { super(flowId, attributes, new FlowDefinitionRegistryImpl(), TestFlowBuilderServicesFactory.getServices()); }
public String toString() { return new ToStringCreator(this).append("flowIds", getFlowDefinitionIds()).append("parent", parent).toString(); } }
public void setParent(FlowDefinitionRegistry parent) { super.setParent(parent); if (parent instanceof DefaultFlowRegistry) { DefaultFlowRegistry parentFlowRegistry = (DefaultFlowRegistry) parent; // link so a flow in the child registry that extends from a flow in the parent registry can find its parent flowModelRegistry.setParent(parentFlowRegistry.getFlowModelRegistry()); } } }
public void testParentHierarchy() { testRegisterMultipleFlows(); FlowDefinitionRegistryImpl child = new FlowDefinitionRegistryImpl(); child.setParent(registry); FooFlow fooFlow = new FooFlow(); child.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); assertTrue(child.containsFlowDefinition("foo")); assertTrue(child.containsFlowDefinition("bar")); assertSame(fooFlow, child.getFlowDefinition("foo")); assertEquals(barFlow, child.getFlowDefinition("bar")); }
public void testGetFlowIds() { registry.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); registry.registerFlowDefinition(new StaticFlowDefinitionHolder(barFlow)); assertEquals("bar", registry.getFlowDefinitionIds()[0]); assertEquals("foo", registry.getFlowDefinitionIds()[1]); }
public void setUp() { FlowDefinitionRegistryImpl registry = new FlowDefinitionRegistryImpl(); registry.registerFlowDefinition(new FlowDefinitionImpl()); registry.registerFlowDefinition(new FlowDefinitionImpl("foo/flow2")); StaticWebApplicationContext context = new StaticWebApplicationContext(); context.getBeanFactory().registerSingleton("foo/flow2", new CustomFlowHandler()); mapping.setFlowRegistry(registry); mapping.setServletContext(new MockServletContext()); mapping.setApplicationContext(context); }
/** * Register a subflow definition in the backing flow registry, typically to support a flow execution test. For test * scenarios, the subflow is often a stub used to verify parent flow input and output mapping behavior. * @param subflow the subflow */ public void registerSubflow(Flow subflow) { ((FlowDefinitionRegistryImpl) getFlowDefinitionLocator()).registerFlowDefinition(subflow); }
public void testRegisterMultipleFlows() { registry.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); registry.registerFlowDefinition(new StaticFlowDefinitionHolder(barFlow)); assertTrue(registry.containsFlowDefinition("foo")); assertTrue(registry.containsFlowDefinition("bar")); assertEquals(fooFlow, registry.getFlowDefinition("foo")); assertEquals(barFlow, registry.getFlowDefinition("bar")); }
public FlowDefinition getFlowDefinition(String id) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { Assert.hasText(id, "An id is required to lookup a FlowDefinition"); try { if (logger.isDebugEnabled()) { logger.debug("Getting FlowDefinition with id '" + id + "'"); } return getFlowDefinitionHolder(id).getFlowDefinition(); } catch (NoSuchFlowDefinitionException e) { if (parent != null) { // try parent return parent.getFlowDefinition(id); } throw e; } }
public void testDestroy() { registry.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); registry.registerFlowDefinition(new StaticFlowDefinitionHolder(barFlow)); assertEquals(fooFlow, registry.getFlowDefinition("foo")); assertEquals(barFlow, registry.getFlowDefinition("bar")); assertFalse(fooFlow.destroyed); assertFalse(barFlow.destroyed); registry.destroy(); assertTrue(fooFlow.destroyed); assertTrue(barFlow.destroyed); }
public void refresh(String flowId) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { if (logger.isDebugEnabled()) { logger.debug("Refreshing flow with id '" + flowId + "'"); } ClassLoader loader = Thread.currentThread().getContextClassLoader(); try { // workaround for JMX Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); FlowDefinitionHolder holder = getFlowDefinitionHolder(flowId); holder.refresh(); if (!holder.getFlowDefinitionId().equals(flowId)) { reindex(holder, flowId); } } finally { Thread.currentThread().setContextClassLoader(loader); } }
public void testRegisterFlowSameIds() { registry.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); FooFlow newFlow = new FooFlow(); registry.registerFlowDefinition(new StaticFlowDefinitionHolder(newFlow)); assertSame(newFlow, registry.getFlowDefinition("foo")); }
public void registerFlowDefinition(FlowDefinition definition) { registerFlowDefinition(new StaticFlowDefinitionHolder(definition)); }
public void testRegisterFlow() { registry.registerFlowDefinition(new StaticFlowDefinitionHolder(fooFlow)); assertTrue(registry.containsFlowDefinition("foo")); assertEquals(fooFlow, registry.getFlowDefinition("foo")); }
public FlowDefinition getFlowDefinition(String id) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { Assert.hasText(id, "An id is required to lookup a FlowDefinition"); try { if (logger.isDebugEnabled()) { logger.debug("Getting FlowDefinition with id '" + id + "'"); } return getFlowDefinitionHolder(id).getFlowDefinition(); } catch (NoSuchFlowDefinitionException e) { if (parent != null) { // try parent return parent.getFlowDefinition(id); } throw e; } }
/** * Create the flow definition registry to be populated in {@link #doPopulate(FlowDefinitionRegistry)}. Subclasses * can override this method if they want to use a custom flow definition registry implementation. */ protected FlowDefinitionRegistry createFlowDefinitionRegistry() { return new FlowDefinitionRegistryImpl(); }
/** {@inheritDoc} */ @Override public void setParent(@Nullable final FlowDefinitionRegistry parent) { super.setParent(parent); if (parent instanceof DefaultFlowRegistry) { final DefaultFlowRegistry parentFlowRegistry = (DefaultFlowRegistry) parent; // Link so a flow in the child registry that extends from a flow // in the parent registry can find its parent. flowModelRegistry.setParent(parentFlowRegistry.getFlowModelRegistry()); } } }
/** * Returns the identified flow definition holder. Throws an exception if it cannot be found. */ private FlowDefinitionHolder getFlowDefinitionHolder(String id) throws NoSuchFlowDefinitionException { FlowDefinitionHolder flowHolder = (FlowDefinitionHolder) flowDefinitions.get(id); if (flowHolder == null) { throw new NoSuchFlowDefinitionException(id, getFlowDefinitionIds()); } return flowHolder; }
/** * Register a subflow definition in the backing flow registry, typically to support a flow execution test. For test * scenarios, the subflow is often a stub used to verify parent flow input and output mapping behavior. * @param subflow the subflow */ public void registerSubflow(Flow subflow) { ((FlowDefinitionRegistryImpl) getFlowDefinitionLocator()).registerFlowDefinition(subflow); }
public FlowDefinition getFlowDefinition(String id) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { Assert.hasText(id, "Unable to load a flow definition: no flow id was provided. Please provide a valid flow identifier."); if (logger.isDebugEnabled()) { logger.debug("Getting flow definition with id '" + id + "'"); } try { return getFlowDefinitionHolder(id).getFlowDefinition(); } catch (NoSuchFlowDefinitionException e) { if (parent != null) { // try parent return parent.getFlowDefinition(id); } throw e; } }