aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/terminal/CompositeErrorMessage.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/itmill/toolkit/terminal/CompositeErrorMessage.java')
-rw-r--r--src/com/itmill/toolkit/terminal/CompositeErrorMessage.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/terminal/CompositeErrorMessage.java b/src/com/itmill/toolkit/terminal/CompositeErrorMessage.java
index c1caf6942c..f42736084f 100644
--- a/src/com/itmill/toolkit/terminal/CompositeErrorMessage.java
+++ b/src/com/itmill/toolkit/terminal/CompositeErrorMessage.java
@@ -107,6 +107,27 @@ public class CompositeErrorMessage implements ErrorMessage {
public Iterator iterator() {
return errors.iterator();
}
+
+ /**
+ * Checks recursively if one of the error messages of the composite message
+ * is given class or contains one inside further composition.
+ *
+ * @param exceptionClass Class to search for.
+ * @return true if an error message of the given class was found inside.
+ */
+ public boolean hasErrorMessageClass(Class exceptionClass) {
+ for (Iterator i = iterator(); i.hasNext();) {
+ ErrorMessage msg = (ErrorMessage) i.next();
+ if (exceptionClass.isInstance(msg))
+ return true;
+ if (msg instanceof CompositeErrorMessage) {
+ boolean recursionResult = ((CompositeErrorMessage)msg).hasErrorMessageClass(exceptionClass);
+ if (recursionResult)
+ return true; // Was found
+ }
+ }
+ return false;
+ }
/**
* @see com.itmill.toolkit.terminal.Paintable#paint(com.itmill.toolkit.terminal.PaintTarget)