Package org.springframework.webflow.execution.repository.snapshot

Source Code of org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactoryTests

package org.springframework.webflow.execution.repository.snapshot;

import junit.framework.TestCase;

import org.springframework.webflow.definition.FlowDefinition;
import org.springframework.webflow.definition.registry.FlowDefinitionConstructionException;
import org.springframework.webflow.definition.registry.FlowDefinitionLocator;
import org.springframework.webflow.definition.registry.NoSuchFlowDefinitionException;
import org.springframework.webflow.engine.Flow;
import org.springframework.webflow.engine.RequestControlContext;
import org.springframework.webflow.engine.State;
import org.springframework.webflow.engine.impl.FlowExecutionImpl;
import org.springframework.webflow.engine.impl.FlowExecutionImplFactory;
import org.springframework.webflow.execution.FlowExecutionException;
import org.springframework.webflow.execution.FlowExecutionKeyFactory;
import org.springframework.webflow.test.MockExternalContext;

public class SerializedFlowExecutionSnapshotFactoryTests extends TestCase {
  private Flow flow;
  private SerializedFlowExecutionSnapshotFactory factory;
  private FlowExecutionKeyFactory executionKeyFactory;
  private FlowExecutionImplFactory executionFactory;

  public void setUp() {
    flow = new Flow("myFlow");
    new State(flow, "state") {
      protected void doEnter(RequestControlContext context) throws FlowExecutionException {
      }
    };
    FlowDefinitionLocator locator = new FlowDefinitionLocator() {
      public FlowDefinition getFlowDefinition(String flowId) throws NoSuchFlowDefinitionException,
          FlowDefinitionConstructionException {
        return flow;
      }
    };
    executionFactory = new FlowExecutionImplFactory();
    executionFactory.setExecutionKeyFactory(executionKeyFactory);
    factory = new SerializedFlowExecutionSnapshotFactory(executionFactory, locator);
  }

  public void testCreateSnapshot() {
    FlowExecutionImpl flowExecution = (FlowExecutionImpl) executionFactory.createFlowExecution(flow);
    flowExecution.start(null, new MockExternalContext());
    flowExecution.getActiveSession().getScope().put("foo", "bar");
    FlowExecutionSnapshot snapshot = factory.createSnapshot(flowExecution);
    FlowExecutionImpl flowExecution2 = (FlowExecutionImpl) factory.restoreExecution(snapshot, "myFlow", null,
        flowExecution.getConversationScope(), executionKeyFactory);
    assertNotSame(flowExecution, flowExecution2);
    assertEquals(flowExecution.getDefinition().getId(), flowExecution2.getDefinition().getId());
    assertEquals(flowExecution.getActiveSession().getScope().get("foo"), flowExecution2.getActiveSession()
        .getScope().get("foo"));
    assertEquals(flowExecution.getActiveSession().getState().getId(), flowExecution2.getActiveSession().getState()
        .getId());
    assertNull(flowExecution2.getKey());
    assertSame(flowExecution.getConversationScope(), flowExecution2.getConversationScope());
  }
}
TOP

Related Classes of org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactoryTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.