Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/templating/StackFrames.java @ 5628:142ed3c62765
Handle NULL elements in datacage xml
Patch provided by Sascha Teichmann
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Wed, 10 Apr 2013 10:59:29 +0200 |
parents | 2970046fcdca |
children |
comparison
equal
deleted
inserted
replaced
5627:2d9eb188fa51 | 5628:142ed3c62765 |
---|---|
20 */ | 20 */ |
21 public class StackFrames | 21 public class StackFrames |
22 implements XPathVariableResolver | 22 implements XPathVariableResolver |
23 { | 23 { |
24 private static Logger log = Logger.getLogger(StackFrames.class); | 24 private static Logger log = Logger.getLogger(StackFrames.class); |
25 | |
26 public static final Object NULL = new Object(); | |
25 | 27 |
26 /** The frames (used like a stack). */ | 28 /** The frames (used like a stack). */ |
27 protected List<Map<String, Object>> frames; | 29 protected List<Map<String, Object>> frames; |
28 | 30 |
29 public StackFrames() { | 31 public StackFrames() { |
113 } | 115 } |
114 | 116 |
115 return def; | 117 return def; |
116 } | 118 } |
117 | 119 |
120 public Object getNull(String key) { | |
121 return getNull(key, null); | |
122 } | |
123 | |
124 public Object getNull(String key, Object def) { | |
125 | |
126 key = key.toUpperCase(); | |
127 | |
128 for (int i = frames.size()-1; i >= 0; --i) { | |
129 Map<String, Object> frame = frames.get(i); | |
130 if (frame.containsKey(key)) { | |
131 Object value = frame.get(key); | |
132 return value != null ? value : NULL; | |
133 } | |
134 } | |
135 | |
136 return def; | |
137 } | |
138 | |
118 @Override | 139 @Override |
119 public Object resolveVariable(QName variableName) { | 140 public Object resolveVariable(QName variableName) { |
120 if (log.isDebugEnabled()) { | 141 if (log.isDebugEnabled()) { |
121 log.debug("resolve var: " + variableName); | 142 log.debug("resolve var: " + variableName); |
122 } | 143 } |
123 return get(variableName.getLocalPart()); | 144 |
145 return getNull(variableName.getLocalPart()); | |
124 } | 146 } |
125 | 147 |
126 public String dump() { | 148 public String dump() { |
127 StringBuilder sb = new StringBuilder("["); | 149 StringBuilder sb = new StringBuilder("["); |
128 Set<String> already = new HashSet<String>(); | 150 Set<String> already = new HashSet<String>(); |