All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.springframework.webflow.test.MockFlowSession Maven / Gradle / Ivy

There is a newer version: 1.0.6
Show newest version
/*
 * Copyright 2002-2006 the original author or authors.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package org.springframework.webflow.test;

import org.springframework.webflow.AttributeMap;
import org.springframework.webflow.Flow;
import org.springframework.webflow.FlowSession;
import org.springframework.webflow.FlowSessionStatus;
import org.springframework.webflow.ScopeType;
import org.springframework.webflow.State;
import org.springframework.webflow.ViewState;

/**
 * Mock implementation of the FlowSession interface.
 * 
 * @author Erwin Vervaet
 */
public class MockFlowSession implements FlowSession {

	private Flow flow;

	private State state;

	private FlowSessionStatus status = FlowSessionStatus.CREATED;

	private AttributeMap scope = new AttributeMap();

	private FlowSession parent;

	/**
	 * Creates a new mock flow session that sets a flow with id "mockFlow" as
	 * the 'active flow' in state "mockState". This session marks itself active.
	 */
	public MockFlowSession() {
		setFlow(new Flow("mockFlow"));
		State state = new ViewState(flow, "mockState");
		setStatus(FlowSessionStatus.ACTIVE);
		setState(state);
	}

	/**
	 * Creates a new mock session in a created state for the specified flow
	 * definition.
	 */
	public MockFlowSession(Flow flow) {
		setFlow(flow);
	}

	/**
	 * Creates a new mock session in a created state for the specified flow
	 * definition.
	 */
	public MockFlowSession(Flow flow, AttributeMap input) {
		setFlow(flow);
		scope.putAll(input);
	}

	public Flow getFlow() {
		return flow;
	}

	public State getState() {
		return state;
	}

	public AttributeMap getScope() {
		return scope;
	}

	public FlowSessionStatus getStatus() {
		return status;
	}

	public FlowSession getParent() {
		return parent;
	}

	public boolean isRoot() {
		return parent == null;
	}

	/**
	 * Set the flow associated with this flow session.
	 */
	public void setFlow(Flow flow) {
		this.flow = flow;
	}

	/**
	 * Set the currently active state.
	 */
	public void setState(State state) {
		this.state = state;
	}

	/**
	 * Set the status of this flow session.
	 */
	public void setStatus(FlowSessionStatus status) {
		this.status = status;
	}

	/**
	 * Set the scope data maintained by this flow session. This will be the flow
	 * scope data of the ongoing flow execution. As such, the given scope should
	 * be of type {@link ScopeType#FLOW}.
	 */
	public void setScope(AttributeMap scope) {
		this.scope = scope;
	}

	/**
	 * Set the parent flow session of this flow session in the ongoing flow
	 * execution.
	 */
	public void setParent(FlowSession parent) {
		this.parent = parent;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy