small changes
[mir.git] / source / mir / producer / EvaluatedAssignmentProducerNode.java
1 package mir.producer;
2
3 import java.util.*;
4 import java.io.*;
5 import org.apache.struts.util.MessageResources;
6 import mir.util.*;
7
8 public class EvaluatedAssignmentProducerNode extends ProducerNodeDecorator {
9   private String key;
10   private String bundleIdentifier;
11   private String value;
12
13   public EvaluatedAssignmentProducerNode(String aKey, String aValue, ProducerNode aSubNode) {
14     super(aSubNode);
15
16     key = aKey;
17     value = aValue;
18   }
19
20   public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure {
21     Object savedValue;
22
23     savedValue = aValueMap.get(key);
24     try {
25       try {
26         aValueMap.put(key, ParameterExpander.expandExpression( aValueMap, value ));
27
28         super.produce(aValueMap, aVerb, aLogger);
29       }
30       catch (Throwable t) {
31         throw new ProducerFailure(t.getMessage(), t);
32       }
33     }
34     finally {
35       aValueMap.put(key,savedValue);
36     }
37   };
38
39 }