[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>
|
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||||
*/
|
*/
|
||||||
public interface OrderVisitor extends StrolchElementVisitor<Order> {
|
public interface OrderVisitor<U> extends StrolchElementVisitor<Order, U> {
|
||||||
|
|
||||||
@Override
|
@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>
|
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||||
|
* @param <U>
|
||||||
*/
|
*/
|
||||||
public interface ResourceVisitor extends StrolchElementVisitor<Resource> {
|
public interface ResourceVisitor<U> extends StrolchElementVisitor<Resource, U> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(Resource element);
|
public U visit(Resource element);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,13 +15,16 @@
|
||||||
*/
|
*/
|
||||||
package li.strolch.model.visitor;
|
package li.strolch.model.visitor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import li.strolch.model.Locator;
|
||||||
import li.strolch.model.Order;
|
import li.strolch.model.Order;
|
||||||
import li.strolch.model.OrderVisitor;
|
import li.strolch.model.OrderVisitor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
* @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;
|
private Order srcOrder;
|
||||||
|
|
||||||
|
@ -30,7 +33,8 @@ public class OrderDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor impl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(Order dstOrder) {
|
public List<Locator> visit(Order dstOrder) {
|
||||||
deepEquals(this.srcOrder, dstOrder);
|
deepEquals(this.srcOrder, dstOrder);
|
||||||
|
return getMismatchedLocators();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,13 +15,17 @@
|
||||||
*/
|
*/
|
||||||
package li.strolch.model.visitor;
|
package li.strolch.model.visitor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import li.strolch.model.Locator;
|
||||||
import li.strolch.model.Resource;
|
import li.strolch.model.Resource;
|
||||||
import li.strolch.model.ResourceVisitor;
|
import li.strolch.model.ResourceVisitor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
* @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;
|
private Resource srcRes;
|
||||||
|
|
||||||
|
@ -30,7 +34,8 @@ public class ResourceDeepEqualsVisitor extends StrolchElementDeepEqualsVisitor i
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(Resource dstRes) {
|
public List<Locator> visit(Resource dstRes) {
|
||||||
deepEquals(this.srcRes, dstRes);
|
deepEquals(this.srcRes, dstRes);
|
||||||
|
return getMismatchedLocators();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ import li.strolch.model.StrolchElement;
|
||||||
/**
|
/**
|
||||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
* @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>
|
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||||
*/
|
*/
|
||||||
public class OrderToDomVisitor implements OrderVisitor {
|
public class OrderToDomVisitor implements OrderVisitor<Document> {
|
||||||
|
|
||||||
private Document document;
|
private Document document;
|
||||||
|
|
||||||
|
@ -40,12 +40,13 @@ public class OrderToDomVisitor implements OrderVisitor {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(Order order) {
|
public Document visit(Order order) {
|
||||||
DocumentBuilder documentBuilder = DomUtil.createDocumentBuilder();
|
DocumentBuilder documentBuilder = DomUtil.createDocumentBuilder();
|
||||||
Document document = documentBuilder.getDOMImplementation().createDocument(null, null, null);
|
Document document = documentBuilder.getDOMImplementation().createDocument(null, null, null);
|
||||||
|
|
||||||
Element orderDom = order.toDom(document);
|
Element orderDom = order.toDom(document);
|
||||||
document.appendChild(orderDom);
|
document.appendChild(orderDom);
|
||||||
this.document = document;
|
this.document = document;
|
||||||
|
return this.document;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,14 +27,14 @@ import org.xml.sax.SAXException;
|
||||||
/**
|
/**
|
||||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
* @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) {
|
public OrderToSaxVisitor(ContentHandler contentHandler) {
|
||||||
super(contentHandler);
|
super(contentHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(Order order) {
|
public Void visit(Order order) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
this.contentHandler.startElement(null, null, Tags.ORDER, attributesFor(order));
|
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());
|
msg = MessageFormat.format(msg, order.getLocator(), e.getMessage());
|
||||||
throw new RuntimeException(msg, e);
|
throw new RuntimeException(msg, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,14 +28,14 @@ import li.strolch.model.Tags;
|
||||||
/**
|
/**
|
||||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
* @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) {
|
public OrderToSaxWriterVisitor(XMLStreamWriter writer) {
|
||||||
super(writer);
|
super(writer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(Order order) {
|
public Void visit(Order order) {
|
||||||
try {
|
try {
|
||||||
writeElement(Tags.ORDER, order);
|
writeElement(Tags.ORDER, order);
|
||||||
this.writer.flush();
|
this.writer.flush();
|
||||||
|
@ -44,5 +44,7 @@ public class OrderToSaxWriterVisitor extends AbstractToSaxWriterVisitor implemen
|
||||||
msg = MessageFormat.format(msg, order.getLocator(), e.getMessage());
|
msg = MessageFormat.format(msg, order.getLocator(), e.getMessage());
|
||||||
throw new StrolchException(msg, e);
|
throw new StrolchException(msg, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ import ch.eitchnet.utils.helper.DomUtil;
|
||||||
/**
|
/**
|
||||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||||
*/
|
*/
|
||||||
public class ResourceToDomVisitor implements ResourceVisitor {
|
public class ResourceToDomVisitor implements ResourceVisitor<Document> {
|
||||||
|
|
||||||
private Document document;
|
private Document document;
|
||||||
|
|
||||||
|
@ -40,12 +40,13 @@ public class ResourceToDomVisitor implements ResourceVisitor {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(Resource resource) {
|
public Document visit(Resource resource) {
|
||||||
DocumentBuilder documentBuilder = DomUtil.createDocumentBuilder();
|
DocumentBuilder documentBuilder = DomUtil.createDocumentBuilder();
|
||||||
Document document = documentBuilder.getDOMImplementation().createDocument(null, null, null);
|
Document document = documentBuilder.getDOMImplementation().createDocument(null, null, null);
|
||||||
|
|
||||||
Element resourceDom = resource.toDom(document);
|
Element resourceDom = resource.toDom(document);
|
||||||
document.appendChild(resourceDom);
|
document.appendChild(resourceDom);
|
||||||
this.document = document;
|
this.document = document;
|
||||||
|
return this.document;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,14 +26,14 @@ import org.xml.sax.ContentHandler;
|
||||||
/**
|
/**
|
||||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
* @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) {
|
public ResourceToSaxVisitor(ContentHandler contentHandler) {
|
||||||
super(contentHandler);
|
super(contentHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(Resource res) {
|
public Void visit(Resource res) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
this.contentHandler.startElement(null, null, Tags.RESOURCE, attributesFor(res));
|
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());
|
msg = MessageFormat.format(msg, res.getLocator(), e.getMessage());
|
||||||
throw new RuntimeException(msg, e);
|
throw new RuntimeException(msg, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,14 +28,14 @@ import li.strolch.model.Tags;
|
||||||
/**
|
/**
|
||||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
* @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) {
|
public ResourceToSaxWriterVisitor(XMLStreamWriter writer) {
|
||||||
super(writer);
|
super(writer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(Resource resource) {
|
public Void visit(Resource resource) {
|
||||||
try {
|
try {
|
||||||
writeElement(Tags.RESOURCE, resource);
|
writeElement(Tags.RESOURCE, resource);
|
||||||
this.writer.flush();
|
this.writer.flush();
|
||||||
|
@ -44,5 +44,7 @@ public class ResourceToSaxWriterVisitor extends AbstractToSaxWriterVisitor imple
|
||||||
msg = MessageFormat.format(msg, resource.getLocator(), e.getMessage());
|
msg = MessageFormat.format(msg, resource.getLocator(), e.getMessage());
|
||||||
throw new StrolchException(msg, e);
|
throw new StrolchException(msg, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue