mirror of
https://github.com/itplr-kosit/validator.git
synced 2026-05-25 16:55:39 +00:00
Refactor: don't reuse JAXB objects for internal configuration; create a Configuration interface.
This commit is contained in:
parent
c8b3c1977c
commit
7a86f049ac
30 changed files with 871 additions and 517 deletions
|
|
@ -42,7 +42,7 @@ import net.sf.saxon.s9api.XPathExecutable;
|
|||
import net.sf.saxon.s9api.XsltExecutable;
|
||||
|
||||
/**
|
||||
* Testet das ContentRepository.
|
||||
* Testet das repository.
|
||||
*
|
||||
* @author Andreas Penski
|
||||
*/
|
||||
|
|
@ -60,7 +60,7 @@ public class ContentRepositoryTest {
|
|||
|
||||
@Test
|
||||
public void testCreateSchema() throws MalformedURLException {
|
||||
final Schema schema = ContentRepository.createSchema(Helper.ASSERTION_SCHEMA.toURL());
|
||||
final Schema schema = this.repository.createSchema(Helper.ASSERTION_SCHEMA.toURL());
|
||||
assertThat(schema).isNotNull();
|
||||
}
|
||||
|
||||
|
|
@ -73,7 +73,7 @@ public class ContentRepositoryTest {
|
|||
@Test
|
||||
public void testCreateSchemaNotExisting() throws Exception {
|
||||
this.exception.expect(IllegalStateException.class);
|
||||
ContentRepository.createSchema(Simple.NOT_EXISTING.toURL());
|
||||
this.repository.createSchema(Simple.NOT_EXISTING.toURL());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -122,16 +122,26 @@ public class ContentRepositoryTest {
|
|||
@Test
|
||||
public void testLoadSchema() {
|
||||
final URL main = RelativeUriResolverTest.class.getClassLoader().getResource("loading/main.xsd");
|
||||
final Schema schema = ContentRepository.createSchema(main, new ClassPathResourceResolver("/loading"));
|
||||
final Schema schema = this.repository.createSchema(main, new ClassPathResourceResolver("/loading"));
|
||||
assertThat(schema).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLoadSchemaPackaged() throws URISyntaxException {
|
||||
final URL main = RelativeUriResolverTest.class.getClassLoader().getResource("packaged/main.xsd");
|
||||
final Schema schema = ContentRepository.createSchema(main,
|
||||
final Schema schema = this.repository.createSchema(main,
|
||||
new ClassPathResourceResolver(RelativeUriResolverTest.class.getClassLoader().getResource("packaged/").toURI()));
|
||||
assertThat(schema).isNotNull();
|
||||
}
|
||||
|
||||
// @Test
|
||||
// public void loadFromJar() throws URISyntaxException {
|
||||
// this.content = new ContentRepository(ObjectFactory.createProcessor(), Helper.JAR_REPOSITORY.toURI());
|
||||
// this.repository = new ScenarioRepository(this.content);
|
||||
// final CheckConfiguration conf = new CheckConfiguration(
|
||||
// ScenarioRepository.class.getClassLoader().getResource("xrechnung/scenarios.xml").toURI());
|
||||
// ScenarioRepository.initialize(conf);
|
||||
// assertThat(this.repository.getScenarios()).isNotNull();
|
||||
// }
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ public class ConversionServiceTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testUnmarshal() throws URISyntaxException {
|
||||
public void testUnmarshal() {
|
||||
final Scenarios s = this.service.readXml(Simple.SCENARIOS, Scenarios.class);
|
||||
assertThat(s).isNotNull();
|
||||
assertThat(s.getName()).isEqualToIgnoringCase("HTML-TestSuite");
|
||||
|
|
@ -80,7 +80,7 @@ public class ConversionServiceTest {
|
|||
|
||||
@Test
|
||||
public void testUnmarshalWithSchema() {
|
||||
final Scenarios s = this.service.readXml(Simple.SCENARIOS, Scenarios.class, ContentRepository.createSchema(SCHEMA));
|
||||
final Scenarios s = this.service.readXml(Simple.SCENARIOS, Scenarios.class, this.repository.createSchema(SCHEMA));
|
||||
assertThat(s).isNotNull();
|
||||
assertThat(s.getName()).isEqualToIgnoringCase("HTML-TestSuite");
|
||||
}
|
||||
|
|
@ -88,13 +88,13 @@ public class ConversionServiceTest {
|
|||
@Test
|
||||
public void testUnmarshalInvalidXml() {
|
||||
this.exception.expect(ConversionService.ConversionExeption.class);
|
||||
this.service.readXml(Invalid.SCENARIOS, Scenarios.class, ContentRepository.createSchema(SCHEMA));
|
||||
this.service.readXml(Invalid.SCENARIOS, Scenarios.class, this.repository.createSchema(SCHEMA));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnmarshalIllFormed() {
|
||||
this.exception.expect(ConversionService.ConversionExeption.class);
|
||||
this.service.readXml(Invalid.SCENARIOS_ILLFORMED, Scenarios.class, ContentRepository.createSchema(SCHEMA));
|
||||
this.service.readXml(Invalid.SCENARIOS_ILLFORMED, Scenarios.class, this.repository.createSchema(SCHEMA));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -24,20 +24,25 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
|
||||
import de.kosit.validationtool.api.CheckConfiguration;
|
||||
import lombok.Data;
|
||||
|
||||
import de.kosit.validationtool.api.Configuration;
|
||||
import de.kosit.validationtool.impl.Helper.Simple;
|
||||
import de.kosit.validationtool.impl.model.Result;
|
||||
import de.kosit.validationtool.impl.tasks.DocumentParseAction;
|
||||
import de.kosit.validationtool.model.scenarios.ScenarioType;
|
||||
import de.kosit.validationtool.model.scenarios.Scenarios;
|
||||
|
||||
import net.sf.saxon.s9api.Processor;
|
||||
import net.sf.saxon.s9api.XPathExecutable;
|
||||
import net.sf.saxon.s9api.XdmNode;
|
||||
|
||||
/**
|
||||
|
|
@ -48,57 +53,84 @@ import net.sf.saxon.s9api.XdmNode;
|
|||
|
||||
public class ScenarioRepositoryTest {
|
||||
|
||||
@Data
|
||||
private static class DummyConfiguration implements Configuration {
|
||||
|
||||
private List<Scenario> scenarios;
|
||||
|
||||
private Scenario fallbackScenario;
|
||||
|
||||
private String author;
|
||||
|
||||
private String name;
|
||||
|
||||
private String date;
|
||||
|
||||
private Processor processor;
|
||||
|
||||
private ContentRepository contentRepository;
|
||||
|
||||
@Override
|
||||
public void build() {
|
||||
// nothing
|
||||
}
|
||||
}
|
||||
|
||||
@Rule
|
||||
public ExpectedException expectedException = ExpectedException.none();
|
||||
|
||||
ContentRepository content;
|
||||
|
||||
private ScenarioRepository repository;
|
||||
|
||||
private DummyConfiguration configInstance;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
this.content = new ContentRepository(ObjectFactory.createProcessor(), Simple.REPOSITORY);
|
||||
final Scenarios def = new Scenarios();
|
||||
final ScenarioType t = new ScenarioType();
|
||||
t.setMatch("//*:name");
|
||||
t.setName("Test");
|
||||
t.initialize(this.content, true);
|
||||
def.getScenario().add(t);
|
||||
this.repository = new ScenarioRepository(this.content);
|
||||
this.repository.initialize(def);
|
||||
final Scenario s = createScenario();
|
||||
|
||||
this.configInstance = new DummyConfiguration();
|
||||
this.configInstance.setScenarios(new ArrayList<>());
|
||||
this.configInstance.getScenarios().add(s);
|
||||
this.repository = new ScenarioRepository(this.configInstance);
|
||||
}
|
||||
|
||||
private static Scenario createScenario() {
|
||||
final Scenario s = new Scenario(new ScenarioType());
|
||||
s.setMatchExecutable(createXpath("//*:name"));
|
||||
return s;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHappyCase() throws Exception {
|
||||
final Result<ScenarioType, String> scenario = this.repository.selectScenario(load(Simple.SCENARIOS));
|
||||
final Result<Scenario, String> scenario = this.repository.selectScenario(load(Simple.SCENARIOS));
|
||||
assertThat(scenario).isNotNull();
|
||||
assertThat(scenario.isValid()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNonMatch() throws Exception {
|
||||
this.repository.getScenarios().getScenario().clear();
|
||||
final ScenarioType fallback = new ScenarioType();
|
||||
fallback.setName("fallback");
|
||||
this.repository.setFallbackScenario(fallback);
|
||||
final Result<ScenarioType, String> scenario = this.repository.selectScenario(load(Simple.SCENARIOS));
|
||||
this.configInstance.setScenarios(new ArrayList<>());
|
||||
final Scenario fallback = createFallback();
|
||||
this.configInstance.setFallbackScenario(fallback);
|
||||
final Result<Scenario, String> scenario = this.repository.selectScenario(load(Simple.SCENARIOS));
|
||||
assertThat(scenario).isNotNull();
|
||||
assertThat(scenario.isValid()).isFalse();
|
||||
assertThat(scenario.getObject().getName()).isEqualTo("fallback");
|
||||
|
||||
}
|
||||
|
||||
private static Scenario createFallback() {
|
||||
final ScenarioType t = new ScenarioType();
|
||||
t.setName("fallback");
|
||||
final Scenario fallback = new Scenario(t);
|
||||
fallback.setFallback(true);
|
||||
return fallback;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMultiMatch() throws Exception {
|
||||
final ScenarioType t = new ScenarioType();
|
||||
t.setMatch("//*:name");
|
||||
t.setName("Test");
|
||||
t.initialize(this.content, true);
|
||||
this.repository.getScenarios().getScenario().add(t);
|
||||
final ScenarioType fallback = new ScenarioType();
|
||||
fallback.setName("fallback");
|
||||
this.repository.setFallbackScenario(fallback);
|
||||
final Result<ScenarioType, String> scenario = this.repository.selectScenario(load(Simple.SCENARIOS));
|
||||
this.configInstance.getScenarios().add(createScenario());
|
||||
this.configInstance.setFallbackScenario(createFallback());
|
||||
final Result<Scenario, String> scenario = this.repository.selectScenario(load(Simple.SCENARIOS));
|
||||
assertThat(scenario).isNotNull();
|
||||
assertThat(scenario.isValid()).isFalse();
|
||||
assertThat(scenario.getObject().getName()).isEqualTo("fallback");
|
||||
|
|
@ -109,14 +141,7 @@ public class ScenarioRepositoryTest {
|
|||
return DocumentParseAction.parseDocument(read(uri.toURL())).getObject();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loadFromJar() throws URISyntaxException {
|
||||
this.content = new ContentRepository(ObjectFactory.createProcessor(), Helper.JAR_REPOSITORY.toURI());
|
||||
this.repository = new ScenarioRepository(this.content);
|
||||
final CheckConfiguration conf = new CheckConfiguration(
|
||||
ScenarioRepository.class.getClassLoader().getResource("xrechnung/scenarios.xml").toURI());
|
||||
this.repository.initialize(conf);
|
||||
assertThat(this.repository.getScenarios()).isNotNull();
|
||||
private static XPathExecutable createXpath(final String expression) {
|
||||
return new ContentRepository(ObjectFactory.createProcessor(), null).createXPath(expression, new HashMap<>());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import org.junit.Rule;
|
|||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
|
||||
import de.kosit.validationtool.impl.Helper.Simple;
|
||||
import de.kosit.validationtool.model.scenarios.Scenarios;
|
||||
|
||||
/**
|
||||
|
|
@ -51,33 +52,35 @@ public class VersioningTest {
|
|||
|
||||
private ConversionService service;
|
||||
|
||||
private ContentRepository repository;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
this.repository = new ContentRepository(ObjectFactory.createProcessor(), Simple.REPOSITORY);
|
||||
this.service = new ConversionService();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBase() throws URISyntaxException {
|
||||
final Scenarios result = this.service.readXml(BASE.toURI(), Scenarios.class, ContentRepository.getScenarioSchema());
|
||||
final Scenarios result = this.service.readXml(BASE.toURI(), Scenarios.class, this.repository.getScenarioSchema());
|
||||
assertThat(result).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFrameworkIncrement() throws URISyntaxException {
|
||||
final Scenarios result = this.service.readXml(INCREMENT.toURI(), Scenarios.class, ContentRepository.getScenarioSchema());
|
||||
final Scenarios result = this.service.readXml(INCREMENT.toURI(), Scenarios.class, this.repository.getScenarioSchema());
|
||||
assertThat(result).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNewFeature() throws URISyntaxException {
|
||||
this.exception.expect(ConversionService.ConversionExeption.class);
|
||||
this.service.readXml(NEW_FEATURE.toURI(), Scenarios.class, ContentRepository.getScenarioSchema());
|
||||
this.service.readXml(NEW_FEATURE.toURI(), Scenarios.class, this.repository.getScenarioSchema());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNewVersion() throws URISyntaxException {
|
||||
this.exception.expect(ConversionService.ConversionExeption.class);
|
||||
this.service.readXml(NEW_VERSION.toURI(), Scenarios.class, ContentRepository.getScenarioSchema());
|
||||
this.service.readXml(NEW_VERSION.toURI(), Scenarios.class, this.repository.getScenarioSchema());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,12 +4,17 @@ import static de.kosit.validationtool.impl.tasks.TestBagBuilder.createBag;
|
|||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import de.kosit.validationtool.api.AcceptRecommendation;
|
||||
import de.kosit.validationtool.impl.ContentRepository;
|
||||
import de.kosit.validationtool.impl.ObjectFactory;
|
||||
import de.kosit.validationtool.impl.tasks.CheckAction.Bag;
|
||||
|
||||
import net.sf.saxon.s9api.XPathExecutable;
|
||||
|
||||
/**
|
||||
* Tests the 'acceptMatch' functionality.
|
||||
*
|
||||
|
|
@ -44,7 +49,7 @@ public class ComputeAcceptanceActionTest {
|
|||
@Test
|
||||
public void testValidAcceptMatch() {
|
||||
final Bag bag = createBag(true, true);
|
||||
bag.getScenarioSelectionResult().getObject().setAcceptMatch("count(//doesnotExist) = 0");
|
||||
bag.getScenarioSelectionResult().getObject().setAcceptExecutable(createXpath("count(//doesnotExist) = 0"));
|
||||
this.action.check(bag);
|
||||
assertThat(bag.getAcceptStatus()).isEqualTo(AcceptRecommendation.ACCEPTABLE);
|
||||
}
|
||||
|
|
@ -52,7 +57,7 @@ public class ComputeAcceptanceActionTest {
|
|||
@Test
|
||||
public void testAcceptMatchNotSatisfied() {
|
||||
final Bag bag = createBag(true, true);
|
||||
bag.getScenarioSelectionResult().getObject().setAcceptMatch("count(//doesnotExist) = 1");
|
||||
bag.getScenarioSelectionResult().getObject().setAcceptExecutable(createXpath("count(//doesnotExist) = 1"));
|
||||
this.action.check(bag);
|
||||
assertThat(bag.getAcceptStatus()).isEqualTo(AcceptRecommendation.REJECT);
|
||||
}
|
||||
|
|
@ -60,7 +65,7 @@ public class ComputeAcceptanceActionTest {
|
|||
@Test
|
||||
public void testAcceptMatchOverridesSchematronErrors() {
|
||||
final Bag bag = createBag(true, false);
|
||||
bag.getScenarioSelectionResult().getObject().setAcceptMatch("count(//doesnotExist) = 0");
|
||||
bag.getScenarioSelectionResult().getObject().setAcceptExecutable(createXpath("count(//doesnotExist) = 0"));
|
||||
this.action.check(bag);
|
||||
assertThat(bag.getAcceptStatus()).isEqualTo(AcceptRecommendation.ACCEPTABLE);
|
||||
}
|
||||
|
|
@ -68,7 +73,7 @@ public class ComputeAcceptanceActionTest {
|
|||
@Test
|
||||
public void testValidAcceptMatchOnSchemaFailed() {
|
||||
final Bag bag = createBag(false, true);
|
||||
bag.getScenarioSelectionResult().getObject().setAcceptMatch("count(//doesnotExist) = 0");
|
||||
bag.getScenarioSelectionResult().getObject().setAcceptExecutable(createXpath("count(//doesnotExist) = 0"));
|
||||
this.action.check(bag);
|
||||
assertThat(bag.getAcceptStatus()).isEqualTo(AcceptRecommendation.REJECT);
|
||||
}
|
||||
|
|
@ -98,4 +103,7 @@ public class ComputeAcceptanceActionTest {
|
|||
}
|
||||
|
||||
|
||||
private static XPathExecutable createXpath(final String expression) {
|
||||
return new ContentRepository(ObjectFactory.createProcessor(), null).createXPath(expression, new HashMap<>());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,9 +46,9 @@ import de.kosit.validationtool.api.InputFactory;
|
|||
import de.kosit.validationtool.impl.ContentRepository;
|
||||
import de.kosit.validationtool.impl.Helper.Simple;
|
||||
import de.kosit.validationtool.impl.ObjectFactory;
|
||||
import de.kosit.validationtool.impl.Scenario;
|
||||
import de.kosit.validationtool.impl.input.SourceInput;
|
||||
import de.kosit.validationtool.impl.tasks.CheckAction.Bag;
|
||||
import de.kosit.validationtool.model.scenarios.ScenarioType;
|
||||
|
||||
/**
|
||||
* Tests die {@link SchemaValidationAction}.
|
||||
|
|
@ -154,7 +154,7 @@ public class SchemaValidatorActionTest {
|
|||
@Test
|
||||
public void testProcessingError() throws IOException, SAXException {
|
||||
final CheckAction.Bag bag = createBag(InputFactory.read(Simple.SIMPLE_VALID.toURL()));
|
||||
final ScenarioType scenario = bag.getScenarioSelectionResult().getObject();
|
||||
final Scenario scenario = bag.getScenarioSelectionResult().getObject();
|
||||
final Schema schema = mock(Schema.class);
|
||||
final Validator validator = mock(Validator.class);
|
||||
when(schema.newValidator()).thenReturn(validator);
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@ import de.kosit.validationtool.impl.ContentRepository;
|
|||
import de.kosit.validationtool.impl.ConversionService;
|
||||
import de.kosit.validationtool.impl.Helper.Simple;
|
||||
import de.kosit.validationtool.impl.ObjectFactory;
|
||||
import de.kosit.validationtool.impl.model.BaseScenario.Transformation;
|
||||
import de.kosit.validationtool.impl.Scenario;
|
||||
import de.kosit.validationtool.impl.Scenario.Transformation;
|
||||
import de.kosit.validationtool.model.scenarios.ResourceType;
|
||||
import de.kosit.validationtool.model.scenarios.ScenarioType;
|
||||
|
||||
import net.sf.saxon.s9api.SaxonApiException;
|
||||
import net.sf.saxon.s9api.XsltExecutable;
|
||||
|
|
@ -44,7 +44,7 @@ public class SchematronValidationActionTest {
|
|||
public void testProcessingError() throws IOException, SaxonApiException {
|
||||
final CheckAction.Bag bag = createBag(InputFactory.read(Simple.SIMPLE_VALID.toURL()), true);
|
||||
|
||||
final ScenarioType scenario = bag.getScenarioSelectionResult().getObject();
|
||||
final Scenario scenario = bag.getScenarioSelectionResult().getObject();
|
||||
final XsltExecutable exec = mock(XsltExecutable.class);
|
||||
final XsltTransformer transformer = mock(XsltTransformer.class);
|
||||
doThrow(new SaxonApiException("invalid")).when(transformer).transform();
|
||||
|
|
|
|||
|
|
@ -1,10 +1,14 @@
|
|||
package de.kosit.validationtool.impl.tasks;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.validation.Schema;
|
||||
|
||||
import org.oclc.purl.dsdl.svrl.FailedAssert;
|
||||
import org.oclc.purl.dsdl.svrl.SchematronOutput;
|
||||
|
||||
|
|
@ -12,8 +16,8 @@ import de.kosit.validationtool.api.Input;
|
|||
import de.kosit.validationtool.api.InputFactory;
|
||||
import de.kosit.validationtool.impl.ContentRepository;
|
||||
import de.kosit.validationtool.impl.Helper;
|
||||
import de.kosit.validationtool.impl.Helper.Simple;
|
||||
import de.kosit.validationtool.impl.ObjectFactory;
|
||||
import de.kosit.validationtool.impl.Scenario;
|
||||
import de.kosit.validationtool.impl.model.Result;
|
||||
import de.kosit.validationtool.impl.tasks.CheckAction.Bag;
|
||||
import de.kosit.validationtool.model.reportInput.CreateReportInput;
|
||||
|
|
@ -50,8 +54,9 @@ public class TestBagBuilder {
|
|||
return bag;
|
||||
}
|
||||
|
||||
private static ScenarioType createScenario(final URI schemafile) {
|
||||
final ContentRepository repository = new ContentRepository(ObjectFactory.createProcessor(), Simple.REPOSITORY);
|
||||
private static Scenario createScenario(final URI schemafile) {
|
||||
|
||||
try {
|
||||
final ScenarioType t = new ScenarioType();
|
||||
final ValidateWithXmlSchema v = new ValidateWithXmlSchema();
|
||||
final ResourceType r = new ResourceType();
|
||||
|
|
@ -59,8 +64,16 @@ public class TestBagBuilder {
|
|||
r.setName("invoice");
|
||||
v.getResource().add(r);
|
||||
t.setValidateWithXmlSchema(v);
|
||||
t.initialize(repository, true);
|
||||
return t;
|
||||
final Scenario scenario = new Scenario(t);
|
||||
scenario.setSchema(createSchema(schemafile.toURL()));
|
||||
return scenario;
|
||||
} catch (final MalformedURLException e) {
|
||||
throw new IllegalArgumentException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static Schema createSchema(final URL toURL) {
|
||||
return new ContentRepository(ObjectFactory.createProcessor(), null).createSchema(toURL);
|
||||
}
|
||||
|
||||
private static XdmNode createReport() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue