01: /*
02: * Copyright 2005-2006 The Kuali Foundation.
03: *
04: *
05: * Licensed under the Educational Community License, Version 1.0 (the "License");
06: * you may not use this file except in compliance with the License.
07: * You may obtain a copy of the License at
08: *
09: * http://www.opensource.org/licenses/ecl1.php
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17: package edu.iu.uis.eden.engine.transition;
18:
19: import edu.iu.uis.eden.engine.RouteContext;
20: import edu.iu.uis.eden.engine.node.JoinNode;
21: import edu.iu.uis.eden.engine.node.ProcessResult;
22: import edu.iu.uis.eden.engine.node.RouteNodeInstance;
23:
24: /**
25: * Handles transitions to and from {@link JoinNode} nodes in the route path.
26: *
27: * @see JoinNode
28: *
29: * @author rkirkend
30: * @author ewestfal
31: */
32: public class JoinTransitionEngine extends TransitionEngine {
33:
34: public RouteNodeInstance transitionTo(
35: RouteNodeInstance nextNodeInstance, RouteContext context) {
36: if (context.getNodeInstance().getBranch().getJoinNode() != null) {
37: nextNodeInstance = context.getNodeInstance().getBranch()
38: .getJoinNode();
39: } else {
40: getRouteHelper().getJoinEngine().createExpectedJoinState(
41: context, nextNodeInstance,
42: context.getNodeInstance());
43: }
44: getRouteHelper().getJoinEngine()
45: .addActualJoiner(nextNodeInstance,
46: context.getNodeInstance().getBranch());
47: return nextNodeInstance;
48: }
49:
50: public ProcessResult isComplete(RouteContext context)
51: throws Exception {
52: RouteNodeInstance nodeInstance = context.getNodeInstance();
53: JoinNode node = (JoinNode) getNode(nodeInstance.getRouteNode(),
54: JoinNode.class);
55: return node.process(context, getRouteHelper());
56: }
57:
58: }
|