1 16 package org.springframework.webflow.execution.repository.continuation; 17 18 import java.io.Serializable ; 19 import java.util.HashMap ; 20 import java.util.LinkedList ; 21 import java.util.Map ; 22 23 30 class FlowExecutionContinuationGroup implements Serializable { 31 32 36 private Map continuations = new HashMap (); 37 38 43 private LinkedList continuationIds = new LinkedList (); 44 45 48 private int maxContinuations = -1; 49 50 55 public FlowExecutionContinuationGroup(int maxContinuations) { 56 this.maxContinuations = maxContinuations; 57 } 58 59 62 public int getContinuationCount() { 63 return continuationIds.size(); 64 } 65 66 74 public FlowExecutionContinuation get(Serializable id) throws ContinuationNotFoundException { 75 FlowExecutionContinuation continuation = (FlowExecutionContinuation)continuations.get(id); 76 if (continuation == null) { 77 throw new ContinuationNotFoundException(id); 78 } 79 return continuation; 80 } 81 82 87 public void add(Serializable continuationId, FlowExecutionContinuation continuation) { 88 continuations.put(continuationId, continuation); 89 continuationIds.add(continuationId); 90 if (maxExceeded()) { 93 removeOldestContinuation(); 94 } 95 } 96 97 100 private boolean maxExceeded() { 101 return maxContinuations > 0 && continuationIds.size() > maxContinuations; 102 } 103 104 107 private void removeOldestContinuation() { 108 continuations.remove(continuationIds.removeFirst()); 109 } 110 } | Popular Tags |