From 1ceedfc81827b73ad02e24abf6e211ff8e02b9f5 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Wed, 6 Aug 2014 12:46:31 +0200 Subject: [PATCH] [Major] refactored StrolchElementVisitor to return value Now instead of having visitors implement their own getters, the return type is defined as a template on the concrete implementation. To return nothing simply use the type Void and return null. --- src/main/java/li/strolch/model/OrderVisitor.java | 4 ++-- src/main/java/li/strolch/model/ResourceVisitor.java | 5 +++-- .../li/strolch/model/visitor/OrderDeepEqualsVisitor.java | 8 ++++++-- .../strolch/model/visitor/ResourceDeepEqualsVisitor.java | 9 +++++++-- .../li/strolch/model/visitor/StrolchElementVisitor.java | 4 ++-- .../java/li/strolch/model/xml/OrderToDomVisitor.java | 5 +++-- .../java/li/strolch/model/xml/OrderToSaxVisitor.java | 6 ++++-- .../li/strolch/model/xml/OrderToSaxWriterVisitor.java | 6 ++++-- .../java/li/strolch/model/xml/ResourceToDomVisitor.java | 5 +++-- .../java/li/strolch/model/xml/ResourceToSaxVisitor.java | 6 ++++-- .../li/strolch/model/xml/ResourceToSaxWriterVisitor.java | 6 ++++-- 11 files changed, 42 insertions(+), 22 deletions(-) diff --git a/src/main/java/li/strolch/model/OrderVisitor.java b/src/main/java/li/strolch/model/OrderVisitor.java index 2d3874c50..efcaf0684 100644 --- a/src/main/java/li/strolch/model/OrderVisitor.java +++ b/src/main/java/li/strolch/model/OrderVisitor.java @@ -20,8 +20,8 @@ import li.strolch.model.visitor.StrolchElementVisitor; /** * @author Robert von Burg */ -public interface OrderVisitor extends StrolchElementVisitor { +public interface OrderVisitor extends StrolchElementVisitor { @Override - public void visit(Order element); + public U visit(Order element); } diff --git a/src/main/java/li/strolch/model/ResourceVisitor.java b/src/main/java/li/strolch/model/ResourceVisitor.java index 5d3816a63..67c014fc1 100644 --- a/src/main/java/li/strolch/model/ResourceVisitor.java +++ b/src/main/java/li/strolch/model/ResourceVisitor.java @@ -19,9 +19,10 @@ import li.strolch.model.visitor.StrolchElementVisitor; /** * @author Robert von Burg + * @param */ -public interface ResourceVisitor extends StrolchElementVisitor { +public interface ResourceVisitor extends StrolchElementVisitor { @Override - public void visit(Resource element); + public U visit(Resource element); } diff --git a/src/main/java/li/strolch/model/visitor/OrderDeepEqualsVisitor.java b/src/main/java/li/strolch/model/visitor/OrderDeepEqualsVisitor.java index 497c46e29..f6c727c44 100644 --- a/src/main/java/li/strolch/model/visitor/OrderDeepEqualsVisitor.java +++ b/src/main/java/li/strolch/model/visitor/OrderDeepEqualsVisitor.java @@ -15,13 +15,16 @@ */ package li.strolch.model.visitor; +import java.util.List; + +import li.strolch.model.Locator; import li.strolch.model.Order; import li.strolch.model.OrderVisitor; /** * @author Robert von Burg */ -public class OrderDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor implements OrderVisitor { +public class OrderDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor implements OrderVisitor> { private Order srcOrder; @@ -30,7 +33,8 @@ public class OrderDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor impl } @Override - public void visit(Order dstOrder) { + public List visit(Order dstOrder) { deepEquals(this.srcOrder, dstOrder); + return getMismatchedLocators(); } } diff --git a/src/main/java/li/strolch/model/visitor/ResourceDeepEqualsVisitor.java b/src/main/java/li/strolch/model/visitor/ResourceDeepEqualsVisitor.java index d74918a6f..de4213494 100644 --- a/src/main/java/li/strolch/model/visitor/ResourceDeepEqualsVisitor.java +++ b/src/main/java/li/strolch/model/visitor/ResourceDeepEqualsVisitor.java @@ -15,13 +15,17 @@ */ package li.strolch.model.visitor; +import java.util.List; + +import li.strolch.model.Locator; import li.strolch.model.Resource; import li.strolch.model.ResourceVisitor; /** * @author Robert von Burg */ -public class ResourceDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor implements ResourceVisitor { +public class ResourceDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor implements + ResourceVisitor> { private Resource srcRes; @@ -30,7 +34,8 @@ public class ResourceDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor i } @Override - public void visit(Resource dstRes) { + public List visit(Resource dstRes) { deepEquals(this.srcRes, dstRes); + return getMismatchedLocators(); } } diff --git a/src/main/java/li/strolch/model/visitor/StrolchElementVisitor.java b/src/main/java/li/strolch/model/visitor/StrolchElementVisitor.java index 9034a0c77..30d23ba9b 100644 --- a/src/main/java/li/strolch/model/visitor/StrolchElementVisitor.java +++ b/src/main/java/li/strolch/model/visitor/StrolchElementVisitor.java @@ -20,7 +20,7 @@ import li.strolch.model.StrolchElement; /** * @author Robert von Burg */ -public interface StrolchElementVisitor extends StrolchVisitor { +public interface StrolchElementVisitor extends StrolchVisitor { - public void visit(T element); + public U visit(T element); } diff --git a/src/main/java/li/strolch/model/xml/OrderToDomVisitor.java b/src/main/java/li/strolch/model/xml/OrderToDomVisitor.java index 941f7d616..77c9995aa 100644 --- a/src/main/java/li/strolch/model/xml/OrderToDomVisitor.java +++ b/src/main/java/li/strolch/model/xml/OrderToDomVisitor.java @@ -28,7 +28,7 @@ import ch.eitchnet.utils.helper.DomUtil; /** * @author Robert von Burg */ -public class OrderToDomVisitor implements OrderVisitor { +public class OrderToDomVisitor implements OrderVisitor { private Document document; @@ -40,12 +40,13 @@ public class OrderToDomVisitor implements OrderVisitor { } @Override - public void visit(Order order) { + public Document visit(Order order) { DocumentBuilder documentBuilder = DomUtil.createDocumentBuilder(); Document document = documentBuilder.getDOMImplementation().createDocument(null, null, null); Element orderDom = order.toDom(document); document.appendChild(orderDom); this.document = document; + return this.document; } } diff --git a/src/main/java/li/strolch/model/xml/OrderToSaxVisitor.java b/src/main/java/li/strolch/model/xml/OrderToSaxVisitor.java index 428261ebe..12ea360f1 100644 --- a/src/main/java/li/strolch/model/xml/OrderToSaxVisitor.java +++ b/src/main/java/li/strolch/model/xml/OrderToSaxVisitor.java @@ -27,14 +27,14 @@ import org.xml.sax.SAXException; /** * @author Robert von Burg */ -public class OrderToSaxVisitor extends StrolchElementToDomVisitor implements OrderVisitor { +public class OrderToSaxVisitor extends StrolchElementToDomVisitor implements OrderVisitor { public OrderToSaxVisitor(ContentHandler contentHandler) { super(contentHandler); } @Override - public void visit(Order order) { + public Void visit(Order order) { try { this.contentHandler.startElement(null, null, Tags.ORDER, attributesFor(order)); @@ -46,5 +46,7 @@ public class OrderToSaxVisitor extends StrolchElementToDomVisitor implements Ord msg = MessageFormat.format(msg, order.getLocator(), e.getMessage()); throw new RuntimeException(msg, e); } + + return null; } } diff --git a/src/main/java/li/strolch/model/xml/OrderToSaxWriterVisitor.java b/src/main/java/li/strolch/model/xml/OrderToSaxWriterVisitor.java index f3e4c7cef..dc3b16d52 100644 --- a/src/main/java/li/strolch/model/xml/OrderToSaxWriterVisitor.java +++ b/src/main/java/li/strolch/model/xml/OrderToSaxWriterVisitor.java @@ -28,14 +28,14 @@ import li.strolch.model.Tags; /** * @author Robert von Burg */ -public class OrderToSaxWriterVisitor extends AbstractToSaxWriterVisitor implements OrderVisitor { +public class OrderToSaxWriterVisitor extends AbstractToSaxWriterVisitor implements OrderVisitor { public OrderToSaxWriterVisitor(XMLStreamWriter writer) { super(writer); } @Override - public void visit(Order order) { + public Void visit(Order order) { try { writeElement(Tags.ORDER, order); this.writer.flush(); @@ -44,5 +44,7 @@ public class OrderToSaxWriterVisitor extends AbstractToSaxWriterVisitor implemen msg = MessageFormat.format(msg, order.getLocator(), e.getMessage()); throw new StrolchException(msg, e); } + + return null; } } diff --git a/src/main/java/li/strolch/model/xml/ResourceToDomVisitor.java b/src/main/java/li/strolch/model/xml/ResourceToDomVisitor.java index 8585ecddf..2942d547c 100644 --- a/src/main/java/li/strolch/model/xml/ResourceToDomVisitor.java +++ b/src/main/java/li/strolch/model/xml/ResourceToDomVisitor.java @@ -28,7 +28,7 @@ import ch.eitchnet.utils.helper.DomUtil; /** * @author Robert von Burg */ -public class ResourceToDomVisitor implements ResourceVisitor { +public class ResourceToDomVisitor implements ResourceVisitor { private Document document; @@ -40,12 +40,13 @@ public class ResourceToDomVisitor implements ResourceVisitor { } @Override - public void visit(Resource resource) { + public Document visit(Resource resource) { DocumentBuilder documentBuilder = DomUtil.createDocumentBuilder(); Document document = documentBuilder.getDOMImplementation().createDocument(null, null, null); Element resourceDom = resource.toDom(document); document.appendChild(resourceDom); this.document = document; + return this.document; } } diff --git a/src/main/java/li/strolch/model/xml/ResourceToSaxVisitor.java b/src/main/java/li/strolch/model/xml/ResourceToSaxVisitor.java index 5e10dab32..73cadf82d 100644 --- a/src/main/java/li/strolch/model/xml/ResourceToSaxVisitor.java +++ b/src/main/java/li/strolch/model/xml/ResourceToSaxVisitor.java @@ -26,14 +26,14 @@ import org.xml.sax.ContentHandler; /** * @author Robert von Burg */ -public class ResourceToSaxVisitor extends StrolchElementToDomVisitor implements ResourceVisitor { +public class ResourceToSaxVisitor extends StrolchElementToDomVisitor implements ResourceVisitor { public ResourceToSaxVisitor(ContentHandler contentHandler) { super(contentHandler); } @Override - public void visit(Resource res) { + public Void visit(Resource res) { try { this.contentHandler.startElement(null, null, Tags.RESOURCE, attributesFor(res)); @@ -45,5 +45,7 @@ public class ResourceToSaxVisitor extends StrolchElementToDomVisitor implements msg = MessageFormat.format(msg, res.getLocator(), e.getMessage()); throw new RuntimeException(msg, e); } + + return null; } } diff --git a/src/main/java/li/strolch/model/xml/ResourceToSaxWriterVisitor.java b/src/main/java/li/strolch/model/xml/ResourceToSaxWriterVisitor.java index c73f5c3f7..764984a14 100644 --- a/src/main/java/li/strolch/model/xml/ResourceToSaxWriterVisitor.java +++ b/src/main/java/li/strolch/model/xml/ResourceToSaxWriterVisitor.java @@ -28,14 +28,14 @@ import li.strolch.model.Tags; /** * @author Robert von Burg */ -public class ResourceToSaxWriterVisitor extends AbstractToSaxWriterVisitor implements ResourceVisitor { +public class ResourceToSaxWriterVisitor extends AbstractToSaxWriterVisitor implements ResourceVisitor { public ResourceToSaxWriterVisitor(XMLStreamWriter writer) { super(writer); } @Override - public void visit(Resource resource) { + public Void visit(Resource resource) { try { writeElement(Tags.RESOURCE, resource); this.writer.flush(); @@ -44,5 +44,7 @@ public class ResourceToSaxWriterVisitor extends AbstractToSaxWriterVisitor imple msg = MessageFormat.format(msg, resource.getLocator(), e.getMessage()); throw new StrolchException(msg, e); } + + return null; } }