DATACMNS-478 - Allow build to be run on Java 8.

Introduced XmlUnit to make sure we can test XML rendering Java 6, 7 and 8.
This commit is contained in:
Oliver Gierke
2014-03-27 17:05:08 +01:00
parent fa41724bfe
commit 5391547eac
2 changed files with 40 additions and 28 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012 the original author or authors.
* Copyright 2012-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@ package org.springframework.data.domain.jaxb;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.List;
@@ -33,7 +34,7 @@ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.junit.After;
import org.custommonkey.xmlunit.Diff;
import org.junit.Before;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
@@ -57,11 +58,11 @@ public class SpringDataJaxbUnitTests {
Unmarshaller unmarshaller;
Sort sort = new Sort(Direction.ASC, "firstname", "lastname");
Pageable reference = new PageRequest(2, 15, sort);
Pageable pageable = new PageRequest(2, 15, sort);
Resource resource = new ClassPathResource("pageable.xml", this.getClass());
Resource schemaFile = new ClassPathResource("spring-data-jaxb.xsd", this.getClass());
Scanner scanner;
String reference = readFile(resource);
@Before
public void setUp() throws Exception {
@@ -72,13 +73,6 @@ public class SpringDataJaxbUnitTests {
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
unmarshaller = context.createUnmarshaller();
scanner = new Scanner(resource.getFile());
}
@After
public void tearDown() {
scanner.close();
}
@Test
@@ -86,15 +80,12 @@ public class SpringDataJaxbUnitTests {
StringWriter writer = new StringWriter();
Wrapper wrapper = new Wrapper();
wrapper.pageable = reference;
wrapper.pageable = pageable;
wrapper.sort = sort;
wrapper.pageableWithoutSort = new PageRequest(10, 20);
marshaller.marshal(wrapper, writer);
for (String line : writer.toString().split("\n")) {
assertThat(scanner.hasNextLine(), is(true));
assertThat(line, is(scanner.nextLine()));
}
assertThat(new Diff(reference, writer.toString()).similar(), is(true));
}
@Test
@@ -103,7 +94,7 @@ public class SpringDataJaxbUnitTests {
Object result = unmarshaller.unmarshal(resource.getFile());
assertThat(result, is(instanceOf(Wrapper.class)));
assertThat(((Wrapper) result).pageable, is(reference));
assertThat(((Wrapper) result).pageable, is(pageable));
assertThat(((Wrapper) result).sort, is(sort));
}
@@ -119,18 +110,35 @@ public class SpringDataJaxbUnitTests {
marshaller.marshal(wrapper, new StringWriter());
}
private static String readFile(Resource resource) {
try {
Scanner scanner = new Scanner(resource.getInputStream());
StringBuilder builder = new StringBuilder();
while (scanner.hasNextLine()) {
builder.append(scanner.nextLine()).append("\n");
}
scanner.close();
return builder.toString();
} catch (IOException o_O) {
throw new RuntimeException(o_O);
}
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
static class Wrapper {
@XmlElement(name = "page-request", namespace = SpringDataJaxb.NAMESPACE)
Pageable pageable;
@XmlElement(name = "page-request", namespace = SpringDataJaxb.NAMESPACE) Pageable pageable;
@XmlElement(name = "page-request-without-sort", namespace = SpringDataJaxb.NAMESPACE)
Pageable pageableWithoutSort;
@XmlElement(name = "page-request-without-sort", namespace = SpringDataJaxb.NAMESPACE) Pageable pageableWithoutSort;
@XmlElement(name = "sort", namespace = SpringDataJaxb.NAMESPACE)
Sort sort;
@XmlElement(name = "sort", namespace = SpringDataJaxb.NAMESPACE) Sort sort;
}
@XmlRootElement(name = "wrapper", namespace = SpringDataJaxb.NAMESPACE)
@@ -138,16 +146,13 @@ public class SpringDataJaxbUnitTests {
Page<Content> page;
@XmlElement(name = "page-with-links")
@XmlJavaTypeAdapter(LinkedPageAdapter.class)
Page<Content> pageWithLinks;
@XmlElement(name = "page-with-links") @XmlJavaTypeAdapter(LinkedPageAdapter.class) Page<Content> pageWithLinks;
}
@XmlRootElement
static class Content {
@XmlAttribute
String name;
@XmlAttribute String name;
}
static class LinkedPageAdapter extends PageAdapter {