1 15 package org.apache.tapestry.record; 16 17 import java.util.ArrayList ; 18 import java.util.Collection ; 19 import java.util.HashMap ; 20 import java.util.Iterator ; 21 import java.util.List ; 22 import java.util.Map ; 23 24 import org.apache.hivemind.ApplicationRuntimeException; 25 import org.apache.tapestry.IRequestCycle; 26 import org.apache.tapestry.engine.ServiceEncoding; 27 28 36 public class PropertyPersistenceStrategySourceImpl implements PropertyPersistenceStrategySource 37 { 38 private List _contributions; 40 41 private Map _strategies = new HashMap (); 42 43 public void initializeService() 44 { 45 Iterator i = _contributions.iterator(); 46 while (i.hasNext()) 47 { 48 PropertyPersistenceStrategyContribution c = (PropertyPersistenceStrategyContribution) i 49 .next(); 50 51 _strategies.put(c.getName(), c.getStrategy()); 52 } 53 } 54 55 public PropertyPersistenceStrategy getStrategy(String name) 56 { 57 if (!_strategies.containsKey(name)) 58 throw new ApplicationRuntimeException(RecordMessages.unknownPersistenceStrategy(name)); 59 60 return (PropertyPersistenceStrategy) _strategies.get(name); 61 } 62 63 public Collection getAllStoredChanges(String pageName, IRequestCycle cycle) 64 { 65 Collection result = new ArrayList (); 66 67 Iterator i = _strategies.values().iterator(); 68 69 while (i.hasNext()) 70 { 71 PropertyPersistenceStrategy s = (PropertyPersistenceStrategy) i.next(); 72 73 result.addAll(s.getStoredChanges(pageName, cycle)); 74 } 75 76 return result; 77 } 78 79 public void discardAllStoredChanged(String pageName, IRequestCycle cycle) 80 { 81 Iterator i = _strategies.values().iterator(); 82 83 while (i.hasNext()) 84 { 85 PropertyPersistenceStrategy s = (PropertyPersistenceStrategy) i.next(); 86 87 s.discardStoredChanges(pageName, cycle); 88 } 89 } 90 91 public void addParametersForPersistentProperties(ServiceEncoding encoding, IRequestCycle cycle) 92 { 93 Iterator i = _strategies.values().iterator(); 94 95 while (i.hasNext()) 96 { 97 PropertyPersistenceStrategy s = (PropertyPersistenceStrategy) i.next(); 98 99 s.addParametersForPersistentProperties(encoding, cycle); 100 } 101 } 102 103 public void setContributions(List contributions) 104 { 105 _contributions = contributions; 106 } 107 } | Popular Tags |