mirror of
https://github.com/itplr-kosit/validator.git
synced 2026-05-25 16:55:39 +00:00
Resolve "UnsupportedOperationException because of read-only List"
This commit is contained in:
parent
0092c2f0e1
commit
361ed5863d
4 changed files with 34 additions and 11 deletions
|
|
@ -16,22 +16,20 @@
|
||||||
|
|
||||||
package de.kosit.validationtool.impl;
|
package de.kosit.validationtool.impl;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import javax.xml.transform.URIResolver;
|
import javax.xml.transform.URIResolver;
|
||||||
import javax.xml.validation.Schema;
|
import javax.xml.validation.Schema;
|
||||||
|
|
||||||
|
import de.kosit.validationtool.api.ResolvingConfigurationStrategy;
|
||||||
|
import de.kosit.validationtool.model.scenarios.ResourceType;
|
||||||
|
import de.kosit.validationtool.model.scenarios.ScenarioType;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import de.kosit.validationtool.api.ResolvingConfigurationStrategy;
|
|
||||||
import de.kosit.validationtool.model.scenarios.ResourceType;
|
|
||||||
import de.kosit.validationtool.model.scenarios.ScenarioType;
|
|
||||||
|
|
||||||
import net.sf.saxon.lib.UnparsedTextURIResolver;
|
import net.sf.saxon.lib.UnparsedTextURIResolver;
|
||||||
import net.sf.saxon.s9api.XPathExecutable;
|
import net.sf.saxon.s9api.XPathExecutable;
|
||||||
import net.sf.saxon.s9api.XPathSelector;
|
import net.sf.saxon.s9api.XPathSelector;
|
||||||
|
|
@ -80,7 +78,11 @@ public class Scenario {
|
||||||
private Transformation reportTransformation;
|
private Transformation reportTransformation;
|
||||||
|
|
||||||
public List<Transformation> getSchematronValidations() {
|
public List<Transformation> getSchematronValidations() {
|
||||||
return this.schematronValidations == null ? Collections.emptyList() : this.schematronValidations;
|
// Must return a mutable list
|
||||||
|
if (this.schematronValidations == null) {
|
||||||
|
this.schematronValidations = new ArrayList<>();
|
||||||
|
}
|
||||||
|
return this.schematronValidations;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
@ -95,9 +97,9 @@ public class Scenario {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Liefert einen neuen XPath-Selector zur Evaluierung der {@link de.kosit.validationtool.api.AcceptRecommendation}.
|
* Returns a new XPath selector for evaluating the {@link de.kosit.validationtool.api.AcceptRecommendation}.
|
||||||
*
|
*
|
||||||
* @return neuer Selector
|
* @return new selector
|
||||||
*/
|
*/
|
||||||
public Optional<XPathSelector> getAcceptSelector() {
|
public Optional<XPathSelector> getAcceptSelector() {
|
||||||
final XPathSelector selector = this.acceptExecutable != null ? this.acceptExecutable.load() : null;
|
final XPathSelector selector = this.acceptExecutable != null ? this.acceptExecutable.load() : null;
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ import de.kosit.validationtool.impl.Scenario;
|
||||||
import de.kosit.validationtool.impl.model.Result;
|
import de.kosit.validationtool.impl.model.Result;
|
||||||
import de.kosit.validationtool.model.scenarios.NamespaceType;
|
import de.kosit.validationtool.model.scenarios.NamespaceType;
|
||||||
import de.kosit.validationtool.model.scenarios.ScenarioType;
|
import de.kosit.validationtool.model.scenarios.ScenarioType;
|
||||||
|
|
||||||
import net.sf.saxon.s9api.XPathExecutable;
|
import net.sf.saxon.s9api.XPathExecutable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -140,6 +139,25 @@ public class ScenarioBuilderTest {
|
||||||
assertThat(configuration.getNamespace()).isEmpty();
|
assertThat(configuration.getNamespace()).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConfigureWithSchematron() {
|
||||||
|
final ContentRepository repository = Simple.createContentRepository();
|
||||||
|
final XPathExecutable match = repository.createXPath("//*", null);
|
||||||
|
final XPathExecutable accept = repository.createXPath("//*", null);
|
||||||
|
final ScenarioBuilder builder = createScenario();
|
||||||
|
builder.getNamespaces().clear();
|
||||||
|
|
||||||
|
builder.match(match);
|
||||||
|
builder.acceptWith(accept);
|
||||||
|
final Result<Scenario, String> result = builder.build(repository);
|
||||||
|
assertThat(result.isValid()).isTrue();
|
||||||
|
final ScenarioType configuration = result.getObject().getConfiguration();
|
||||||
|
assertThat(configuration.getMatch()).isNotEmpty();
|
||||||
|
assertThat(configuration.getAcceptMatch()).isNotEmpty();
|
||||||
|
assertThat(configuration.getNamespace()).isEmpty();
|
||||||
|
assertThat(configuration.getValidateWithSchematron()).isNotEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBasicAttributes() {
|
public void testBasicAttributes() {
|
||||||
final ContentRepository repository = Simple.createContentRepository();
|
final ContentRepository repository = Simple.createContentRepository();
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import static de.kosit.validationtool.config.ConfigurationBuilder.fallback;
|
||||||
import static de.kosit.validationtool.config.ConfigurationBuilder.report;
|
import static de.kosit.validationtool.config.ConfigurationBuilder.report;
|
||||||
import static de.kosit.validationtool.config.ConfigurationBuilder.scenario;
|
import static de.kosit.validationtool.config.ConfigurationBuilder.scenario;
|
||||||
import static de.kosit.validationtool.config.ConfigurationBuilder.schema;
|
import static de.kosit.validationtool.config.ConfigurationBuilder.schema;
|
||||||
|
import static de.kosit.validationtool.config.ConfigurationBuilder.schematron;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
@ -46,6 +47,7 @@ public class TestConfigurationFactory {
|
||||||
|
|
||||||
public static ScenarioBuilder createScenario() {
|
public static ScenarioBuilder createScenario() {
|
||||||
return scenario("simple").validate(schema("Sample Schema").schemaLocation(URI.create("simple.xsd")))
|
return scenario("simple").validate(schema("Sample Schema").schemaLocation(URI.create("simple.xsd")))
|
||||||
|
.validate(schematron("Sample Schematron").source(Simple.SCHEMATRON))
|
||||||
.with(report("Report für eRechnung").source("report.xsl")).acceptWith("count(//test:rejected) = 0")
|
.with(report("Report für eRechnung").source("report.xsl")).acceptWith("count(//test:rejected) = 0")
|
||||||
.declareNamespace("cri", "http://www.xoev.de/de/validator/framework/1/createreportinput")
|
.declareNamespace("cri", "http://www.xoev.de/de/validator/framework/1/createreportinput")
|
||||||
.declareNamespace("rpt", "http://validator.kosit.de/test-report")
|
.declareNamespace("rpt", "http://validator.kosit.de/test-report")
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ import de.kosit.validationtool.impl.model.Result;
|
||||||
import de.kosit.validationtool.impl.tasks.DocumentParseAction;
|
import de.kosit.validationtool.impl.tasks.DocumentParseAction;
|
||||||
import de.kosit.validationtool.impl.xml.ProcessorProvider;
|
import de.kosit.validationtool.impl.xml.ProcessorProvider;
|
||||||
import de.kosit.validationtool.model.reportInput.XMLSyntaxError;
|
import de.kosit.validationtool.model.reportInput.XMLSyntaxError;
|
||||||
|
|
||||||
import net.sf.saxon.s9api.Processor;
|
import net.sf.saxon.s9api.Processor;
|
||||||
import net.sf.saxon.s9api.SaxonApiException;
|
import net.sf.saxon.s9api.SaxonApiException;
|
||||||
import net.sf.saxon.s9api.Serializer;
|
import net.sf.saxon.s9api.Serializer;
|
||||||
|
|
@ -84,6 +83,8 @@ public class Helper {
|
||||||
|
|
||||||
public static final URI SCHEMA = REPOSITORY_URI.resolve("simple.xsd");
|
public static final URI SCHEMA = REPOSITORY_URI.resolve("simple.xsd");
|
||||||
|
|
||||||
|
public static final URI SCHEMATRON = REPOSITORY_URI.resolve("simple-schematron-error.xsl");
|
||||||
|
|
||||||
public static final ContentRepository createContentRepository() {
|
public static final ContentRepository createContentRepository() {
|
||||||
final ResolvingConfigurationStrategy strategy = ResolvingMode.STRICT_RELATIVE.getStrategy();
|
final ResolvingConfigurationStrategy strategy = ResolvingMode.STRICT_RELATIVE.getStrategy();
|
||||||
return new ContentRepository(Helper.getTestProcessor(), strategy, Simple.REPOSITORY_URI);
|
return new ContentRepository(Helper.getTestProcessor(), strategy, Simple.REPOSITORY_URI);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue