[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.
This commit is contained in:
parent
64afcb02a6
commit
1ceedfc818
|
@ -20,8 +20,8 @@ import li.strolch.model.visitor.StrolchElementVisitor;
|
|||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public interface OrderVisitor extends StrolchElementVisitor<Order> {
|
||||
public interface OrderVisitor<U> extends StrolchElementVisitor<Order, U> {
|
||||
|
||||
@Override
|
||||
public void visit(Order element);
|
||||
public U visit(Order element);
|
||||
}
|
||||
|
|
|
@ -19,9 +19,10 @@ import li.strolch.model.visitor.StrolchElementVisitor;
|
|||
|
||||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
* @param <U>
|
||||
*/
|
||||
public interface ResourceVisitor extends StrolchElementVisitor<Resource> {
|
||||
public interface ResourceVisitor<U> extends StrolchElementVisitor<Resource, U> {
|
||||
|
||||
@Override
|
||||
public void visit(Resource element);
|
||||
public U visit(Resource element);
|
||||
}
|
||||
|
|
|
@ -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 <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class OrderDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor implements OrderVisitor {
|
||||
public class OrderDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor implements OrderVisitor<List<Locator>> {
|
||||
|
||||
private Order srcOrder;
|
||||
|
||||
|
@ -30,7 +33,8 @@ public class OrderDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor impl
|
|||
}
|
||||
|
||||
@Override
|
||||
public void visit(Order dstOrder) {
|
||||
public List<Locator> visit(Order dstOrder) {
|
||||
deepEquals(this.srcOrder, dstOrder);
|
||||
return getMismatchedLocators();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class ResourceDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor implements ResourceVisitor {
|
||||
public class ResourceDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor implements
|
||||
ResourceVisitor<List<Locator>> {
|
||||
|
||||
private Resource srcRes;
|
||||
|
||||
|
@ -30,7 +34,8 @@ public class ResourceDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor i
|
|||
}
|
||||
|
||||
@Override
|
||||
public void visit(Resource dstRes) {
|
||||
public List<Locator> visit(Resource dstRes) {
|
||||
deepEquals(this.srcRes, dstRes);
|
||||
return getMismatchedLocators();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ import li.strolch.model.StrolchElement;
|
|||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public interface StrolchElementVisitor<T extends StrolchElement> extends StrolchVisitor {
|
||||
public interface StrolchElementVisitor<T extends StrolchElement, U> extends StrolchVisitor {
|
||||
|
||||
public void visit(T element);
|
||||
public U visit(T element);
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ import ch.eitchnet.utils.helper.DomUtil;
|
|||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class OrderToDomVisitor implements OrderVisitor {
|
||||
public class OrderToDomVisitor implements OrderVisitor<Document> {
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,14 +27,14 @@ import org.xml.sax.SAXException;
|
|||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class OrderToSaxVisitor extends StrolchElementToDomVisitor implements OrderVisitor {
|
||||
public class OrderToSaxVisitor extends StrolchElementToDomVisitor implements OrderVisitor<Void> {
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,14 +28,14 @@ import li.strolch.model.Tags;
|
|||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class OrderToSaxWriterVisitor extends AbstractToSaxWriterVisitor implements OrderVisitor {
|
||||
public class OrderToSaxWriterVisitor extends AbstractToSaxWriterVisitor implements OrderVisitor<Void> {
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ import ch.eitchnet.utils.helper.DomUtil;
|
|||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class ResourceToDomVisitor implements ResourceVisitor {
|
||||
public class ResourceToDomVisitor implements ResourceVisitor<Document> {
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,14 +26,14 @@ import org.xml.sax.ContentHandler;
|
|||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class ResourceToSaxVisitor extends StrolchElementToDomVisitor implements ResourceVisitor {
|
||||
public class ResourceToSaxVisitor extends StrolchElementToDomVisitor implements ResourceVisitor<Void> {
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,14 +28,14 @@ import li.strolch.model.Tags;
|
|||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class ResourceToSaxWriterVisitor extends AbstractToSaxWriterVisitor implements ResourceVisitor {
|
||||
public class ResourceToSaxWriterVisitor extends AbstractToSaxWriterVisitor implements ResourceVisitor<Void> {
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue