use INodeVisitorWithResult where ever possible

Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/LayoutTestSuite.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/LayoutTestSuite.java
index c3a9e79..59cf6f5 100644
--- a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/LayoutTestSuite.java
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/LayoutTestSuite.java
@@ -27,7 +27,7 @@
 
 import org.eclipse.vex.core.internal.css.StyleSheet;
 import org.eclipse.vex.core.internal.css.StyleSheetReader;
-import org.eclipse.vex.core.internal.dom.BaseNodeVisitor;
+import org.eclipse.vex.core.internal.dom.BaseNodeVisitorWithResult;
 import org.eclipse.vex.core.internal.dom.Document;
 import org.eclipse.vex.core.internal.dom.DocumentContentModel;
 import org.eclipse.vex.core.internal.dom.DocumentReader;
@@ -168,15 +168,12 @@
 	}
 
 	private static String getPrefixedNameOfElement(final Node node) {
-		final String[] result = new String[1];
-		result[0] = "";
-		node.accept(new BaseNodeVisitor() {
+		return node.accept(new BaseNodeVisitorWithResult<String>("") {
 			@Override
-			public void visit(final Element element) {
-				result[0] = element.getPrefixedName();
+			public String visit(final Element element) {
+				return element.getPrefixedName();
 			}
 		});
-		return result[0];
 	}
 
 	private static class TestCaseBuilder extends DefaultHandler {
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/BackgroundImageProperty.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/BackgroundImageProperty.java
index 11c2a13..c88aaa2 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/BackgroundImageProperty.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/BackgroundImageProperty.java
@@ -15,7 +15,7 @@
 import org.eclipse.core.runtime.IStatus;

 import org.eclipse.core.runtime.Status;

 import org.eclipse.vex.core.internal.VEXCorePlugin;

-import org.eclipse.vex.core.internal.dom.BaseNodeVisitor;

+import org.eclipse.vex.core.internal.dom.BaseNodeVisitorWithResult;

 import org.eclipse.vex.core.internal.dom.Element;

 import org.eclipse.vex.core.internal.dom.Node;

 import org.w3c.css.sac.LexicalUnit;

@@ -39,18 +39,16 @@
 		case LexicalUnit.SAC_STRING_VALUE:

 			return lexicalUnit.getStringValue();

 		case LexicalUnit.SAC_ATTR:

-			final Object[] result = new Object[1];

-			result[0] = DEFAULT;

-			node.accept(new BaseNodeVisitor() {

+			return node.accept(new BaseNodeVisitorWithResult<Object>(DEFAULT) {

 				@Override

-				public void visit(final Element element) {

+				public Object visit(final Element element) {

 					final String attributeValue = element.getAttributeValue(lexicalUnit.getStringValue());

 					if (attributeValue != null) {

-						result[0] = attributeValue;

+						return attributeValue;

 					}

+					return DEFAULT;

 				}

 			});

-			return result[0];

 		default:

 			VEXCorePlugin

 					.getInstance()

diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/LengthProperty.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/LengthProperty.java
index 8838526..e910769 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/LengthProperty.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/LengthProperty.java
@@ -17,7 +17,7 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.vex.core.internal.VEXCorePlugin;
 import org.eclipse.vex.core.internal.core.DisplayDevice;
-import org.eclipse.vex.core.internal.dom.BaseNodeVisitor;
+import org.eclipse.vex.core.internal.dom.BaseNodeVisitorWithResult;
 import org.eclipse.vex.core.internal.dom.Element;
 import org.eclipse.vex.core.internal.dom.Node;
 import org.w3c.css.sac.CSSException;
@@ -40,12 +40,10 @@
 	public Object calculate(final LexicalUnit lu, final Styles parentStyles, final Styles styles, final Node node) {
 		final int ppi = getPpi();
 		if (isAttr(lu)) {
-			final Object[] result = new Object[0];
-			result[0] = RelativeLength.createAbsolute(0);
-			node.accept(new BaseNodeVisitor() {
+			return node.accept(new BaseNodeVisitorWithResult<Object>(RelativeLength.createAbsolute(0)) {
 				@Override
-				public void visit(final Element element) {
-					result[0] = calculate(parseAttribute(lu, element), parentStyles, styles, element);
+				public Object visit(final Element element) {
+					return calculate(parseAttribute(lu, element), parentStyles, styles, element);
 				}
 			});
 		}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/Rule.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/Rule.java
index e4a7637..0fc348a 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/Rule.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/css/Rule.java
@@ -19,7 +19,7 @@
 import java.util.List;
 import java.util.StringTokenizer;
 
-import org.eclipse.vex.core.internal.dom.BaseNodeVisitor;
+import org.eclipse.vex.core.internal.dom.BaseNodeVisitorWithResult;
 import org.eclipse.vex.core.internal.dom.Comment;
 import org.eclipse.vex.core.internal.dom.Document;
 import org.eclipse.vex.core.internal.dom.Element;
@@ -224,15 +224,12 @@
 	}
 
 	private static String getLocalNameOfElement(final Node node) {
-		final String[] result = new String[1];
-		result[0] = "";
-		node.accept(new BaseNodeVisitor() {
+		return node.accept(new BaseNodeVisitorWithResult<String>("") {
 			@Override
-			public void visit(final Element element) {
-				result[0] = element.getLocalName();
+			public String visit(final Element element) {
+				return element.getLocalName();
 			}
 		});
-		return result[0];
 	}
 
 	/**
@@ -303,14 +300,12 @@
 	}
 
 	private static String getAttributeValue(final Node node, final String localName) {
-		final String[] result = new String[1];
-		node.accept(new BaseNodeVisitor() {
+		return node.accept(new BaseNodeVisitorWithResult<String>() {
 			@Override
-			public void visit(final Element element) {
-				result[0] = element.getAttributeValue(localName);
+			public String visit(final Element element) {
+				return element.getAttributeValue(localName);
 			}
 		});
-		return result[0];
 	}
 
 	/**
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/layout/AbstractBlockBox.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/layout/AbstractBlockBox.java
index 634c48e..357acf9 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/layout/AbstractBlockBox.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/layout/AbstractBlockBox.java
@@ -26,7 +26,7 @@
 import org.eclipse.vex.core.internal.css.CSS;
 import org.eclipse.vex.core.internal.css.StyleSheet;
 import org.eclipse.vex.core.internal.css.Styles;
-import org.eclipse.vex.core.internal.dom.BaseNodeVisitor;
+import org.eclipse.vex.core.internal.dom.BaseNodeVisitorWithResult;
 import org.eclipse.vex.core.internal.dom.Comment;
 import org.eclipse.vex.core.internal.dom.Document;
 import org.eclipse.vex.core.internal.dom.Element;
@@ -533,19 +533,17 @@
 	}
 
 	protected String getSelectionFrameName(final Node node) {
-		final String[] result = new String[1];
-		node.accept(new BaseNodeVisitor() {
+		return node.accept(new BaseNodeVisitorWithResult<String>() {
 			@Override
-			public void visit(final Element element) {
-				result[0] = element.getPrefixedName();
+			public String visit(final Element element) {
+				return element.getPrefixedName();
 			}
 
 			@Override
-			public void visit(final Comment comment) {
-				result[0] = "Comment";
+			public String visit(final Comment comment) {
+				return "Comment";
 			}
 		});
-		return result[0];
 	}
 
 	/** Layout is OK */