diff --git a/build.gradle b/build.gradle index 7c9a9f7..b20bbff 100644 --- a/build.gradle +++ b/build.gradle @@ -1,18 +1,13 @@ - plugins { - id "checkstyle" - id "pmd" id 'maven-publish' id 'signing' id "io.github.gradle-nexus.publish-plugin" version "2.0.0-rc-1" - id "com.github.spotbugs" version "6.0.0-beta.3" - id "org.cyclonedx.bom" version "1.7.4" id "org.xbib.gradle.plugin.asciidoctor" version "3.0.0" } wrapper { gradleVersion = libs.versions.gradle.get() - distributionType = Wrapper.DistributionType.ALL + distributionType = Wrapper.DistributionType.BIN } ext { @@ -31,15 +26,10 @@ ext { } subprojects { - //apply from: rootProject.file('gradle/ide/idea.gradle') apply from: rootProject.file('gradle/repositories/maven.gradle') apply from: rootProject.file('gradle/compile/java.gradle') apply from: rootProject.file('gradle/test/junit5.gradle') - apply from: rootProject.file('gradle/quality/checkstyle.gradle') - apply from: rootProject.file('gradle/quality/pmd.gradle') - //apply from: rootProject.file('gradle/quality/spotbugs.gradle') apply from: rootProject.file('gradle/publish/maven.gradle') } apply from: rootProject.file('gradle/publish/sonatype.gradle') apply from: rootProject.file('gradle/publish/forgejo.gradle') -apply from: rootProject.file('gradle/quality/cyclonedx.gradle') diff --git a/content-csv/build.gradle b/content-csv/build.gradle new file mode 100644 index 0000000..d387d38 --- /dev/null +++ b/content-csv/build.gradle @@ -0,0 +1,11 @@ + +def moduleName = 'org.xbib.content.csv.test' +def patchArgs = ['--patch-module', "$moduleName=" + files(sourceSets.test.resources.srcDirs).asPath ] + +tasks.named('compileTestJava') { + options.compilerArgs += patchArgs +} + +tasks.named('test') { + jvmArgs += patchArgs +} diff --git a/content-csv/src/test/java/module-info.java b/content-csv/src/test/java/module-info.java new file mode 100644 index 0000000..a9b3d90 --- /dev/null +++ b/content-csv/src/test/java/module-info.java @@ -0,0 +1,6 @@ +module org.xbib.content.csv.test { + requires org.junit.jupiter.api; + requires org.xbib.content.csv; + exports org.xbib.content.csv.test; + opens org.xbib.content.csv.test to org.junit.platform.commons; +} diff --git a/content-csv/src/test/java/org/xbib/content/csv/package-info.java b/content-csv/src/test/java/org/xbib/content/csv/package-info.java deleted file mode 100644 index 396f5c5..0000000 --- a/content-csv/src/test/java/org/xbib/content/csv/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing CSV content. - */ -package org.xbib.content.csv; diff --git a/content-csv/src/test/java/org/xbib/content/csv/CSVGeneratorTest.java b/content-csv/src/test/java/org/xbib/content/csv/test/CSVGeneratorTest.java similarity index 88% rename from content-csv/src/test/java/org/xbib/content/csv/CSVGeneratorTest.java rename to content-csv/src/test/java/org/xbib/content/csv/test/CSVGeneratorTest.java index ed0e325..c173971 100644 --- a/content-csv/src/test/java/org/xbib/content/csv/CSVGeneratorTest.java +++ b/content-csv/src/test/java/org/xbib/content/csv/test/CSVGeneratorTest.java @@ -1,6 +1,8 @@ -package org.xbib.content.csv; +package org.xbib.content.csv.test; import org.junit.jupiter.api.Test; +import org.xbib.content.csv.CSVGenerator; + import java.io.IOException; import java.io.StringWriter; import java.util.Arrays; diff --git a/content-csv/src/test/java/org/xbib/content/csv/CSVParserTest.java b/content-csv/src/test/java/org/xbib/content/csv/test/CSVParserTest.java similarity index 78% rename from content-csv/src/test/java/org/xbib/content/csv/CSVParserTest.java rename to content-csv/src/test/java/org/xbib/content/csv/test/CSVParserTest.java index 48246ee..5d391c0 100644 --- a/content-csv/src/test/java/org/xbib/content/csv/CSVParserTest.java +++ b/content-csv/src/test/java/org/xbib/content/csv/test/CSVParserTest.java @@ -1,7 +1,9 @@ -package org.xbib.content.csv; +package org.xbib.content.csv.test; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; +import org.xbib.content.csv.CSVParser; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -10,16 +12,13 @@ import java.nio.charset.StandardCharsets; import java.util.Iterator; import java.util.List; -/** - * - */ public class CSVParserTest { @Test public void testCommaSeparated() throws IOException { - InputStream in = getClass().getResourceAsStream("test.csv"); + InputStream inputStream = getClass().getResourceAsStream("test.csv"); int count = 0; - try (BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8))) { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) { CSVParser csvParser = new CSVParser(reader); Iterator> it = csvParser.iterator(); while (it.hasNext()) { @@ -32,9 +31,9 @@ public class CSVParserTest { @Test public void testLargeFile() throws IOException { - InputStream in = getClass().getResourceAsStream("titleFile.csv"); + InputStream inputStream = getClass().getResourceAsStream("titleFile.csv"); int count = 0; - try (BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8))) { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) { CSVParser csvParser = new CSVParser(reader); Iterator> it = csvParser.iterator(); while (it.hasNext()) { diff --git a/content-csv/src/test/java/org/xbib/content/csv/TSVParserTest.java b/content-csv/src/test/java/org/xbib/content/csv/test/TSVParserTest.java similarity index 97% rename from content-csv/src/test/java/org/xbib/content/csv/TSVParserTest.java rename to content-csv/src/test/java/org/xbib/content/csv/test/TSVParserTest.java index 6746178..85a9022 100644 --- a/content-csv/src/test/java/org/xbib/content/csv/TSVParserTest.java +++ b/content-csv/src/test/java/org/xbib/content/csv/test/TSVParserTest.java @@ -1,4 +1,4 @@ -package org.xbib.content.csv; +package org.xbib.content.csv.test; import org.junit.jupiter.api.Test; import java.io.BufferedReader; diff --git a/content-csv/src/test/resources/log4j2-test.xml b/content-csv/src/test/resources/log4j2-test.xml deleted file mode 100644 index f71aced..0000000 --- a/content-csv/src/test/resources/log4j2-test.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/content-csv/src/test/resources/org/xbib/content/csv/2076831-X-web.txt b/content-csv/src/test/resources/org/xbib/content/csv/test/2076831-X-web.txt similarity index 100% rename from content-csv/src/test/resources/org/xbib/content/csv/2076831-X-web.txt rename to content-csv/src/test/resources/org/xbib/content/csv/test/2076831-X-web.txt diff --git a/content-csv/src/test/resources/org/xbib/content/csv/test.csv b/content-csv/src/test/resources/org/xbib/content/csv/test/test.csv similarity index 100% rename from content-csv/src/test/resources/org/xbib/content/csv/test.csv rename to content-csv/src/test/resources/org/xbib/content/csv/test/test.csv diff --git a/content-csv/src/test/resources/org/xbib/content/csv/titleFile.csv b/content-csv/src/test/resources/org/xbib/content/csv/test/titleFile.csv similarity index 100% rename from content-csv/src/test/resources/org/xbib/content/csv/titleFile.csv rename to content-csv/src/test/resources/org/xbib/content/csv/test/titleFile.csv diff --git a/content-json/build.gradle b/content-json/build.gradle index a855a9b..bd8eec6 100644 --- a/content-json/build.gradle +++ b/content-json/build.gradle @@ -1,5 +1,15 @@ dependencies { api project(':content-core') api libs.jackson.databind - testImplementation libs.mockito.inline + testImplementation testLibs.mockito.core +} + +def patchArgs = ['--patch-module', "org.xbib.content.json.test=" + sourceSets.test.resources.sourceDirectories.singleFile] + +tasks.named('compileTestJava') { + options.compilerArgs += patchArgs +} + +tasks.named('test') { + jvmArgs += patchArgs } diff --git a/content-json/src/main/java/org/xbib/content/json/JsonXContentGenerator.java b/content-json/src/main/java/org/xbib/content/json/JsonXContentGenerator.java index d013cb7..318754e 100644 --- a/content-json/src/main/java/org/xbib/content/json/JsonXContentGenerator.java +++ b/content-json/src/main/java/org/xbib/content/json/JsonXContentGenerator.java @@ -19,6 +19,7 @@ public class JsonXContentGenerator extends AbstractXContentGenerator { private final JsonGeneratorDelegate delegate; + @SuppressWarnings("this-escape") public JsonXContentGenerator(JsonGenerator generator) { this.delegate = new JsonGeneratorDelegate(generator); super.setGenerator(delegate); diff --git a/content-json/src/main/java/org/xbib/content/json/JsonXContentParser.java b/content-json/src/main/java/org/xbib/content/json/JsonXContentParser.java index 8f73a76..8713081 100644 --- a/content-json/src/main/java/org/xbib/content/json/JsonXContentParser.java +++ b/content-json/src/main/java/org/xbib/content/json/JsonXContentParser.java @@ -53,7 +53,7 @@ public class JsonXContentParser extends AbstractXContentParser { @Override public String currentName() throws IOException { - return parser.getCurrentName(); + return parser.currentName(); } @Override diff --git a/content-json/src/main/java/org/xbib/content/json/jackson/JsonLoader.java b/content-json/src/main/java/org/xbib/content/json/jackson/JsonLoader.java index 738bcf2..fbbab9b 100644 --- a/content-json/src/main/java/org/xbib/content/json/jackson/JsonLoader.java +++ b/content-json/src/main/java/org/xbib/content/json/jackson/JsonLoader.java @@ -6,11 +6,9 @@ import java.io.IOException; import java.io.InputStream; import java.io.Reader; import java.io.StringReader; -import java.net.URL; /** * Utility class to load JSON values from various sources as {@link com.fasterxml.jackson.databind.JsonNode}s. - * * This class uses a {@link JsonNodeReader} to parse JSON inputs. * * @see JsonNodeReader @@ -25,34 +23,28 @@ public final class JsonLoader { } /** - * Read a {@link com.fasterxml.jackson.databind.JsonNode} from a resource path. - * - * This method first tries and loads the resource using {@link - * Class#getResource(String)}; if not found, is tries and uses the context - * classloader and if this is not found, this class's classloader. - * + * Read a {@link com.fasterxml.jackson.databind.JsonNode} from an input stream. * This method throws an {@link java.io.IOException} if the resource does not * exist. * - * @param classLoader the class loader - * @param resource the path to the resource (must begin - * with a {@code /}) + * @param inputStream the input stream * @return the JSON document at the resource * @throws IllegalArgumentException resource path does not begin with a * {@code /} * @throws java.io.IOException there was a problem loading the resource, or the JSON * document is invalid */ - public static JsonNode fromResource(ClassLoader classLoader, final String resource) + public static JsonNode fromResource(InputStream inputStream) throws IOException { - URL url = JsonLoader.class.getResource(resource); - InputStream in = url != null ? url.openStream() : classLoader.getResourceAsStream(resource); final JsonNode ret; try { - ret = READER.fromInputStream(in); + if (inputStream == null) { + throw new IOException("not found"); + } + ret = READER.fromInputStream(inputStream); } finally { - if (in != null) { - in.close(); + if (inputStream != null) { + inputStream.close(); } } return ret; diff --git a/content-json/src/main/java/org/xbib/content/json/jackson/JsonNodeReader.java b/content-json/src/main/java/org/xbib/content/json/jackson/JsonNodeReader.java index 1cc9b3d..b103308 100644 --- a/content-json/src/main/java/org/xbib/content/json/jackson/JsonNodeReader.java +++ b/content-json/src/main/java/org/xbib/content/json/jackson/JsonNodeReader.java @@ -1,5 +1,6 @@ package org.xbib.content.json.jackson; +import com.fasterxml.jackson.core.ErrorReportConfiguration; import com.fasterxml.jackson.core.JsonLocation; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonParser; @@ -35,7 +36,7 @@ public final class JsonNodeReader { private final ObjectReader reader; public JsonNodeReader(final ObjectMapper mapper) { - reader = mapper.configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, true) + this.reader = mapper.configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, true) .readerFor(JsonNode.class); } @@ -64,13 +65,14 @@ public final class JsonNodeReader { /** * Read a JSON value from an {@link java.io.InputStream}. * - * @param in the input stream + * @param inputStream the input stream * @return the value * @throws java.io.IOException malformed input, or problem encountered when reading * from the stream */ - public JsonNode fromInputStream(final InputStream in) throws IOException { - try (JsonParser parser = reader.getFactory().createParser(in); MappingIterator iterator = reader.readValues(parser)) { + public JsonNode fromInputStream(final InputStream inputStream) throws IOException { + try (JsonParser parser = reader.getFactory().createParser(inputStream); + MappingIterator iterator = reader.readValues(parser)) { return readNode(iterator); } } @@ -78,13 +80,14 @@ public final class JsonNodeReader { /** * Read a JSON value from a {@link java.io.Reader}. * - * @param r the reader + * @param reader the reader * @return the value * @throws java.io.IOException malformed input, or problem encountered when reading * from the reader */ - public JsonNode fromReader(final Reader r) throws IOException { - try (JsonParser parser = reader.getFactory().createParser(r); MappingIterator iterator = reader.readValues(parser)) { + public JsonNode fromReader(final Reader reader) throws IOException { + try (JsonParser parser = this.reader.getFactory().createParser(reader); + MappingIterator iterator = this.reader.readValues(parser)) { return readNode(iterator); } } @@ -97,7 +100,7 @@ public final class JsonNodeReader { private JsonParseExceptionBuilder(final JsonParser jsonParser, final Object source) { this.jsonParser = jsonParser; - location = new JsonLocation(ContentReference.construct(false, source), 0L, 1, 1); + location = new JsonLocation(ContentReference.construct(false, source, ErrorReportConfiguration.defaults()), 0L, 1, 1); } JsonParseExceptionBuilder setLocation(final JsonLocation location) { diff --git a/content-json/src/main/java/org/xbib/content/json/pointer/TreePointer.java b/content-json/src/main/java/org/xbib/content/json/pointer/TreePointer.java index 324d75c..bd541be 100644 --- a/content-json/src/main/java/org/xbib/content/json/pointer/TreePointer.java +++ b/content-json/src/main/java/org/xbib/content/json/pointer/TreePointer.java @@ -45,8 +45,7 @@ public abstract class TreePointer implements Iterable> tokenResolvers) { + protected TreePointer(final T missing, final List> tokenResolvers) { this.missing = missing; this.tokenResolvers = new ArrayList<>(tokenResolvers); } @@ -58,7 +57,7 @@ public abstract class TreePointer implements Iterable> tokenResolvers) { + TreePointer(final List> tokenResolvers) { this(null, tokenResolvers); } @@ -70,7 +69,7 @@ public abstract class TreePointer implements Iterable tokensFromInput(final String input) + public static List tokensFromInput(final String input) throws JsonPointerException { String s = input; final List ret = new ArrayList<>(); diff --git a/content-json/src/test/java/module-info.java b/content-json/src/test/java/module-info.java new file mode 100644 index 0000000..52ae8a9 --- /dev/null +++ b/content-json/src/test/java/module-info.java @@ -0,0 +1,17 @@ +module org.xbib.content.json.test { + requires com.fasterxml.jackson.core; + requires com.fasterxml.jackson.databind; + requires java.logging; + requires jdk.unsupported; // sun.reflect for objenesis in mockito + requires org.mockito; + requires org.junit.jupiter.api; + requires org.xbib.content.api; + requires org.xbib.content.core; + requires org.xbib.content.json; + exports org.xbib.content.json.test; + exports org.xbib.content.json.test.jackson; + exports org.xbib.content.json.test.pointer; + opens org.xbib.content.json.test to org.junit.platform.commons; + opens org.xbib.content.json.test.jackson to org.junit.platform.commons; + opens org.xbib.content.json.test.pointer to org.junit.platform.commons; +} diff --git a/content-json/src/test/java/org/xbib/content/json/jackson/package-info.java b/content-json/src/test/java/org/xbib/content/json/jackson/package-info.java deleted file mode 100644 index ed13dac..0000000 --- a/content-json/src/test/java/org/xbib/content/json/jackson/package-info.java +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Classes for testing JSON jackson. - */ -package org.xbib.content.json.jackson; - diff --git a/content-json/src/test/java/org/xbib/content/json/XContentBuilderTest.java b/content-json/src/test/java/org/xbib/content/json/test/XContentBuilderTest.java similarity index 99% rename from content-json/src/test/java/org/xbib/content/json/XContentBuilderTest.java rename to content-json/src/test/java/org/xbib/content/json/test/XContentBuilderTest.java index fecb89e..2a7dd5e 100644 --- a/content-json/src/test/java/org/xbib/content/json/XContentBuilderTest.java +++ b/content-json/src/test/java/org/xbib/content/json/test/XContentBuilderTest.java @@ -1,4 +1,4 @@ -package org.xbib.content.json; +package org.xbib.content.json.test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/content-json/src/test/java/org/xbib/content/json/XContentParserTest.java b/content-json/src/test/java/org/xbib/content/json/test/XContentParserTest.java similarity index 92% rename from content-json/src/test/java/org/xbib/content/json/XContentParserTest.java rename to content-json/src/test/java/org/xbib/content/json/test/XContentParserTest.java index aac3f21..cb2edbd 100644 --- a/content-json/src/test/java/org/xbib/content/json/XContentParserTest.java +++ b/content-json/src/test/java/org/xbib/content/json/test/XContentParserTest.java @@ -1,8 +1,10 @@ -package org.xbib.content.json; +package org.xbib.content.json.test; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; import org.xbib.content.XContentParser; +import org.xbib.content.json.JsonXContent; + import java.io.IOException; import java.util.Map; import java.util.logging.Level; diff --git a/content-json/src/test/java/org/xbib/content/json/jackson/JsonNodeReaderTest.java b/content-json/src/test/java/org/xbib/content/json/test/jackson/JsonNodeReaderTest.java similarity index 94% rename from content-json/src/test/java/org/xbib/content/json/jackson/JsonNodeReaderTest.java rename to content-json/src/test/java/org/xbib/content/json/test/jackson/JsonNodeReaderTest.java index c1f2d4a..cf9d0ea 100644 --- a/content-json/src/test/java/org/xbib/content/json/jackson/JsonNodeReaderTest.java +++ b/content-json/src/test/java/org/xbib/content/json/test/jackson/JsonNodeReaderTest.java @@ -1,4 +1,4 @@ -package org.xbib.content.json.jackson; +package org.xbib.content.json.test.jackson; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.spy; @@ -7,8 +7,9 @@ import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.xbib.content.json.jackson.JsonNodeReader; + import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -16,7 +17,6 @@ import java.io.Reader; import java.io.StringReader; import java.nio.charset.StandardCharsets; -@Disabled("mockito defunct") public final class JsonNodeReaderTest { @Test diff --git a/content-json/src/test/java/org/xbib/content/json/jackson/JsonNumEqualsTest.java b/content-json/src/test/java/org/xbib/content/json/test/jackson/JsonNumEqualsTest.java similarity index 91% rename from content-json/src/test/java/org/xbib/content/json/jackson/JsonNumEqualsTest.java rename to content-json/src/test/java/org/xbib/content/json/test/jackson/JsonNumEqualsTest.java index bd25316..d1e98f7 100644 --- a/content-json/src/test/java/org/xbib/content/json/jackson/JsonNumEqualsTest.java +++ b/content-json/src/test/java/org/xbib/content/json/test/jackson/JsonNumEqualsTest.java @@ -1,4 +1,4 @@ -package org.xbib.content.json.jackson; +package org.xbib.content.json.test.jackson; import static org.junit.jupiter.api.Assertions.assertTrue; import com.fasterxml.jackson.databind.JsonNode; @@ -6,14 +6,14 @@ import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; import org.junit.jupiter.api.Test; +import org.xbib.content.json.jackson.JsonLoader; +import org.xbib.content.json.jackson.JsonNumEquals; + import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -/** - * - */ public final class JsonNumEqualsTest { private static final JsonNodeFactory FACTORY = JsonNodeFactory.instance; @@ -62,7 +62,7 @@ public final class JsonNumEqualsTest { private Iterator getInputs() throws IOException { final List list = new ArrayList<>(); JsonNode reference; - JsonNode testData = JsonLoader.fromResource(this.getClass().getClassLoader(), "testfile.json"); + JsonNode testData = JsonLoader.fromResource(getClass().getResourceAsStream("testfile.json")); for (final JsonNode element : testData) { reference = element.get("reference"); for (final JsonNode node : element.get("equivalences")) { diff --git a/content-json/src/test/java/org/xbib/content/json/jackson/SampleNodeProvider.java b/content-json/src/test/java/org/xbib/content/json/test/jackson/SampleNodeProvider.java similarity index 93% rename from content-json/src/test/java/org/xbib/content/json/jackson/SampleNodeProvider.java rename to content-json/src/test/java/org/xbib/content/json/test/jackson/SampleNodeProvider.java index ec2461a..09f6730 100644 --- a/content-json/src/test/java/org/xbib/content/json/jackson/SampleNodeProvider.java +++ b/content-json/src/test/java/org/xbib/content/json/test/jackson/SampleNodeProvider.java @@ -1,7 +1,9 @@ -package org.xbib.content.json.jackson; +package org.xbib.content.json.test.jackson; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import org.xbib.content.json.jackson.JacksonUtils; +import org.xbib.content.json.jackson.NodeType; import java.math.BigDecimal; import java.util.ArrayList; diff --git a/content-json/src/test/java/org/xbib/content/json/pointer/JsonNodeResolverTest.java b/content-json/src/test/java/org/xbib/content/json/test/pointer/JsonNodeResolverTest.java similarity index 93% rename from content-json/src/test/java/org/xbib/content/json/pointer/JsonNodeResolverTest.java rename to content-json/src/test/java/org/xbib/content/json/test/pointer/JsonNodeResolverTest.java index 9a35772..4ed16ce 100644 --- a/content-json/src/test/java/org/xbib/content/json/pointer/JsonNodeResolverTest.java +++ b/content-json/src/test/java/org/xbib/content/json/test/pointer/JsonNodeResolverTest.java @@ -1,4 +1,4 @@ -package org.xbib.content.json.pointer; +package org.xbib.content.json.test.pointer; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; @@ -9,7 +9,9 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import org.junit.jupiter.api.Test; import org.xbib.content.json.jackson.JacksonUtils; import org.xbib.content.json.jackson.NodeType; -import org.xbib.content.json.jackson.SampleNodeProvider; +import org.xbib.content.json.pointer.JsonNodeResolver; +import org.xbib.content.json.pointer.ReferenceToken; +import org.xbib.content.json.test.jackson.SampleNodeProvider; import java.util.ArrayList; import java.util.List; diff --git a/content-json/src/test/java/org/xbib/content/json/pointer/JsonPointerTest.java b/content-json/src/test/java/org/xbib/content/json/test/pointer/JsonPointerTest.java similarity index 92% rename from content-json/src/test/java/org/xbib/content/json/pointer/JsonPointerTest.java rename to content-json/src/test/java/org/xbib/content/json/test/pointer/JsonPointerTest.java index e910b8b..6582477 100644 --- a/content-json/src/test/java/org/xbib/content/json/pointer/JsonPointerTest.java +++ b/content-json/src/test/java/org/xbib/content/json/test/pointer/JsonPointerTest.java @@ -1,4 +1,4 @@ -package org.xbib.content.json.pointer; +package org.xbib.content.json.test.pointer; import static org.junit.jupiter.api.Assertions.assertEquals; import com.fasterxml.jackson.databind.JsonNode; @@ -7,7 +7,9 @@ import org.junit.jupiter.api.Test; import org.xbib.content.json.jackson.JacksonUtils; import org.xbib.content.json.jackson.JsonLoader; import org.xbib.content.json.jackson.NodeType; -import org.xbib.content.json.jackson.SampleNodeProvider; +import org.xbib.content.json.pointer.JsonPointer; +import org.xbib.content.json.pointer.JsonPointerException; +import org.xbib.content.json.test.jackson.SampleNodeProvider; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; @@ -17,19 +19,14 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -/** - * - */ public final class JsonPointerTest { - private static final String PACKAGE = JsonPointerTest.class.getPackage().getName().replace('.', '/'); private final JsonNode testData; + private final JsonNode document; - public JsonPointerTest() - throws IOException { - testData = JsonLoader.fromResource(this.getClass().getClassLoader(), - PACKAGE + "/jsonpointer.json"); + public JsonPointerTest() throws IOException { + testData = JsonLoader.fromResource(getClass().getResourceAsStream("jsonpointer.json")); document = testData.get("document"); } diff --git a/content-json/src/test/java/org/xbib/content/json/pointer/ReferenceTokenTest.java b/content-json/src/test/java/org/xbib/content/json/test/pointer/ReferenceTokenTest.java similarity index 94% rename from content-json/src/test/java/org/xbib/content/json/pointer/ReferenceTokenTest.java rename to content-json/src/test/java/org/xbib/content/json/test/pointer/ReferenceTokenTest.java index 3214b2a..6306d8a 100644 --- a/content-json/src/test/java/org/xbib/content/json/pointer/ReferenceTokenTest.java +++ b/content-json/src/test/java/org/xbib/content/json/test/pointer/ReferenceTokenTest.java @@ -1,9 +1,12 @@ -package org.xbib.content.json.pointer; +package org.xbib.content.json.test.pointer; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.xbib.content.json.pointer.JsonPointerException; +import org.xbib.content.json.pointer.ReferenceToken; + import java.util.Arrays; import java.util.List; diff --git a/content-json/src/test/java/org/xbib/content/json/pointer/TreePointerTest.java b/content-json/src/test/java/org/xbib/content/json/test/pointer/TreePointerTest.java similarity index 93% rename from content-json/src/test/java/org/xbib/content/json/pointer/TreePointerTest.java rename to content-json/src/test/java/org/xbib/content/json/test/pointer/TreePointerTest.java index 93d2c5b..14811c8 100644 --- a/content-json/src/test/java/org/xbib/content/json/pointer/TreePointerTest.java +++ b/content-json/src/test/java/org/xbib/content/json/test/pointer/TreePointerTest.java @@ -1,4 +1,4 @@ -package org.xbib.content.json.pointer; +package org.xbib.content.json.test.pointer; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -13,14 +13,17 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import com.fasterxml.jackson.core.TreeNode; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.xbib.content.json.pointer.JsonPointerException; +import org.xbib.content.json.pointer.ReferenceToken; +import org.xbib.content.json.pointer.TokenResolver; +import org.xbib.content.json.pointer.TreePointer; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; -@Disabled("mockito defunct") public final class TreePointerTest { @Test @@ -145,8 +148,7 @@ public final class TreePointerTest { assertTrue(dummy.isEmpty()); } - private static final class DummyPointer - extends TreePointer { + private static final class DummyPointer extends TreePointer { private DummyPointer(final TreeNode missing, final List> tokenResolvers) { super(missing, tokenResolvers); } diff --git a/content-json/src/test/resources/org/xbib/content/json/jackson/testfile.json b/content-json/src/test/resources/org/xbib/content/json/test/jackson/testfile.json similarity index 100% rename from content-json/src/test/resources/org/xbib/content/json/jackson/testfile.json rename to content-json/src/test/resources/org/xbib/content/json/test/jackson/testfile.json diff --git a/content-json/src/test/resources/org/xbib/content/json/pointer/jsonpointer.json b/content-json/src/test/resources/org/xbib/content/json/test/pointer/jsonpointer.json similarity index 100% rename from content-json/src/test/resources/org/xbib/content/json/pointer/jsonpointer.json rename to content-json/src/test/resources/org/xbib/content/json/test/pointer/jsonpointer.json diff --git a/content-language/src/main/java/org/xbib/content/language/Lang.java b/content-language/src/main/java/org/xbib/content/language/Lang.java index 2084f66..2767ffb 100644 --- a/content-language/src/main/java/org/xbib/content/language/Lang.java +++ b/content-language/src/main/java/org/xbib/content/language/Lang.java @@ -176,11 +176,11 @@ public final class Lang extends SubtagSet { Subtag region = getRegion(); Subtag variant = getVariant(); if (variant != null && region != null) { - return new Locale(primary.toString(), region.toString(), variant.toString()); + return Locale.of(primary.toString(), region.toString(), variant.toString()); } else if (region != null) { - return new Locale(primary.toString(), region.toString()); + return Locale.of(primary.toString(), region.toString()); } else { - return new Locale(primary.toString()); + return Locale.of(primary.toString()); } } diff --git a/content-rdf/build.gradle b/content-rdf/build.gradle index cee2286..9719b94 100644 --- a/content-rdf/build.gradle +++ b/content-rdf/build.gradle @@ -3,3 +3,13 @@ dependencies { implementation project(':content-xml') implementation project(':content-json') } + +def patchArgs = ['--patch-module', "org.xbib.content.rdf.test=" + sourceSets.test.resources.sourceDirectories.singleFile] + +tasks.named('compileTestJava') { + options.compilerArgs += patchArgs +} + +tasks.named('test') { + jvmArgs += patchArgs +} diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/RdfContent.java b/content-rdf/src/main/java/org/xbib/content/rdf/RdfContent.java index 8e3962b..512f9cc 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/RdfContent.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/RdfContent.java @@ -11,7 +11,7 @@ public interface RdfContent

{ StandardRdfContentType type(); - RdfContentGenerator

createGenerator(OutputStream out) throws IOException; + RdfContentGenerator

createGenerator(P params, OutputStream out) throws IOException; - RdfContentParser

createParser(InputStream in) throws IOException; + RdfContentParser

createParser(P params, InputStream in) throws IOException; } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/RdfContentBuilder.java b/content-rdf/src/main/java/org/xbib/content/rdf/RdfContentBuilder.java index 296bdbd..f4d6a7c 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/RdfContentBuilder.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/RdfContentBuilder.java @@ -17,7 +17,7 @@ public class RdfContentBuilder

implements RdfContent private final RdfContentGenerator

generator; - private final OutputStream out; + private final OutputStream outputStream; private IRI subject; @@ -25,9 +25,9 @@ public class RdfContentBuilder

implements RdfContent this(rdfContent, rdfParams, new BytesStreamOutput()); } - public RdfContentBuilder(RdfContent

rdfContent, P rdfContentParams, OutputStream out) throws IOException { - this.out = out; - this.generator = rdfContent.createGenerator(out); + public RdfContentBuilder(RdfContent

rdfContent, P rdfContentParams, OutputStream outputStream) throws IOException { + this.outputStream = outputStream; + this.generator = rdfContent.createGenerator(rdfContentParams, outputStream); this.generator.setParams(rdfContentParams); } @@ -54,7 +54,7 @@ public class RdfContentBuilder

implements RdfContent public BytesReference bytes() throws IOException { close(); - return ((BytesStreamOutput) out).bytes(); + return ((BytesStreamOutput) outputStream).bytes(); } public InputStream streamInput() throws IOException { diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/RdfContentFactory.java b/content-rdf/src/main/java/org/xbib/content/rdf/RdfContentFactory.java index 453f36d..3ef9ed3 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/RdfContentFactory.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/RdfContentFactory.java @@ -14,74 +14,42 @@ import org.xbib.content.rdf.io.xml.XmlContentParams; import java.io.IOException; import java.io.OutputStream; -/** - * - */ public class RdfContentFactory { private RdfContentFactory() { } - public static RdfContentBuilder ntripleBuilder() throws IOException { - return NTripleContent.contentBuilder(NTripleContentParams.N_TRIPLE_CONTENT_PARAMS); - } - public static RdfContentBuilder ntripleBuilder(NTripleContentParams params) throws IOException { return NTripleContent.contentBuilder(params); } - public static RdfContentBuilder ntripleBuilder(OutputStream out) throws IOException { - return NTripleContent.contentBuilder(out, NTripleContentParams.N_TRIPLE_CONTENT_PARAMS); - } - - public static RdfContentBuilder ntripleBuilder(OutputStream out, NTripleContentParams params) + public static RdfContentBuilder ntripleBuilder(NTripleContentParams params, OutputStream outputStream) throws IOException { - return NTripleContent.contentBuilder(out, params); - } - - public static RdfContentBuilder rdfXmlBuilder() throws IOException { - return RdfXmlContent.contentBuilder(RdfXmlContentParams.RDF_XML_CONTENT_PARAMS); + return NTripleContent.contentBuilder(params, outputStream); } public static RdfContentBuilder rdfXmlBuilder(RdfXmlContentParams params) throws IOException { return RdfXmlContent.contentBuilder(params); } - public static RdfContentBuilder rdfXmlBuilder(OutputStream out) throws IOException { - return RdfXmlContent.contentBuilder(out, RdfXmlContentParams.RDF_XML_CONTENT_PARAMS); - } - - public static RdfContentBuilder rdfXmlBuilder(OutputStream out, RdfXmlContentParams params) + public static RdfContentBuilder rdfXmlBuilder(RdfXmlContentParams params, OutputStream outputStream) throws IOException { - return RdfXmlContent.contentBuilder(out, params); - } - - public static RdfContentBuilder turtleBuilder() throws IOException { - return TurtleContent.contentBuilder(TurtleContentParams.TURTLE_CONTENT_PARAMS); + return RdfXmlContent.contentBuilder(params, outputStream); } public static RdfContentBuilder turtleBuilder(TurtleContentParams params) throws IOException { return TurtleContent.contentBuilder(params); } - public static RdfContentBuilder turtleBuilder(OutputStream out) throws IOException { - return TurtleContent.contentBuilder(out, TurtleContentParams.TURTLE_CONTENT_PARAMS); - } - - public static RdfContentBuilder turtleBuilder(OutputStream out, TurtleContentParams params) - throws IOException { - return TurtleContent.contentBuilder(out, params); - } - - public static RdfContentBuilder xmlBuilder() throws IOException { - return XmlContent.contentBuilder(XmlContentParams.XML_CONTENT_PARAMS); + public static RdfContentBuilder turtleBuilder(TurtleContentParams params, OutputStream outputStream) throws IOException { + return TurtleContent.contentBuilder(params, outputStream); } public static RdfContentBuilder xmlBuilder(XmlContentParams params) throws IOException { return XmlContent.contentBuilder(params); } - public static RdfContentBuilder jsonBuilder() throws IOException { - return JsonContent.contentBuilder(JsonContentParams.JSON_CONTENT_PARAMS); + public static RdfContentBuilder jsonBuilder(JsonContentParams params) throws IOException { + return JsonContent.contentBuilder(params); } } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContent.java b/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContent.java index 55e7c80..f5c07cc 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContent.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContent.java @@ -28,12 +28,12 @@ public class RdfXContent implements RdfContent { } @Override - public RdfContentGenerator createGenerator(OutputStream out) { - return new RdfXContentGenerator<>(out); + public RdfContentGenerator createGenerator(RdfXContentParams params, OutputStream outputStream) { + return new RdfXContentGenerator<>(params, outputStream); } @Override - public RdfContentParser createParser(InputStream in) { + public RdfContentParser createParser(RdfXContentParams params, InputStream inputStream) { throw new UnsupportedOperationException(); } } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentFactory.java b/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentFactory.java index 28e3dea..b7c727d 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentFactory.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentFactory.java @@ -11,61 +11,34 @@ import org.xbib.content.rdf.io.xml.XmlContentParams; import java.io.IOException; -/** - * - */ public class RdfXContentFactory { private RdfXContentFactory() { } - public static RdfContentBuilder ntripleBuilder() throws IOException { - return NTripleContent.contentBuilder(NTripleContentParams.N_TRIPLE_CONTENT_PARAMS); - } - public static RdfContentBuilder ntripleBuilder(NTripleContentParams params) throws IOException { return NTripleContent.contentBuilder(params); } - public static RdfContentBuilder rdfXmlBuilder() throws IOException { - return RdfXmlContent.contentBuilder(RdfXmlContentParams.RDF_XML_CONTENT_PARAMS); - } public static RdfContentBuilder rdfXmlBuilder(RdfXmlContentParams params) throws IOException { return RdfXmlContent.contentBuilder(params); } - public static RdfContentBuilder turtleBuilder() throws IOException { - return TurtleContent.contentBuilder(TurtleContentParams.TURTLE_CONTENT_PARAMS); - } - public static RdfContentBuilder turtleBuilder(TurtleContentParams params) throws IOException { return TurtleContent.contentBuilder(params); } - public static RdfContentBuilder xmlBuilder() throws IOException { - return XmlContent.contentBuilder(XmlContentParams.XML_CONTENT_PARAMS); - } - public static RdfContentBuilder xmlBuilder(XmlContentParams params) throws IOException { return XmlContent.contentBuilder(params); } - public static RdfContentBuilder rdfXContentBuilder() throws IOException { - return RdfXContent.contentBuilder(RdfXContentParams.RDF_X_CONTENT_PARAMS); - } - public static RdfContentBuilder rdfXContentBuilder(RdfXContentParams params) throws IOException { return RdfXContent.contentBuilder(params); } - public static RdfContentBuilder routeRdfXContentBuilder() throws IOException { - return RouteRdfXContent.contentBuilder(RouteRdfXContentParams.ROUTE_RDF_X_CONTENT_PARAMS); - } - public static RdfContentBuilder routeRdfXContentBuilder(RouteRdfXContentParams params) throws IOException { return RouteRdfXContent.contentBuilder(params); } - } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentGenerator.java b/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentGenerator.java index 2e5548a..3d3fc52 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentGenerator.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentGenerator.java @@ -19,7 +19,7 @@ import java.util.List; */ public class RdfXContentGenerator

implements RdfContentGenerator

{ - protected final OutputStream out; + protected final OutputStream outputStream; protected Resource resource; @@ -29,8 +29,9 @@ public class RdfXContentGenerator

implements RdfCon private boolean flushed; - RdfXContentGenerator(OutputStream out) { - this.out = out; + RdfXContentGenerator(P params, OutputStream outputStream) { + this.params = params; + this.outputStream = outputStream; } @Override @@ -105,7 +106,7 @@ public class RdfXContentGenerator

implements RdfCon return; } flushed = true; - builder = DefaultXContentBuilder.builder(JsonXContent.jsonContent(), out); + builder = DefaultXContentBuilder.builder(JsonXContent.jsonContent(), outputStream); builder.startObject(); build(this.resource); builder.endObject(); diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentParams.java b/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentParams.java index de0f714..a401bcc 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentParams.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/RdfXContentParams.java @@ -2,21 +2,12 @@ package org.xbib.content.rdf; import org.xbib.content.resource.IRINamespaceContext; -/** - * - */ public class RdfXContentParams implements RdfContentParams { - public static final RdfXContentParams RDF_X_CONTENT_PARAMS = new RdfXContentParams(); - private final IRINamespaceContext namespaceContext; private RdfXContentGenerator generator; - public RdfXContentParams() { - this.namespaceContext = IRINamespaceContext.newInstance(); - } - public RdfXContentParams(IRINamespaceContext namespaceContext) { this.namespaceContext = namespaceContext; } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContent.java b/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContent.java index 76fc1a0..6701f0f 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContent.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContent.java @@ -4,9 +4,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -/** - * - */ public class RouteRdfXContent implements RdfContent { private static final RouteRdfXContent ROUTE_RDF_X_CONTENT = new RouteRdfXContent(); @@ -28,18 +25,15 @@ public class RouteRdfXContent implements RdfContent { } @Override - public RdfContentGenerator createGenerator(OutputStream out) { - return new RouteRdfXContentGenerator<>(out); + public RdfContentGenerator createGenerator(RouteRdfXContentParams params, OutputStream outputStream) { + return new RouteRdfXContentGenerator<>(params, outputStream); } @Override - public RdfContentParser createParser(InputStream in) { + public RdfContentParser createParser(RouteRdfXContentParams params, InputStream inputStream) { throw new UnsupportedOperationException(); } - /** - * - */ @FunctionalInterface public interface RouteHandler { void complete(String content, RouteRdfXContentParams params) throws IOException; diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContentGenerator.java b/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContentGenerator.java index de0d9e7..a0d1b75 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContentGenerator.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContentGenerator.java @@ -13,8 +13,8 @@ public class RouteRdfXContentGenerator extends private boolean flushed; - RouteRdfXContentGenerator(OutputStream out) { - super(out); + RouteRdfXContentGenerator(R params, OutputStream outputStream) { + super(params, outputStream); } @Override diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContentParams.java b/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContentParams.java index 6215d7d..6449e30 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContentParams.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/RouteRdfXContentParams.java @@ -2,13 +2,8 @@ package org.xbib.content.rdf; import org.xbib.content.resource.IRINamespaceContext; -/** - * - */ public class RouteRdfXContentParams extends RdfXContentParams { - public static final RouteRdfXContentParams ROUTE_RDF_X_CONTENT_PARAMS = new RouteRdfXContentParams(); - private String index; private String type; @@ -23,20 +18,6 @@ public class RouteRdfXContentParams extends RdfXContentParams { private RouteRdfXContent.RouteHandler handler; - public RouteRdfXContentParams() { - super(); - } - - public RouteRdfXContentParams(String index, String type) { - super(); - this.index = index; - this.type = type; - } - - public RouteRdfXContentParams(IRINamespaceContext namespaceContext) { - super(namespaceContext); - } - public RouteRdfXContentParams(IRINamespaceContext namespaceContext, String index, String type) { super(namespaceContext); this.index = index; diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultRdfGraph.java b/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultRdfGraph.java index 5448b88..6a01c2d 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultRdfGraph.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultRdfGraph.java @@ -14,16 +14,14 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -/** - * - */ public class DefaultRdfGraph implements RdfGraph { - private RdfGraphParams params = DefaultRdfGraphParams.DEFAULT_PARAMS; + private RdfGraphParams params; private final Map resources = new LinkedHashMap<>(); - public DefaultRdfGraph() { + public DefaultRdfGraph(RdfGraphParams params) { + this.params = params; } @Override diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultRdfGraphParams.java b/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultRdfGraphParams.java index a6226a6..05aa835 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultRdfGraphParams.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultRdfGraphParams.java @@ -3,17 +3,14 @@ package org.xbib.content.rdf.internal; import org.xbib.content.rdf.RdfGraphParams; import org.xbib.content.resource.IRINamespaceContext; -/** - * - */ public class DefaultRdfGraphParams implements RdfGraphParams { - public static final DefaultRdfGraphParams DEFAULT_PARAMS = new DefaultRdfGraphParams(); private final IRINamespaceContext namespaceContext; + private final boolean writeNamespaceContext; - public DefaultRdfGraphParams() { - this.namespaceContext = IRINamespaceContext.newInstance(); + public DefaultRdfGraphParams(IRINamespaceContext namespaceContext) { + this.namespaceContext = namespaceContext; this.writeNamespaceContext = true; } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultResource.java b/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultResource.java index ee5210a..e826aa3 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultResource.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/internal/DefaultResource.java @@ -45,11 +45,13 @@ public class DefaultResource implements Resource, Comparable, XSDResou this(iri, new LinkedHashMultiMap<>(), new LinkedHashMap<>()); } + @SuppressWarnings("this-escape") public DefaultResource(DefaultResource resource) { this(resource.id(), resource.getAttributes(), resource.getChildren()); this.deleted = resource.isDeleted(); } + @SuppressWarnings("this-escape") public DefaultResource(IRI iri, MultiMap attributes, Map children) { setId(iri); this.attributes = attributes; diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonContent.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonContent.java index 02d0401..7807d3a 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonContent.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonContent.java @@ -10,9 +10,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -/** - * - */ public class JsonContent implements RdfContent { private static final JsonContent JSON_CONTENT = new JsonContent(); @@ -39,12 +36,12 @@ public class JsonContent implements RdfContent { } @Override - public RdfContentGenerator createGenerator(OutputStream out) throws IOException { - return new JsonContentGenerator(out); + public RdfContentGenerator createGenerator(JsonContentParams params, OutputStream outputStream) throws IOException { + return new JsonContentGenerator(params, outputStream); } @Override - public RdfContentParser createParser(InputStream in) throws IOException { - return new JsonContentParser<>(in); + public RdfContentParser createParser(JsonContentParams params, InputStream inputStream) throws IOException { + return new JsonContentParser<>(params, inputStream); } } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonContentGenerator.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonContentGenerator.java index 9fc1fed..d08dba0 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonContentGenerator.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonContentGenerator.java @@ -24,13 +24,14 @@ public class JsonContentGenerator implements RdfContentGenerator implements RdfContentParser { + private final JsonContentParams params; + private final Reader reader; private XmlHandler handler; @@ -31,11 +33,12 @@ public class JsonContentParser implements RdfContent private QName root; - public JsonContentParser(InputStream in) throws IOException { - this(new InputStreamReader(in, StandardCharsets.UTF_8)); + public JsonContentParser(JsonContentParams params, InputStream inputStream) throws IOException { + this(params, new InputStreamReader(inputStream, StandardCharsets.UTF_8)); } - public JsonContentParser(Reader reader) { + public JsonContentParser(JsonContentParams params, Reader reader) { + this.params = params; this.reader = reader; } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonResourceHandler.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonResourceHandler.java index ef5dc85..4cc33d4 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonResourceHandler.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/json/JsonResourceHandler.java @@ -2,14 +2,11 @@ package org.xbib.content.rdf.io.json; import org.xbib.content.rdf.io.xml.AbstractXmlResourceHandler; -/** - * - */ public abstract class JsonResourceHandler extends AbstractXmlResourceHandler { + @SuppressWarnings("this-escape") public JsonResourceHandler(JsonContentParams params) { super(params); super.setDefaultNamespace("", "http://json.org"); } - } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/json/package-info.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/json/package-info.java deleted file mode 100644 index 846b5fd..0000000 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/json/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for RDF JSON. - */ -package org.xbib.content.rdf.io.json; diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/nquads/package-info.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/nquads/package-info.java deleted file mode 100644 index dd8ca0b..0000000 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/nquads/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for RDF N-Quads. - */ -package org.xbib.content.rdf.io.nquads; diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContent.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContent.java index 4377d16..d7afc10 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContent.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContent.java @@ -10,9 +10,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -/** - * - */ public class NTripleContent implements RdfContent { private static final NTripleContent N_TRIPLE_CONTENT = new NTripleContent(); @@ -28,9 +25,9 @@ public class NTripleContent implements RdfContent { return new RdfContentBuilder<>(N_TRIPLE_CONTENT, params); } - public static RdfContentBuilder contentBuilder(OutputStream out, NTripleContentParams params) + public static RdfContentBuilder contentBuilder(NTripleContentParams params, OutputStream outputStream) throws IOException { - return new RdfContentBuilder<>(N_TRIPLE_CONTENT, params, out); + return new RdfContentBuilder<>(N_TRIPLE_CONTENT, params, outputStream); } @Override @@ -39,12 +36,12 @@ public class NTripleContent implements RdfContent { } @Override - public RdfContentGenerator createGenerator(OutputStream out) throws IOException { - return new NTripleContentGenerator(out); + public RdfContentGenerator createGenerator(NTripleContentParams params, OutputStream outputStream) throws IOException { + return new NTripleContentGenerator(params, outputStream); } @Override - public RdfContentParser createParser(InputStream in) throws IOException { - return new NTripleContentParser<>(in); + public RdfContentParser createParser(NTripleContentParams params, InputStream inputStream) throws IOException { + return new NTripleContentParser<>(params, inputStream); } } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentGenerator.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentGenerator.java index f1355a2..76bbe82 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentGenerator.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentGenerator.java @@ -24,13 +24,14 @@ public class NTripleContentGenerator private final Writer writer; - private NTripleContentParams params = NTripleContentParams.N_TRIPLE_CONTENT_PARAMS; + private NTripleContentParams params; - NTripleContentGenerator(OutputStream out) throws IOException { - this(new OutputStreamWriter(out, StandardCharsets.UTF_8)); + NTripleContentGenerator(NTripleContentParams params, OutputStream out) throws IOException { + this(params, new OutputStreamWriter(out, StandardCharsets.UTF_8)); } - NTripleContentGenerator(Writer writer) throws IOException { + NTripleContentGenerator(NTripleContentParams params, Writer writer) throws IOException { + this.params = params; this.writer = writer; } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentParams.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentParams.java index 1ecdbb0..fb27f16 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentParams.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentParams.java @@ -3,18 +3,10 @@ package org.xbib.content.rdf.io.ntriple; import org.xbib.content.rdf.RdfContentParams; import org.xbib.content.resource.IRINamespaceContext; -/** - * - */ public class NTripleContentParams implements RdfContentParams { - public static final NTripleContentParams N_TRIPLE_CONTENT_PARAMS = new NTripleContentParams(); private final IRINamespaceContext namespaceContext; - public NTripleContentParams() { - this.namespaceContext = IRINamespaceContext.newInstance(); - } - public NTripleContentParams(IRINamespaceContext namespaceContext) { this.namespaceContext = namespaceContext; } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentParser.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentParser.java index b6f853f..2d2fe4f 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentParser.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/NTripleContentParser.java @@ -52,11 +52,14 @@ public class NTripleContentParser implements RdfCont private RdfContentBuilder builder; - public NTripleContentParser(InputStream in) throws IOException { - this(new InputStreamReader(in, StandardCharsets.UTF_8)); + private NTripleContentParams params; + + public NTripleContentParser(NTripleContentParams params, InputStream inputStream) throws IOException { + this(params, new InputStreamReader(inputStream, StandardCharsets.UTF_8)); } - public NTripleContentParser(Reader reader) { + public NTripleContentParser(NTripleContentParams params, Reader reader) { + this.params = params; this.reader = reader; } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/package-info.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/package-info.java deleted file mode 100644 index 9e27ca6..0000000 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/ntriple/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for RDF N-Triples. - */ -package org.xbib.content.rdf.io.ntriple; diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/rdfxml/RdfXmlContent.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/rdfxml/RdfXmlContent.java index 5fba803..a231c04 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/rdfxml/RdfXmlContent.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/rdfxml/RdfXmlContent.java @@ -10,9 +10,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -/** - * - */ public class RdfXmlContent implements RdfContent { private static final RdfXmlContent RDF_XML_CONTENT = new RdfXmlContent(); @@ -28,9 +25,9 @@ public class RdfXmlContent implements RdfContent { return new RdfContentBuilder<>(RDF_XML_CONTENT, params); } - public static RdfContentBuilder contentBuilder(OutputStream out, RdfXmlContentParams params) + public static RdfContentBuilder contentBuilder(RdfXmlContentParams params, OutputStream outputStream) throws IOException { - return new RdfContentBuilder<>(RDF_XML_CONTENT, params, out); + return new RdfContentBuilder<>(RDF_XML_CONTENT, params, outputStream); } @Override @@ -39,12 +36,12 @@ public class RdfXmlContent implements RdfContent { } @Override - public RdfContentGenerator createGenerator(OutputStream os) throws IOException { - return new RdfXmlContentGenerator(os); + public RdfContentGenerator createGenerator(RdfXmlContentParams params, OutputStream outputStream) throws IOException { + return new RdfXmlContentGenerator(params, outputStream); } @Override - public RdfContentParser createParser(InputStream in) throws IOException { - return new RdfXmlContentParser<>(in); + public RdfContentParser createParser(RdfXmlContentParams params, InputStream inputStream) throws IOException { + return new RdfXmlContentParser<>(params, inputStream); } } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/rdfxml/RdfXmlContentGenerator.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/rdfxml/RdfXmlContentGenerator.java index b3a067a..e1ba0dd 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/rdfxml/RdfXmlContentGenerator.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/rdfxml/RdfXmlContentGenerator.java @@ -19,9 +19,6 @@ import java.io.Writer; import java.nio.charset.StandardCharsets; import java.util.Map; -/** - * RDF/XML writer. - */ public class RdfXmlContentGenerator implements RdfContentGenerator, Flushable, RdfConstants { private final Writer writer; @@ -34,18 +31,18 @@ public class RdfXmlContentGenerator implements RdfContentGenerator implements RdfConstants, RdfContentParser { + private R params; + private final Reader reader; private final Resource resource = new DefaultAnonymousResource(); @@ -69,11 +71,12 @@ public class RdfXmlContentParser implements RdfConst // counter for blank node generation private int bn = 0; - public RdfXmlContentParser(InputStream inputStream) { - this(createReader(inputStream)); + public RdfXmlContentParser(R params, InputStream inputStream) { + this(params, createReader(inputStream)); } - public RdfXmlContentParser(Reader reader) { + public RdfXmlContentParser(R params, Reader reader) { + this.params = params; this.reader = reader; } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/rdfxml/package-info.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/rdfxml/package-info.java deleted file mode 100644 index 6852d29..0000000 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/rdfxml/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for RDF XML. - */ -package org.xbib.content.rdf.io.rdfxml; diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/source/BaseStreamProcessor.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/source/BaseStreamProcessor.java index 009909b..63c2663 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/source/BaseStreamProcessor.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/source/BaseStreamProcessor.java @@ -3,11 +3,10 @@ package org.xbib.content.rdf.io.source; import java.io.IOException; import java.io.InputStream; import java.io.Reader; +import java.net.URI; import java.net.URL; import java.net.URLConnection; -/** - */ public abstract class BaseStreamProcessor { public BaseStreamProcessor() { @@ -39,7 +38,7 @@ public abstract class BaseStreamProcessor { * @throws IOException if process fails */ public final void process(String uri, String baseUri) throws IOException { - URL url = new URL(uri); + URL url = URI.create(uri).toURL(); URLConnection urlConnection = url.openConnection(); String mimeType = urlConnection.getContentType(); try (InputStream inputStream = urlConnection.getInputStream()) { diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/turtle/TurtleContent.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/turtle/TurtleContent.java index a566cfa..d3f5b6e 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/turtle/TurtleContent.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/turtle/TurtleContent.java @@ -28,9 +28,9 @@ public class TurtleContent implements RdfContent { return new RdfContentBuilder<>(TURTLE_CONTENT, params); } - public static RdfContentBuilder contentBuilder(OutputStream out, TurtleContentParams params) + public static RdfContentBuilder contentBuilder(TurtleContentParams params, OutputStream outputStream) throws IOException { - return new RdfContentBuilder<>(TURTLE_CONTENT, params, out); + return new RdfContentBuilder<>(TURTLE_CONTENT, params, outputStream); } @Override @@ -39,13 +39,13 @@ public class TurtleContent implements RdfContent { } @Override - public RdfContentGenerator createGenerator(OutputStream outputStream) throws IOException { - return new TurtleContentGenerator(outputStream); + public RdfContentGenerator createGenerator(TurtleContentParams params, OutputStream outputStream) throws IOException { + return new TurtleContentGenerator(params, outputStream); } @Override - public RdfContentParser createParser(InputStream inputStream) throws IOException { - return new TurtleContentParser<>(inputStream); + public RdfContentParser createParser(TurtleContentParams params, InputStream inputStream) throws IOException { + return new TurtleContentParser<>(params, inputStream); } } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/turtle/TurtleContentGenerator.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/turtle/TurtleContentGenerator.java index bfa7ba2..3d58d04 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/turtle/TurtleContentGenerator.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/turtle/TurtleContentGenerator.java @@ -53,13 +53,14 @@ public class TurtleContentGenerator implements RdfContentGenerator implements RdfContentParser { + private TurtleContentParams params; + private final Resource resource = new DefaultAnonymousResource(); private final HashMap bnodes = new HashMap<>(); @@ -92,11 +94,12 @@ public class TurtleContentParser implements RdfConte */ private NamespaceContext context; - public TurtleContentParser(InputStream in) throws IOException { - this(new InputStreamReader(in, StandardCharsets.UTF_8)); + public TurtleContentParser(TurtleContentParams params, InputStream inputStream) throws IOException { + this(params, new InputStreamReader(inputStream, StandardCharsets.UTF_8)); } - public TurtleContentParser(Reader reader) { + public TurtleContentParser(TurtleContentParams params, Reader reader) { + this.params = params; this.reader = new PushbackReader(reader, 2); this.context = XmlNamespaceContext.newInstance(); } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/AbstractXmlHandler.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/AbstractXmlHandler.java index b72d206..856356a 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/AbstractXmlHandler.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/AbstractXmlHandler.java @@ -23,7 +23,7 @@ import javax.xml.namespace.QName; public abstract class AbstractXmlHandler

extends DefaultHandler implements XmlHandler

{ - protected final RdfContentParams params; + protected final P params; protected final StringBuilder content; @@ -39,14 +39,14 @@ public abstract class AbstractXmlHandler

private int lastlevel; - public AbstractXmlHandler(RdfContentParams params) { + public AbstractXmlHandler(P params) { this.params = params; this.content = new StringBuilder(); this.parents = new LinkedList<>(); this.resource = new DefaultAnonymousResource(); } - public RdfContentParams getParams() { + public P getParams() { return params; } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/AbstractXmlResourceHandler.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/AbstractXmlResourceHandler.java index 0326b0b..1b2cd11 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/AbstractXmlResourceHandler.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/AbstractXmlResourceHandler.java @@ -20,7 +20,7 @@ public abstract class AbstractXmlResourceHandler

protected final LinkedList stack = new LinkedList<>(); - public AbstractXmlResourceHandler(RdfContentParams params) { + public AbstractXmlResourceHandler(P params) { super(params); } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/XmlContent.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/XmlContent.java index 815c442..932bd9e 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/XmlContent.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/XmlContent.java @@ -10,9 +10,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -/** - * - */ public class XmlContent implements RdfContent { private static final XmlContent XML_CONTENT = new XmlContent(); @@ -39,12 +36,12 @@ public class XmlContent implements RdfContent { } @Override - public RdfContentGenerator createGenerator(OutputStream outputStream) throws IOException { - return new XmlContentGenerator(outputStream); + public RdfContentGenerator createGenerator(XmlContentParams params, OutputStream outputStream) throws IOException { + return new XmlContentGenerator(params, outputStream); } @Override - public RdfContentParser createParser(InputStream inputStream) throws IOException { - return new XmlContentParser<>(inputStream); + public RdfContentParser createParser(XmlContentParams params, InputStream inputStream) throws IOException { + return new XmlContentParser<>(params, inputStream); } } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/XmlContentGenerator.java b/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/XmlContentGenerator.java index d33c1db..e8120d7 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/XmlContentGenerator.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/io/xml/XmlContentGenerator.java @@ -36,13 +36,14 @@ public class XmlContentGenerator implements RdfContentGenerator implements RdfContentParser

{ + private final P params; + private final Reader reader; private RdfContentBuilder

builder; @@ -35,11 +37,12 @@ public class XmlContentParser

implements RdfContentP private boolean validate = false; - public XmlContentParser(InputStream in) { - this(new InputStreamReader(in, StandardCharsets.UTF_8)); + public XmlContentParser(P params, InputStream inputStream) { + this(params, new InputStreamReader(inputStream, StandardCharsets.UTF_8)); } - public XmlContentParser(Reader reader) { + public XmlContentParser(P params, Reader reader) { + this.params = params; this.reader = new NormalizeEolFilter(reader, System.getProperty("line.separator"), true); } diff --git a/content-rdf/src/main/java/org/xbib/content/rdf/util/LinkedHashMultiMap.java b/content-rdf/src/main/java/org/xbib/content/rdf/util/LinkedHashMultiMap.java index 6d4e19b..d948d47 100644 --- a/content-rdf/src/main/java/org/xbib/content/rdf/util/LinkedHashMultiMap.java +++ b/content-rdf/src/main/java/org/xbib/content/rdf/util/LinkedHashMultiMap.java @@ -4,7 +4,6 @@ import java.util.Collection; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; -import java.util.Objects; import java.util.Set; /** @@ -20,14 +19,6 @@ public class LinkedHashMultiMap implements MultiMap { this.map = new LinkedHashMap<>(); } - public LinkedHashMultiMap(MultiMap multiMap) { - Objects.requireNonNull(multiMap); - this.map = new LinkedHashMap<>(); - for (K k : multiMap.keySet()) { - putAll(k, multiMap.get(k)); - } - } - @Override public int size() { return map.size(); @@ -98,7 +89,7 @@ public class LinkedHashMultiMap implements MultiMap { @Override public boolean equals(Object obj) { - return obj != null && obj instanceof LinkedHashMultiMap && map.equals(((LinkedHashMultiMap) obj).map); + return obj instanceof LinkedHashMultiMap && map.equals(((LinkedHashMultiMap) obj).map); } @Override diff --git a/content-rdf/src/test/java/module-info.java b/content-rdf/src/test/java/module-info.java new file mode 100644 index 0000000..56225c2 --- /dev/null +++ b/content-rdf/src/test/java/module-info.java @@ -0,0 +1,17 @@ +module org.xbib.content.rdf.test { + requires java.logging; + requires java.xml; + requires org.junit.jupiter.api; + requires org.xbib.content.rdf; + requires org.xbib.content.resource; + requires org.xbib.net; + opens org.xbib.content.rdf.test to org.junit.platform.commons; + opens org.xbib.content.rdf.test.internal to org.junit.platform.commons; + opens org.xbib.content.rdf.test.io to org.junit.platform.commons; + opens org.xbib.content.rdf.test.io.json to org.junit.platform.commons; + opens org.xbib.content.rdf.test.io.ntriple to org.junit.platform.commons; + opens org.xbib.content.rdf.test.io.rdfxml to org.junit.platform.commons; + opens org.xbib.content.rdf.test.io.turtle to org.junit.platform.commons; + opens org.xbib.content.rdf.test.io.xml to org.junit.platform.commons; + opens org.xbib.content.rdf.test.util to org.junit.platform.commons; +} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/internal/package-info.java b/content-rdf/src/test/java/org/xbib/content/rdf/internal/package-info.java deleted file mode 100644 index 1761480..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/internal/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing internal RDF. - */ -package org.xbib.content.rdf.internal; diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/json/package-info.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/json/package-info.java deleted file mode 100644 index c639400..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/json/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing RDF JSON. - */ -package org.xbib.content.rdf.io.json; diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/ntriple/NTripleReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/ntriple/NTripleReaderTest.java deleted file mode 100644 index 1976079..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/ntriple/NTripleReaderTest.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.xbib.content.rdf.io.ntriple; - -import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder; - -import org.junit.jupiter.api.Test; -import org.xbib.content.rdf.RdfContentBuilder; -import org.xbib.content.rdf.StreamTester; - -import java.io.IOException; -import java.io.InputStream; - -public class NTripleReaderTest extends StreamTester { - - @Test - public void testReader() throws Exception { - String filename = "list.nt"; - InputStream in = getClass().getResourceAsStream(filename); - if (in == null) { - throw new IOException("file " + filename + " not found"); - } - RdfContentBuilder builder = ntripleBuilder(); - NTripleContentParser reader = new NTripleContentParser<>(in); - reader.setBuilder(builder); - reader.parse(); - assertStream("", getClass().getResource("rdfxml.ttl").openStream(), - builder.streamInput()); - } - -} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/ntriple/package-info.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/ntriple/package-info.java deleted file mode 100644 index 1f0acd7..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/ntriple/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing RDF N-Triples. - */ -package org.xbib.content.rdf.io.ntriple; diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/package-info.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/package-info.java deleted file mode 100644 index c6481f6..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing RDF input/output. - */ -package org.xbib.content.rdf.io; diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/GNDRdfXmlReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/GNDRdfXmlReaderTest.java deleted file mode 100644 index c7ea928..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/GNDRdfXmlReaderTest.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.xbib.content.rdf.io.rdfxml; - -import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; - -import org.junit.jupiter.api.Test; -import org.xbib.content.rdf.RdfContentFactory; -import org.xbib.content.rdf.io.ntriple.NTripleContentParams; -import org.xbib.content.rdf.io.turtle.TurtleContentParams; -import org.xbib.content.resource.IRINamespaceContext; -import org.xbib.content.rdf.StreamTester; - -import java.io.InputStream; - -public class GNDRdfXmlReaderTest extends StreamTester { - - @Test - public void testGNDfromRdfXmltoTurtle() throws Exception { - String filename = "GND.rdf"; - InputStream in = getClass().getResourceAsStream(filename); - TurtleContentParams params = new TurtleContentParams(IRINamespaceContext.newInstance(), false); - RdfXmlContentParser reader = new RdfXmlContentParser<>(in); - StringBuilder sb = new StringBuilder(); - reader.setRdfContentBuilderProvider(() -> turtleBuilder(params)); - reader.setRdfContentBuilderHandler(builder -> sb.append(builder.string())); - reader.parse(); - assertStream("gnd.ttl", getClass().getResourceAsStream("gnd.ttl"), sb.toString()); - } - - @Test - public void testAnotherGNDfromRdfXmltoTurtle() throws Exception { - String filename = "GND.rdf"; - InputStream in = getClass().getResourceAsStream(filename); - TurtleContentParams params = new TurtleContentParams(IRINamespaceContext.newInstance(), false); - RdfXmlContentParser reader = new RdfXmlContentParser<>(in); - StringBuilder sb = new StringBuilder(); - reader.setRdfContentBuilderProvider(() -> turtleBuilder(params)); - reader.setRdfContentBuilderHandler(builder -> sb.append(builder.string())); - reader.parse(); - assertStream("gnd.ttl", getClass().getResourceAsStream("gnd.ttl"), sb.toString()); - } - - @Test - public void testGNDtoNtriple() throws Exception { - String filename = "GND.rdf"; - InputStream in = getClass().getResourceAsStream(filename); - RdfXmlContentParser reader = new RdfXmlContentParser<>(in); - StringBuilder sb = new StringBuilder(); - reader.setRdfContentBuilderProvider(RdfContentFactory::ntripleBuilder); - reader.setRdfContentBuilderHandler(builder -> sb.append(builder.string())); - reader.parse(); - assertStream("GND.nt", getClass().getResourceAsStream("GND.nt"), sb.toString()); - } - -} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/RdfXmlReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/RdfXmlReaderTest.java deleted file mode 100644 index fb67865..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/RdfXmlReaderTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.xbib.content.rdf.io.rdfxml; - -import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; - -import org.junit.jupiter.api.Test; -import org.xbib.content.rdf.internal.DefaultAnonymousResource; -import org.xbib.content.rdf.io.turtle.TurtleContentParams; -import org.xbib.content.resource.IRINamespaceContext; -import org.xbib.content.rdf.StreamTester; - -import java.io.InputStream; - -public class RdfXmlReaderTest extends StreamTester { - - @Test - public void testReader() throws Exception { - String filename = "118540238.xml"; - InputStream in = getClass().getResourceAsStream(filename); - DefaultAnonymousResource.reset(); - TurtleContentParams params = new TurtleContentParams(IRINamespaceContext.getInstance(), false); - RdfXmlContentParser reader = new RdfXmlContentParser<>(in); - StringBuilder sb = new StringBuilder(); - reader.setRdfContentBuilderProvider(() -> turtleBuilder(params)); - reader.setRdfContentBuilderHandler(builder -> sb.append(builder.string())); - reader.parse(); - assertStream("118540238.ttl", getClass().getResourceAsStream("118540238.ttl"), sb.toString()); - } -} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/VIAFRdfXmlReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/VIAFRdfXmlReaderTest.java deleted file mode 100644 index 6edbff7..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/VIAFRdfXmlReaderTest.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.xbib.content.rdf.io.rdfxml; - -import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; - -import org.junit.jupiter.api.Test; -import org.xbib.content.rdf.io.turtle.TurtleContentParams; -import org.xbib.content.resource.IRINamespaceContext; -import org.xbib.content.rdf.StreamTester; - -import java.io.IOException; -import java.io.InputStream; - -public class VIAFRdfXmlReaderTest extends StreamTester { - - @Test - public void testVIAF() throws Exception { - InputStream in = getClass().getResource("VIAF.rdf").openStream(); - if (in == null) { - throw new IOException("VIAF.rdf not found"); - } - TurtleContentParams params = new TurtleContentParams(IRINamespaceContext.newInstance(), false); - StringBuilder sb = new StringBuilder(); - new RdfXmlContentParser(in) - .setRdfContentBuilderProvider(() -> turtleBuilder(params)) - .setRdfContentBuilderHandler(builder -> sb.append(builder.string())) - .parse(); - assertStream("viaf.ttl", getClass().getResource("viaf.ttl").openStream(), sb.toString()); - } -} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/package-info.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/package-info.java deleted file mode 100644 index 982bcdd..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing RDF XML. - */ -package org.xbib.content.rdf.io.rdfxml; diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/turtle/TurtleConformanceTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/turtle/TurtleConformanceTest.java deleted file mode 100644 index 6c269be..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/turtle/TurtleConformanceTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.xbib.content.rdf.io.turtle; - -import org.junit.jupiter.api.Test; -import org.xbib.content.rdf.RdfContentFactory; -import org.xbib.content.resource.IRI; -import org.xbib.content.rdf.StreamTester; - -import java.io.InputStream; -import java.text.MessageFormat; - -/** - * - */ -public class TurtleConformanceTest extends StreamTester { - - @Test - public void conformance() throws Exception { - for (int n = 0; n < 30; n++) { - String testNum = String.format("%02d", n); - InputStream in = getClass().getResource("/turtle/test-" + testNum + ".ttl").openStream(); - TurtleContentParser turtleParser = new TurtleContentParser(in) - .setBaseIRI(IRI.create("http://example/base/")); - turtleParser.setRdfContentBuilderProvider(RdfContentFactory::turtleBuilder); - turtleParser.setRdfContentBuilderHandler(b -> { - //logger.log(Level.INFO, MessageFormat.format("turtle test {0}", b.string())); - }); - turtleParser.parse(); - } - } -} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/turtle/package-info.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/turtle/package-info.java deleted file mode 100644 index faa5efd..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/turtle/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing RDF Turtle. - */ -package org.xbib.content.rdf.io.turtle; diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/xml/XmlReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/xml/XmlReaderTest.java deleted file mode 100644 index 558bedc..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/xml/XmlReaderTest.java +++ /dev/null @@ -1,217 +0,0 @@ -package org.xbib.content.rdf.io.xml; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; - -import org.junit.jupiter.api.Test; -import org.xbib.content.rdf.RdfContentBuilder; -import org.xbib.content.rdf.Resource; -import org.xbib.content.rdf.Triple; -import org.xbib.content.rdf.internal.DefaultAnonymousResource; -import org.xbib.content.rdf.internal.DefaultResource; -import org.xbib.content.rdf.io.ntriple.NTripleContent; -import org.xbib.content.rdf.io.ntriple.NTripleContentParams; -import org.xbib.content.rdf.io.turtle.TurtleContentParams; -import org.xbib.content.resource.IRI; -import org.xbib.content.resource.IRINamespaceContext; -import org.xbib.content.resource.NamespaceContext; -import org.xbib.content.rdf.StreamTester; -import org.xbib.net.PercentEncoders; - -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.LinkedList; -import java.util.List; - -import javax.xml.namespace.QName; - -/** - * - */ -public class XmlReaderTest extends StreamTester { - - @Test - public void testOAIDC() throws Exception { - String filename = "oro-eprint-25656.xml"; - InputStream in = getClass().getResourceAsStream(filename); - if (in == null) { - throw new IOException("file " + filename + " not found"); - } - - IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(); - namespaceContext.addNamespace("oaidc", "http://www.openarchives.org/OAI/2.0/oai_dc/"); - namespaceContext.addNamespace("dc", "http://purl.org/dc/elements/1.1/"); - - XmlContentParams params = new XmlContentParams(namespaceContext); - XmlHandler xmlHandler = new AbstractXmlResourceHandler<>(params) { - - @Override - public boolean isResourceDelimiter(QName name) { - return "oai_dc".equals(name.getLocalPart()); - } - - @Override - public void identify(QName name, String value, IRI identifier) { - if ("identifier".equals(name.getLocalPart()) && DefaultResource.isBlank(getResource())) { - try { - // make sure we can build an opaque IRI, whatever is out there - getResource().setId(IRI.create("id:" + - PercentEncoders.getRegNameEncoder(StandardCharsets.UTF_8).encode(value))); - } catch (IOException e) { - // swallow - } - } - } - - @Override - public boolean skip(QName name) { - // skip dc:dc element - return "dc".equals(name.getLocalPart()); - } - - @Override - public XmlHandler setNamespaceContext(NamespaceContext namespaceContext) { - return this; - } - - @Override - public IRINamespaceContext getNamespaceContext() { - return namespaceContext; - } - }; - TurtleContentParams turtleParams = new TurtleContentParams(namespaceContext, true); - RdfContentBuilder builder = turtleBuilder(turtleParams); - xmlHandler.setBuilder(builder); - new XmlContentParser(in) - .setHandler(xmlHandler) - .parse(); - assertStream("dc.ttl", getClass().getResource("dc.ttl").openStream(), - builder.streamInput()); - } - - @Test - public void testXmlArray() throws Exception { - String filename = "array.xml"; - InputStream in = getClass().getResourceAsStream(filename); - if (in == null) { - throw new IOException("file " + filename + " not found"); - } - IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(); - XmlContentParams params = new XmlContentParams(namespaceContext); - AbstractXmlHandler xmlHandler = new AbstractXmlResourceHandler<>(params) { - - @Override - public boolean isResourceDelimiter(QName name) { - return false; - } - - @Override - public void identify(QName name, String value, IRI identifier) { - getResource().setId(IRI.create("id:1")); - } - - @Override - public boolean skip(QName name) { - return false; - } - - @Override - public XmlHandler setNamespaceContext(NamespaceContext namespaceContext) { - return this; - } - - @Override - public IRINamespaceContext getNamespaceContext() { - return namespaceContext; - } - }; - - MyBuilder builder = new MyBuilder(); - xmlHandler.setDefaultNamespace("xml", "http://xmltest") - .setBuilder(builder); - DefaultAnonymousResource.reset(); - new XmlContentParser(in) - .setHandler(xmlHandler) - .parse(); - assertEquals("[id:1 xml:dates _:b2, _:b2 xml:date 2001, _:b2 xml:date 2002, _:b2 xml:date 2003]", - builder.getTriples().toString() - ); - } - - @Test - public void testXmlAttribute() throws Exception { - String filename = "attribute.xml"; - InputStream in = getClass().getResourceAsStream(filename); - if (in == null) { - throw new IOException("file " + filename + " not found"); - } - IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(); - XmlContentParams params = new XmlContentParams(namespaceContext); - AbstractXmlHandler xmlHandler = new AbstractXmlResourceHandler<>(params) { - @Override - public boolean isResourceDelimiter(QName name) { - return false; - } - - @Override - public void identify(QName name, String value, IRI identifier) { - getResource().setId(IRI.create("id:1")); - } - - @Override - public boolean skip(QName name) { - return false; - } - - @Override - public XmlHandler setNamespaceContext(NamespaceContext namespaceContext) { - return this; - } - - @Override - public IRINamespaceContext getNamespaceContext() { - return namespaceContext; - } - }; - - MyBuilder builder = new MyBuilder(); - - xmlHandler.setDefaultNamespace("xml", "http://localhost") - .setBuilder(builder); - DefaultAnonymousResource.reset(); - new XmlContentParser(in) - .setHandler(xmlHandler) - .parse(); - assertEquals("[id:1 xml:dates _:b2, _:b2 xml:date _:b3, _:b3 xml:@href 1, _:b2 xml:date _:b5, " - + "_:b5 xml:@href 2, _:b2 xml:date _:b7, _:b7 xml:@href 3, _:b2 xml:date _:b9, _:b9 xml:hello World]", - builder.getTriples().toString() - ); - } - - private static class MyBuilder extends RdfContentBuilder { - - final List triples = new LinkedList<>(); - - MyBuilder() throws IOException { - super(NTripleContent.nTripleContent(), NTripleContentParams.N_TRIPLE_CONTENT_PARAMS); - } - - @Override - public MyBuilder receive(Triple triple) { - triples.add(triple); - return this; - } - - @Override - public MyBuilder receive(Resource resource) throws IOException { - triples.addAll(resource.triples()); - return this; - } - - List getTriples() { - return triples; - } - } - -} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/xml/package-info.java b/content-rdf/src/test/java/org/xbib/content/rdf/io/xml/package-info.java deleted file mode 100644 index 4bdd16d..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/xml/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing XML to RDF. - */ -package org.xbib.content.rdf.io.xml; diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/package-info.java b/content-rdf/src/test/java/org/xbib/content/rdf/package-info.java deleted file mode 100644 index 9995d31..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing RDF content. - */ -package org.xbib.content.rdf; diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/RdfXContentGeneratorTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/RdfXContentGeneratorTest.java similarity index 81% rename from content-rdf/src/test/java/org/xbib/content/rdf/RdfXContentGeneratorTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/RdfXContentGeneratorTest.java index f4d171b..404c506 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/RdfXContentGeneratorTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/RdfXContentGeneratorTest.java @@ -1,12 +1,16 @@ -package org.xbib.content.rdf; +package org.xbib.content.rdf.test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.xbib.content.rdf.RdfXContentFactory.rdfXContentBuilder; import org.junit.jupiter.api.Test; +import org.xbib.content.rdf.RdfContentBuilder; +import org.xbib.content.rdf.RdfXContentParams; +import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.internal.DefaultLiteral; import org.xbib.content.rdf.internal.DefaultResource; import org.xbib.content.resource.IRI; +import org.xbib.content.resource.IRINamespaceContext; /** * @@ -21,7 +25,8 @@ public class RdfXContentGeneratorTest { resource.add("urn:property", "Hello World") .add("urn:date", l) .add("urn:link", IRI.create("urn:pointer")); - RdfXContentParams params = new RdfXContentParams(); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + RdfXContentParams params = new RdfXContentParams(namespaceContext); try (RdfContentBuilder builder = rdfXContentBuilder(params)) { builder.receive(resource); } @@ -40,7 +45,8 @@ public class RdfXContentGeneratorTest { .add("rdf:type", IRI.create("urn:type1")) .newResource("urn:embedded") .add("rdf:type", IRI.create("urn:type2")); - RdfXContentParams params = new RdfXContentParams(); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + RdfXContentParams params = new RdfXContentParams(namespaceContext); try (RdfContentBuilder builder = rdfXContentBuilder(params)) { builder.receive(resource); } @@ -61,7 +67,8 @@ public class RdfXContentGeneratorTest { .add("rdf:type", IRI.create("urn:type2")); resource.newResource("urn:embedded2") .add("rdf:type", IRI.create("urn:type3")); - RdfXContentParams params = new RdfXContentParams(); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + RdfXContentParams params = new RdfXContentParams(namespaceContext); try (RdfContentBuilder builder = rdfXContentBuilder(params)) { builder.receive(resource); } @@ -79,7 +86,8 @@ public class RdfXContentGeneratorTest { .add("urn:date", l) .add("rdf:type", IRI.create("urn:type1")) .newResource("urn:embedded"); // empty resource, do not copy - RdfXContentParams params = new RdfXContentParams(); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + RdfXContentParams params = new RdfXContentParams(namespaceContext); try (RdfContentBuilder builder = rdfXContentBuilder(params)) { builder.receive(resource); } diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/RouteRdfXContentBuilderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/RouteRdfXContentBuilderTest.java similarity index 50% rename from content-rdf/src/test/java/org/xbib/content/rdf/RouteRdfXContentBuilderTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/RouteRdfXContentBuilderTest.java index 67c4e1b..1cd28d4 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/RouteRdfXContentBuilderTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/RouteRdfXContentBuilderTest.java @@ -1,9 +1,9 @@ -package org.xbib.content.rdf; +package org.xbib.content.rdf.test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.xbib.content.rdf.RdfXContentFactory.routeRdfXContentBuilder; -import static org.xbib.content.rdf.StreamTester.assertStream; +import static org.xbib.content.rdf.test.StreamTester.assertStream; import java.text.MessageFormat; import java.util.concurrent.atomic.AtomicBoolean; @@ -11,10 +11,14 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; import java.util.logging.Logger; import org.junit.jupiter.api.Test; +import org.xbib.content.rdf.RdfContentBuilder; +import org.xbib.content.rdf.Resource; +import org.xbib.content.rdf.RouteRdfXContentParams; import org.xbib.content.rdf.internal.DefaultLiteral; import org.xbib.content.rdf.internal.DefaultResource; import org.xbib.content.rdf.io.rdfxml.RdfXmlContentParser; import org.xbib.content.resource.IRI; +import org.xbib.content.resource.IRINamespaceContext; import java.io.IOException; import java.io.InputStream; @@ -31,7 +35,8 @@ public class RouteRdfXContentBuilderTest { resource.add("urn:property", "Hello World") .add("urn:date", l) .add("urn:link", IRI.create("urn:pointer")); - RouteRdfXContentParams params = new RouteRdfXContentParams("index", "type"); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + RouteRdfXContentParams params = new RouteRdfXContentParams(namespaceContext, "index", "type"); AtomicBoolean found = new AtomicBoolean(); params.setHandler((content, p) -> { assertEquals(p.getIndex() + " " + p.getType() + " 1 " + content, @@ -46,29 +51,31 @@ public class RouteRdfXContentBuilderTest { @Test public void testVIAF() throws Exception { - InputStream in = getClass().getResourceAsStream("VIAF.rdf"); - if (in == null) { - throw new IOException("VIAF.rdf not found"); + try (InputStream inputStream = getClass().getResourceAsStream("VIAF.rdf")) { + if (inputStream == null) { + throw new IOException("VIAF.rdf not found"); + } + StringBuilder sb = new StringBuilder(); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + RouteRdfXContentParams params = new RouteRdfXContentParams(namespaceContext, "index", "type"); + AtomicInteger counter = new AtomicInteger(); + params.setHandler((content, p) -> { + logger.log(Level.INFO, MessageFormat.format("handle: {0} {1} {2} {3}", + p.getIndex(), p.getType(), p.getId(), content)); + counter.incrementAndGet(); + }); + RdfXmlContentParser parser = new RdfXmlContentParser<>(params, inputStream); + parser.setRdfContentBuilderProvider(() -> routeRdfXContentBuilder(params)) + .setRdfContentBuilderHandler(builder -> { + if (!sb.isEmpty()) { + sb.append("\n"); + } + sb.append(builder.string()); + }) + .parse(); + assertStream("viaf.json", getClass().getResourceAsStream("viaf.json"), + sb.toString()); + assertEquals(5, counter.get()); } - StringBuilder sb = new StringBuilder(); - RouteRdfXContentParams params = new RouteRdfXContentParams("index", "type"); - AtomicInteger counter = new AtomicInteger(); - params.setHandler((content, p) -> { - logger.log(Level.INFO, MessageFormat.format("handle: {0} {1} {2} {3}", - p.getIndex(), p.getType(), p.getId(), content)); - counter.incrementAndGet(); - }); - new RdfXmlContentParser(in) - .setRdfContentBuilderProvider(() -> routeRdfXContentBuilder(params)) - .setRdfContentBuilderHandler(builder -> { - if (sb.length() > 0) { - sb.append("\n"); - } - sb.append(builder.string()); - }) - .parse(); - assertStream("viaf.json", getClass().getResourceAsStream("viaf.json"), - sb.toString()); - assertEquals(5, counter.get()); } } diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/StreamTester.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/StreamTester.java similarity index 98% rename from content-rdf/src/test/java/org/xbib/content/rdf/StreamTester.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/StreamTester.java index aee16df..acd8486 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/StreamTester.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/StreamTester.java @@ -1,4 +1,4 @@ -package org.xbib.content.rdf; +package org.xbib.content.rdf.test; import static org.junit.jupiter.api.Assertions.fail; import java.io.ByteArrayInputStream; diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/internal/BlankNodeTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/internal/BlankNodeTest.java similarity index 94% rename from content-rdf/src/test/java/org/xbib/content/rdf/internal/BlankNodeTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/internal/BlankNodeTest.java index 1cf6258..a5654f5 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/internal/BlankNodeTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/internal/BlankNodeTest.java @@ -1,20 +1,19 @@ -package org.xbib.content.rdf.internal; +package org.xbib.content.rdf.test.internal; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.Triple; +import org.xbib.content.rdf.internal.DefaultAnonymousResource; +import org.xbib.content.rdf.internal.DefaultResource; import org.xbib.content.resource.IRI; import java.util.Iterator; -/** - * - */ public class BlankNodeTest { @Test - public void testBlankNodeRenumbering() throws Exception { + public void testBlankNodeRenumbering() { DefaultAnonymousResource.reset(); Resource r = new DefaultResource(IRI.create("urn:meta1")); // test order of adding diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/internal/LiteralTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/internal/LiteralTest.java similarity index 81% rename from content-rdf/src/test/java/org/xbib/content/rdf/internal/LiteralTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/internal/LiteralTest.java index 2fdbd04..123cf9e 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/internal/LiteralTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/internal/LiteralTest.java @@ -1,7 +1,8 @@ -package org.xbib.content.rdf.internal; +package org.xbib.content.rdf.test.internal; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; +import org.xbib.content.rdf.internal.DefaultLiteral; import org.xbib.content.resource.IRI; /** diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/internal/ResourceTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/internal/ResourceTest.java similarity index 93% rename from content-rdf/src/test/java/org/xbib/content/rdf/internal/ResourceTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/internal/ResourceTest.java index 26fe152..89e7f55 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/internal/ResourceTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/internal/ResourceTest.java @@ -1,4 +1,4 @@ -package org.xbib.content.rdf.internal; +package org.xbib.content.rdf.test.internal; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -10,6 +10,10 @@ import org.xbib.content.rdf.Literal; import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.Triple; +import org.xbib.content.rdf.internal.DefaultAnonymousResource; +import org.xbib.content.rdf.internal.DefaultLiteral; +import org.xbib.content.rdf.internal.DefaultResource; +import org.xbib.content.rdf.internal.DefaultTriple; import org.xbib.content.rdf.io.ntriple.NTripleContentParams; import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRINamespaceContext; @@ -133,7 +137,6 @@ public class ResourceTest { assertEquals("urn:doc1 urn:res1 _:b2", it.next().toString()); assertEquals("_:b2 urn:has a second res value", it.next().toString()); assertFalse(it.hasNext()); - Iterator itp = r.predicates().iterator(); IRI pred = itp.next(); assertEquals("urn:valueURI", pred.toString()); @@ -227,11 +230,11 @@ public class ResourceTest { @Test public void testTripleAdder() throws IOException { - IRINamespaceContext context = IRINamespaceContext.newInstance(); - context.addNamespace("vcard", "http://www.w3.org/2006/vcard/ns#"); - context.addNamespace("owl", "http://www.w3.org/2002/07/owl#"); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + namespaceContext.addNamespace("vcard", "http://www.w3.org/2006/vcard/ns#"); + namespaceContext.addNamespace("owl", "http://www.w3.org/2002/07/owl#"); // ID with compact IRI, will be expanded - Resource r = DefaultResource.create(context, "vcard:value"); + Resource r = DefaultResource.create(namespaceContext, "vcard:value"); // triples with expanded IRIs Triple t1 = new DefaultTriple(DefaultResource.create("http://www.w3.org/2006/vcard/ns#value"), IRI.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"), @@ -240,7 +243,7 @@ public class ResourceTest { IRI.create("http://www.w3.org/1999/02/22-rdf-syntax-ns#label"), new DefaultLiteral("value@en")); r.add(t1).add(t2); - NTripleContentParams params = new NTripleContentParams(context); + NTripleContentParams params = new NTripleContentParams(namespaceContext); RdfContentBuilder builder = ntripleBuilder(params); builder.receive(r); assertEquals(" .\n" + diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/internal/TripleTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/internal/TripleTest.java similarity index 76% rename from content-rdf/src/test/java/org/xbib/content/rdf/internal/TripleTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/internal/TripleTest.java index ad8dc38..54e8732 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/internal/TripleTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/internal/TripleTest.java @@ -1,8 +1,11 @@ -package org.xbib.content.rdf.internal; +package org.xbib.content.rdf.test.internal; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; import org.xbib.content.rdf.Resource; +import org.xbib.content.rdf.internal.DefaultLiteral; +import org.xbib.content.rdf.internal.DefaultResource; +import org.xbib.content.rdf.internal.DefaultTriple; import org.xbib.content.resource.IRI; import org.xbib.content.resource.Node; diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/IOTests.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/IOTests.java similarity index 51% rename from content-rdf/src/test/java/org/xbib/content/rdf/io/IOTests.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/io/IOTests.java index dfdd02e..06ae568 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/IOTests.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/IOTests.java @@ -1,4 +1,4 @@ -package org.xbib.content.rdf.io; +package org.xbib.content.rdf.test.io; /** * diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/json/JsonReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/json/JsonReaderTest.java similarity index 80% rename from content-rdf/src/test/java/org/xbib/content/rdf/io/json/JsonReaderTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/io/json/JsonReaderTest.java index dd53abb..9d852bd 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/json/JsonReaderTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/json/JsonReaderTest.java @@ -1,33 +1,33 @@ -package org.xbib.content.rdf.io.json; +package org.xbib.content.rdf.test.io.json; import static org.xbib.content.rdf.RdfContentFactory.jsonBuilder; import org.junit.jupiter.api.Test; import org.xbib.content.rdf.RdfContentBuilder; +import org.xbib.content.rdf.io.json.JsonContentParams; +import org.xbib.content.rdf.io.json.JsonContentParser; +import org.xbib.content.rdf.io.json.JsonResourceHandler; import org.xbib.content.rdf.io.xml.XmlHandler; import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.NamespaceContext; -import org.xbib.content.rdf.StreamTester; +import org.xbib.content.rdf.test.StreamTester; import java.io.IOException; import java.io.InputStream; import javax.xml.namespace.QName; -/** - * - */ public class JsonReaderTest extends StreamTester { @Test public void testGenericJsonReader() throws Exception { String filename = "dc.json"; - InputStream in = getClass().getResourceAsStream(filename); - if (in == null) { + InputStream inputStream = getClass().getResourceAsStream(filename); + if (inputStream == null) { throw new IOException("file " + filename + " not found"); } - IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); namespaceContext.addNamespace("dc", "http://purl.org/dc/elements/1.1/"); namespaceContext.addNamespace("dcterms", "http://purl.org/dc/terms/"); namespaceContext.addNamespace("bib", "info:srw/cql-context-set/1/bib-v1/"); @@ -63,12 +63,11 @@ public class JsonReaderTest extends StreamTester { return namespaceContext; } }; - RdfContentBuilder builder = jsonBuilder(); + RdfContentBuilder builder = jsonBuilder(params); jsonHandler.setBuilder(builder); - new JsonContentParser(in) - .setHandler(jsonHandler) + JsonContentParser parser = new JsonContentParser(params, inputStream); + parser.setHandler(jsonHandler) .root(new QName("http://purl.org/dc/elements/1.1/", "root", "dc")) .parse(); } - } diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/test/io/ntriple/NTripleReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/ntriple/NTripleReaderTest.java new file mode 100644 index 0000000..6489332 --- /dev/null +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/ntriple/NTripleReaderTest.java @@ -0,0 +1,34 @@ +package org.xbib.content.rdf.test.io.ntriple; + +import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder; + +import org.junit.jupiter.api.Test; +import org.xbib.content.rdf.RdfContentBuilder; +import org.xbib.content.rdf.test.StreamTester; +import org.xbib.content.rdf.io.ntriple.NTripleContentParams; +import org.xbib.content.rdf.io.ntriple.NTripleContentParser; +import org.xbib.content.resource.IRINamespaceContext; + +import java.io.IOException; +import java.io.InputStream; + +public class NTripleReaderTest extends StreamTester { + + @Test + public void testReader() throws Exception { + String filename = "list.nt"; + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + NTripleContentParams params = new NTripleContentParams(namespaceContext); + try (InputStream inputStream = getClass().getResourceAsStream(filename)) { + if (inputStream == null) { + throw new IOException("file " + filename + " not found"); + } + RdfContentBuilder builder = ntripleBuilder(params); + NTripleContentParser reader = new NTripleContentParser<>(params, inputStream); + reader.setBuilder(builder); + reader.parse(); + assertStream("", getClass().getResource("rdfxml.ttl").openStream(), + builder.streamInput()); + } + } +} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/ntriple/NTripleTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/ntriple/NTripleTest.java similarity index 61% rename from content-rdf/src/test/java/org/xbib/content/rdf/io/ntriple/NTripleTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/io/ntriple/NTripleTest.java index ff79f14..c2a9b43 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/ntriple/NTripleTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/ntriple/NTripleTest.java @@ -1,7 +1,7 @@ -package org.xbib.content.rdf.io.ntriple; +package org.xbib.content.rdf.test.io.ntriple; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder; import org.junit.jupiter.api.Test; @@ -10,28 +10,33 @@ import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.XSDResourceIdentifiers; import org.xbib.content.rdf.internal.DefaultLiteral; import org.xbib.content.rdf.internal.DefaultResource; +import org.xbib.content.rdf.io.ntriple.NTripleContentParams; import org.xbib.content.resource.IRI; +import org.xbib.content.resource.IRINamespaceContext; -/** - * - */ public class NTripleTest { @Test public void testNTripleBuilder() throws Exception { - RdfContentBuilder builder = ntripleBuilder(); - Resource resource = createResource(); - builder.receive(resource); - assertTrue(builder.string().length() > 0); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + NTripleContentParams params = new NTripleContentParams(namespaceContext); + try (RdfContentBuilder builder = ntripleBuilder(params)) { + Resource resource = createResource(); + builder.receive(resource); + assertFalse(builder.string().isEmpty()); + } } @Test public void testNTripleWriteInt() throws Exception { + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + NTripleContentParams params = new NTripleContentParams(namespaceContext); Resource resource = new DefaultResource(IRI.create("urn:doc1")); resource.add("http://purl.org/dc/elements/1.1/date", new DefaultLiteral("2010").type(XSDResourceIdentifiers.INTEGER)); - RdfContentBuilder builder = ntripleBuilder(); - builder.receive(resource); - assertEquals(" \"2010\"^^ .\n", builder.string()); + try (RdfContentBuilder builder = ntripleBuilder(params)) { + builder.receive(resource); + assertEquals(" \"2010\"^^ .\n", builder.string()); + } } private Resource createResource() { diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/EuropeanaEDMReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/EuropeanaEDMReaderTest.java similarity index 59% rename from content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/EuropeanaEDMReaderTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/EuropeanaEDMReaderTest.java index 8b84f94..6c1192c 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/rdfxml/EuropeanaEDMReaderTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/EuropeanaEDMReaderTest.java @@ -1,4 +1,4 @@ -package org.xbib.content.rdf.io.rdfxml; +package org.xbib.content.rdf.test.io.rdfxml; import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder; @@ -9,12 +9,15 @@ import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.Triple; import org.xbib.content.rdf.internal.DefaultLiteral; import org.xbib.content.rdf.internal.DefaultRdfGraph; +import org.xbib.content.rdf.internal.DefaultRdfGraphParams; import org.xbib.content.rdf.internal.DefaultTriple; import org.xbib.content.rdf.io.ntriple.NTripleContent; import org.xbib.content.rdf.io.ntriple.NTripleContentParams; +import org.xbib.content.rdf.io.rdfxml.RdfXmlContentParser; import org.xbib.content.resource.IRI; +import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.Node; -import org.xbib.content.rdf.StreamTester; +import org.xbib.content.rdf.test.StreamTester; import java.io.IOException; import java.io.InputStream; @@ -29,23 +32,26 @@ public class EuropeanaEDMReaderTest extends StreamTester { @Test public void testEuropeana() throws Exception { String filename = "oai_edm.xml"; - InputStream in = getClass().getResourceAsStream(filename); - if (in == null) { - throw new IOException("file " + filename + " not found"); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + NTripleContentParams params = new NTripleContentParams(namespaceContext); + try (InputStream inputStream = getClass().getResourceAsStream(filename); + DefaultRdfGraph graph = new DefaultRdfGraph(new DefaultRdfGraphParams(namespaceContext)); + RdfContentBuilder builder = ntripleBuilder(params)) { + if (inputStream == null) { + throw new IOException("file " + filename + " not found"); + } + RdfXmlContentParser reader = new RdfXmlContentParser<>(params, inputStream); + reader.setRdfContentBuilderProvider(() -> new GeoJSONFilter(NTripleContent.nTripleContent(), + params, graph)); + reader.parse(); + Iterator resourceIterator = graph.getResources(); + while (resourceIterator.hasNext()) { + Resource resource = resourceIterator.next(); + builder.receive(resource); + } + assertStream("edm.nt", getClass().getResource("edm.nt").openStream(), + builder.streamInput()); } - DefaultRdfGraph graph = new DefaultRdfGraph(); - RdfXmlContentParser reader = new RdfXmlContentParser<>(in); - reader.setRdfContentBuilderProvider(() -> new GeoJSONFilter(NTripleContent.nTripleContent(), - NTripleContentParams.N_TRIPLE_CONTENT_PARAMS, graph)); - reader.parse(); - RdfContentBuilder builder = ntripleBuilder(); - Iterator resourceIterator = graph.getResources(); - while (resourceIterator.hasNext()) { - Resource resource = resourceIterator.next(); - builder.receive(resource); - } - assertStream("edm.nt", getClass().getResource("edm.nt").openStream(), - builder.streamInput()); } private static class GeoJSONFilter extends RdfContentBuilder { diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/GNDRdfXmlReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/GNDRdfXmlReaderTest.java new file mode 100644 index 0000000..95169aa --- /dev/null +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/GNDRdfXmlReaderTest.java @@ -0,0 +1,61 @@ +package org.xbib.content.rdf.test.io.rdfxml; + +import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder; +import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; + +import org.junit.jupiter.api.Test; +import org.xbib.content.rdf.io.ntriple.NTripleContentParams; +import org.xbib.content.rdf.io.rdfxml.RdfXmlContentParser; +import org.xbib.content.rdf.io.turtle.TurtleContentParams; +import org.xbib.content.resource.IRINamespaceContext; +import org.xbib.content.rdf.test.StreamTester; + +import java.io.InputStream; + +public class GNDRdfXmlReaderTest extends StreamTester { + + @Test + public void testGNDfromRdfXmltoTurtle() throws Exception { + String filename = "GND.rdf"; + try (InputStream inputStream = getClass().getResourceAsStream(filename)) { + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + TurtleContentParams params = new TurtleContentParams(namespaceContext, false); + RdfXmlContentParser reader = new RdfXmlContentParser<>(params, inputStream); + StringBuilder sb = new StringBuilder(); + reader.setRdfContentBuilderProvider(() -> turtleBuilder(params)); + reader.setRdfContentBuilderHandler(builder -> sb.append(builder.string())); + reader.parse(); + assertStream("gnd.ttl", getClass().getResourceAsStream("gnd.ttl"), sb.toString()); + } + } + + @Test + public void testAnotherGNDfromRdfXmltoTurtle() throws Exception { + String filename = "GND.rdf"; + try (InputStream inputStream = getClass().getResourceAsStream(filename)) { + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + TurtleContentParams params = new TurtleContentParams(namespaceContext, false); + RdfXmlContentParser reader = new RdfXmlContentParser<>(params, inputStream); + StringBuilder sb = new StringBuilder(); + reader.setRdfContentBuilderProvider(() -> turtleBuilder(params)); + reader.setRdfContentBuilderHandler(builder -> sb.append(builder.string())); + reader.parse(); + assertStream("gnd.ttl", getClass().getResourceAsStream("gnd.ttl"), sb.toString()); + } + } + + @Test + public void testGNDtoNtriple() throws Exception { + String filename = "GND.rdf"; + try (InputStream inputStream = getClass().getResourceAsStream(filename)) { + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + NTripleContentParams params = new NTripleContentParams(namespaceContext); + RdfXmlContentParser reader = new RdfXmlContentParser<>(params, inputStream); + StringBuilder sb = new StringBuilder(); + reader.setRdfContentBuilderProvider(() -> ntripleBuilder(params)); + reader.setRdfContentBuilderHandler(builder -> sb.append(builder.string())); + reader.parse(); + assertStream("GND.nt", getClass().getResourceAsStream("GND.nt"), sb.toString()); + } + } +} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/RdfXmlReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/RdfXmlReaderTest.java new file mode 100644 index 0000000..8e466fc --- /dev/null +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/RdfXmlReaderTest.java @@ -0,0 +1,31 @@ +package org.xbib.content.rdf.test.io.rdfxml; + +import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; + +import org.junit.jupiter.api.Test; +import org.xbib.content.rdf.internal.DefaultAnonymousResource; +import org.xbib.content.rdf.io.rdfxml.RdfXmlContentParser; +import org.xbib.content.rdf.io.turtle.TurtleContentParams; +import org.xbib.content.resource.IRINamespaceContext; +import org.xbib.content.rdf.test.StreamTester; + +import java.io.InputStream; + +public class RdfXmlReaderTest extends StreamTester { + + @Test + public void testReader() throws Exception { + String filename = "118540238.xml"; + try (InputStream inputStream = getClass().getResourceAsStream(filename)) { + DefaultAnonymousResource.reset(); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + TurtleContentParams params = new TurtleContentParams(namespaceContext, false); + RdfXmlContentParser reader = new RdfXmlContentParser<>(params, inputStream); + StringBuilder sb = new StringBuilder(); + reader.setRdfContentBuilderProvider(() -> turtleBuilder(params)); + reader.setRdfContentBuilderHandler(builder -> sb.append(builder.string())); + reader.parse(); + assertStream("118540238.ttl", getClass().getResourceAsStream("118540238.ttl"), sb.toString()); + } + } +} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/VIAFRdfXmlReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/VIAFRdfXmlReaderTest.java new file mode 100644 index 0000000..d7e3124 --- /dev/null +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/rdfxml/VIAFRdfXmlReaderTest.java @@ -0,0 +1,33 @@ +package org.xbib.content.rdf.test.io.rdfxml; + +import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; + +import org.junit.jupiter.api.Test; +import org.xbib.content.rdf.io.rdfxml.RdfXmlContentParams; +import org.xbib.content.rdf.io.rdfxml.RdfXmlContentParser; +import org.xbib.content.rdf.io.turtle.TurtleContentParams; +import org.xbib.content.resource.IRINamespaceContext; +import org.xbib.content.rdf.test.StreamTester; + +import java.io.IOException; +import java.io.InputStream; + +public class VIAFRdfXmlReaderTest extends StreamTester { + + @Test + public void testVIAF() throws Exception { + try (InputStream inputStream = getClass().getResourceAsStream("VIAF.rdf")) { + if (inputStream == null) { + throw new IOException("VIAF.rdf not found"); + } + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + TurtleContentParams params = new TurtleContentParams(namespaceContext, false); + StringBuilder sb = new StringBuilder(); + RdfXmlContentParser parser = new RdfXmlContentParser<>(params, inputStream); + parser.setRdfContentBuilderProvider(() -> turtleBuilder(params)) + .setRdfContentBuilderHandler(builder -> sb.append(builder.string())) + .parse(); + assertStream("viaf.ttl", getClass().getResource("viaf.ttl").openStream(), sb.toString()); + } + } +} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/test/io/turtle/TurtleConformanceTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/turtle/TurtleConformanceTest.java new file mode 100644 index 0000000..8483819 --- /dev/null +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/turtle/TurtleConformanceTest.java @@ -0,0 +1,34 @@ +package org.xbib.content.rdf.test.io.turtle; + +import org.junit.jupiter.api.Test; +import org.xbib.content.rdf.RdfContentFactory; +import org.xbib.content.rdf.io.turtle.TurtleContentParams; +import org.xbib.content.rdf.io.turtle.TurtleContentParser; +import org.xbib.content.resource.IRI; +import org.xbib.content.rdf.test.StreamTester; +import org.xbib.content.resource.IRINamespaceContext; + +import java.io.InputStream; + +import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; + +public class TurtleConformanceTest extends StreamTester { + + @Test + public void conformance() throws Exception { + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + TurtleContentParams params = new TurtleContentParams(namespaceContext, false); + for (int n = 0; n < 30; n++) { + String testNum = String.format("%02d", n); + try (InputStream inputStream = getClass().getResourceAsStream("test-" + testNum + ".ttl")) { + TurtleContentParser turtleParser = new TurtleContentParser(params, inputStream) + .setBaseIRI(IRI.create("http://example/base/")); + turtleParser.setRdfContentBuilderProvider(() -> turtleBuilder(params)); + turtleParser.setRdfContentBuilderHandler(b -> { + //logger.log(Level.INFO, MessageFormat.format("turtle test {0}", b.string())); + }); + turtleParser.parse(); + } + } + } +} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/turtle/TurtleTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/turtle/TurtleTest.java similarity index 56% rename from content-rdf/src/test/java/org/xbib/content/rdf/io/turtle/TurtleTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/io/turtle/TurtleTest.java index 9904769..940b2db 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/turtle/TurtleTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/turtle/TurtleTest.java @@ -1,90 +1,87 @@ -package org.xbib.content.rdf.io.turtle; +package org.xbib.content.rdf.test.io.turtle; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; import org.junit.jupiter.api.Test; import org.xbib.content.rdf.RdfContentBuilder; -import org.xbib.content.rdf.RdfContentFactory; import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.internal.DefaultResource; +import org.xbib.content.rdf.io.turtle.TurtleContentParams; +import org.xbib.content.rdf.io.turtle.TurtleContentParser; import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRINamespaceContext; -import org.xbib.content.resource.NamespaceContext; -import org.xbib.content.rdf.StreamTester; +import org.xbib.content.rdf.test.StreamTester; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; -/** - * - */ public class TurtleTest extends StreamTester { @Test public void testTurtleGND() throws Exception { - NamespaceContext context = IRINamespaceContext.newInstance(); - context.addNamespace("gnd", "http://d-nb.info/gnd/"); - InputStream in = getClass().getResourceAsStream("GND.ttl"); - TurtleContentParser reader = new TurtleContentParser(in) - .setBaseIRI(IRI.create("http://d-nb.info/gnd/")) - .context(context); - reader.parse(); - in.close(); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + namespaceContext.addNamespace("gnd", "http://d-nb.info/gnd/"); + try (InputStream inputStream = getClass().getResourceAsStream("GND.ttl")) { + TurtleContentParams params = new TurtleContentParams(namespaceContext, false); + TurtleContentParser parser = new TurtleContentParser(params, inputStream); + parser.setBaseIRI(IRI.create("http://d-nb.info/gnd/")) + .context(namespaceContext); + parser.parse(); + } } @Test public void testTurtleGND2() throws Exception { - IRINamespaceContext context = IRINamespaceContext.newInstance(); - InputStream in = getClass().getResourceAsStream("gnd2.ttl"); - TurtleContentParser reader = new TurtleContentParser(in) - .setBaseIRI(IRI.create("http://d-nb.info/gnd/")) - .context(context); - reader.parse(); - in.close(); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + try (InputStream inputStream = getClass().getResourceAsStream("gnd2.ttl")) { + TurtleContentParams params = new TurtleContentParams(namespaceContext, false); + TurtleContentParser parser = new TurtleContentParser(params, inputStream); + parser.setBaseIRI(IRI.create("http://d-nb.info/gnd/")) + .context(namespaceContext); + parser.parse(); + } } @Test public void testTurtleGND3() throws Exception { - IRINamespaceContext context = IRINamespaceContext.newInstance(); - InputStream in = getClass().getResourceAsStream("gnd2.ttl"); - TurtleContentParser reader = new TurtleContentParser(in) - .setBaseIRI(IRI.create("http://d-nb.info/gnd/")) - .context(context); - reader.setRdfContentBuilderProvider(RdfContentFactory::turtleBuilder); - reader.setRdfContentBuilderHandler(b -> { - //logger.info("doc id={} content={}", b.getSubject(), b.string()); - }); - reader.parse(); - in.close(); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + try (InputStream inputStream = getClass().getResourceAsStream("gnd2.ttl")) { + TurtleContentParams params = new TurtleContentParams(namespaceContext, false); + TurtleContentParser parser = new TurtleContentParser(params, inputStream); + parser.setBaseIRI(IRI.create("http://d-nb.info/gnd/")) + .context(namespaceContext); + parser.setRdfContentBuilderProvider(() ->turtleBuilder(params)); + parser.setRdfContentBuilderHandler(b -> { + //logger.info("doc id={} content={}", b.getSubject(), b.string()); + }); + parser.parse(); + } } @Test public void testTurtle() throws Exception { StringBuilder sb = new StringBuilder(); String filename = "turtle-demo.ttl"; - InputStream in = getClass().getResource(filename).openStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); - String line; - while ((line = reader.readLine()) != null) { - sb.append(line).append("\n"); - } - reader.close(); - String s1 = sb.toString().trim(); - Resource resource = createResource(); - - IRINamespaceContext context = IRINamespaceContext.newInstance(); + IRINamespaceContext context = IRINamespaceContext.newInstance(getClass()); context.addNamespace("dc", "http://purl.org/dc/elements/1.1/"); context.addNamespace("dcterms", "http://purl.org/dc/terms/"); - TurtleContentParams params = new TurtleContentParams(context, true); - RdfContentBuilder builder = turtleBuilder(params); - builder.receive(resource); - String s2 = builder.string().trim(); - assertEquals(s2, s1); - in.close(); + try (InputStream inputStream = getClass().getResourceAsStream(filename); + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); + RdfContentBuilder builder = turtleBuilder(params)) { + String line; + while ((line = reader.readLine()) != null) { + sb.append(line).append("\n"); + } + String s1 = sb.toString().trim(); + Resource resource = createResource(); + builder.receive(resource); + String s2 = builder.string().trim(); + assertEquals(s2, s1); + } } private Resource createResource() { @@ -106,11 +103,13 @@ public class TurtleTest extends StreamTester { @Test public void testTurtleBuilder() throws Exception { Resource resource = createResource2(); - IRINamespaceContext context = IRINamespaceContext.getInstance(); + IRINamespaceContext context = IRINamespaceContext.newInstance(getClass()); + context.addNamespace("xbib", "http://xbib.org/elements/"); TurtleContentParams params = new TurtleContentParams(context, false); - RdfContentBuilder builder = turtleBuilder(params); - builder.receive(resource); - assertStream("turtle-test.ttl", getClass().getResource("turtle-test.ttl").openStream(), builder.streamInput()); + try (RdfContentBuilder builder = turtleBuilder(params)) { + builder.receive(resource); + assertStream("turtle-test.ttl", getClass().getResource("turtle-test.ttl").openStream(), builder.streamInput()); + } } private Resource createResource2() { @@ -139,11 +138,14 @@ public class TurtleTest extends StreamTester { @Test public void testTurtleResourceIndent() throws Exception { Resource resource = createNestedResources(); - TurtleContentParams params = new TurtleContentParams(IRINamespaceContext.getInstance(), false); - RdfContentBuilder builder = turtleBuilder(params); - builder.receive(resource); - assertStream("turtle-indent.ttl", getClass().getResourceAsStream("turtle-indent.ttl"), - builder.streamInput()); + IRINamespaceContext context = IRINamespaceContext.newInstance(getClass()); + context.addNamespace("xbib", "http://xbib.org/elements/"); + TurtleContentParams params = new TurtleContentParams(context, false); + try (RdfContentBuilder builder = turtleBuilder(params)) { + builder.receive(resource); + assertStream("turtle-indent.ttl", getClass().getResourceAsStream("turtle-indent.ttl"), + builder.streamInput()); + } } private Resource createNestedResources() { @@ -177,11 +179,14 @@ public class TurtleTest extends StreamTester { @Test public void testTurtleDeepNest() throws Exception { Resource resource = createDeepNestedResources(); - TurtleContentParams params = new TurtleContentParams(IRINamespaceContext.getInstance(), false); - RdfContentBuilder builder = turtleBuilder(params); - builder.receive(resource); - assertStream("deep-nested.ttl", getClass().getResourceAsStream("deep-nested.ttl"), - builder.streamInput()); + IRINamespaceContext context = IRINamespaceContext.newInstance(getClass()); + context.addNamespace("xbib", "http://xbib.org/elements/"); + TurtleContentParams params = new TurtleContentParams(context, false); + try (RdfContentBuilder builder = turtleBuilder(params)) { + builder.receive(resource); + assertStream("deep-nested.ttl", getClass().getResourceAsStream("deep-nested.ttl"), + builder.streamInput()); + } } private Resource createDeepNestedResources() { @@ -207,6 +212,4 @@ public class TurtleTest extends StreamTester { .add("property10", "value10"); return r; } - - } diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/xml/OAITest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/xml/OAITest.java similarity index 84% rename from content-rdf/src/test/java/org/xbib/content/rdf/io/xml/OAITest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/io/xml/OAITest.java index 693bf90..45cfc01 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/xml/OAITest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/xml/OAITest.java @@ -1,14 +1,17 @@ -package org.xbib.content.rdf.io.xml; +package org.xbib.content.rdf.test.io.xml; import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; import org.junit.jupiter.api.Test; import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.io.turtle.TurtleContentParams; +import org.xbib.content.rdf.io.xml.AbstractXmlResourceHandler; +import org.xbib.content.rdf.io.xml.XmlContentParser; +import org.xbib.content.rdf.io.xml.XmlHandler; import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.NamespaceContext; -import org.xbib.content.rdf.StreamTester; +import org.xbib.content.rdf.test.StreamTester; import org.xbib.net.PercentEncoders; import java.io.IOException; @@ -17,21 +20,17 @@ import java.nio.charset.StandardCharsets; import javax.xml.namespace.QName; -/** - * - */ public class OAITest extends StreamTester { @Test public void testOAIListRecordsToTurtle() throws Exception { String filename = "oai-listrecords.xml"; - InputStream in = getClass().getResourceAsStream(filename); - if (in == null) { + InputStream inputStream = getClass().getResourceAsStream(filename); + if (inputStream == null) { throw new IOException("file " + filename + " not found"); } - - IRINamespaceContext context = IRINamespaceContext.newInstance(); - XmlContentParams params = new XmlContentParams(context); + IRINamespaceContext context = IRINamespaceContext.newInstance(getClass()); + TurtleContentParams params = new TurtleContentParams(context, true); XmlHandler xmlHandler = new AbstractXmlResourceHandler<>(params) { @Override @@ -72,7 +71,7 @@ public class OAITest extends StreamTester { xmlHandler.setBuilder(builder) .setNamespaceContext(context) .setDefaultNamespace("oai", "http://www.openarchives.org/OAI/2.0/oai_dc/"); - XmlContentParser parser = new XmlContentParser<>(in); + XmlContentParser parser = new XmlContentParser<>(turtleParams, inputStream); parser.builder(builder); parser.setHandler(xmlHandler).parse(); assertStream("oai.ttl", getClass().getResourceAsStream("oai.ttl"), builder.streamInput()); diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/test/io/xml/XmlReaderTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/xml/XmlReaderTest.java new file mode 100644 index 0000000..0d29477 --- /dev/null +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/xml/XmlReaderTest.java @@ -0,0 +1,215 @@ +package org.xbib.content.rdf.test.io.xml; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; + +import org.junit.jupiter.api.Test; +import org.xbib.content.rdf.RdfContentBuilder; +import org.xbib.content.rdf.Resource; +import org.xbib.content.rdf.Triple; +import org.xbib.content.rdf.internal.DefaultAnonymousResource; +import org.xbib.content.rdf.internal.DefaultResource; +import org.xbib.content.rdf.io.ntriple.NTripleContent; +import org.xbib.content.rdf.io.ntriple.NTripleContentParams; +import org.xbib.content.rdf.io.turtle.TurtleContentParams; +import org.xbib.content.rdf.io.xml.AbstractXmlHandler; +import org.xbib.content.rdf.io.xml.AbstractXmlResourceHandler; +import org.xbib.content.rdf.io.xml.XmlContentParser; +import org.xbib.content.rdf.io.xml.XmlHandler; +import org.xbib.content.resource.IRI; +import org.xbib.content.resource.IRINamespaceContext; +import org.xbib.content.resource.NamespaceContext; +import org.xbib.content.rdf.test.StreamTester; +import org.xbib.net.PercentEncoders; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.LinkedList; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.xml.namespace.QName; + +public class XmlReaderTest extends StreamTester { + + @Test + public void testOAIDC() throws Exception { + String filename = "oro-eprint-25656.xml"; + try (InputStream inputStream = getClass().getResourceAsStream(filename)) { + if (inputStream == null) { + throw new IOException("file " + filename + " not found"); + } + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + namespaceContext.addNamespace("oaidc", "http://www.openarchives.org/OAI/2.0/oai_dc/"); + namespaceContext.addNamespace("dc", "http://purl.org/dc/elements/1.1/"); + TurtleContentParams turtleParams = new TurtleContentParams(namespaceContext, true); + XmlHandler turtleHandler = new AbstractXmlResourceHandler<>(turtleParams) { + + @Override + public boolean isResourceDelimiter(QName name) { + return "oai_dc".equals(name.getLocalPart()); + } + + @Override + public void identify(QName name, String value, IRI identifier) { + if ("identifier".equals(name.getLocalPart()) && DefaultResource.isBlank(getResource())) { + try { + // make sure we can build an opaque IRI, whatever is out there + getResource().setId(IRI.create("id:" + + PercentEncoders.getRegNameEncoder(StandardCharsets.UTF_8).encode(value))); + } catch (IOException e) { + // swallow + } + } + } + + @Override + public boolean skip(QName name) { + // skip dc:dc element + return "dc".equals(name.getLocalPart()); + } + + @Override + public XmlHandler setNamespaceContext(NamespaceContext namespaceContext) { + return this; + } + + @Override + public IRINamespaceContext getNamespaceContext() { + return namespaceContext; + } + }; + RdfContentBuilder builder = turtleBuilder(turtleParams); + turtleHandler.setBuilder(builder); + XmlContentParser parser = new XmlContentParser<>(turtleParams, inputStream); + parser.setHandler(turtleHandler).parse(); + assertStream("dc.ttl", getClass().getResource("dc.ttl").openStream(), + builder.streamInput()); + } + } + + @Test + public void testXmlArray() throws Exception { + String filename = "array.xml"; + try (InputStream inputStream = getClass().getResourceAsStream(filename)) { + if (inputStream == null) { + throw new IOException("file " + filename + " not found"); + } + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + NTripleContentParams nTripleContentParams = new NTripleContentParams(namespaceContext); + AbstractXmlResourceHandler xmlHandler = new AbstractXmlResourceHandler<>(nTripleContentParams) { + + @Override + public boolean isResourceDelimiter(QName name) { + return false; + } + + @Override + public void identify(QName name, String value, IRI identifier) { + getResource().setId(IRI.create("id:1")); + } + + @Override + public boolean skip(QName name) { + return false; + } + + @Override + public AbstractXmlResourceHandler setNamespaceContext(NamespaceContext namespaceContext) { + return this; + } + + @Override + public IRINamespaceContext getNamespaceContext() { + return namespaceContext; + } + }; + + MyBuilder builder = new MyBuilder(); + xmlHandler.setDefaultNamespace("xml", "http://xmltest") + .setBuilder(builder); + DefaultAnonymousResource.reset(); + XmlContentParser parser = new XmlContentParser<>(xmlHandler.getParams(), inputStream); + parser.setHandler(xmlHandler).parse(); + assertEquals("[id:1 xml:dates _:b2, _:b2 xml:date 2001, _:b2 xml:date 2002, _:b2 xml:date 2003]", + builder.getTriples().toString() + ); + } + } + + @Test + public void testXmlAttribute() throws Exception { + String filename = "attribute.xml"; + try (InputStream inputStream = getClass().getResourceAsStream(filename)) { + if (inputStream == null) { + throw new IOException("file " + filename + " not found"); + } + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + NTripleContentParams params = new NTripleContentParams(namespaceContext); + AbstractXmlHandler xmlHandler = new AbstractXmlResourceHandler<>(params) { + @Override + public boolean isResourceDelimiter(QName name) { + return false; + } + + @Override + public void identify(QName name, String value, IRI identifier) { + getResource().setId(IRI.create("id:1")); + } + + @Override + public boolean skip(QName name) { + return false; + } + + @Override + public XmlHandler setNamespaceContext(NamespaceContext namespaceContext) { + return this; + } + + @Override + public IRINamespaceContext getNamespaceContext() { + return namespaceContext; + } + }; + MyBuilder builder = new MyBuilder(); + xmlHandler.setDefaultNamespace("xml", "http://localhost") + .setBuilder(builder); + DefaultAnonymousResource.reset(); + XmlContentParser parser = new XmlContentParser<>(xmlHandler.getParams(), inputStream); + parser.setHandler(xmlHandler).parse(); + assertEquals("[id:1 xml:dates _:b2, _:b2 xml:date _:b3, _:b3 xml:@href 1, _:b2 xml:date _:b5, " + + "_:b5 xml:@href 2, _:b2 xml:date _:b7, _:b7 xml:@href 3, _:b2 xml:date _:b9, _:b9 xml:hello World]", + builder.getTriples().toString() + ); + } + } + + private static class MyBuilder extends RdfContentBuilder { + + private final List triples = new LinkedList<>(); + + MyBuilder() throws IOException { + super(NTripleContent.nTripleContent(), new NTripleContentParams(IRINamespaceContext.newInstance(MyBuilder.class))); + } + + @Override + public MyBuilder receive(Triple triple) { + triples.add(triple); + return this; + } + + @Override + public MyBuilder receive(Resource resource) throws IOException { + triples.addAll(resource.triples()); + return this; + } + + List getTriples() { + return triples; + } + } + +} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/io/xml/XmlResourceWriterTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/xml/XmlResourceWriterTest.java similarity index 50% rename from content-rdf/src/test/java/org/xbib/content/rdf/io/xml/XmlResourceWriterTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/io/xml/XmlResourceWriterTest.java index 615920f..5f29ca4 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/io/xml/XmlResourceWriterTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/io/xml/XmlResourceWriterTest.java @@ -1,18 +1,18 @@ -package org.xbib.content.rdf.io.xml; +package org.xbib.content.rdf.test.io.xml; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.xbib.content.rdf.RdfContentFactory.xmlBuilder; import org.junit.jupiter.api.Test; import org.xbib.content.rdf.RdfContentBuilder; +import org.xbib.content.rdf.RdfContentParams; import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.internal.DefaultAnonymousResource; import org.xbib.content.rdf.internal.DefaultResource; +import org.xbib.content.rdf.io.xml.XmlContentParams; import org.xbib.content.resource.IRI; +import org.xbib.content.resource.IRINamespaceContext; -/** - * - */ public class XmlResourceWriterTest { @Test @@ -23,11 +23,14 @@ public class XmlResourceWriterTest { resource.add("urn:property", "value"); Resource nestedResource = resource.newResource("urn:nestedresource"); nestedResource.add("urn:nestedproperty", "nestedvalue"); - RdfContentBuilder builder = xmlBuilder(); - builder.receive(root); - assertEquals("value" - + "nestedvalue", - builder.string()); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + XmlContentParams params = new XmlContentParams(namespaceContext); + try (RdfContentBuilder builder = xmlBuilder(params)) { + builder.receive(root); + assertEquals("value" + + "nestedvalue", + builder.string()); + } } @Test @@ -36,10 +39,11 @@ public class XmlResourceWriterTest { Resource parent = new DefaultResource(IRI.create("urn:doc3")); Resource child = parent.newResource("urn:res"); child.add("urn:property", "value"); - RdfContentBuilder builder = xmlBuilder(); - builder.receive(parent); - assertEquals( - builder.string(), - "value"); + IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(getClass()); + XmlContentParams params = new XmlContentParams(namespaceContext); + try (RdfContentBuilder builder = xmlBuilder(params)) { + builder.receive(parent); + assertEquals("value", builder.string()); + } } } diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/util/MultiMapTest.java b/content-rdf/src/test/java/org/xbib/content/rdf/test/util/MultiMapTest.java similarity index 88% rename from content-rdf/src/test/java/org/xbib/content/rdf/util/MultiMapTest.java rename to content-rdf/src/test/java/org/xbib/content/rdf/test/util/MultiMapTest.java index ece8abf..58bccd9 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/util/MultiMapTest.java +++ b/content-rdf/src/test/java/org/xbib/content/rdf/test/util/MultiMapTest.java @@ -1,8 +1,10 @@ -package org.xbib.content.rdf.util; +package org.xbib.content.rdf.test.util; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; +import org.xbib.content.rdf.util.LinkedHashMultiMap; + import java.util.Arrays; public class MultiMapTest { diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/util/package-info.java b/content-rdf/src/test/java/org/xbib/content/rdf/util/package-info.java deleted file mode 100644 index 6f0bc4f..0000000 --- a/content-rdf/src/test/java/org/xbib/content/rdf/util/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing multi maps. - */ -package org.xbib.content.rdf.util; diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/VIAF.rdf b/content-rdf/src/test/resources/org/xbib/content/rdf/test/VIAF.rdf similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/VIAF.rdf rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/VIAF.rdf diff --git a/content-rdf/src/test/resources/org/xbib/content/resource/namespace.properties b/content-rdf/src/test/resources/org/xbib/content/rdf/test/internal/namespace.properties similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/resource/namespace.properties rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/internal/namespace.properties diff --git a/content-rdf/src/test/resources/org/xbib/content/json/dc.json b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/json/dc.json similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/json/dc.json rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/json/dc.json diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/json/namespace.properties b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/json/namespace.properties new file mode 100644 index 0000000..7cf3d07 --- /dev/null +++ b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/json/namespace.properties @@ -0,0 +1,36 @@ +# XML namespace +xml = http://www.w3.org/XML/1998/namespace +xsl = http://www.w3.org/1999/XSL/Transform + +# Atom +atom = http://www.w3.org/2005/Atom + +# RDF namespace +rdf = http://www.w3.org/1999/02/22-rdf-syntax-ns# +rdfs = http://www.w3.org/2000/01/rdf-schema# +owl = http://www.w3.org/2002/07/owl# + +foaf = http://xmlns.com/foaf/0.1/ + +# Apache +xalan = http://xml.apache.org/xslt + +# Dublin Core Namespaces +# http://dublincore.org/documents/dcmi-namespace/ +dc = http://purl.org/dc/elements/1.1/ +dcterms = http://purl.org/dc/terms/ +rel = http://purl.org/vocab/relationship/ + +# Library of Congress +mods = http://www.loc.gov/mods/v3 +bib = info:srw/cql-context-set/1/bib-v1/ + +# RDA, MARC +rdagr2 = http://RDVocab.info/ElementsGr2/ + +# DNB +gnd = http://d-nb.info/standards/elementset/gnd# + +# xbib +xbib = http://xbib.org/elements/ +lia = http://xbib.org/namespaces/lia/ \ No newline at end of file diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/ntriple/list.nt b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/ntriple/list.nt similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/ntriple/list.nt rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/ntriple/list.nt diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/ntriple/namespace.properties b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/ntriple/namespace.properties new file mode 100644 index 0000000..7cf3d07 --- /dev/null +++ b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/ntriple/namespace.properties @@ -0,0 +1,36 @@ +# XML namespace +xml = http://www.w3.org/XML/1998/namespace +xsl = http://www.w3.org/1999/XSL/Transform + +# Atom +atom = http://www.w3.org/2005/Atom + +# RDF namespace +rdf = http://www.w3.org/1999/02/22-rdf-syntax-ns# +rdfs = http://www.w3.org/2000/01/rdf-schema# +owl = http://www.w3.org/2002/07/owl# + +foaf = http://xmlns.com/foaf/0.1/ + +# Apache +xalan = http://xml.apache.org/xslt + +# Dublin Core Namespaces +# http://dublincore.org/documents/dcmi-namespace/ +dc = http://purl.org/dc/elements/1.1/ +dcterms = http://purl.org/dc/terms/ +rel = http://purl.org/vocab/relationship/ + +# Library of Congress +mods = http://www.loc.gov/mods/v3 +bib = info:srw/cql-context-set/1/bib-v1/ + +# RDA, MARC +rdagr2 = http://RDVocab.info/ElementsGr2/ + +# DNB +gnd = http://d-nb.info/standards/elementset/gnd# + +# xbib +xbib = http://xbib.org/elements/ +lia = http://xbib.org/namespaces/lia/ \ No newline at end of file diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/ntriple/rdfxml.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/ntriple/rdfxml.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/ntriple/rdfxml.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/ntriple/rdfxml.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/118540238.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/118540238.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/118540238.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/118540238.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/118540238.xml b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/118540238.xml similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/118540238.xml rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/118540238.xml diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/11862444X_lds.xml b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/11862444X_lds.xml similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/11862444X_lds.xml rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/11862444X_lds.xml diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/GND.nt b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/GND.nt similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/GND.nt rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/GND.nt diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/GND.rdf b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/GND.rdf similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/GND.rdf rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/GND.rdf diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/VIAF.rdf b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/VIAF.rdf similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/VIAF.rdf rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/VIAF.rdf diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/edm.nt b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/edm.nt similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/edm.nt rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/edm.nt diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/gnd.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/gnd.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/gnd.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/gnd.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/namespace.properties b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/namespace.properties new file mode 100644 index 0000000..7cf3d07 --- /dev/null +++ b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/namespace.properties @@ -0,0 +1,36 @@ +# XML namespace +xml = http://www.w3.org/XML/1998/namespace +xsl = http://www.w3.org/1999/XSL/Transform + +# Atom +atom = http://www.w3.org/2005/Atom + +# RDF namespace +rdf = http://www.w3.org/1999/02/22-rdf-syntax-ns# +rdfs = http://www.w3.org/2000/01/rdf-schema# +owl = http://www.w3.org/2002/07/owl# + +foaf = http://xmlns.com/foaf/0.1/ + +# Apache +xalan = http://xml.apache.org/xslt + +# Dublin Core Namespaces +# http://dublincore.org/documents/dcmi-namespace/ +dc = http://purl.org/dc/elements/1.1/ +dcterms = http://purl.org/dc/terms/ +rel = http://purl.org/vocab/relationship/ + +# Library of Congress +mods = http://www.loc.gov/mods/v3 +bib = info:srw/cql-context-set/1/bib-v1/ + +# RDA, MARC +rdagr2 = http://RDVocab.info/ElementsGr2/ + +# DNB +gnd = http://d-nb.info/standards/elementset/gnd# + +# xbib +xbib = http://xbib.org/elements/ +lia = http://xbib.org/namespaces/lia/ \ No newline at end of file diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/oai_edm.xml b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/oai_edm.xml similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/oai_edm.xml rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/oai_edm.xml diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/rdfxml.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/rdfxml.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/rdfxml.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/rdfxml.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/sh87008036.xml b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/sh87008036.xml similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/sh87008036.xml rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/sh87008036.xml diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/viaf.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/viaf.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/rdfxml/viaf.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/rdfxml/viaf.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/GND.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/GND.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/GND.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/GND.ttl diff --git a/content-rdf/src/test/resources/turtle/README.txt b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/README.txt similarity index 100% rename from content-rdf/src/test/resources/turtle/README.txt rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/README.txt diff --git a/content-rdf/src/test/resources/turtle/bad-00.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-00.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-00.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-00.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-01.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-01.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-01.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-01.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-02.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-02.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-02.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-02.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-03.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-03.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-03.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-03.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-04.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-04.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-04.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-04.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-05.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-05.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-05.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-05.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-06.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-06.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-06.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-06.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-07.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-07.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-07.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-07.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-08.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-08.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-08.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-08.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-09.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-09.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-09.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-09.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-10.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-10.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-10.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-10.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-11.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-11.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-11.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-11.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-12.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-12.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-12.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-12.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-13.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-13.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-13.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-13.ttl diff --git a/content-rdf/src/test/resources/turtle/bad-14.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-14.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/bad-14.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/bad-14.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/deep-nested.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/deep-nested.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/deep-nested.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/deep-nested.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/gnd2.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/gnd2.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/gnd2.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/gnd2.ttl diff --git a/content-rdf/src/test/resources/turtle/index.html b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/index.html similarity index 100% rename from content-rdf/src/test/resources/turtle/index.html rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/index.html diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/list.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/list.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/list.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/list.ttl diff --git a/content-rdf/src/test/resources/turtle/manifest-bad.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/manifest-bad.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/manifest-bad.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/manifest-bad.ttl diff --git a/content-rdf/src/test/resources/turtle/manifest.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/manifest.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/manifest.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/manifest.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/namespace.properties b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/namespace.properties new file mode 100644 index 0000000..08bdee8 --- /dev/null +++ b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/namespace.properties @@ -0,0 +1,2 @@ +dc = http://purl.org/dc/elements/1.1/ +dcterms = http://purl.org/dc/terms/ diff --git a/content-rdf/src/test/resources/turtle/rdf-schema.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdf-schema.out similarity index 100% rename from content-rdf/src/test/resources/turtle/rdf-schema.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdf-schema.out diff --git a/content-rdf/src/test/resources/turtle/rdf-schema.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdf-schema.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/rdf-schema.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdf-schema.ttl diff --git a/content-rdf/src/test/resources/turtle/rdfq-results.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdfq-results.out similarity index 100% rename from content-rdf/src/test/resources/turtle/rdfq-results.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdfq-results.out diff --git a/content-rdf/src/test/resources/turtle/rdfq-results.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdfq-results.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/rdfq-results.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdfq-results.ttl diff --git a/content-rdf/src/test/resources/turtle/rdfs-namespace.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdfs-namespace.out similarity index 100% rename from content-rdf/src/test/resources/turtle/rdfs-namespace.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdfs-namespace.out diff --git a/content-rdf/src/test/resources/turtle/rdfs-namespace.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdfs-namespace.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/rdfs-namespace.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/rdfs-namespace.ttl diff --git a/content-rdf/src/test/resources/turtle/test-00.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-00.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-00.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-00.out diff --git a/content-rdf/src/test/resources/turtle/test-00.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-00.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-00.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-00.result diff --git a/content-rdf/src/test/resources/turtle/test-00.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-00.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-00.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-00.ttl diff --git a/content-rdf/src/test/resources/turtle/test-01.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-01.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-01.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-01.out diff --git a/content-rdf/src/test/resources/turtle/test-01.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-01.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-01.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-01.result diff --git a/content-rdf/src/test/resources/turtle/test-01.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-01.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-01.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-01.ttl diff --git a/content-rdf/src/test/resources/turtle/test-02.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-02.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-02.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-02.out diff --git a/content-rdf/src/test/resources/turtle/test-02.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-02.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-02.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-02.result diff --git a/content-rdf/src/test/resources/turtle/test-02.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-02.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-02.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-02.ttl diff --git a/content-rdf/src/test/resources/turtle/test-03.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-03.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-03.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-03.out diff --git a/content-rdf/src/test/resources/turtle/test-03.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-03.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-03.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-03.result diff --git a/content-rdf/src/test/resources/turtle/test-03.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-03.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-03.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-03.ttl diff --git a/content-rdf/src/test/resources/turtle/test-04.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-04.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-04.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-04.out diff --git a/content-rdf/src/test/resources/turtle/test-04.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-04.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-04.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-04.result diff --git a/content-rdf/src/test/resources/turtle/test-04.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-04.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-04.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-04.ttl diff --git a/content-rdf/src/test/resources/turtle/test-05.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-05.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-05.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-05.out diff --git a/content-rdf/src/test/resources/turtle/test-05.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-05.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-05.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-05.result diff --git a/content-rdf/src/test/resources/turtle/test-05.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-05.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-05.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-05.ttl diff --git a/content-rdf/src/test/resources/turtle/test-06.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-06.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-06.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-06.out diff --git a/content-rdf/src/test/resources/turtle/test-06.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-06.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-06.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-06.result diff --git a/content-rdf/src/test/resources/turtle/test-06.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-06.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-06.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-06.ttl diff --git a/content-rdf/src/test/resources/turtle/test-07.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-07.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-07.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-07.out diff --git a/content-rdf/src/test/resources/turtle/test-07.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-07.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-07.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-07.result diff --git a/content-rdf/src/test/resources/turtle/test-07.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-07.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-07.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-07.ttl diff --git a/content-rdf/src/test/resources/turtle/test-08.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-08.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-08.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-08.out diff --git a/content-rdf/src/test/resources/turtle/test-08.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-08.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-08.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-08.result diff --git a/content-rdf/src/test/resources/turtle/test-08.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-08.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-08.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-08.ttl diff --git a/content-rdf/src/test/resources/turtle/test-09.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-09.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-09.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-09.out diff --git a/content-rdf/src/test/resources/turtle/test-09.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-09.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-09.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-09.result diff --git a/content-rdf/src/test/resources/turtle/test-09.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-09.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-09.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-09.ttl diff --git a/content-rdf/src/test/resources/turtle/test-10.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-10.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-10.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-10.out diff --git a/content-rdf/src/test/resources/turtle/test-10.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-10.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-10.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-10.result diff --git a/content-rdf/src/test/resources/turtle/test-10.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-10.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-10.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-10.ttl diff --git a/content-rdf/src/test/resources/turtle/test-11.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-11.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-11.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-11.out diff --git a/content-rdf/src/test/resources/turtle/test-11.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-11.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-11.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-11.result diff --git a/content-rdf/src/test/resources/turtle/test-11.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-11.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-11.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-11.ttl diff --git a/content-rdf/src/test/resources/turtle/test-12.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-12.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-12.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-12.out diff --git a/content-rdf/src/test/resources/turtle/test-12.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-12.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-12.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-12.result diff --git a/content-rdf/src/test/resources/turtle/test-12.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-12.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-12.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-12.ttl diff --git a/content-rdf/src/test/resources/turtle/test-13.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-13.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-13.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-13.out diff --git a/content-rdf/src/test/resources/turtle/test-13.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-13.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-13.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-13.result diff --git a/content-rdf/src/test/resources/turtle/test-13.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-13.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-13.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-13.ttl diff --git a/content-rdf/src/test/resources/turtle/test-14.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-14.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-14.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-14.out diff --git a/content-rdf/src/test/resources/turtle/test-14.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-14.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-14.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-14.result diff --git a/content-rdf/src/test/resources/turtle/test-14.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-14.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-14.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-14.ttl diff --git a/content-rdf/src/test/resources/turtle/test-15.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-15.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-15.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-15.out diff --git a/content-rdf/src/test/resources/turtle/test-15.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-15.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-15.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-15.result diff --git a/content-rdf/src/test/resources/turtle/test-15.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-15.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-15.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-15.ttl diff --git a/content-rdf/src/test/resources/turtle/test-16.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-16.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-16.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-16.out diff --git a/content-rdf/src/test/resources/turtle/test-16.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-16.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-16.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-16.result diff --git a/content-rdf/src/test/resources/turtle/test-16.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-16.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-16.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-16.ttl diff --git a/content-rdf/src/test/resources/turtle/test-17.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-17.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-17.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-17.out diff --git a/content-rdf/src/test/resources/turtle/test-17.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-17.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-17.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-17.result diff --git a/content-rdf/src/test/resources/turtle/test-17.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-17.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-17.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-17.ttl diff --git a/content-rdf/src/test/resources/turtle/test-18.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-18.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-18.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-18.out diff --git a/content-rdf/src/test/resources/turtle/test-18.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-18.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-18.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-18.result diff --git a/content-rdf/src/test/resources/turtle/test-18.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-18.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-18.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-18.ttl diff --git a/content-rdf/src/test/resources/turtle/test-19.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-19.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-19.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-19.out diff --git a/content-rdf/src/test/resources/turtle/test-19.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-19.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-19.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-19.result diff --git a/content-rdf/src/test/resources/turtle/test-19.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-19.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-19.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-19.ttl diff --git a/content-rdf/src/test/resources/turtle/test-20.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-20.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-20.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-20.out diff --git a/content-rdf/src/test/resources/turtle/test-20.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-20.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-20.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-20.result diff --git a/content-rdf/src/test/resources/turtle/test-20.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-20.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-20.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-20.ttl diff --git a/content-rdf/src/test/resources/turtle/test-21.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-21.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-21.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-21.out diff --git a/content-rdf/src/test/resources/turtle/test-21.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-21.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-21.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-21.result diff --git a/content-rdf/src/test/resources/turtle/test-21.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-21.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-21.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-21.ttl diff --git a/content-rdf/src/test/resources/turtle/test-22.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-22.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-22.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-22.out diff --git a/content-rdf/src/test/resources/turtle/test-22.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-22.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-22.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-22.result diff --git a/content-rdf/src/test/resources/turtle/test-22.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-22.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-22.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-22.ttl diff --git a/content-rdf/src/test/resources/turtle/test-23.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-23.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-23.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-23.out diff --git a/content-rdf/src/test/resources/turtle/test-23.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-23.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-23.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-23.result diff --git a/content-rdf/src/test/resources/turtle/test-23.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-23.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-23.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-23.ttl diff --git a/content-rdf/src/test/resources/turtle/test-24.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-24.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-24.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-24.out diff --git a/content-rdf/src/test/resources/turtle/test-24.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-24.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-24.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-24.result diff --git a/content-rdf/src/test/resources/turtle/test-24.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-24.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-24.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-24.ttl diff --git a/content-rdf/src/test/resources/turtle/test-25.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-25.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-25.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-25.out diff --git a/content-rdf/src/test/resources/turtle/test-25.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-25.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-25.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-25.result diff --git a/content-rdf/src/test/resources/turtle/test-25.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-25.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-25.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-25.ttl diff --git a/content-rdf/src/test/resources/turtle/test-26.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-26.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-26.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-26.out diff --git a/content-rdf/src/test/resources/turtle/test-26.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-26.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-26.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-26.result diff --git a/content-rdf/src/test/resources/turtle/test-26.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-26.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-26.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-26.ttl diff --git a/content-rdf/src/test/resources/turtle/test-27.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-27.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-27.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-27.out diff --git a/content-rdf/src/test/resources/turtle/test-27.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-27.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-27.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-27.result diff --git a/content-rdf/src/test/resources/turtle/test-27.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-27.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-27.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-27.ttl diff --git a/content-rdf/src/test/resources/turtle/test-28-out.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-28-out.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-28-out.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-28-out.ttl diff --git a/content-rdf/src/test/resources/turtle/test-28.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-28.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-28.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-28.out diff --git a/content-rdf/src/test/resources/turtle/test-28.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-28.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-28.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-28.result diff --git a/content-rdf/src/test/resources/turtle/test-28.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-28.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-28.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-28.ttl diff --git a/content-rdf/src/test/resources/turtle/test-29.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-29.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-29.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-29.out diff --git a/content-rdf/src/test/resources/turtle/test-29.result b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-29.result similarity index 100% rename from content-rdf/src/test/resources/turtle/test-29.result rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-29.result diff --git a/content-rdf/src/test/resources/turtle/test-29.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-29.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-29.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-29.ttl diff --git a/content-rdf/src/test/resources/turtle/test-30.out b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-30.out similarity index 100% rename from content-rdf/src/test/resources/turtle/test-30.out rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-30.out diff --git a/content-rdf/src/test/resources/turtle/test-30.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-30.ttl similarity index 100% rename from content-rdf/src/test/resources/turtle/test-30.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/test-30.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/turtle-demo.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/turtle-demo.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/turtle-demo.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/turtle-demo.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/turtle-indent.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/turtle-indent.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/turtle-indent.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/turtle-indent.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/turtle-test.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/turtle-test.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/turtle/turtle-test.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/turtle/turtle-test.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/array.xml b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/array.xml similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/array.xml rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/array.xml diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/attribute.xml b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/attribute.xml similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/attribute.xml rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/attribute.xml diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/dc.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/dc.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/dc.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/dc.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/namespace.properties b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/namespace.properties new file mode 100644 index 0000000..bc63beb --- /dev/null +++ b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/namespace.properties @@ -0,0 +1 @@ +# empty \ No newline at end of file diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/oai-listrecords.xml b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/oai-listrecords.xml similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/oai-listrecords.xml rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/oai-listrecords.xml diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/oai.ttl b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/oai.ttl similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/oai.ttl rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/oai.ttl diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/oro-eprint-25656.xml b/content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/oro-eprint-25656.xml similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/xml/oro-eprint-25656.xml rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/io/xml/oro-eprint-25656.xml diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/io/json/dc.json b/content-rdf/src/test/resources/org/xbib/content/rdf/test/json/dc.json similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/io/json/dc.json rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/json/dc.json diff --git a/content-rdf/src/test/resources/org/xbib/content/json/elasticsearch-hit-example-1.json b/content-rdf/src/test/resources/org/xbib/content/rdf/test/json/elasticsearch-hit-example-1.json similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/json/elasticsearch-hit-example-1.json rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/json/elasticsearch-hit-example-1.json diff --git a/content-rdf/src/test/resources/org/xbib/content/json/es-test-20130719.json b/content-rdf/src/test/resources/org/xbib/content/rdf/test/json/es-test-20130719.json similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/json/es-test-20130719.json rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/json/es-test-20130719.json diff --git a/content-rdf/src/test/resources/org/xbib/content/json/glossary.json b/content-rdf/src/test/resources/org/xbib/content/rdf/test/json/glossary.json similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/json/glossary.json rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/json/glossary.json diff --git a/content-rdf/src/test/resources/org/xbib/content/json/menu.json b/content-rdf/src/test/resources/org/xbib/content/rdf/test/json/menu.json similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/json/menu.json rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/json/menu.json diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/jsonld/Vcard.jsonld b/content-rdf/src/test/resources/org/xbib/content/rdf/test/jsonld/Vcard.jsonld similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/jsonld/Vcard.jsonld rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/jsonld/Vcard.jsonld diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/jsonld/bib.jsonld b/content-rdf/src/test/resources/org/xbib/content/rdf/test/jsonld/bib.jsonld similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/jsonld/bib.jsonld rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/jsonld/bib.jsonld diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/jsonld/data.jsonld b/content-rdf/src/test/resources/org/xbib/content/rdf/test/jsonld/data.jsonld similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/jsonld/data.jsonld rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/jsonld/data.jsonld diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/jsonld/ldp.jsonld b/content-rdf/src/test/resources/org/xbib/content/rdf/test/jsonld/ldp.jsonld similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/jsonld/ldp.jsonld rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/jsonld/ldp.jsonld diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/jsonld/schema.jsonld b/content-rdf/src/test/resources/org/xbib/content/rdf/test/jsonld/schema.jsonld similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/jsonld/schema.jsonld rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/jsonld/schema.jsonld diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/test/namespace.properties b/content-rdf/src/test/resources/org/xbib/content/rdf/test/namespace.properties new file mode 100644 index 0000000..7cf3d07 --- /dev/null +++ b/content-rdf/src/test/resources/org/xbib/content/rdf/test/namespace.properties @@ -0,0 +1,36 @@ +# XML namespace +xml = http://www.w3.org/XML/1998/namespace +xsl = http://www.w3.org/1999/XSL/Transform + +# Atom +atom = http://www.w3.org/2005/Atom + +# RDF namespace +rdf = http://www.w3.org/1999/02/22-rdf-syntax-ns# +rdfs = http://www.w3.org/2000/01/rdf-schema# +owl = http://www.w3.org/2002/07/owl# + +foaf = http://xmlns.com/foaf/0.1/ + +# Apache +xalan = http://xml.apache.org/xslt + +# Dublin Core Namespaces +# http://dublincore.org/documents/dcmi-namespace/ +dc = http://purl.org/dc/elements/1.1/ +dcterms = http://purl.org/dc/terms/ +rel = http://purl.org/vocab/relationship/ + +# Library of Congress +mods = http://www.loc.gov/mods/v3 +bib = info:srw/cql-context-set/1/bib-v1/ + +# RDA, MARC +rdagr2 = http://RDVocab.info/ElementsGr2/ + +# DNB +gnd = http://d-nb.info/standards/elementset/gnd# + +# xbib +xbib = http://xbib.org/elements/ +lia = http://xbib.org/namespaces/lia/ \ No newline at end of file diff --git a/content-rdf/src/test/resources/org/xbib/sequential/sequential.groupstream b/content-rdf/src/test/resources/org/xbib/content/rdf/test/sequential/sequential.groupstream similarity index 100% rename from content-rdf/src/test/resources/org/xbib/sequential/sequential.groupstream rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/sequential/sequential.groupstream diff --git a/content-rdf/src/test/resources/org/xbib/content/rdf/viaf.json b/content-rdf/src/test/resources/org/xbib/content/rdf/test/viaf.json similarity index 100% rename from content-rdf/src/test/resources/org/xbib/content/rdf/viaf.json rename to content-rdf/src/test/resources/org/xbib/content/rdf/test/viaf.json diff --git a/content-resource/build.gradle b/content-resource/build.gradle index 857d9f7..86f0ad0 100644 --- a/content-resource/build.gradle +++ b/content-resource/build.gradle @@ -2,3 +2,13 @@ dependencies { api libs.net testImplementation libs.jackson.databind } + +def patchArgs = ['--patch-module', "org.xbib.content.resource.test=" + sourceSets.test.resources.sourceDirectories.singleFile] + +tasks.named('compileTestJava') { + options.compilerArgs += patchArgs +} + +tasks.named('test') { + jvmArgs += patchArgs +} diff --git a/content-resource/src/main/java/org/xbib/content/resource/IRINamespaceContext.java b/content-resource/src/main/java/org/xbib/content/resource/IRINamespaceContext.java index 464e84d..4aeee4d 100644 --- a/content-resource/src/main/java/org/xbib/content/resource/IRINamespaceContext.java +++ b/content-resource/src/main/java/org/xbib/content/resource/IRINamespaceContext.java @@ -1,5 +1,6 @@ package org.xbib.content.resource; +import java.io.IOException; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashSet; @@ -11,35 +12,44 @@ import java.util.ResourceBundle; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; +import java.util.logging.Level; +import java.util.logging.Logger; public final class IRINamespaceContext implements NamespaceContext { - private static final IRINamespaceContext DEFAULT_INSTANCE; + private static final Logger logger = Logger.getLogger(IRINamespaceContext.class.getName()); - static { - DEFAULT_INSTANCE = new IRINamespaceContext(); - try { - String bundleName = IRINamespaceContext.class.getPackage().getName().replace('.', '/') + '/' + "namespace"; - Locale locale = Locale.getDefault(); - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - ResourceBundle resourceBundle = ResourceBundle.getBundle(bundleName, locale, classLoader); - Enumeration en = resourceBundle.getKeys(); - while (en.hasMoreElements()) { - String prefix = en.nextElement(); - String namespace = resourceBundle.getString(prefix); - DEFAULT_INSTANCE.addNamespace(prefix, namespace); - } - } catch (Exception e) { - // - } - } + private static final IRINamespaceContext INSTANCE = new IRINamespaceContext(); public static IRINamespaceContext getInstance() { - return DEFAULT_INSTANCE; + return INSTANCE; } public static IRINamespaceContext newInstance() { - return new IRINamespaceContext(); + return newInstance(IRINamespaceContext.class); + } + + public static IRINamespaceContext newInstance(Class clazz) { + IRINamespaceContext iriNamespaceContext = new IRINamespaceContext(); + try { + iriNamespaceContext.loadNamespaces(clazz); + return iriNamespaceContext; + } catch (IOException e) { + logger.log(Level.SEVERE, e.getMessage(), e); + throw new IllegalArgumentException(); + } + } + + private void loadNamespaces(Class clazz) throws IOException { + String bundleName = clazz.getPackage().getName().replace('.', '/') + '/' + "namespace"; + Locale locale = Locale.getDefault(); + ResourceBundle resourceBundle = ResourceBundle.getBundle(bundleName, locale, clazz.getClassLoader()); + Enumeration en = resourceBundle.getKeys(); + while (en.hasMoreElements()) { + String prefix = en.nextElement(); + String namespace = resourceBundle.getString(prefix); + addNamespace(prefix, namespace); + } } // sort namespace by length in descending order, useful for compacting prefix diff --git a/content-resource/src/test/java/module-info.java b/content-resource/src/test/java/module-info.java new file mode 100644 index 0000000..d18bd7b --- /dev/null +++ b/content-resource/src/test/java/module-info.java @@ -0,0 +1,5 @@ +module org.xbib.content.resource.test { + requires org.junit.jupiter.api; + requires org.xbib.content.resource; + opens org.xbib.content.resource.test to org.junit.platform.commons; +} diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/IRINamespaceCompactionTest.java b/content-resource/src/test/java/org/xbib/content/resource/test/IRINamespaceCompactionTest.java similarity index 52% rename from content-rdf/src/test/java/org/xbib/content/rdf/IRINamespaceCompactionTest.java rename to content-resource/src/test/java/org/xbib/content/resource/test/IRINamespaceCompactionTest.java index 632f14b..ffda7f9 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/IRINamespaceCompactionTest.java +++ b/content-resource/src/test/java/org/xbib/content/resource/test/IRINamespaceCompactionTest.java @@ -1,22 +1,18 @@ -package org.xbib.content.rdf; +package org.xbib.content.resource.test; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRINamespaceContext; -/** - * - */ public class IRINamespaceCompactionTest { @Test - public void testCompaction() throws Exception { - IRINamespaceContext context = IRINamespaceContext.getInstance(); - assertEquals(context.getNamespaceURI("dc"), "http://purl.org/dc/elements/1.1/"); - assertEquals(context.getPrefix("http://purl.org/dc/elements/1.1/"), "dc"); + public void testCompaction() { + IRINamespaceContext context = IRINamespaceContext.newInstance(getClass()); + assertEquals("dc", context.getPrefix("http://purl.org/dc/elements/1.1/")); + assertEquals("http://purl.org/dc/elements/1.1/", context.getNamespaceURI("dc")); IRI dc = IRI.create("http://purl.org/dc/elements/1.1/creator"); assertEquals(context.compact(dc), "dc:creator"); } - } diff --git a/content-rdf/src/test/java/org/xbib/content/rdf/IRITest.java b/content-resource/src/test/java/org/xbib/content/resource/test/IRITest.java similarity index 98% rename from content-rdf/src/test/java/org/xbib/content/rdf/IRITest.java rename to content-resource/src/test/java/org/xbib/content/resource/test/IRITest.java index 06d21e6..d0713ad 100644 --- a/content-rdf/src/test/java/org/xbib/content/rdf/IRITest.java +++ b/content-resource/src/test/java/org/xbib/content/resource/test/IRITest.java @@ -1,4 +1,4 @@ -package org.xbib.content.rdf; +package org.xbib.content.resource.test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; diff --git a/content-resource/src/test/java/org/xbib/content/resource/TestIRI.java b/content-resource/src/test/java/org/xbib/content/resource/test/TestIRI.java similarity index 90% rename from content-resource/src/test/java/org/xbib/content/resource/TestIRI.java rename to content-resource/src/test/java/org/xbib/content/resource/test/TestIRI.java index fe86bb1..7f58c66 100644 --- a/content-resource/src/test/java/org/xbib/content/resource/TestIRI.java +++ b/content-resource/src/test/java/org/xbib/content/resource/test/TestIRI.java @@ -1,7 +1,9 @@ -package org.xbib.content.resource; +package org.xbib.content.resource.test; import java.net.URISyntaxException; import org.junit.jupiter.api.Test; +import org.xbib.content.resource.IRI; + import static org.junit.jupiter.api.Assertions.assertEquals; public class TestIRI { diff --git a/content-resource/src/test/resources/org/xbib/content/resource/test/namespace.properties b/content-resource/src/test/resources/org/xbib/content/resource/test/namespace.properties new file mode 100644 index 0000000..7cf3d07 --- /dev/null +++ b/content-resource/src/test/resources/org/xbib/content/resource/test/namespace.properties @@ -0,0 +1,36 @@ +# XML namespace +xml = http://www.w3.org/XML/1998/namespace +xsl = http://www.w3.org/1999/XSL/Transform + +# Atom +atom = http://www.w3.org/2005/Atom + +# RDF namespace +rdf = http://www.w3.org/1999/02/22-rdf-syntax-ns# +rdfs = http://www.w3.org/2000/01/rdf-schema# +owl = http://www.w3.org/2002/07/owl# + +foaf = http://xmlns.com/foaf/0.1/ + +# Apache +xalan = http://xml.apache.org/xslt + +# Dublin Core Namespaces +# http://dublincore.org/documents/dcmi-namespace/ +dc = http://purl.org/dc/elements/1.1/ +dcterms = http://purl.org/dc/terms/ +rel = http://purl.org/vocab/relationship/ + +# Library of Congress +mods = http://www.loc.gov/mods/v3 +bib = info:srw/cql-context-set/1/bib-v1/ + +# RDA, MARC +rdagr2 = http://RDVocab.info/ElementsGr2/ + +# DNB +gnd = http://d-nb.info/standards/elementset/gnd# + +# xbib +xbib = http://xbib.org/elements/ +lia = http://xbib.org/namespaces/lia/ \ No newline at end of file diff --git a/content-smile/src/main/java/org/xbib/content/smile/SmileXContentGenerator.java b/content-smile/src/main/java/org/xbib/content/smile/SmileXContentGenerator.java index 29fe10c..fb7b2d5 100644 --- a/content-smile/src/main/java/org/xbib/content/smile/SmileXContentGenerator.java +++ b/content-smile/src/main/java/org/xbib/content/smile/SmileXContentGenerator.java @@ -21,6 +21,7 @@ public class SmileXContentGenerator extends AbstractXContentGenerator { private final SmileGeneratorDelegate delegate; + @SuppressWarnings("this-escape") public SmileXContentGenerator(SmileGenerator generator) { this.delegate = new SmileGeneratorDelegate(generator); super.setGenerator(delegate); diff --git a/content-smile/src/main/java/org/xbib/content/smile/SmileXContentParser.java b/content-smile/src/main/java/org/xbib/content/smile/SmileXContentParser.java index fdd13a2..3b5cf05 100644 --- a/content-smile/src/main/java/org/xbib/content/smile/SmileXContentParser.java +++ b/content-smile/src/main/java/org/xbib/content/smile/SmileXContentParser.java @@ -54,7 +54,7 @@ public class SmileXContentParser extends AbstractXContentParser { @Override public String currentName() throws IOException { - return parser.getCurrentName(); + return parser.currentName(); } @Override diff --git a/content-xml/build.gradle b/content-xml/build.gradle index 30e6a64..58400b3 100644 --- a/content-xml/build.gradle +++ b/content-xml/build.gradle @@ -5,3 +5,13 @@ dependencies { runtimeOnly libs.woodstox testImplementation project(':content-json') // for XContentHelper reading JSON } + +def patchArgs = ['--patch-module', "org.xbib.content.xml.test=" + sourceSets.test.resources.sourceDirectories.singleFile] + +tasks.named('compileTestJava') { + options.compilerArgs += patchArgs +} + +tasks.named('test') { + jvmArgs += patchArgs +} diff --git a/content-xml/src/main/java/org/xbib/content/xml/XmlNamespaceContext.java b/content-xml/src/main/java/org/xbib/content/xml/XmlNamespaceContext.java index 0d57f32..07f2762 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/XmlNamespaceContext.java +++ b/content-xml/src/main/java/org/xbib/content/xml/XmlNamespaceContext.java @@ -1,10 +1,10 @@ package org.xbib.content.xml; +import java.io.IOException; import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; import java.util.Locale; -import java.util.MissingResourceException; import java.util.ResourceBundle; import java.util.Set; import java.util.SortedMap; @@ -30,16 +30,6 @@ public class XmlNamespaceContext implements NamespaceContext, org.xbib.content.r this.lock = new Object(); } - protected XmlNamespaceContext(ResourceBundle bundle) { - this(); - Enumeration en = bundle.getKeys(); - while (en.hasMoreElements()) { - String prefix = en.nextElement(); - String namespace = bundle.getString(prefix); - addNamespace(prefix, namespace); - } - } - /** * Empty namespace context. * @@ -49,15 +39,29 @@ public class XmlNamespaceContext implements NamespaceContext, org.xbib.content.r return new XmlNamespaceContext(); } - public static XmlNamespaceContext newInstance(String bundleName, Locale locale, ClassLoader classLoader) { + public static XmlNamespaceContext newInstance(Class clazz) { + XmlNamespaceContext xmlNamespaceContext = new XmlNamespaceContext(); try { - ResourceBundle bundle = ResourceBundle.getBundle(bundleName, locale, classLoader); - return new XmlNamespaceContext(bundle); - } catch (MissingResourceException e) { - return new XmlNamespaceContext(); + xmlNamespaceContext.loadNamespaces(clazz); + return xmlNamespaceContext; + } catch (IOException e) { + throw new IllegalArgumentException(); } } + private void loadNamespaces(Class clazz) throws IOException { + String bundleName = clazz.getPackage().getName().replace('.', '/') + '/' + "namespace"; + Locale locale = Locale.getDefault(); + ResourceBundle resourceBundle = ResourceBundle.getBundle(bundleName, locale, clazz.getClassLoader()); + Enumeration en = resourceBundle.getKeys(); + while (en.hasMoreElements()) { + String prefix = en.nextElement(); + String namespace = resourceBundle.getString(prefix); + addNamespace(prefix, namespace); + } + } + + @Override public void addNamespace(String prefix, String namespace) { if (prefix != null && namespace != null) { synchronized (lock) { @@ -73,6 +77,7 @@ public class XmlNamespaceContext implements NamespaceContext, org.xbib.content.r } } + @Override public SortedMap getNamespaces() { return namespaces; } @@ -104,5 +109,4 @@ public class XmlNamespaceContext implements NamespaceContext, org.xbib.content.r public String toString() { return namespaces.toString(); } - } diff --git a/content-xml/src/main/java/org/xbib/content/xml/XmlXContentGenerator.java b/content-xml/src/main/java/org/xbib/content/xml/XmlXContentGenerator.java index 8ff2300..a31dde5 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/XmlXContentGenerator.java +++ b/content-xml/src/main/java/org/xbib/content/xml/XmlXContentGenerator.java @@ -35,6 +35,7 @@ public class XmlXContentGenerator extends AbstractXContentGenerator { this(generator, XmlXParams.getDefaultParams()); } + @SuppressWarnings("this-escape") public XmlXContentGenerator(ToXmlGenerator generator, XmlXParams params) { this.params = params; generator.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, false); diff --git a/content-xml/src/main/java/org/xbib/content/xml/XmlXContentParser.java b/content-xml/src/main/java/org/xbib/content/xml/XmlXContentParser.java index 9454981..da4be7f 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/XmlXContentParser.java +++ b/content-xml/src/main/java/org/xbib/content/xml/XmlXContentParser.java @@ -56,7 +56,7 @@ public class XmlXContentParser extends AbstractXContentParser { @Override public String currentName() throws IOException { - return parser.getCurrentName(); + return parser.currentName(); } @Override diff --git a/content-xml/src/main/java/org/xbib/content/xml/json/JsonSaxAdapter.java b/content-xml/src/main/java/org/xbib/content/xml/json/JsonSaxAdapter.java index b2e3496..4d791ff 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/json/JsonSaxAdapter.java +++ b/content-xml/src/main/java/org/xbib/content/xml/json/JsonSaxAdapter.java @@ -106,13 +106,13 @@ public class JsonSaxAdapter { int elementsWritten = 0; while (jsonParser.nextToken() != null && jsonParser.getCurrentToken() != END_OBJECT) { if (FIELD_NAME.equals(jsonParser.getCurrentToken())) { - String elementName = jsonParser.getCurrentName(); + String elementName = jsonParser.currentName(); jsonParser.nextToken(); parseElement(elementName); elementsWritten++; } else { throw new JsonParseException(jsonParser, "expected field name, but got " + jsonParser.getCurrentToken(), - jsonParser.getCurrentLocation()); + jsonParser.currentLocation()); } } return elementsWritten; @@ -177,7 +177,7 @@ public class JsonSaxAdapter { @Override public String getPublicId() { - Object sourceRef = jsonParser.getCurrentLocation().contentReference().getRawContent(); + Object sourceRef = jsonParser.currentLocation().contentReference().getRawContent(); if (sourceRef != null) { return sourceRef.toString(); } else { @@ -192,13 +192,12 @@ public class JsonSaxAdapter { @Override public int getLineNumber() { - return jsonParser.getCurrentLocation() != null ? jsonParser.getCurrentLocation().getLineNr() : -1; + return jsonParser.currentLocation() != null ? jsonParser.currentLocation().getLineNr() : -1; } @Override public int getColumnNumber() { - return jsonParser.getCurrentLocation() != null ? jsonParser.getCurrentLocation().getColumnNr() : -1; + return jsonParser.currentLocation() != null ? jsonParser.currentLocation().getColumnNr() : -1; } } - } diff --git a/content-xml/src/main/java/org/xbib/content/xml/json/JsonStaxReader.java b/content-xml/src/main/java/org/xbib/content/xml/json/JsonStaxReader.java index 9e93cd5..5a6fc0c 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/json/JsonStaxReader.java +++ b/content-xml/src/main/java/org/xbib/content/xml/json/JsonStaxReader.java @@ -98,7 +98,7 @@ public class JsonStaxReader implements XMLStreamReader { switch (jtok) { case FIELD_NAME: // start tag - String currentName = parser.getCurrentName(); + String currentName = parser.currentName(); if (currentName.startsWith("@")) { currentName = currentName.substring(1); } @@ -106,14 +106,14 @@ public class JsonStaxReader implements XMLStreamReader { if (!("$".equals(currentName))) { final QName currentQName = getQNameForTagLocName(currentName); eventQueue.add(new StartElementEvent(currentQName, - new StaxLocation(parser.getCurrentLocation()))); + new StaxLocation(parser.currentLocation()))); processingStack.add(new ProcessingInfo(currentQName, false, true)); return; } else { parser.nextToken(); if (valueTokens.contains(parser.getCurrentToken())) { eventQueue.add(new CharactersEvent(parser.getText(), - new StaxLocation(parser.getCurrentLocation()))); + new StaxLocation(parser.currentLocation()))); return; } else { throw new IOException("Not a xml value, expected primitive value!"); @@ -125,7 +125,7 @@ public class JsonStaxReader implements XMLStreamReader { return; } if (pi.isArray && !pi.isFirstElement) { - eventQueue.add(new StartElementEvent(pi.name, new StaxLocation(parser.getCurrentLocation()))); + eventQueue.add(new StartElementEvent(pi.name, new StaxLocation(parser.currentLocation()))); return; } else { pi.isFirstElement = false; @@ -133,12 +133,12 @@ public class JsonStaxReader implements XMLStreamReader { break; case END_OBJECT: // end tag - eventQueue.add(new EndElementEvent(pi.name, new StaxLocation(parser.getCurrentLocation()))); + eventQueue.add(new EndElementEvent(pi.name, new StaxLocation(parser.currentLocation()))); if (!pi.isArray) { processingStack.pop(); } if (processingStack.isEmpty()) { - eventQueue.add(new EndDocumentEvent(new StaxLocation(parser.getCurrentLocation()))); + eventQueue.add(new EndDocumentEvent(new StaxLocation(parser.currentLocation()))); } return; case VALUE_FALSE: @@ -148,20 +148,20 @@ public class JsonStaxReader implements XMLStreamReader { case VALUE_TRUE: case VALUE_STRING: if (!pi.isFirstElement) { - eventQueue.add(new StartElementEvent(pi.name, new StaxLocation(parser.getCurrentLocation()))); + eventQueue.add(new StartElementEvent(pi.name, new StaxLocation(parser.currentLocation()))); } else { pi.isFirstElement = false; } if (jtok != JsonToken.VALUE_NULL) { eventQueue.add(new CharactersEvent(parser.getText(), - new StaxLocation(parser.getCurrentLocation()))); + new StaxLocation(parser.currentLocation()))); } - eventQueue.add(new EndElementEvent(pi.name, new StaxLocation(parser.getCurrentLocation()))); + eventQueue.add(new EndElementEvent(pi.name, new StaxLocation(parser.currentLocation()))); if (!pi.isArray) { processingStack.pop(); } if (processingStack.isEmpty()) { - eventQueue.add(new EndDocumentEvent(new StaxLocation(parser.getCurrentLocation()))); + eventQueue.add(new EndDocumentEvent(new StaxLocation(parser.currentLocation()))); } return; case START_ARRAY: diff --git a/content-xml/src/main/java/org/xbib/content/xml/json/JsonXmlStreamer.java b/content-xml/src/main/java/org/xbib/content/xml/json/JsonXmlStreamer.java index a1a1baf..8b815fd 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/json/JsonXmlStreamer.java +++ b/content-xml/src/main/java/org/xbib/content/xml/json/JsonXmlStreamer.java @@ -150,7 +150,7 @@ public class JsonXmlStreamer { qname = elements.pop(); break; case FIELD_NAME: - qname = ToQName.toQName(root, context, parser.getCurrentName()); + qname = ToQName.toQName(root, context, parser.currentName()); break; case VALUE_STRING: case VALUE_NUMBER_INT: @@ -158,8 +158,8 @@ public class JsonXmlStreamer { case VALUE_NULL: case VALUE_TRUE: case VALUE_FALSE: - if (parser.getCurrentName() != null) { - qname = ToQName.toQName(root, context, parser.getCurrentName()); + if (parser.currentName() != null) { + qname = ToQName.toQName(root, context, parser.currentName()); } String text = parser.getText(); int len = text.length(); diff --git a/content-xml/src/main/java/org/xbib/content/xml/json/events/CharactersEvent.java b/content-xml/src/main/java/org/xbib/content/xml/json/events/CharactersEvent.java index 3733de3..95dd8e1 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/json/events/CharactersEvent.java +++ b/content-xml/src/main/java/org/xbib/content/xml/json/events/CharactersEvent.java @@ -3,11 +3,9 @@ package org.xbib.content.xml.json.events; import javax.xml.stream.Location; import javax.xml.stream.XMLStreamConstants; -/** - * - */ public class CharactersEvent extends JsonReaderXmlEvent { + @SuppressWarnings("this-escape") public CharactersEvent(String text, Location location) { setText(text); setLocation(location); diff --git a/content-xml/src/main/java/org/xbib/content/xml/json/events/EndDocumentEvent.java b/content-xml/src/main/java/org/xbib/content/xml/json/events/EndDocumentEvent.java index 311d49a..75cd734 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/json/events/EndDocumentEvent.java +++ b/content-xml/src/main/java/org/xbib/content/xml/json/events/EndDocumentEvent.java @@ -3,11 +3,9 @@ package org.xbib.content.xml.json.events; import javax.xml.stream.Location; import javax.xml.stream.XMLStreamConstants; -/** - * - */ public class EndDocumentEvent extends JsonReaderXmlEvent { + @SuppressWarnings("this-escape") public EndDocumentEvent(Location location) { setLocation(location); } diff --git a/content-xml/src/main/java/org/xbib/content/xml/json/events/EndElementEvent.java b/content-xml/src/main/java/org/xbib/content/xml/json/events/EndElementEvent.java index c305eec..8ee0ff4 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/json/events/EndElementEvent.java +++ b/content-xml/src/main/java/org/xbib/content/xml/json/events/EndElementEvent.java @@ -4,11 +4,9 @@ import javax.xml.namespace.QName; import javax.xml.stream.Location; import javax.xml.stream.XMLStreamConstants; -/** - * - */ public class EndElementEvent extends JsonReaderXmlEvent { + @SuppressWarnings("this-escape") public EndElementEvent(QName name, Location location) { setQName(name); setLocation(location); diff --git a/content-xml/src/main/java/org/xbib/content/xml/json/events/StartDocumentEvent.java b/content-xml/src/main/java/org/xbib/content/xml/json/events/StartDocumentEvent.java index 45585f3..32354fd 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/json/events/StartDocumentEvent.java +++ b/content-xml/src/main/java/org/xbib/content/xml/json/events/StartDocumentEvent.java @@ -3,11 +3,9 @@ package org.xbib.content.xml.json.events; import javax.xml.stream.Location; import javax.xml.stream.XMLStreamConstants; -/** - * - */ public class StartDocumentEvent extends JsonReaderXmlEvent { + @SuppressWarnings("this-escape") public StartDocumentEvent(Location location) { setLocation(location); } diff --git a/content-xml/src/main/java/org/xbib/content/xml/json/events/StartElementEvent.java b/content-xml/src/main/java/org/xbib/content/xml/json/events/StartElementEvent.java index 9a1e638..de1e2d2 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/json/events/StartElementEvent.java +++ b/content-xml/src/main/java/org/xbib/content/xml/json/events/StartElementEvent.java @@ -4,11 +4,9 @@ import javax.xml.namespace.QName; import javax.xml.stream.Location; import javax.xml.stream.XMLStreamConstants; -/** - * - */ public class StartElementEvent extends JsonReaderXmlEvent { + @SuppressWarnings("this-escape") public StartElementEvent(QName name, Location location) { setQName(name); setLocation(location); diff --git a/content-xml/src/main/java/org/xbib/content/xml/stream/StaxSource.java b/content-xml/src/main/java/org/xbib/content/xml/stream/StaxSource.java index d399f36..178c1a2 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/stream/StaxSource.java +++ b/content-xml/src/main/java/org/xbib/content/xml/stream/StaxSource.java @@ -52,12 +52,11 @@ public class StaxSource extends SAXSource { // SAX allows ContentHandler to be changed during the parsing, // but JAXB doesn't. So this repeater will sit between those // two components. - private XMLFilterImpl repeater = new XMLFilterImpl(); + private final XMLFilterImpl repeater = new XMLFilterImpl(); /** * Creates a new {@link javax.xml.transform.Source} for the given * {@link XMLStreamReader}. - * * The XMLStreamReader must be pointing at either a * {@link javax.xml.stream.XMLStreamConstants#START_DOCUMENT} or * {@link javax.xml.stream.XMLStreamConstants#START_ELEMENT} event. @@ -68,19 +67,17 @@ public class StaxSource extends SAXSource { * @throws IllegalStateException iff the reader is not pointing at either a * START_DOCUMENT or START_ELEMENT event */ + @SuppressWarnings("this-escape") public StaxSource(XMLStreamReader reader, boolean eagerQuit) { if (reader == null) { throw new IllegalArgumentException(); } - int eventType = reader.getEventType(); if (eventType != XMLStreamConstants.START_DOCUMENT && eventType != XMLStreamConstants.START_ELEMENT) { throw new IllegalStateException(); } - final XMLStreamReaderToContentHandler reader1 = new XMLStreamReaderToContentHandler(reader, repeater, eagerQuit); - XMLReader pseudoParser = new XMLReader() { private LexicalHandler lexicalHandler; // we will store this value but never use it by ourselves. @@ -199,5 +196,4 @@ public class StaxSource extends SAXSource { // pass a dummy InputSource. We don't care super.setInputSource(new InputSource()); } - } diff --git a/content-xml/src/main/java/org/xbib/content/xml/transform/TransformerURIResolver.java b/content-xml/src/main/java/org/xbib/content/xml/transform/TransformerURIResolver.java index 947ceb5..8e92433 100644 --- a/content-xml/src/main/java/org/xbib/content/xml/transform/TransformerURIResolver.java +++ b/content-xml/src/main/java/org/xbib/content/xml/transform/TransformerURIResolver.java @@ -28,9 +28,9 @@ import javax.xml.transform.sax.SAXSource; */ public class TransformerURIResolver implements URIResolver, Closeable { - private List inputStreams = new LinkedList<>(); + private final List inputStreams = new LinkedList<>(); - private List bases = new LinkedList<>(); + private final List bases = new LinkedList<>(); private ClassLoader classLoader; @@ -63,7 +63,7 @@ public class TransformerURIResolver implements URIResolver, Closeable { URI uri = URI.create(href); // relative href? if (!uri.isAbsolute() && base != null) { - url = new URL(new URL(base), href); + url = URI.create(base).resolve(href).toURL(); href = url.toURI().getRawSchemeSpecificPart(); // drop scheme } } catch (MalformedURLException | URISyntaxException e) { diff --git a/content-xml/src/test/java/module-info.java b/content-xml/src/test/java/module-info.java new file mode 100644 index 0000000..867ca5d --- /dev/null +++ b/content-xml/src/test/java/module-info.java @@ -0,0 +1,10 @@ +module org.xbib.content.xml.test { + requires java.xml; + requires org.junit.jupiter.api; + requires org.xbib.content.api; + requires org.xbib.content.core; + requires org.xbib.content.xml; + opens org.xbib.content.xml.test to org.junit.platform.commons; + opens org.xbib.content.xml.test.json to org.junit.platform.commons; + opens org.xbib.content.xml.test.util to org.junit.platform.commons; +} diff --git a/content-xml/src/test/java/org/xbib/content/xml/XContentXmlBuilderTest.java b/content-xml/src/test/java/org/xbib/content/xml/XContentXmlBuilderTest.java deleted file mode 100644 index f194715..0000000 --- a/content-xml/src/test/java/org/xbib/content/xml/XContentXmlBuilderTest.java +++ /dev/null @@ -1,210 +0,0 @@ -package org.xbib.content.xml; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.xbib.content.xml.XmlXContent.contentBuilder; -import org.junit.jupiter.api.Test; -import org.xbib.content.XContentBuilder; -import org.xbib.content.core.XContentHelper; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Map; -import javax.xml.namespace.QName; - -/** - * - */ -public class XContentXmlBuilderTest { - - @Test - public void testConstructorForServiceLoader() { - XmlXContent xmlXContent = new XmlXContent(); - assertEquals("xml", xmlXContent.name()); - } - - @Test - public void testEmpty() throws Exception { - QName root = new QName("root"); - XContentBuilder builder = contentBuilder(new XmlXParams(root)); - builder.startObject().field("Hello", "World").endObject(); - assertEquals("World", builder.string()); - } - - @Test - public void testContextNamespace() throws Exception { - QName root = new QName("root"); - XmlNamespaceContext context = XmlNamespaceContext.newInstance(); - XContentBuilder builder = contentBuilder(new XmlXParams(root, context)); - builder.startObject().field("Hello", "World").endObject(); - assertEquals("World", builder.string()); - } - - @Test - public void testXml() throws Exception { - XContentBuilder builder = contentBuilder(); - builder.startObject().field("Hello", "World").endObject(); - assertEquals("World", builder.string()); - } - - @Test - public void testXmlParams() throws Exception { - XmlXParams params = new XmlXParams(); - XContentBuilder builder = contentBuilder(params); - builder.startObject().field("Hello", "World").endObject(); - assertEquals("World", builder.string()); - } - - @Test - public void testXmlObject() throws Exception { - QName root = XmlXParams.getDefaultParams().getRoot(); - XmlXParams params = new XmlXParams(root); - XContentBuilder builder = contentBuilder(params); - builder.startObject() - .startObject("author") - .field("creator", "John Doe") - .field("role", "writer") - .endObject() - .startObject("author") - .field("creator", "Joe Smith") - .field("role", "illustrator") - .endObject() - .endObject(); - assertEquals("John Doewriter" - + "Joe Smithillustrator", - builder.string()); - } - - @Test - public void testXmlAttributes() throws Exception { - QName root = XmlXParams.getDefaultParams().getRoot(); - XmlXParams params = new XmlXParams(root); - XContentBuilder builder = contentBuilder(params); - builder.startObject() - .startObject("author") - .field("@name", "John Doe") - .field("@id", 1) - .endObject() - .endObject(); - assertEquals("John Doe1", builder.string()); - } - - @Test - public void testXmlArrayOfValues() throws Exception { - QName root = XmlXParams.getDefaultParams().getRoot(); - XmlXParams params = new XmlXParams(root); - XContentBuilder builder = contentBuilder(params); - builder.startObject() - .array("author", "John Doe", "Joe Smith") - .endObject(); - assertEquals("John DoeJoe Smith", builder.string()); - } - - @Test - public void testXmlArrayOfObjects() throws Exception { - QName root = XmlXParams.getDefaultParams().getRoot(); - XmlXParams params = new XmlXParams(root); - XContentBuilder builder = contentBuilder(params); - builder.startObject() - .startArray("author") - .startObject() - .field("creator", "John Doe") - .field("role", "writer") - .endObject() - .startObject() - .field("creator", "Joe Smith") - .field("role", "illustrator") - .endObject() - .endArray() - .endObject(); - assertEquals("John Doewriter" - + "Joe Smithillustrator", - builder.string()); - } - - @Test - public void testParseJson() throws Exception { - XmlNamespaceContext context = XmlNamespaceContext.newInstance(); - context.addNamespace("bib", "info:srw/cql-context-set/1/bib-v1/"); - context.addNamespace("xbib", "http://xbib.org/"); - context.addNamespace("abc", "http://localhost/"); - context.addNamespace("lia", "http://xbib.org/namespaces/lia/"); - InputStream in = getClass().getResourceAsStream("dc.json"); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - copy(in, out); - byte[] buf = out.toByteArray(); - Map map = XContentHelper.convertToMap(buf, false); - assertEquals("{dc:description={xbib:creatorDescription=Otis Gospodnetić ; Erik Hatcher, " - + "dcterms:extent=XXXIV, 421 S. : Ill.}, dc:language={xbib:languageISO6392b=eng, " - + "xbib:languageISO6391=en}, dc:subject={xbib:rswk={xbib:subjectTopic=Lucene, " - + "xbib:hasGND=4800725-0}}, dc:relation=[{xbib:relationName=Später u.d.T., " - + "xbib:relationValue=McCandless, Michael: Lucene in action}, " - + "{lia:lia={lia:access=[{lia:library={lia:name=DE-1010, lia:authority=ISIL}, " - + "lia:name=DE-605, lia:authority=ISIL, lia:service=[inter-library-loan, copy], " - + "lia:item={lia:preferredTransport=physical, lia:identifier=DE-1010 GE 01TYD1110, " - + "lia:shelfmark=01TYD1110, lia:type=hard-cover, lia:preferredDelivery=physical, " - + "lia:number=GE}}, {lia:library={lia:name=DE-6-282, lia:authority=ISIL}, lia:name=DE-605, " - + "lia:authority=ISIL, lia:service=restricted, lia:item={lia:preferredTransport=physical, " - + "lia:identifier=DE-6-282 00071001 WI 14 822, lia:shelfmark=WI 14 822, lia:type=hard-cover, " - + "lia:preferredDelivery=physical, lia:number=00071001}}, {lia:library={lia:name=DE-361, " - + "lia:authority=ISIL}, lia:name=DE-605, lia:authority=ISIL, lia:service=[inter-library-loan, copy], " - + "lia:item={lia:preferredTransport=physical, lia:identifier=DE-361 00000010 HK520 G676, " - + "lia:shelfmark=HK520 G676, lia:type=hard-cover, lia:preferredDelivery=physical, " - + "lia:number=00000010}}, {lia:library={lia:name=DE-6, lia:authority=ISIL}, lia:name=DE-605, " - + "lia:authority=ISIL, lia:service=[inter-library-loan, copy], " - + "lia:item={lia:preferredTransport=physical, lia:identifier=DE-6 00000040 3W 622, " - + "lia:shelfmark=3W 622, lia:type=hard-cover, lia:preferredDelivery=physical, lia:number=00000040}}, " - + "{lia:library={lia:name=DE-1044, lia:authority=ISIL}, lia:name=DE-605, lia:authority=ISIL, " - + "lia:service=[inter-library-loan, copy], lia:item={lia:preferredTransport=physical, " - + "lia:identifier=DE-1044 00000001 11 = TYD6810, lia:shelfmark=11 = TYD6810, lia:type=hard-cover, " - + "lia:preferredDelivery=physical, lia:number=00000001}}, {lia:library={lia:name=DE-1044, " - + "lia:authority=ISIL}, lia:name=DE-605, lia:authority=ISIL, lia:service=[inter-library-loan, copy], " - + "lia:item={lia:preferredTransport=physical, lia:identifier=DE-1044 00000001 11 = TYD6810+1, " - + "lia:shelfmark=11 = TYD6810+1, lia:type=hard-cover, lia:preferredDelivery=physical, " - + "lia:number=00000001}}, {lia:library={lia:name=DE-467, lia:authority=ISIL}, lia:name=DE-605, " - + "lia:authority=ISIL, lia:service=[inter-library-loan, copy], " - + "lia:item={lia:preferredTransport=physical, lia:identifier=DE-467 51 51TWYD3730, " - + "lia:shelfmark=51TWYD3730, lia:type=hard-cover, lia:preferredDelivery=physical, " - + "lia:number=51}}]}}], dc:creator=[{xbib:namePersonalID=HP02672128, " - + "bib:namePersonal=Gospodnetić, Otis}, {xbib:namePersonalAlt=Hatcher, E., " - + "xbib:namePersonalID=128668350, bib:namePersonal=Hatcher, Erik}], " - + "xbib:updated=2012-05-17T17:02:24Z, dc:format={dcterms:format=print, dcterms:medium=paper}, " - + "dc:type={bib:issuance=monographic, xbib:recordType=h}, dc:contributor=[{xbib:namePersonalRole=cre, " - + "xbib:namePersonalID=HP02672128, bib:namePersonal=Gospodnetić, Otis}, " - + "{xbib:namePersonalAlt=Hatcher, E., xbib:namePersonalRole=cre, xbib:namePersonalID=128668350, " - + "bib:namePersonal=Hatcher, Erik}], dc:title={xbib:title=Lucene in action, " - + "xbib:titleSub=[a guide to the Java search engine]}, dc:date={dcterms:issued=2005}, " - + "dc:identifier={xbib:identifierAuthorityEKI=HBZHT014262244, xbib:sysID=013391972, " - + "xbib:identifierAuthorityISIL=[DE-1010, DE-6-282, DE-361, DE-6, DE-1044, DE-467], " - + "xbib:identifierAuthorityOriginISBN=1-932394-28-1, xbib:identifierAuthorityMAB=HT014262244, " - + "xbib:identifierAuthorityISBN=1932394281, xbib:identifierAuthorityEAN=9781932394283}, " - + "dc:publisher={xbib:publisherPlace=Greenwich, Conn., xbib:publisherName=Manning}}", - map.toString()); - } - - @Test - public void testInvalidWhiteSpaceCharacter() throws Exception { - QName root = new QName("root"); - XContentBuilder builder = contentBuilder(new XmlXParams(root)); - builder.startObject().field("Hello", "World\u001b").endObject(); - assertEquals("World", builder.string()); - } - - @Test - public void testSuppressEmptyNamespace() throws Exception { - XmlNamespaceContext context = XmlNamespaceContext.newInstance(); - context.addNamespace("", ""); - QName root = new QName("root"); - XContentBuilder builder = contentBuilder(new XmlXParams(root, context)); - builder.startObject().field("Hello", "World").endObject(); - assertEquals("World", builder.string()); - } - - private void copy(InputStream in, OutputStream out) throws IOException { - byte[] buffer = new byte[1024]; - int len; - while ((len = in.read(buffer)) != -1) { - out.write(buffer, 0, len); - } - } -} diff --git a/content-xml/src/test/java/org/xbib/content/xml/XmlNamespaceContextTest.java b/content-xml/src/test/java/org/xbib/content/xml/XmlNamespaceContextTest.java deleted file mode 100644 index d45d196..0000000 --- a/content-xml/src/test/java/org/xbib/content/xml/XmlNamespaceContextTest.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.xbib.content.xml; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.xbib.content.xml.XmlXContent.contentBuilder; -import org.junit.jupiter.api.Test; -import org.xbib.content.XContentBuilder; -import org.xbib.content.xml.transform.StylesheetTransformer; -import java.util.Locale; -import javax.xml.namespace.QName; - -/** - * - */ -public class XmlNamespaceContextTest { - - @Test - public void testDefaultNamespace() { - XmlNamespaceContext context = XmlNamespaceContext.newInstance(); - assertEquals(0, context.getNamespaces().size()); - } - - @Test - public void testDefaultNamespaces() throws Exception { - XmlNamespaceContext context = - XmlNamespaceContext.newInstance("org/xbib/content/resource/namespace", - Locale.getDefault(), StylesheetTransformer.class.getClassLoader()); - XmlXParams params = new XmlXParams(context); - XContentBuilder builder = contentBuilder(params); - builder.startObject() - .field("dc:creator", "John Doe") - .endObject(); - assertEquals("John Doe", - builder.string()); - } - - @Test - public void testCustomNamespaces() throws Exception { - QName root = new QName("result"); - XmlNamespaceContext context = XmlNamespaceContext.newInstance(); - context.addNamespace("abc", "http://localhost"); - XmlXParams params = new XmlXParams(root, context); - XContentBuilder builder = contentBuilder(params); - builder.startObject() - .field("abc:creator", "John Doe") - .endObject(); - assertEquals("John Doe", - builder.string()); - } - - @Test - public void testRootNamespace() throws Exception { - QName root = new QName("http://content", "root", "abc"); - XmlNamespaceContext context = XmlNamespaceContext.newInstance(); - context.addNamespace("", "http://localhost"); - context.addNamespace("abc", "http://content"); - XmlXParams params = new XmlXParams(root, context); - XContentBuilder builder = contentBuilder(params); - builder.startObject() - .field("creator", "John Doe") - .endObject(); - assertEquals("" - + "John Doe", builder.string()); - } -} diff --git a/content-xml/src/test/java/org/xbib/content/xml/json/Json2XmlTest.java b/content-xml/src/test/java/org/xbib/content/xml/json/Json2XmlTest.java deleted file mode 100644 index e9a1d6b..0000000 --- a/content-xml/src/test/java/org/xbib/content/xml/json/Json2XmlTest.java +++ /dev/null @@ -1,92 +0,0 @@ -package org.xbib.content.xml.json; - -import org.junit.jupiter.api.Test; -import org.xbib.content.xml.XmlNamespaceContext; -import org.xml.sax.InputSource; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.Reader; -import java.io.Writer; -import java.nio.charset.StandardCharsets; -import java.util.Locale; -import javax.xml.namespace.QName; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.sax.SAXSource; -import javax.xml.transform.stream.StreamResult; - -/** - * - */ -public class Json2XmlTest { - - private static final String PACKAGE = '/' + Json2XmlTest.class.getPackage().getName().replace('.', '/'); - - private static final String[] jsons = { - "dc", - "elasticsearch-hit-example-1", - "es-test-20130719", - "glossary", - "menu" - }; - - @Test - public void testJSON() throws Exception { - for (String s : jsons) { - testJSONXmlReader(s); - testJSONStreamer(s); - } - } - - private void testJSONXmlReader(String path) throws Exception { - Reader r = getInput(path); - InputSource in = new InputSource(r); - JsonXmlReader parser = new JsonXmlReader().root(root()).context(context()); - TransformerFactory tFactory = TransformerFactory.newInstance(); - Transformer transformer = tFactory.newTransformer(); - Writer w = getOutput("test-jsonxmlreader-" + path + ".xml"); - StreamResult stream = new StreamResult(w); - transformer.transform(new SAXSource(parser, in), stream); - w.close(); - r.close(); - } - - private void testJSONStreamer(String path) throws Exception { - Reader r = getInput(path); - Writer w = getOutput("test-jsonxmlstreamer-" + path + ".xml"); - JsonXmlStreamer jsonXml = new JsonXmlStreamer().root(root()).context(context()); - jsonXml.toXML(r, w); - w.close(); - r.close(); - } - - private Reader getInput(String path) throws IOException { - InputStream in = getClass().getResourceAsStream(PACKAGE + "/" + path + ".json"); - return new InputStreamReader(in, StandardCharsets.UTF_8); - } - - private Writer getOutput(String path) throws IOException { - File file = File.createTempFile(path, ".dat"); - return new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8); - } - - private QName root() { - return new QName("http://elasticsearch.org/ns/1.0/", "result", "es"); - } - - private XmlNamespaceContext context() { - XmlNamespaceContext context = - XmlNamespaceContext.newInstance("org/xbib/content/resource/namespace", - Locale.getDefault(), Json2XmlTest.class.getClassLoader()); - context.addNamespace("bib", "info:srw/cql-context-set/1/bib-v1/"); - context.addNamespace("xbib", "http://xbib.org/"); - context.addNamespace("abc", "http://localhost/"); - context.addNamespace("lia", "http://xbib.org/namespaces/lia/"); - return context; - } - -} diff --git a/content-xml/src/test/java/org/xbib/content/xml/json/StylesheetTransformerTest.java b/content-xml/src/test/java/org/xbib/content/xml/json/StylesheetTransformerTest.java deleted file mode 100644 index 6942179..0000000 --- a/content-xml/src/test/java/org/xbib/content/xml/json/StylesheetTransformerTest.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.xbib.content.xml.json; - -import org.junit.jupiter.api.Test; -import org.xbib.content.xml.XmlNamespaceContext; -import org.xbib.content.xml.transform.StylesheetTransformer; -import org.xml.sax.InputSource; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.util.Locale; -import javax.xml.namespace.QName; -import javax.xml.transform.sax.SAXSource; - -/** - * - */ -public class StylesheetTransformerTest { - - private final QName root = new QName("http://example.org", "result", "ex"); - - private final XmlNamespaceContext context = - XmlNamespaceContext.newInstance("org/xbib/content/resource/namespace", - Locale.getDefault(), StylesheetTransformer.class.getClassLoader()); - - @Test - public void testJsonAsXML() throws Exception { - InputStream in = getClass().getResourceAsStream("dc.json"); - if (in == null) { - throw new IOException("dc.json not found"); - } - context.addNamespace("xbib", "http://xbib.org/"); - context.addNamespace("bib", "info:bib"); - context.addNamespace("lia", "http://xbib.org/lia/"); - - JsonXmlReader reader = new JsonXmlReader() - .root(root) - .context(context); - File file = File.createTempFile("dc.", ".xml"); - FileWriter out = new FileWriter(file); - StylesheetTransformer transformer = new StylesheetTransformer().setPath( - "src/main/resources", - "src/main/resources/xsl"); - // no style sheet, just a simple copy - transformer.setSource(new SAXSource(reader, new InputSource(in))) - .setResult(out) - .transform(); - out.close(); - transformer.close(); - } -} diff --git a/content-xml/src/test/java/org/xbib/content/xml/json/package-info.java b/content-xml/src/test/java/org/xbib/content/xml/json/package-info.java deleted file mode 100644 index 2f1c38a..0000000 --- a/content-xml/src/test/java/org/xbib/content/xml/json/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing JSON XML. - */ -package org.xbib.content.xml.json; diff --git a/content-xml/src/test/java/org/xbib/content/xml/package-info.java b/content-xml/src/test/java/org/xbib/content/xml/package-info.java deleted file mode 100644 index 922da86..0000000 --- a/content-xml/src/test/java/org/xbib/content/xml/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing XML content. - */ -package org.xbib.content.xml; diff --git a/content-xml/src/test/java/org/xbib/content/xml/test/XContentXmlBuilderTest.java b/content-xml/src/test/java/org/xbib/content/xml/test/XContentXmlBuilderTest.java new file mode 100644 index 0000000..395f62d --- /dev/null +++ b/content-xml/src/test/java/org/xbib/content/xml/test/XContentXmlBuilderTest.java @@ -0,0 +1,215 @@ +package org.xbib.content.xml.test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.xbib.content.xml.XmlXContent.contentBuilder; +import org.junit.jupiter.api.Test; +import org.xbib.content.XContentBuilder; +import org.xbib.content.core.XContentHelper; +import org.xbib.content.xml.XmlNamespaceContext; +import org.xbib.content.xml.XmlXContent; +import org.xbib.content.xml.XmlXParams; + +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.util.Map; +import javax.xml.namespace.QName; + +public class XContentXmlBuilderTest { + + @Test + public void testConstructorForServiceLoader() { + XmlXContent xmlXContent = new XmlXContent(); + assertEquals("xml", xmlXContent.name()); + } + + @Test + public void testEmpty() throws Exception { + QName root = new QName("root"); + try (XContentBuilder builder = XmlXContent.contentBuilder(new XmlXParams(root))) { + builder.startObject().field("Hello", "World").endObject(); + assertEquals("World", builder.string()); + } + } + + @Test + public void testContextNamespace() throws Exception { + QName root = new QName("root"); + XmlNamespaceContext context = XmlNamespaceContext.newInstance(); + try (XContentBuilder builder = contentBuilder(new XmlXParams(root, context))) { + builder.startObject().field("Hello", "World").endObject(); + assertEquals("World", builder.string()); + } + } + + @Test + public void testXml() throws Exception { + try (XContentBuilder builder = contentBuilder()) { + builder.startObject().field("Hello", "World").endObject(); + assertEquals("World", builder.string()); + } + } + + @Test + public void testXmlParams() throws Exception { + XmlXParams params = new XmlXParams(); + try (XContentBuilder builder = contentBuilder(params)) { + builder.startObject().field("Hello", "World").endObject(); + assertEquals("World", builder.string()); + } + } + + @Test + public void testXmlObject() throws Exception { + QName root = XmlXParams.getDefaultParams().getRoot(); + XmlXParams params = new XmlXParams(root); + try (XContentBuilder builder = contentBuilder(params)) { + builder.startObject() + .startObject("author") + .field("creator", "John Doe") + .field("role", "writer") + .endObject() + .startObject("author") + .field("creator", "Joe Smith") + .field("role", "illustrator") + .endObject() + .endObject(); + assertEquals("John Doewriter" + + "Joe Smithillustrator", + builder.string()); + } + } + + @Test + public void testXmlAttributes() throws Exception { + QName root = XmlXParams.getDefaultParams().getRoot(); + XmlXParams params = new XmlXParams(root); + try (XContentBuilder builder = contentBuilder(params)) { + builder.startObject() + .startObject("author") + .field("@name", "John Doe") + .field("@id", 1) + .endObject() + .endObject(); + assertEquals("John Doe1", builder.string()); + } + } + + @Test + public void testXmlArrayOfValues() throws Exception { + QName root = XmlXParams.getDefaultParams().getRoot(); + XmlXParams params = new XmlXParams(root); + try (XContentBuilder builder = contentBuilder(params)) { + builder.startObject() + .array("author", "John Doe", "Joe Smith") + .endObject(); + assertEquals("John DoeJoe Smith", builder.string()); + } + } + + @Test + public void testXmlArrayOfObjects() throws Exception { + QName root = XmlXParams.getDefaultParams().getRoot(); + XmlXParams params = new XmlXParams(root); + try (XContentBuilder builder = contentBuilder(params)) { + builder.startObject() + .startArray("author") + .startObject() + .field("creator", "John Doe") + .field("role", "writer") + .endObject() + .startObject() + .field("creator", "Joe Smith") + .field("role", "illustrator") + .endObject() + .endArray() + .endObject(); + assertEquals("John Doewriter" + + "Joe Smithillustrator", + builder.string()); + } + } + + @Test + public void testParseJson() throws Exception { + XmlNamespaceContext context = XmlNamespaceContext.newInstance(getClass()); + context.addNamespace("bib", "info:srw/cql-context-set/1/bib-v1/"); + context.addNamespace("xbib", "http://xbib.org/"); + context.addNamespace("abc", "http://localhost/"); + context.addNamespace("lia", "http://xbib.org/namespaces/lia/"); + try (InputStream inputStream = getClass().getResourceAsStream("dc.json")) { + if (inputStream == null) { + throw new IllegalArgumentException(); + } + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + inputStream.transferTo(outputStream); + byte[] buf = outputStream.toByteArray(); + Map map = XContentHelper.convertToMap(buf, false); + assertEquals("{dc:description={xbib:creatorDescription=Otis Gospodnetić ; Erik Hatcher, " + + "dcterms:extent=XXXIV, 421 S. : Ill.}, dc:language={xbib:languageISO6392b=eng, " + + "xbib:languageISO6391=en}, dc:subject={xbib:rswk={xbib:subjectTopic=Lucene, " + + "xbib:hasGND=4800725-0}}, dc:relation=[{xbib:relationName=Später u.d.T., " + + "xbib:relationValue=McCandless, Michael: Lucene in action}, " + + "{lia:lia={lia:access=[{lia:library={lia:name=DE-1010, lia:authority=ISIL}, " + + "lia:name=DE-605, lia:authority=ISIL, lia:service=[inter-library-loan, copy], " + + "lia:item={lia:preferredTransport=physical, lia:identifier=DE-1010 GE 01TYD1110, " + + "lia:shelfmark=01TYD1110, lia:type=hard-cover, lia:preferredDelivery=physical, " + + "lia:number=GE}}, {lia:library={lia:name=DE-6-282, lia:authority=ISIL}, lia:name=DE-605, " + + "lia:authority=ISIL, lia:service=restricted, lia:item={lia:preferredTransport=physical, " + + "lia:identifier=DE-6-282 00071001 WI 14 822, lia:shelfmark=WI 14 822, lia:type=hard-cover, " + + "lia:preferredDelivery=physical, lia:number=00071001}}, {lia:library={lia:name=DE-361, " + + "lia:authority=ISIL}, lia:name=DE-605, lia:authority=ISIL, lia:service=[inter-library-loan, copy], " + + "lia:item={lia:preferredTransport=physical, lia:identifier=DE-361 00000010 HK520 G676, " + + "lia:shelfmark=HK520 G676, lia:type=hard-cover, lia:preferredDelivery=physical, " + + "lia:number=00000010}}, {lia:library={lia:name=DE-6, lia:authority=ISIL}, lia:name=DE-605, " + + "lia:authority=ISIL, lia:service=[inter-library-loan, copy], " + + "lia:item={lia:preferredTransport=physical, lia:identifier=DE-6 00000040 3W 622, " + + "lia:shelfmark=3W 622, lia:type=hard-cover, lia:preferredDelivery=physical, lia:number=00000040}}, " + + "{lia:library={lia:name=DE-1044, lia:authority=ISIL}, lia:name=DE-605, lia:authority=ISIL, " + + "lia:service=[inter-library-loan, copy], lia:item={lia:preferredTransport=physical, " + + "lia:identifier=DE-1044 00000001 11 = TYD6810, lia:shelfmark=11 = TYD6810, lia:type=hard-cover, " + + "lia:preferredDelivery=physical, lia:number=00000001}}, {lia:library={lia:name=DE-1044, " + + "lia:authority=ISIL}, lia:name=DE-605, lia:authority=ISIL, lia:service=[inter-library-loan, copy], " + + "lia:item={lia:preferredTransport=physical, lia:identifier=DE-1044 00000001 11 = TYD6810+1, " + + "lia:shelfmark=11 = TYD6810+1, lia:type=hard-cover, lia:preferredDelivery=physical, " + + "lia:number=00000001}}, {lia:library={lia:name=DE-467, lia:authority=ISIL}, lia:name=DE-605, " + + "lia:authority=ISIL, lia:service=[inter-library-loan, copy], " + + "lia:item={lia:preferredTransport=physical, lia:identifier=DE-467 51 51TWYD3730, " + + "lia:shelfmark=51TWYD3730, lia:type=hard-cover, lia:preferredDelivery=physical, " + + "lia:number=51}}]}}], dc:creator=[{xbib:namePersonalID=HP02672128, " + + "bib:namePersonal=Gospodnetić, Otis}, {xbib:namePersonalAlt=Hatcher, E., " + + "xbib:namePersonalID=128668350, bib:namePersonal=Hatcher, Erik}], " + + "xbib:updated=2012-05-17T17:02:24Z, dc:format={dcterms:format=print, dcterms:medium=paper}, " + + "dc:type={bib:issuance=monographic, xbib:recordType=h}, dc:contributor=[{xbib:namePersonalRole=cre, " + + "xbib:namePersonalID=HP02672128, bib:namePersonal=Gospodnetić, Otis}, " + + "{xbib:namePersonalAlt=Hatcher, E., xbib:namePersonalRole=cre, xbib:namePersonalID=128668350, " + + "bib:namePersonal=Hatcher, Erik}], dc:title={xbib:title=Lucene in action, " + + "xbib:titleSub=[a guide to the Java search engine]}, dc:date={dcterms:issued=2005}, " + + "dc:identifier={xbib:identifierAuthorityEKI=HBZHT014262244, xbib:sysID=013391972, " + + "xbib:identifierAuthorityISIL=[DE-1010, DE-6-282, DE-361, DE-6, DE-1044, DE-467], " + + "xbib:identifierAuthorityOriginISBN=1-932394-28-1, xbib:identifierAuthorityMAB=HT014262244, " + + "xbib:identifierAuthorityISBN=1932394281, xbib:identifierAuthorityEAN=9781932394283}, " + + "dc:publisher={xbib:publisherPlace=Greenwich, Conn., xbib:publisherName=Manning}}", + map.toString()); + } + } + + @Test + public void testInvalidWhiteSpaceCharacter() throws Exception { + QName root = new QName("root"); + try (XContentBuilder builder = contentBuilder(new XmlXParams(root))) { + builder.startObject().field("Hello", "World\u001b").endObject(); + assertEquals("World", builder.string()); + } + } + + @Test + public void testSuppressEmptyNamespace() throws Exception { + XmlNamespaceContext context = XmlNamespaceContext.newInstance(getClass()); + context.addNamespace("", ""); + QName root = new QName("root"); + try (XContentBuilder builder = contentBuilder(new XmlXParams(root, context));) { + builder.startObject().field("Hello", "World").endObject(); + assertEquals("World", builder.string()); + } + } +} diff --git a/content-xml/src/test/java/org/xbib/content/xml/test/XmlNamespaceContextTest.java b/content-xml/src/test/java/org/xbib/content/xml/test/XmlNamespaceContextTest.java new file mode 100644 index 0000000..3920636 --- /dev/null +++ b/content-xml/src/test/java/org/xbib/content/xml/test/XmlNamespaceContextTest.java @@ -0,0 +1,66 @@ +package org.xbib.content.xml.test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.xbib.content.xml.XmlXContent.contentBuilder; +import org.junit.jupiter.api.Test; +import org.xbib.content.XContentBuilder; +import org.xbib.content.xml.XmlNamespaceContext; +import org.xbib.content.xml.XmlXParams; +import javax.xml.namespace.QName; + +public class XmlNamespaceContextTest { + + @Test + public void testDefaultNamespace() { + XmlNamespaceContext context = XmlNamespaceContext.newInstance(); + assertEquals(0, context.getNamespaces().size()); + } + + @Test + public void testDefaultNamespaces() throws Exception { + XmlNamespaceContext context = XmlNamespaceContext.newInstance(getClass()); + XmlXParams params = new XmlXParams(context); + try (XContentBuilder builder = contentBuilder(params)) { + builder.startObject() + .field("dc:creator", "John Doe") + .endObject(); + assertEquals("John Doe", + builder.string()); + } + } + + @Test + public void testCustomNamespaces() throws Exception { + QName root = new QName("result"); + XmlNamespaceContext context = XmlNamespaceContext.newInstance(getClass()); + context.addNamespace("abc", "http://localhost"); + XmlXParams params = new XmlXParams(root, context); + try (XContentBuilder builder = contentBuilder(params)) { + builder.startObject() + .field("abc:creator", "John Doe") + .endObject(); + assertEquals("John Doe", + builder.string()); + } + } + + @Test + public void testRootNamespace() throws Exception { + QName root = new QName("http://content", "root", "abc"); + XmlNamespaceContext context = XmlNamespaceContext.newInstance(getClass()); + context.addNamespace("", "http://localhost"); + context.addNamespace("abc", "http://content"); + XmlXParams params = new XmlXParams(root, context); + try (XContentBuilder builder = contentBuilder(params)) { + builder.startObject() + .field("creator", "John Doe") + .endObject(); + assertEquals("" + + "John Doe", builder.string()); + } + } +} diff --git a/content-xml/src/test/java/org/xbib/content/xml/test/json/Json2XmlTest.java b/content-xml/src/test/java/org/xbib/content/xml/test/json/Json2XmlTest.java new file mode 100644 index 0000000..78c86e5 --- /dev/null +++ b/content-xml/src/test/java/org/xbib/content/xml/test/json/Json2XmlTest.java @@ -0,0 +1,70 @@ +package org.xbib.content.xml.test.json; + +import org.junit.jupiter.api.Test; +import org.xbib.content.xml.XmlNamespaceContext; +import org.xbib.content.xml.json.JsonXmlReader; +import org.xbib.content.xml.json.JsonXmlStreamer; +import org.xml.sax.InputSource; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.StringWriter; +import java.io.Writer; +import java.nio.charset.StandardCharsets; +import javax.xml.namespace.QName; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.sax.SAXSource; +import javax.xml.transform.stream.StreamResult; + +public class Json2XmlTest { + + @Test + public void testJSON() throws Exception { + String[] jsons = { + "dc", + "elasticsearch-hit-example-1", + "es-test-20130719", + "glossary", + "menu" + }; + for (String s : jsons) { + testJSONXmlReader(s); + testJSONStreamer(s); + } + } + + private void testJSONXmlReader(String path) throws Exception { + try (InputStream inputStream = getClass().getResourceAsStream(path + ".json"); + Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); + Writer writer = new StringWriter()) { + JsonXmlReader parser = new JsonXmlReader().root(root()).context(context()); + TransformerFactory tFactory = TransformerFactory.newInstance(); + Transformer transformer = tFactory.newTransformer(); + StreamResult stream = new StreamResult(writer); + transformer.transform(new SAXSource(parser, new InputSource(reader)), stream); + } + } + + private void testJSONStreamer(String path) throws Exception { + try (InputStream inputStream = getClass().getResourceAsStream(path + ".json"); + Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); + Writer writer = new StringWriter()) { + JsonXmlStreamer jsonXml = new JsonXmlStreamer().root(root()).context(context()); + jsonXml.toXML(reader, writer); + } + } + + private QName root() { + return new QName("http://elasticsearch.org/ns/1.0/", "result", "es"); + } + + private XmlNamespaceContext context() { + XmlNamespaceContext context = XmlNamespaceContext.newInstance(getClass()); + context.addNamespace("bib", "info:srw/cql-context-set/1/bib-v1/"); + context.addNamespace("xbib", "http://xbib.org/"); + context.addNamespace("abc", "http://localhost/"); + context.addNamespace("lia", "http://xbib.org/namespaces/lia/"); + return context; + } +} diff --git a/content-xml/src/test/java/org/xbib/content/xml/test/json/StylesheetTransformerTest.java b/content-xml/src/test/java/org/xbib/content/xml/test/json/StylesheetTransformerTest.java new file mode 100644 index 0000000..0a9c114 --- /dev/null +++ b/content-xml/src/test/java/org/xbib/content/xml/test/json/StylesheetTransformerTest.java @@ -0,0 +1,42 @@ +package org.xbib.content.xml.test.json; + +import org.junit.jupiter.api.Test; +import org.xbib.content.xml.XmlNamespaceContext; +import org.xbib.content.xml.json.JsonXmlReader; +import org.xbib.content.xml.transform.StylesheetTransformer; +import org.xml.sax.InputSource; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; +import java.io.Writer; +import java.util.Locale; +import javax.xml.namespace.QName; +import javax.xml.transform.sax.SAXSource; + +public class StylesheetTransformerTest { + + @Test + public void testJsonAsXML() throws Exception { + QName root = new QName("http://example.org", "result", "ex"); + try (InputStream inputStream = getClass().getResourceAsStream("dc.json"); + Writer writer = new StringWriter()) { + if (inputStream == null) { + throw new IOException("dc.json not found"); + } + XmlNamespaceContext context = XmlNamespaceContext.newInstance(getClass()); + context.addNamespace("xbib", "http://xbib.org/"); + context.addNamespace("bib", "info:bib"); + context.addNamespace("lia", "http://xbib.org/lia/"); + JsonXmlReader reader = new JsonXmlReader() + .root(root) + .context(context); + StylesheetTransformer transformer = new StylesheetTransformer(); + transformer.setSource(new SAXSource(reader, new InputSource(inputStream))) + .setResult(writer) + .transform(); + transformer.close(); + } + } +} diff --git a/content-xml/src/test/java/org/xbib/content/xml/util/SaxEventConsumerTest.java b/content-xml/src/test/java/org/xbib/content/xml/test/util/SaxEventConsumerTest.java similarity index 96% rename from content-xml/src/test/java/org/xbib/content/xml/util/SaxEventConsumerTest.java rename to content-xml/src/test/java/org/xbib/content/xml/test/util/SaxEventConsumerTest.java index d64a36c..f636ce7 100644 --- a/content-xml/src/test/java/org/xbib/content/xml/util/SaxEventConsumerTest.java +++ b/content-xml/src/test/java/org/xbib/content/xml/test/util/SaxEventConsumerTest.java @@ -1,4 +1,4 @@ -package org.xbib.content.xml.util; +package org.xbib.content.xml.test.util; import org.junit.jupiter.api.Test; import org.xbib.content.xml.stream.SaxEventConsumer; @@ -10,9 +10,6 @@ import javax.xml.stream.XMLEventFactory; import javax.xml.stream.events.Attribute; import javax.xml.stream.events.Namespace; -/** - * - */ public class SaxEventConsumerTest { private final XMLEventFactory eventFactory = XMLEventFactory.newInstance(); diff --git a/content-xml/src/test/java/org/xbib/content/xml/util/XMLUtilTest.java b/content-xml/src/test/java/org/xbib/content/xml/test/util/XMLUtilTest.java similarity index 68% rename from content-xml/src/test/java/org/xbib/content/xml/util/XMLUtilTest.java rename to content-xml/src/test/java/org/xbib/content/xml/test/util/XMLUtilTest.java index 45206a0..40b98bf 100644 --- a/content-xml/src/test/java/org/xbib/content/xml/util/XMLUtilTest.java +++ b/content-xml/src/test/java/org/xbib/content/xml/test/util/XMLUtilTest.java @@ -1,17 +1,17 @@ -package org.xbib.content.xml.util; +package org.xbib.content.xml.test.util; import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Test; -/** - * - */ +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.xbib.content.xml.util.XMLUtil; + public class XMLUtilTest { @Test public void testWhitespaceCleaner() { String s = "Hello World\u001b"; - assertEquals(XMLUtil.sanitize(s), "Hello World"); + Assertions.assertEquals(XMLUtil.sanitize(s), "Hello World"); } @Test diff --git a/content-xml/src/test/java/org/xbib/content/xml/util/package-info.java b/content-xml/src/test/java/org/xbib/content/xml/util/package-info.java deleted file mode 100644 index dde601d..0000000 --- a/content-xml/src/test/java/org/xbib/content/xml/util/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Classes for testing XML content utilities. - */ -package org.xbib.content.xml.util; diff --git a/content-xml/src/test/resources/org/xbib/content/xml/dc.json b/content-xml/src/test/resources/org/xbib/content/xml/test/dc.json similarity index 100% rename from content-xml/src/test/resources/org/xbib/content/xml/dc.json rename to content-xml/src/test/resources/org/xbib/content/xml/test/dc.json diff --git a/content-xml/src/test/resources/org/xbib/content/xml/json/dc.json b/content-xml/src/test/resources/org/xbib/content/xml/test/json/dc.json similarity index 100% rename from content-xml/src/test/resources/org/xbib/content/xml/json/dc.json rename to content-xml/src/test/resources/org/xbib/content/xml/test/json/dc.json diff --git a/content-xml/src/test/resources/org/xbib/content/xml/json/elasticsearch-hit-example-1.json b/content-xml/src/test/resources/org/xbib/content/xml/test/json/elasticsearch-hit-example-1.json similarity index 100% rename from content-xml/src/test/resources/org/xbib/content/xml/json/elasticsearch-hit-example-1.json rename to content-xml/src/test/resources/org/xbib/content/xml/test/json/elasticsearch-hit-example-1.json diff --git a/content-xml/src/test/resources/org/xbib/content/xml/json/es-test-20130719.json b/content-xml/src/test/resources/org/xbib/content/xml/test/json/es-test-20130719.json similarity index 100% rename from content-xml/src/test/resources/org/xbib/content/xml/json/es-test-20130719.json rename to content-xml/src/test/resources/org/xbib/content/xml/test/json/es-test-20130719.json diff --git a/content-xml/src/test/resources/org/xbib/content/xml/json/glossary.json b/content-xml/src/test/resources/org/xbib/content/xml/test/json/glossary.json similarity index 100% rename from content-xml/src/test/resources/org/xbib/content/xml/json/glossary.json rename to content-xml/src/test/resources/org/xbib/content/xml/test/json/glossary.json diff --git a/content-xml/src/test/resources/org/xbib/content/xml/json/menu.json b/content-xml/src/test/resources/org/xbib/content/xml/test/json/menu.json similarity index 100% rename from content-xml/src/test/resources/org/xbib/content/xml/json/menu.json rename to content-xml/src/test/resources/org/xbib/content/xml/test/json/menu.json diff --git a/content-xml/src/test/resources/org/xbib/content/resource/namespace.properties b/content-xml/src/test/resources/org/xbib/content/xml/test/namespace.properties similarity index 100% rename from content-xml/src/test/resources/org/xbib/content/resource/namespace.properties rename to content-xml/src/test/resources/org/xbib/content/xml/test/namespace.properties diff --git a/content-yaml/build.gradle b/content-yaml/build.gradle index 7612e11..6751d0e 100644 --- a/content-yaml/build.gradle +++ b/content-yaml/build.gradle @@ -1,5 +1,5 @@ dependencies { api project(':content-core') api libs.jackson.dataformat.yaml - implementation libs.snakeyaml + runtimeOnly libs.snakeyaml } diff --git a/content-yaml/src/main/java/org/xbib/content/yaml/YamlXContentGenerator.java b/content-yaml/src/main/java/org/xbib/content/yaml/YamlXContentGenerator.java index 3c5faa2..b7cd295 100644 --- a/content-yaml/src/main/java/org/xbib/content/yaml/YamlXContentGenerator.java +++ b/content-yaml/src/main/java/org/xbib/content/yaml/YamlXContentGenerator.java @@ -19,6 +19,7 @@ public class YamlXContentGenerator extends AbstractXContentGenerator { private final YAMLGeneratorDelegate delegate; + @SuppressWarnings("this-escape") public YamlXContentGenerator(YAMLGenerator generator) { this.delegate = new YAMLGeneratorDelegate(generator); super.setGenerator(delegate); @@ -66,8 +67,7 @@ public class YamlXContentGenerator extends AbstractXContentGenerator { @Override public void copy(XContentBuilder builder, OutputStream outputStream) throws IOException { flush(); - if (builder instanceof DefaultXContentBuilder) { - DefaultXContentBuilder xContentBuilder = (DefaultXContentBuilder) builder; + if (builder instanceof DefaultXContentBuilder xContentBuilder) { xContentBuilder.bytes().streamOutput(outputStream); } } @@ -286,8 +286,7 @@ public class YamlXContentGenerator extends AbstractXContentGenerator { @Override public void copy(XContentBuilder builder, OutputStream outputStream) throws IOException { flush(); - if (builder instanceof DefaultXContentBuilder) { - DefaultXContentBuilder xContentBuilder = (DefaultXContentBuilder) builder; + if (builder instanceof DefaultXContentBuilder xContentBuilder) { xContentBuilder.bytes().streamOutput(outputStream); } } diff --git a/content-yaml/src/main/java/org/xbib/content/yaml/YamlXContentParser.java b/content-yaml/src/main/java/org/xbib/content/yaml/YamlXContentParser.java index 068de90..de29341 100644 --- a/content-yaml/src/main/java/org/xbib/content/yaml/YamlXContentParser.java +++ b/content-yaml/src/main/java/org/xbib/content/yaml/YamlXContentParser.java @@ -55,7 +55,7 @@ public class YamlXContentParser extends AbstractXContentParser { @Override public String currentName() throws IOException { - return parser.getCurrentName(); + return parser.currentName(); } @Override diff --git a/gradle.properties b/gradle.properties index 92fcc62..f6a089a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,3 @@ group = org.xbib name = content -version = 5.1.0 - -org.gradle.warning.mode = ALL +version = 5.2.0 diff --git a/gradle/compile/java.gradle b/gradle/compile/java.gradle index 6767006..25a53d9 100644 --- a/gradle/compile/java.gradle +++ b/gradle/compile/java.gradle @@ -1,4 +1,3 @@ - apply plugin: 'java-library' java { @@ -8,24 +7,41 @@ java { modularity.inferModulePath.set(true) withSourcesJar() withJavadocJar() - } jar { manifest { attributes('Implementation-Version': project.version) - attributes('X-Java-Compiler-Version': JavaLanguageVersion.of(21).toString()) + } + duplicatesStrategy = DuplicatesStrategy.INCLUDE +} + +tasks.withType(JavaCompile).configureEach { + doFirst { + options.fork = true + options.forkOptions.jvmArgs += ['-Duser.language=en', '-Duser.country=US'] + options.encoding = 'UTF-8' + options.compilerArgs.add('-Xlint:all') + // enforce presence of module-info.java + options.compilerArgs.add("--module-version") + options.compilerArgs.add(project.version as String) + options.compilerArgs.add("--module-path") + options.compilerArgs.add(classpath.asPath) + classpath = files() } } -tasks.withType(JavaCompile) { - options.fork = true - options.forkOptions.jvmArgs += ['-Duser.language=en','-Duser.country=US'] - options.compilerArgs << '-Xlint:all' - options.encoding = 'UTF-8' +tasks.withType(Javadoc).configureEach { + doFirst { + options.addStringOption('Xdoclint:none', '-quiet') + options.encoding = 'UTF-8' + } } -tasks.withType(Javadoc) { - options.addStringOption('Xdoclint:none', '-quiet') - options.encoding = 'UTF-8' +tasks.withType(JavaExec).configureEach { + doFirst { + jvmArguments.add("--module-path") + jvmArguments.add(classpath.asPath) + classpath = files() + } } diff --git a/gradle/test/junit5.gradle b/gradle/test/junit5.gradle index 419f037..8816efd 100644 --- a/gradle/test/junit5.gradle +++ b/gradle/test/junit5.gradle @@ -1,14 +1,28 @@ dependencies { - testImplementation libs.junit.jupiter.api - testImplementation libs.junit.jupiter.params - testImplementation libs.hamcrest - testRuntimeOnly libs.junit.jupiter.engine - testRuntimeOnly libs.junit.jupiter.platform.launcher + testImplementation testLibs.junit.jupiter.api + testImplementation testLibs.junit.jupiter.params + testImplementation testLibs.hamcrest + testRuntimeOnly testLibs.junit.jupiter.engine + testRuntimeOnly testLibs.junit.jupiter.platform.launcher } test { useJUnitPlatform() failFast = false + systemProperty 'java.util.logging.config.file', 'src/test/resources/logging.properties' + + /*jvmArgs '--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED', + '--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED', + '--add-exports=java.base/sun.nio.ch=ALL-UNNAMED', + '--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED', + '--add-exports=jdk.unsupported/sun.reflect=ALL-UNNAMED', + '--add-opens=java.base/java.lang=ALL-UNNAMED', + '--add-opens=java.base/java.lang.reflect=ALL-UNNAMED', + '--add-opens=java.base/java.io=ALL-UNNAMED', + '--add-opens=java.base/java.nio=ALL-UNNAMED', + '--add-opens=java.base/java.util=ALL-UNNAMED', + '--add-opens=jdk.unsupported/sun.misc=ALL-UNNAMED', + '--add-opens=jdk.unsupported/sun.reflect=ALL-UNNAMED'*/ testLogging { events 'STARTED', 'PASSED', 'FAILED', 'SKIPPED' } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7f93135..e644113 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8838ba9..e7646de 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew.bat b/gradlew.bat index 6689b85..7101f8e 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/settings-content-json/src/test/java/module-info.java b/settings-content-json/src/test/java/module-info.java new file mode 100644 index 0000000..5f50194 --- /dev/null +++ b/settings-content-json/src/test/java/module-info.java @@ -0,0 +1,6 @@ +module org.xbib.settings.content.json.test { + requires org.junit.jupiter.api; + requires org.xbib.settings.api; + requires org.xbib.settings.content.json; + opens org.xbib.settings.content.json.test to org.junit.platform.commons; +} diff --git a/settings-content-json/src/test/java/org/xbib/settings/content/json/JsonSettingsTest.java b/settings-content-json/src/test/java/org/xbib/settings/content/json/test/JsonSettingsTest.java similarity index 96% rename from settings-content-json/src/test/java/org/xbib/settings/content/json/JsonSettingsTest.java rename to settings-content-json/src/test/java/org/xbib/settings/content/json/test/JsonSettingsTest.java index c4c390a..a950c16 100644 --- a/settings-content-json/src/test/java/org/xbib/settings/content/json/JsonSettingsTest.java +++ b/settings-content-json/src/test/java/org/xbib/settings/content/json/test/JsonSettingsTest.java @@ -1,8 +1,9 @@ -package org.xbib.settings.content.json; +package org.xbib.settings.content.json.test; import org.junit.jupiter.api.Test; import org.xbib.settings.Settings; import org.xbib.settings.SettingsLoader; +import org.xbib.settings.content.json.JsonSettingsLoader; import java.io.IOException; import java.util.Arrays; diff --git a/settings-content/src/main/java/module-info.java b/settings-content/src/main/java/module-info.java index ce2a470..f71a330 100644 --- a/settings-content/src/main/java/module-info.java +++ b/settings-content/src/main/java/module-info.java @@ -9,6 +9,6 @@ module org.xbib.settings.content { uses SettingsBuilder; provides SettingsBuilder with ContentSettingsBuilder; exports org.xbib.settings.content; - requires org.xbib.settings.api; - requires org.xbib.content.core; + requires transitive org.xbib.settings.api; + requires transitive org.xbib.content.core; } diff --git a/settings-content/src/test/java/module-info.java b/settings-content/src/test/java/module-info.java new file mode 100644 index 0000000..ff2639f --- /dev/null +++ b/settings-content/src/test/java/module-info.java @@ -0,0 +1,8 @@ +module org.xbib.settings.content.test { + requires org.junit.jupiter.api; + requires org.xbib.content.core; + requires org.xbib.content.json; + requires org.xbib.settings.api; + requires org.xbib.settings.content.json; + opens org.xbib.settings.content.test to org.junit.platform.commons; +} diff --git a/settings-content/src/test/java/org/xbib/settings/content/test/SettingsTest.java b/settings-content/src/test/java/org/xbib/settings/content/test/SettingsTest.java index 540b71b..4705d90 100644 --- a/settings-content/src/test/java/org/xbib/settings/content/test/SettingsTest.java +++ b/settings-content/src/test/java/org/xbib/settings/content/test/SettingsTest.java @@ -26,9 +26,6 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; -/** - * - */ public class SettingsTest { @Test diff --git a/settings-content/src/test/resources/settings.json b/settings-content/src/test/resources/org/xbib/settings/content/test/settings.json similarity index 100% rename from settings-content/src/test/resources/settings.json rename to settings-content/src/test/resources/org/xbib/settings/content/test/settings.json diff --git a/settings.gradle b/settings.gradle index dc7562d..49c6a33 100644 --- a/settings.gradle +++ b/settings.gradle @@ -15,27 +15,30 @@ pluginManagement { dependencyResolutionManagement { versionCatalogs { libs { - version('gradle', '8.4') - version('junit', '5.10.0') - version('jackson', '2.15.2') - version('settings', '5.0.5') + version('gradle', '8.7') + version('jackson', '2.17.0') + version('settings', '5.0.7') + version('net', '4.3.2') + library('jackson-core', 'com.fasterxml.jackson.core', 'jackson-core').versionRef('jackson') + library('jackson-databind', 'com.fasterxml.jackson.core', 'jackson-databind').versionRef('jackson') + library('jackson-dataformat-smile', 'com.fasterxml.jackson.dataformat', 'jackson-dataformat-smile').versionRef('jackson') + library('jackson-dataformat-xml', 'com.fasterxml.jackson.dataformat', 'jackson-dataformat-xml').versionRef('jackson') + library('jackson-dataformat-yaml', 'com.fasterxml.jackson.dataformat', 'jackson-dataformat-yaml').versionRef('jackson') + library('woodstox', 'com.fasterxml.woodstox', 'woodstox-core').version('6.6.2') + library('snakeyaml', 'org.yaml', 'snakeyaml').version('2.2') + library('settings-api', 'org.xbib', 'settings-api').versionRef('settings') + library('net', 'org.xbib', 'net').versionRef('net') + } + testLibs { + version('junit', '5.10.2') library('junit-jupiter-api', 'org.junit.jupiter', 'junit-jupiter-api').versionRef('junit') library('junit-jupiter-params', 'org.junit.jupiter', 'junit-jupiter-params').versionRef('junit') library('junit-jupiter-engine', 'org.junit.jupiter', 'junit-jupiter-engine').versionRef('junit') library('junit-jupiter-platform-launcher', 'org.junit.platform', 'junit-platform-launcher').version('1.10.0') library('junit4', 'junit', 'junit').version('4.13.2') library('hamcrest', 'org.hamcrest:hamcrest-library:2.2') - library('jackson-core', 'com.fasterxml.jackson.core', 'jackson-core').versionRef('jackson') - library('jackson-databind', 'com.fasterxml.jackson.core', 'jackson-databind').versionRef('jackson') - library('jackson-dataformat-smile', 'com.fasterxml.jackson.dataformat', 'jackson-dataformat-smile').versionRef('jackson') - library('jackson-dataformat-xml', 'com.fasterxml.jackson.dataformat', 'jackson-dataformat-xml').versionRef('jackson') - library('jackson-dataformat-yaml', 'com.fasterxml.jackson.dataformat', 'jackson-dataformat-yaml').versionRef('jackson') - library('settings-api', 'org.xbib', 'settings-api').versionRef('settings') - library('mockito-core', 'org.mockito', 'mockito-core').version('5.2.0') - library('mockito-inline', 'org.mockito', 'mockito-inline').version('5.2.0') - library('net', 'org.xbib', 'net').version('4.0.0') - library('woodstox', 'com.fasterxml.woodstox', 'woodstox-core').version('6.5.1') - library('snakeyaml', 'org.yaml', 'snakeyaml').version('2.2') + library('mockito-core', 'org.mockito', 'mockito-core').version('5.11.0') + //library('mockito-inline', 'org.mockito', 'mockito-inline').version('5.2.0') } } }