add Java named modules, Gradle 6, remove all logging, JUnit 5

This commit is contained in:
Jörg Prante 2020-05-19 16:06:39 +02:00
parent 00639d970b
commit d46afa4c03
101 changed files with 868 additions and 923 deletions

View file

@ -1,192 +1,34 @@
plugins { plugins {
id "org.sonarqube" version "2.8" id "de.marcphilipp.nexus-publish" version "0.4.0"
id "io.codearte.nexus-staging" version "0.21.1" id "io.codearte.nexus-staging" version "0.21.1"
id "com.github.spotbugs" version "2.0.1"
id "org.xbib.gradle.plugin.asciidoctor" version "1.5.6.0.1" id "org.xbib.gradle.plugin.asciidoctor" version "1.5.6.0.1"
} }
wrapper {
gradleVersion = "${rootProject.property('gradle.wrapper.version')}"
distributionType = Wrapper.DistributionType.ALL
}
ext {
user = 'xbib'
name = 'content'
description = 'Content processing library for Java'
inceptionYear = '2016'
url = 'https://github.com/' + user + '/' + name
scmUrl = 'https://github.com/' + user + '/' + name
scmConnection = 'scm:git:git://github.com/' + user + '/' + name + '.git'
scmDeveloperConnection = 'scm:git:ssh://git@github.com:' + user + '/' + name + '.git'
issueManagementSystem = 'Github'
issueManagementUrl = ext.scmUrl + '/issues'
licenseName = 'The Apache License, Version 2.0'
licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
subprojects { subprojects {
apply plugin: 'java-library'
apply plugin: 'java' apply from: rootProject.file('gradle/ide/idea.gradle')
apply plugin: 'maven' apply from: rootProject.file('gradle/compile/java.gradle')
apply plugin: 'pmd' apply from: rootProject.file('gradle/test/junit5.gradle')
apply plugin: 'checkstyle' apply from: rootProject.file('gradle/publishing/publication.gradle')
apply plugin: 'com.github.spotbugs'
apply plugin: 'org.xbib.gradle.plugin.asciidoctor'
repositories {
mavenCentral()
}
configurations {
asciidoclet
}
dependencies {
testCompile "org.junit.jupiter:junit-jupiter-api:${project.property('junit.version')}"
testCompile "org.junit.jupiter:junit-jupiter-params:${project.property('junit.version')}"
testCompile "org.junit.jupiter:junit-jupiter-engine:${project.property('junit.version')}"
testCompile "org.junit.vintage:junit-vintage-engine:${project.property('junit.version')}"
testCompile "junit:junit:${project.property('junit4.version')}"
asciidoclet "org.asciidoctor:asciidoclet:${project.property('asciidoclet.version')}"
}
compileJava {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:all"
}
jar {
manifest {
attributes('Implementation-Version': project.version)
}
}
test {
useJUnitPlatform()
failFast = false
testLogging {
events 'STARTED', 'PASSED', 'FAILED', 'SKIPPED'
}
afterSuite { desc, result ->
if (!desc.parent) {
println "\nTest result: ${result.resultType}"
println "Test summary: ${result.testCount} tests, " +
"${result.successfulTestCount} succeeded, " +
"${result.failedTestCount} failed, " +
"${result.skippedTestCount} skipped"
}
}
}
clean {
delete 'out'
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier 'javadoc'
}
artifacts {
archives sourcesJar, javadocJar
}
tasks.withType(Checkstyle) {
ignoreFailures = true
reports {
xml.enabled = true
html.enabled = true
}
}
spotbugs {
effort = "max"
reportLevel = "low"
//includeFilter = file("findbugs-exclude.xml")
}
tasks.withType(com.github.spotbugs.SpotBugsTask) {
ignoreFailures = true
reports {
xml.enabled = false
html.enabled = true
}
}
tasks.withType(Pmd) {
ignoreFailures = true
reports {
xml.enabled = true
html.enabled = true
}
}
checkstyle {
configFile = rootProject.file('config/checkstyle/checkstyle.xml')
ignoreFailures = true
showViolations = true
}
sonarqube {
properties {
property "sonar.projectName", "${project.group} ${project.name}"
property "sonar.sourceEncoding", "UTF-8"
property "sonar.tests", "src/test/java"
property "sonar.scm.provider", "git"
property "sonar.junit.reportsPath", "build/test-results/test/"
}
}
ext {
projectDescription = 'Content processing library for Java'
scmUrl = 'https://github.com/xbib/content'
scmConnection = 'scm:git:git://github.com/xbib/content.git'
scmDeveloperConnection = 'scm:git:git://github.com/xbib/content.git'
}
task sonatypeUpload(type: Upload, dependsOn: build) {
group = 'publish'
configuration = configurations.archives
uploadDescriptor = true
repositories {
if (project.hasProperty('ossrhUsername')) {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
repository(url: uri(ossrhReleaseUrl)) {
authentication(userName: ossrhUsername, password: ossrhPassword)
}
snapshotRepository(url: uri(ossrhSnapshotUrl)) {
authentication(userName: ossrhUsername, password: ossrhPassword)
}
pom.project {
groupId project.group
artifactId project.name
version project.version
name project.name
description projectDescription
packaging 'jar'
inceptionYear '2016'
url scmUrl
organization {
name 'xbib'
url 'http://xbib.org'
}
developers {
developer {
id 'xbib'
name 'Jörg Prante'
email 'joergprante@gmail.com'
url 'https://github.com/jprante'
}
}
scm {
url scmUrl
connection scmConnection
developerConnection scmDeveloperConnection
}
licenses {
license {
name 'The Apache License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
}
}
}
}
}
}
nexusStaging {
packageGroup = "org.xbib"
//stagingProfileId = "org.xbib"
} }
apply from: rootProject.file('gradle/publishing/sonatype.gradle')

View file

@ -73,7 +73,6 @@ page at http://checkstyle.sourceforge.net/config.html -->
<module name="JavadocMethod"> <module name="JavadocMethod">
<property name="scope" value="protected"/> <property name="scope" value="protected"/>
<property name="severity" value="warning"/> <property name="severity" value="warning"/>
<property name="allowMissingJavadoc" value="true"/>
<property name="allowMissingParamTags" value="true"/> <property name="allowMissingParamTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/> <property name="allowMissingReturnTag" value="true"/>
<property name="allowMissingThrowsTags" value="true"/> <property name="allowMissingThrowsTags" value="true"/>

View file

@ -1,3 +1,3 @@
dependencies { dependencies {
compile "com.fasterxml.jackson.core:jackson-core:${project.property('jackson.version')}" api "com.fasterxml.jackson.core:jackson-core:${project.property('jackson.version')}"
} }

View file

@ -0,0 +1,14 @@
module org.xbib.content.core {
exports org.xbib.content;
exports org.xbib.content.io;
exports org.xbib.content.json;
exports org.xbib.content.settings;
exports org.xbib.content.util.geo;
exports org.xbib.content.util.unit;
requires com.fasterxml.jackson.core;
provides org.xbib.content.XContent with
org.xbib.content.json.JsonXContent;
provides org.xbib.content.settings.SettingsLoader with
org.xbib.content.settings.PropertiesSettingsLoader,
org.xbib.content.json.JsonSettingsLoader;
}

View file

@ -1,9 +1,10 @@
package org.xbib.content; package org.xbib.content;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.xbib.content.json.JsonXContent.contentBuilder; import static org.xbib.content.json.JsonXContent.contentBuilder;
import org.junit.Assert; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.xbib.content.json.JsonXContent; import org.xbib.content.json.JsonXContent;
import java.io.IOException; import java.io.IOException;
@ -16,7 +17,7 @@ import java.util.Map;
/** /**
* *
*/ */
public class XContentBuilderTest extends Assert { public class XContentBuilderTest {
@Test @Test
public void testCopy() throws IOException { public void testCopy() throws IOException {
@ -141,10 +142,11 @@ public class XContentBuilderTest extends Assert {
assertEquals(map.toString(), "{value=4AC3B67267}"); assertEquals(map.toString(), "{value=4AC3B67267}");
} }
@Test(expected = NullPointerException.class) @Test
public void testNullKey() throws IOException { public void testNullKey() {
assertThrows(NullPointerException.class, () -> {
XContentBuilder builder = contentBuilder(); XContentBuilder builder = contentBuilder();
builder.field((String) null); builder.field((String) null);
});
} }
} }

View file

@ -1,7 +1,9 @@
package org.xbib.content.settings; package org.xbib.content.settings;
import org.junit.Assert; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.Test; import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
import org.xbib.content.XContentHelper; import org.xbib.content.XContentHelper;
import org.xbib.content.io.BytesArray; import org.xbib.content.io.BytesArray;
import org.xbib.content.io.BytesReference; import org.xbib.content.io.BytesReference;
@ -24,7 +26,7 @@ import java.util.concurrent.TimeUnit;
/** /**
* *
*/ */
public class SettingsTest extends Assert { public class SettingsTest {
@Test @Test
public void testEmpty() { public void testEmpty() {

View file

@ -0,0 +1,3 @@
module org.xbib.content.csv {
exports org.xbib.content.csv;
}

View file

@ -6,16 +6,12 @@ import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* *
*/ */
public class CSVParser { public class CSVParser {
private static final Logger logger = Logger.getLogger(CSVParser.class.getName());
private final CSVLexer lexer; private final CSVLexer lexer;
private final List<String> row; private final List<String> row;
@ -43,7 +39,7 @@ public class CSVParser {
} }
public Iterator<List<String>> iterator() { public Iterator<List<String>> iterator() {
return new Iterator<List<String>>() { return new Iterator<>() {
private List<String> current; private List<String> current;
private List<String> getNextRow() throws IOException { private List<String> getNextRow() throws IOException {
@ -56,7 +52,6 @@ public class CSVParser {
try { try {
current = getNextRow(); current = getNextRow();
} catch (IOException e) { } catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
throw new NoSuchElementException(e.getMessage()); throw new NoSuchElementException(e.getMessage());
} }
} }

View file

@ -1,7 +1,6 @@
package org.xbib.content.csv; package org.xbib.content.csv;
import org.junit.Test; import org.junit.jupiter.api.Test;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.Arrays; import java.util.Arrays;

View file

@ -1,27 +1,20 @@
package org.xbib.content.csv; package org.xbib.content.csv;
import static org.junit.Assert.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import org.junit.Test;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.text.MessageFormat;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* *
*/ */
public class CSVParserTest { public class CSVParserTest {
private static final Logger logger = Logger.getLogger(CSVParserTest.class.getName());
@Test @Test
public void testCommaSeparated() throws IOException { public void testCommaSeparated() throws IOException {
InputStream in = getClass().getResourceAsStream("test.csv"); InputStream in = getClass().getResourceAsStream("test.csv");
@ -31,7 +24,6 @@ public class CSVParserTest {
Iterator<List<String>> it = csvParser.iterator(); Iterator<List<String>> it = csvParser.iterator();
while (it.hasNext()) { while (it.hasNext()) {
List<String> row = it.next(); List<String> row = it.next();
//logger.log(Level.INFO, MessageFormat.format("count={0} row={1}", count, row));
count++; count++;
} }
} }
@ -47,7 +39,6 @@ public class CSVParserTest {
Iterator<List<String>> it = csvParser.iterator(); Iterator<List<String>> it = csvParser.iterator();
while (it.hasNext()) { while (it.hasNext()) {
List<String> row = it.next(); List<String> row = it.next();
//logger.log(Level.INFO, MessageFormat.format("count={0} row={1}", count, row));
count++; count++;
} }
} }

View file

@ -1,11 +1,11 @@
package org.xbib.content.csv; package org.xbib.content.csv;
import org.junit.Test; import org.junit.jupiter.api.Test;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
/** /**
* *
@ -15,7 +15,7 @@ public class TSVParserTest {
@Test @Test
public void testTabSeparated() throws IOException { public void testTabSeparated() throws IOException {
InputStream in = getClass().getResourceAsStream("2076831-X-web.txt"); InputStream in = getClass().getResourceAsStream("2076831-X-web.txt");
InputStreamReader r = new InputStreamReader(in, "UTF-8"); InputStreamReader r = new InputStreamReader(in, StandardCharsets.UTF_8);
BufferedReader reader = new BufferedReader(r); BufferedReader reader = new BufferedReader(r);
// skip 3 lines // skip 3 lines
reader.readLine(); reader.readLine();
@ -24,7 +24,6 @@ public class TSVParserTest {
String line; String line;
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
String[] s = line.split("\\t"); String[] s = line.split("\\t");
//logger.info("len={} line={}", s.length, Arrays.asList(s));
int i = 0; int i = 0;
String sigel = i < s.length ? s[i++] : ""; String sigel = i < s.length ? s[i++] : "";
String isil = i < s.length ? s[i++] : ""; String isil = i < s.length ? s[i++] : "";
@ -40,8 +39,6 @@ public class TSVParserTest {
String lastVolume = i < s.length ? s[i++] : ""; String lastVolume = i < s.length ? s[i++] : "";
String lastIssue = i < s.length ? s[i++] : ""; String lastIssue = i < s.length ? s[i++] : "";
String movingWall = i < s.length ? s[i] : ""; String movingWall = i < s.length ? s[i] : "";
//logger.info("lastDate={}", lastDate);
} }
} }
} }

View file

@ -1,10 +1,9 @@
dependencies { dependencies {
compile "com.fasterxml.jackson.core:jackson-databind:${project.property('jackson.version')}" api "com.fasterxml.jackson.core:jackson-databind:${project.property('jackson.version')}"
testCompile("junit:junit:${project.property('junit4.version')}") { testImplementation("junit:junit:${project.property('junit4.version')}") {
exclude group: 'org.hamcrest' exclude group: 'org.hamcrest'
} }
testCompile("org.mockito:mockito-core:${project.property('mockito.version')}") { testImplementation("org.mockito:mockito-core:${project.property('mockito.version')}") {
exclude group: 'org.hamcrest' exclude group: 'org.hamcrest'
} }
testCompile "org.hamcrest:hamcrest-library:${project.property('hamcrest.version')}"
} }

View file

@ -0,0 +1,8 @@
module org.xbib.content.json {
exports org.xbib.content.json.diff;
exports org.xbib.content.json.jackson;
exports org.xbib.content.json.mergepatch;
exports org.xbib.content.json.patch;
exports org.xbib.content.json.pointer;
requires com.fasterxml.jackson.databind;
}

View file

@ -0,0 +1,4 @@
module org.xbib.content.language {
exports org.xbib.content.language;
exports org.xbib.content.language.enums;
}

View file

@ -1,3 +1,5 @@
dependencies { dependencies {
compile project(':content-xml') implementation project(':content-core')
implementation project(':content-resource')
implementation project(':content-xml')
} }

View file

@ -0,0 +1,17 @@
module org.xbib.content.rdf {
exports org.xbib.content.rdf;
exports org.xbib.content.rdf.internal;
exports org.xbib.content.rdf.io.json;
exports org.xbib.content.rdf.io.nquads;
exports org.xbib.content.rdf.io.ntriple;
exports org.xbib.content.rdf.io.rdfxml;
exports org.xbib.content.rdf.io.sink;
exports org.xbib.content.rdf.io.source;
exports org.xbib.content.rdf.io.turtle;
exports org.xbib.content.rdf.io.xml;
exports org.xbib.content.rdf.util;
requires org.xbib.content.core;
requires org.xbib.content.resource;
requires org.xbib.content.xml;
requires java.xml;
}

View file

@ -13,19 +13,15 @@ import java.util.LinkedHashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* *
*/ */
public class DefaultRdfGraph implements RdfGraph<RdfGraphParams> { public class DefaultRdfGraph implements RdfGraph<RdfGraphParams> {
private static final Logger logger = Logger.getLogger(DefaultRdfGraph.class.getName());
private RdfGraphParams params = DefaultRdfGraphParams.DEFAULT_PARAMS; private RdfGraphParams params = DefaultRdfGraphParams.DEFAULT_PARAMS;
private Map<IRI, Resource> resources = new LinkedHashMap<>(); private final Map<IRI, Resource> resources = new LinkedHashMap<>();
@Override @Override
public Iterator<Resource> getResources() { public Iterator<Resource> getResources() {
@ -151,8 +147,6 @@ public class DefaultRdfGraph implements RdfGraph<RdfGraphParams> {
if (r != null) { if (r != null) {
list.add(new DefaultTriple(resource1, pred, r.id())); list.add(new DefaultTriple(resource1, pred, r.id()));
list.addAll(unfold(r)); list.addAll(unfold(r));
} else {
logger.log(Level.SEVERE, "huh? {}", resource1.id());
} }
} else { } else {
list.addAll(unfold(resource1)); list.addAll(unfold(resource1));

View file

@ -18,7 +18,6 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.logging.Logger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -27,8 +26,9 @@ import java.util.stream.Collectors;
public class DefaultResource implements Resource, Comparable<Resource>, XSDResourceIdentifiers { public class DefaultResource implements Resource, Comparable<Resource>, XSDResourceIdentifiers {
static final String GENID = "genid"; static final String GENID = "genid";
static final String PLACEHOLDER = "_:"; static final String PLACEHOLDER = "_:";
private static final Logger logger = Logger.getLogger(DefaultResource.class.getName());
private static final String UNDERSCORE = "_"; private static final String UNDERSCORE = "_";
private final MultiMap<IRI, Node> attributes; private final MultiMap<IRI, Node> attributes;
@ -164,7 +164,6 @@ public class DefaultResource implements Resource, Comparable<Resource>, XSDResou
return child.add(triple); return child.add(triple);
} else { } else {
// nothing found, continue with a new resource with new subject // nothing found, continue with a new resource with new subject
logger.info("nothing found!!! my ID is " + id());
return new DefaultResource(otherId).add(triple); return new DefaultResource(otherId).add(triple);
} }
} }

View file

@ -15,15 +15,12 @@ import java.io.OutputStreamWriter;
import java.io.Writer; import java.io.Writer;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Map; import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* *
*/ */
public class JsonContentGenerator implements RdfContentGenerator<JsonContentParams>, Flushable { public class JsonContentGenerator implements RdfContentGenerator<JsonContentParams>, Flushable {
private static final Logger logger = Logger.getLogger(JsonContentGenerator.class.getName());
private final Writer writer; private final Writer writer;
private boolean nsWritten; private boolean nsWritten;
@ -54,16 +51,12 @@ public class JsonContentGenerator implements RdfContentGenerator<JsonContentPara
} }
@Override @Override
public JsonContentGenerator receive(IRI iri) { public JsonContentGenerator receive(IRI iri) throws IOException {
if (!iri.equals(resource.id())) { if (!iri.equals(resource.id())) {
try {
if (!nsWritten) { if (!nsWritten) {
writeNamespaces(); writeNamespaces();
} }
resource = new DefaultResource(iri); resource = new DefaultResource(iri);
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
}
} }
return this; return this;
} }

View file

@ -3,18 +3,15 @@ package org.xbib.content.rdf.io.nquads;
import org.xbib.content.rdf.io.sink.CharSink; import org.xbib.content.rdf.io.sink.CharSink;
import org.xbib.content.rdf.io.sink.QuadSink; import org.xbib.content.rdf.io.sink.QuadSink;
import java.io.EOFException;
import java.io.IOException; import java.io.IOException;
import java.util.BitSet; import java.util.BitSet;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* Implementation of streaming NQuads parser. * Implementation of streaming NQuads parser.
*/ */
public final class NQuadsParser implements CharSink { public final class NQuadsParser implements CharSink {
private static final Logger logger = Logger.getLogger(NQuadsParser.class.getName());
private static final short PARSING_OUTSIDE = 0; private static final short PARSING_OUTSIDE = 0;
private static final short PARSING_URI = 1; private static final short PARSING_URI = 1;
private static final short PARSING_BNODE = 2; private static final short PARSING_BNODE = 2;
@ -296,7 +293,7 @@ public final class NQuadsParser implements CharSink {
@Override @Override
public void endStream() throws IOException { public void endStream() throws IOException {
if (tokenStartPos != -1 || waitingForSentenceEnd) { if (tokenStartPos != -1 || waitingForSentenceEnd) {
logger.log(Level.WARNING, "unexpected end of stream"); throw new EOFException();
} }
sink.endStream(); sink.endStream();
} }

View file

@ -5,8 +5,6 @@ import org.xbib.content.rdf.io.sink.CharSink;
import org.xbib.content.rdf.io.sink.QuadSink; import org.xbib.content.rdf.io.sink.QuadSink;
import java.io.IOException; import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* Implementation of {@link org.xbib.content.rdf.io.sink.TripleSink} which serializes triples to * Implementation of {@link org.xbib.content.rdf.io.sink.TripleSink} which serializes triples to
@ -14,8 +12,6 @@ import java.util.logging.Logger;
*/ */
public class NQuadsSerializer extends NTriplesSerializer implements QuadSink { public class NQuadsSerializer extends NTriplesSerializer implements QuadSink {
private static final Logger logger = Logger.getLogger(NQuadsSerializer.class.getName());
private final CharSink sink; private final CharSink sink;
private NQuadsSerializer(CharSink sink) { private NQuadsSerializer(CharSink sink) {
@ -34,22 +30,17 @@ public class NQuadsSerializer extends NTriplesSerializer implements QuadSink {
} }
@Override @Override
public void addNonLiteral(String subj, String pred, String obj, String graph) { public void addNonLiteral(String subj, String pred, String obj, String graph) throws IOException {
try {
startTriple(subj, pred); startTriple(subj, pred);
serializeBnodeOrUri(obj); serializeBnodeOrUri(obj);
if (graph != null) { if (graph != null) {
serializeBnodeOrUri(graph); serializeBnodeOrUri(graph);
} }
sink.process(DOT_EOL); sink.process(DOT_EOL);
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
}
} }
@Override @Override
public void addPlainLiteral(String subj, String pred, String content, String lang, String graph) { public void addPlainLiteral(String subj, String pred, String content, String lang, String graph) throws IOException {
try {
startTriple(subj, pred); startTriple(subj, pred);
addContent(content); addContent(content);
if (lang != null) { if (lang != null) {
@ -60,14 +51,10 @@ public class NQuadsSerializer extends NTriplesSerializer implements QuadSink {
serializeBnodeOrUri(graph); serializeBnodeOrUri(graph);
} }
sink.process(DOT_EOL); sink.process(DOT_EOL);
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
}
} }
@Override @Override
public void addTypedLiteral(String subj, String pred, String content, String type, String graph) { public void addTypedLiteral(String subj, String pred, String content, String type, String graph) throws IOException {
try {
startTriple(subj, pred); startTriple(subj, pred);
addContent(content); addContent(content);
sink.process("^^"); sink.process("^^");
@ -76,8 +63,5 @@ public class NQuadsSerializer extends NTriplesSerializer implements QuadSink {
serializeBnodeOrUri(graph); serializeBnodeOrUri(graph);
} }
sink.process(DOT_EOL); sink.process(DOT_EOL);
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
}
} }
} }

View file

@ -13,8 +13,6 @@ import java.io.OutputStream;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.io.Writer; import java.io.Writer;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* NTriple content generator. * NTriple content generator.
@ -22,8 +20,6 @@ import java.util.logging.Logger;
public class NTripleContentGenerator public class NTripleContentGenerator
implements RdfContentGenerator<NTripleContentParams>, Flushable { implements RdfContentGenerator<NTripleContentParams>, Flushable {
private static final Logger logger = Logger.getLogger(NTripleContentGenerator.class.getName());
private static final char LF = '\n'; private static final char LF = '\n';
private final Writer writer; private final Writer writer;
@ -95,13 +91,9 @@ public class NTripleContentGenerator
@Override @Override
public NTripleContentGenerator receive(Resource resource) throws IOException { public NTripleContentGenerator receive(Resource resource) throws IOException {
resource.triples().forEach(t -> { for (Triple t : resource.triples()) {
try {
writer.write(writeStatement(t)); writer.write(writeStatement(t));
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
} }
});
return this; return this;
} }

View file

@ -5,16 +5,12 @@ import org.xbib.content.rdf.io.sink.TripleSink;
import java.io.IOException; import java.io.IOException;
import java.util.BitSet; import java.util.BitSet;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* Implementation of streaming <a href="http://www.w3.org/2001/sw/RDFCore/ntriples/">NTriples</a> parser. * Implementation of streaming <a href="http://www.w3.org/2001/sw/RDFCore/ntriples/">NTriples</a> parser.
*/ */
public final class NTriplesParser implements CharSink { public final class NTriplesParser implements CharSink {
private static final Logger logger = Logger.getLogger(NTriplesParser.class.getName());
private static final short PARSING_OUTSIDE = 0; private static final short PARSING_OUTSIDE = 0;
private static final short PARSING_URI = 1; private static final short PARSING_URI = 1;
private static final short PARSING_BNODE = 2; private static final short PARSING_BNODE = 2;
@ -118,7 +114,7 @@ public final class NTriplesParser implements CharSink {
parsingState = PARSING_OUTSIDE; parsingState = PARSING_OUTSIDE;
processOutsideChar(buffer, pos); processOutsideChar(buffer, pos);
} else { } else {
logger.log(Level.SEVERE, "unexpected character '" + buffer[pos] + "' after literal"); throw new IOException("unexpected character '" + buffer[pos] + "' after literal");
} }
} else if (parsingState == PARSING_LITERAL_TYPE) { } else if (parsingState == PARSING_LITERAL_TYPE) {
processLiteralTypeChar(buffer, pos); processLiteralTypeChar(buffer, pos);
@ -159,7 +155,7 @@ public final class NTriplesParser implements CharSink {
} else if (type.startsWith("^^<") && type.charAt(type.length() - 2) == '>') { } else if (type.startsWith("^^<") && type.charAt(type.length() - 2) == '>') {
onTypedLiteral(literalObj, type.substring(3, type.length() - 2 - trimSize)); onTypedLiteral(literalObj, type.substring(3, type.length() - 2 - trimSize));
} else { } else {
logger.log(Level.SEVERE, "literal type '" + type + "' can not be parsed"); throw new IOException("literal type '" + type + "' can not be parsed");
} }
parsingState = PARSING_OUTSIDE; parsingState = PARSING_OUTSIDE;
if (trimSize > 0) { if (trimSize > 0) {
@ -190,7 +186,7 @@ public final class NTriplesParser implements CharSink {
break; break;
default: default:
if (!WHITESPACE.get(buffer[pos])) { if (!WHITESPACE.get(buffer[pos])) {
logger.log(Level.SEVERE, "unexpected character '" + buffer[pos] + "'"); throw new IOException("unexpected character '" + buffer[pos] + "'");
} }
} }
} }
@ -199,13 +195,13 @@ public final class NTriplesParser implements CharSink {
if (waitingForSentenceEnd) { if (waitingForSentenceEnd) {
waitingForSentenceEnd = false; waitingForSentenceEnd = false;
} else { } else {
logger.log(Level.SEVERE, "unexpected end of sentence"); throw new IOException("unexpected end of sentence");
} }
} }
private void onNonLiteral(String uri) throws IOException { private void onNonLiteral(String uri) throws IOException {
if (waitingForSentenceEnd) { if (waitingForSentenceEnd) {
logger.log(Level.SEVERE, "endStream of sentence expected"); throw new IOException("endStream of sentence expected");
} }
if (subj == null) { if (subj == null) {
subj = uri; subj = uri;
@ -220,9 +216,9 @@ public final class NTriplesParser implements CharSink {
private void onPlainLiteral(String value, String lang) throws IOException { private void onPlainLiteral(String value, String lang) throws IOException {
if (subj == null || pred == null) { if (subj == null || pred == null) {
if (waitingForSentenceEnd) { if (waitingForSentenceEnd) {
logger.log(Level.SEVERE, "end of sentence expected"); throw new IOException("end of sentence expected");
} else { } else {
logger.log(Level.SEVERE, "literal is not an object"); throw new IOException("literal is not an object");
} }
} }
sink.addPlainLiteral(subj, pred, value, lang); sink.addPlainLiteral(subj, pred, value, lang);
@ -232,9 +228,9 @@ public final class NTriplesParser implements CharSink {
private void onTypedLiteral(String value, String type) throws IOException { private void onTypedLiteral(String value, String type) throws IOException {
if (subj == null || pred == null) { if (subj == null || pred == null) {
if (waitingForSentenceEnd) { if (waitingForSentenceEnd) {
logger.log(Level.SEVERE, "end of sentence expected"); throw new IOException("end of sentence expected");
} else { } else {
logger.log(Level.SEVERE, "literal is not an object"); throw new IOException("literal is not an object");
} }
} }
sink.addTypedLiteral(subj, pred, value, type); sink.addTypedLiteral(subj, pred, value, type);
@ -281,7 +277,7 @@ public final class NTriplesParser implements CharSink {
@Override @Override
public void endStream() throws IOException { public void endStream() throws IOException {
if (tokenStartPos != -1 || waitingForSentenceEnd) { if (tokenStartPos != -1 || waitingForSentenceEnd) {
logger.log(Level.SEVERE, "unexpected end of stream"); throw new IOException("unexpected end of stream");
} }
sink.endStream(); sink.endStream();
} }
@ -331,7 +327,7 @@ public final class NTriplesParser implements CharSink {
case 'U': case 'U':
int sequenceLength = ch == 'u' ? 4 : 8; int sequenceLength = ch == 'u' ? 4 : 8;
if (i + sequenceLength >= limit) { if (i + sequenceLength >= limit) {
logger.log(Level.SEVERE, "error parsing escape sequence '\\" + ch + "'"); throw new IOException("error parsing escape sequence '\\" + ch + "'");
} }
String code = str.substring(i + 1, i + 1 + sequenceLength); String code = str.substring(i + 1, i + 1 + sequenceLength);
i += sequenceLength; i += sequenceLength;
@ -340,7 +336,7 @@ public final class NTriplesParser implements CharSink {
int value = Integer.parseInt(code, 16); int value = Integer.parseInt(code, 16);
result.append((char) value); result.append((char) value);
} catch (NumberFormatException nfe) { } catch (NumberFormatException nfe) {
logger.log(Level.SEVERE, "error parsing escape sequence '\\" + ch + "'"); throw new IOException("error parsing escape sequence '\\" + ch + "'");
} }
break; break;
default: default:

View file

@ -6,8 +6,6 @@ import org.xbib.content.rdf.io.sink.TripleSink;
import java.io.IOException; import java.io.IOException;
import java.util.BitSet; import java.util.BitSet;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* Implementation of {@link org.xbib.content.rdf.io.sink.TripleSink} which serializes triples to * Implementation of {@link org.xbib.content.rdf.io.sink.TripleSink} which serializes triples to
@ -17,7 +15,6 @@ public class NTriplesSerializer implements TripleSink, RDF {
protected static final String DOT_EOL = ".\n"; protected static final String DOT_EOL = ".\n";
protected static final char SPACE = ' '; protected static final char SPACE = ' ';
private static final Logger logger = Logger.getLogger(NTriplesSerializer.class.getName());
private static final char QUOTE = '"'; private static final char QUOTE = '"';
private static final char URI_START = '<'; private static final char URI_START = '<';
private static final char URI_END = '>'; private static final char URI_END = '>';
@ -118,7 +115,7 @@ public class NTriplesSerializer implements TripleSink, RDF {
return str; return str;
} }
StringBuilder result = new StringBuilder(limit); StringBuilder result = new StringBuilder(limit);
result.append(str.substring(0, pos)); result.append(str, 0, pos);
for (; pos < limit; pos++) { for (; pos < limit; pos++) {
char ch = str.charAt(pos); char ch = str.charAt(pos);
if (ch < 0x80) { if (ch < 0x80) {
@ -151,41 +148,29 @@ public class NTriplesSerializer implements TripleSink, RDF {
} }
@Override @Override
public void addNonLiteral(String subj, String pred, String obj) { public void addNonLiteral(String subj, String pred, String obj) throws IOException {
try {
startTriple(subj, pred); startTriple(subj, pred);
serializeBnodeOrUri(obj); serializeBnodeOrUri(obj);
sink.process(DOT_EOL); sink.process(DOT_EOL);
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
}
} }
@Override @Override
public void addPlainLiteral(String subj, String pred, String content, String lang) { public void addPlainLiteral(String subj, String pred, String content, String lang) throws IOException {
try {
startTriple(subj, pred); startTriple(subj, pred);
addContent(content); addContent(content);
if (lang != null) { if (lang != null) {
sink.process('@').process(lang); sink.process('@').process(lang);
} }
sink.process(SPACE).process(DOT_EOL); sink.process(SPACE).process(DOT_EOL);
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
}
} }
@Override @Override
public void addTypedLiteral(String subj, String pred, String content, String type) { public void addTypedLiteral(String subj, String pred, String content, String type) throws IOException {
try {
startTriple(subj, pred); startTriple(subj, pred);
addContent(content); addContent(content);
sink.process("^^"); sink.process("^^");
serializeUri(type); serializeUri(type);
sink.process(DOT_EOL); sink.process(DOT_EOL);
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
}
} }
@Override @Override

View file

@ -18,16 +18,12 @@ import java.io.OutputStreamWriter;
import java.io.Writer; import java.io.Writer;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Map; import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* RDF/XML writer. * RDF/XML writer.
*/ */
public class RdfXmlContentGenerator implements RdfContentGenerator<RdfXmlContentParams>, Flushable, RdfConstants { public class RdfXmlContentGenerator implements RdfContentGenerator<RdfXmlContentParams>, Flushable, RdfConstants {
private static final Logger logger = Logger.getLogger(RdfXmlContentGenerator.class.getName());
private final Writer writer; private final Writer writer;
private boolean writingStarted; private boolean writingStarted;
@ -119,7 +115,9 @@ public class RdfXmlContentGenerator implements RdfContentGenerator<RdfXmlContent
} }
startRDF(); startRDF();
writeHeader(); writeHeader();
resource.triples().forEach(this::writeTriple); for (Triple t : resource.triples()) {
writeTriple(t);
}
endRDF(); endRDF();
return this; return this;
} }
@ -213,8 +211,7 @@ public class RdfXmlContentGenerator implements RdfContentGenerator<RdfXmlContent
} }
} }
private RdfXmlContentGenerator writeTriple(Triple triple) { private RdfXmlContentGenerator writeTriple(Triple triple) throws IOException {
try {
if (!writingStarted) { if (!writingStarted) {
throw new IOException("document writing has not yet been started"); throw new IOException("document writing has not yet been started");
} }
@ -278,9 +275,6 @@ public class RdfXmlContentGenerator implements RdfContentGenerator<RdfXmlContent
writeEndTag(predNamespace, predLocalName); writeEndTag(predNamespace, predLocalName);
} }
writeNewLine(); writeNewLine();
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
}
return this; return this;
} }

View file

@ -16,8 +16,8 @@ import org.xbib.content.rdf.internal.DefaultLiteral;
import org.xbib.content.rdf.internal.DefaultTriple; import org.xbib.content.rdf.internal.DefaultTriple;
import org.xbib.content.rdf.io.xml.XmlHandler; import org.xbib.content.rdf.io.xml.XmlHandler;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.content.resource.IRINamespaceContext;
import org.xbib.content.resource.IRISyntaxException; import org.xbib.content.resource.IRISyntaxException;
import org.xbib.content.resource.NamespaceContext;
import org.xbib.content.resource.Node; import org.xbib.content.resource.Node;
import org.xbib.content.xml.util.XMLUtil; import org.xbib.content.xml.util.XMLUtil;
import org.xml.sax.Attributes; import org.xml.sax.Attributes;
@ -38,8 +38,6 @@ import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParserFactory;
@ -56,8 +54,6 @@ import javax.xml.parsers.SAXParserFactory;
*/ */
public class RdfXmlContentParser<R extends RdfContentParams> implements RdfConstants, RdfContentParser<R> { public class RdfXmlContentParser<R extends RdfContentParams> implements RdfConstants, RdfContentParser<R> {
private static final Logger logger = Logger.getLogger(RdfXmlContentParser.class.getName());
private final Reader reader; private final Reader reader;
private final Resource resource = new DefaultAnonymousResource(); private final Resource resource = new DefaultAnonymousResource();
@ -245,7 +241,6 @@ public class RdfXmlContentParser<R extends RdfContentParams> implements RdfConst
try { try {
uri = IRI.create(uriString); uri = IRI.create(uriString);
} catch (IRISyntaxException e) { } catch (IRISyntaxException e) {
logger.log(Level.FINE, e.getMessage(), e);
// illegal URI, try repair // illegal URI, try repair
uri = IRI.create(uriString uri = IRI.create(uriString
.replace(" ", "%20") .replace(" ", "%20")
@ -418,18 +413,18 @@ public class RdfXmlContentParser<R extends RdfContentParams> implements RdfConst
private StringBuilder xmlLiteral = null; private StringBuilder xmlLiteral = null;
private IRINamespaceContext namespaceContext; private NamespaceContext namespaceContext;
private int literalLevel = 0; // level in XMLLiteral private int literalLevel = 0; // level in XMLLiteral
@Override @Override
public XmlHandler<R> setNamespaceContext(IRINamespaceContext namespaceContext) { public XmlHandler<R> setNamespaceContext(NamespaceContext namespaceContext) {
this.namespaceContext = namespaceContext; this.namespaceContext = namespaceContext;
return this; return this;
} }
@Override @Override
public IRINamespaceContext getNamespaceContext() { public NamespaceContext getNamespaceContext() {
return namespaceContext; return namespaceContext;
} }

View file

@ -1,5 +1,7 @@
package org.xbib.content.rdf.io.sink; package org.xbib.content.rdf.io.sink;
import java.io.IOException;
/** /**
* Interface for quad consuming. * Interface for quad consuming.
*/ */
@ -12,8 +14,9 @@ public interface QuadSink extends TripleSink {
* @param pred predicate's IRI * @param pred predicate's IRI
* @param obj object's IRI or BNode name * @param obj object's IRI or BNode name
* @param graph graph's IRI * @param graph graph's IRI
* @throws IOException if handling of triple fails
*/ */
void addNonLiteral(String subj, String pred, String obj, String graph); void addNonLiteral(String subj, String pred, String obj, String graph) throws IOException;
/** /**
* Callback for handling triples with plain literal objects. * Callback for handling triples with plain literal objects.
@ -23,8 +26,9 @@ public interface QuadSink extends TripleSink {
* @param content unescaped string representation of content * @param content unescaped string representation of content
* @param lang content's lang, can be null if no language specified * @param lang content's lang, can be null if no language specified
* @param graph graph's IRI * @param graph graph's IRI
* @throws IOException if handling of triple fails
*/ */
void addPlainLiteral(String subj, String pred, String content, String lang, String graph); void addPlainLiteral(String subj, String pred, String content, String lang, String graph) throws IOException;
/** /**
* Callback for handling triples with typed literal objects. * Callback for handling triples with typed literal objects.
@ -34,7 +38,8 @@ public interface QuadSink extends TripleSink {
* @param content unescaped string representation of content * @param content unescaped string representation of content
* @param type literal datatype's IRI * @param type literal datatype's IRI
* @param graph graph's IRI * @param graph graph's IRI
* @throws IOException if handling of triple fails
*/ */
void addTypedLiteral(String subj, String pred, String content, String type, String graph); void addTypedLiteral(String subj, String pred, String content, String type, String graph) throws IOException;
} }

View file

@ -13,16 +13,13 @@ import org.xbib.content.rdf.internal.DefaultTriple;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import java.io.IOException; import java.io.IOException;
import java.util.logging.Level; import java.util.Iterator;
import java.util.logging.Logger;
/** /**
* *
*/ */
public class RdfContentBuilderSink implements QuadSink { public class RdfContentBuilderSink implements QuadSink {
private static final Logger logger = Logger.getLogger(RdfContentBuilderSink.class.getName());
private final RdfGraph<RdfGraphParams> graph; private final RdfGraph<RdfGraphParams> graph;
private final RdfContentBuilderProvider<RdfGraphParams> provider; private final RdfContentBuilderProvider<RdfGraphParams> provider;
@ -34,81 +31,57 @@ public class RdfContentBuilderSink implements QuadSink {
} }
@Override @Override
public void addNonLiteral(String subj, String pred, String obj) { public void addNonLiteral(String subj, String pred, String obj) throws IOException {
try {
Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj); Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj);
IRI p = IRI.create(pred); IRI p = IRI.create(pred);
Resource o = DefaultResource.create(graph.getParams().getNamespaceContext(), obj); Resource o = DefaultResource.create(graph.getParams().getNamespaceContext(), obj);
Triple t = new DefaultTriple(s, p, o); Triple t = new DefaultTriple(s, p, o);
graph.receive(t); graph.receive(t);
} catch (IOException e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
} }
@Override @Override
public void addNonLiteral(String subj, String pred, String obj, String graphIRI) { public void addNonLiteral(String subj, String pred, String obj, String graphIRI) throws IOException {
try {
Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj); Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj);
IRI p = IRI.create(pred); IRI p = IRI.create(pred);
Resource o = DefaultResource.create(graph.getParams().getNamespaceContext(), obj); Resource o = DefaultResource.create(graph.getParams().getNamespaceContext(), obj);
Triple t = new DefaultTriple(s, p, o); Triple t = new DefaultTriple(s, p, o);
graph.receive(t); graph.receive(t);
} catch (IOException e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
} }
@Override @Override
public void addPlainLiteral(String subj, String pred, String content, String lang) { public void addPlainLiteral(String subj, String pred, String content, String lang) throws IOException {
try {
Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj); Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj);
IRI p = IRI.create(pred); IRI p = IRI.create(pred);
Literal o = new DefaultLiteral(content).lang(lang); Literal o = new DefaultLiteral(content).lang(lang);
Triple t = new DefaultTriple(s, p, o); Triple t = new DefaultTriple(s, p, o);
graph.receive(t); graph.receive(t);
} catch (IOException e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
} }
@Override @Override
public void addPlainLiteral(String subj, String pred, String content, String lang, String graphIRI) { public void addPlainLiteral(String subj, String pred, String content, String lang, String graphIRI) throws IOException {
try {
Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj); Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj);
IRI p = IRI.create(pred); IRI p = IRI.create(pred);
Literal o = new DefaultLiteral(content).lang(lang); Literal o = new DefaultLiteral(content).lang(lang);
Triple t = new DefaultTriple(s, p, o); Triple t = new DefaultTriple(s, p, o);
graph.receive(t); graph.receive(t);
} catch (IOException e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
} }
@Override @Override
public void addTypedLiteral(String subj, String pred, String content, String type) { public void addTypedLiteral(String subj, String pred, String content, String type) throws IOException {
try {
Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj); Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj);
IRI p = IRI.create(pred); IRI p = IRI.create(pred);
Literal o = new DefaultLiteral(content).type(IRI.create(type)); Literal o = new DefaultLiteral(content).type(IRI.create(type));
Triple t = new DefaultTriple(s, p, o); Triple t = new DefaultTriple(s, p, o);
graph.receive(t); graph.receive(t);
} catch (IOException e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
} }
@Override @Override
public void addTypedLiteral(String subj, String pred, String content, String type, String graphIRI) { public void addTypedLiteral(String subj, String pred, String content, String type, String graphIRI) throws IOException {
try {
Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj); Resource s = DefaultResource.create(graph.getParams().getNamespaceContext(), subj);
IRI p = IRI.create(pred); IRI p = IRI.create(pred);
Literal o = new DefaultLiteral(content).type(IRI.create(type)); Literal o = new DefaultLiteral(content).type(IRI.create(type));
Triple t = new DefaultTriple(s, p, o); Triple t = new DefaultTriple(s, p, o);
graph.receive(t); graph.receive(t);
} catch (IOException e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
} }
@Override @Override
@ -125,22 +98,16 @@ public class RdfContentBuilderSink implements QuadSink {
public void endStream() throws IOException { public void endStream() throws IOException {
if (graph.getResources() != null) { if (graph.getResources() != null) {
if (provider != null) { if (provider != null) {
graph.getResources().forEachRemaining(resource -> { Iterator<Resource> iterator = graph.getResources();
while (iterator.hasNext()) {
Resource resource = iterator.next();
RdfContentBuilder<RdfGraphParams> rdfContentBuilder; RdfContentBuilder<RdfGraphParams> rdfContentBuilder;
try {
rdfContentBuilder = provider.newContentBuilder(); rdfContentBuilder = provider.newContentBuilder();
rdfContentBuilder.startStream(); rdfContentBuilder.startStream();
rdfContentBuilder.receive(resource); rdfContentBuilder.receive(resource);
rdfContentBuilder.endStream(); rdfContentBuilder.endStream();
} catch (IOException e) {
logger.log(Level.SEVERE, e.getMessage(), e);
} }
});
} else {
logger.log(Level.WARNING, "no RDF content builder provider");
} }
} else {
logger.log(Level.WARNING, "no graph resources");
} }
} }

View file

@ -1,5 +1,7 @@
package org.xbib.content.rdf.io.sink; package org.xbib.content.rdf.io.sink;
import java.io.IOException;
/** /**
* Interface for triple consuming. * Interface for triple consuming.
*/ */
@ -11,8 +13,9 @@ public interface TripleSink extends Sink {
* @param subj subject's IRI or BNode name * @param subj subject's IRI or BNode name
* @param pred predicate's IRI * @param pred predicate's IRI
* @param obj object's IRI or BNode name * @param obj object's IRI or BNode name
* @throws IOException if handling of triple fails
*/ */
void addNonLiteral(String subj, String pred, String obj); void addNonLiteral(String subj, String pred, String obj) throws IOException;
/** /**
* Callback for handling triples with plain literal objects. * Callback for handling triples with plain literal objects.
@ -21,8 +24,9 @@ public interface TripleSink extends Sink {
* @param pred predicate's IRI * @param pred predicate's IRI
* @param content unescaped string representation of content * @param content unescaped string representation of content
* @param lang content's lang, can be null if no language specified * @param lang content's lang, can be null if no language specified
* @throws IOException if handling of triple fails
*/ */
void addPlainLiteral(String subj, String pred, String content, String lang); void addPlainLiteral(String subj, String pred, String content, String lang) throws IOException;
/** /**
* Callback for handling triples with typed literal objects. * Callback for handling triples with typed literal objects.
@ -31,7 +35,7 @@ public interface TripleSink extends Sink {
* @param pred predicate's IRI * @param pred predicate's IRI
* @param content unescaped string representation of content * @param content unescaped string representation of content
* @param type literal datatype's IRI * @param type literal datatype's IRI
* @throws IOException if handling of triple fails
*/ */
void addTypedLiteral(String subj, String pred, String content, String type); void addTypedLiteral(String subj, String pred, String content, String type) throws IOException;
} }

View file

@ -19,16 +19,12 @@ import java.io.Writer;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Map; import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* *
*/ */
public class TurtleContentGenerator implements RdfContentGenerator<TurtleContentParams>, Flushable { public class TurtleContentGenerator implements RdfContentGenerator<TurtleContentParams>, Flushable {
private static final Logger logger = Logger.getLogger(TurtleContentGenerator.class.getName());
private static final char LF = '\n'; private static final char LF = '\n';
private static final char TAB = '\t'; private static final char TAB = '\t';
private static final String TYPE = RdfConstants.NS_URI + "type"; private static final String TYPE = RdfConstants.NS_URI + "type";
@ -43,15 +39,15 @@ public class TurtleContentGenerator implements RdfContentGenerator<TurtleContent
private Node lastObject; private Node lastObject;
private LinkedList<Resource> embedded; private final LinkedList<Resource> embedded;
private LinkedList<Triple> triples; private final LinkedList<Triple> triples;
private Triple triple; private Triple triple;
private boolean nsWritten; private boolean nsWritten;
private StringBuilder sb; private final StringBuilder sb;
private Resource resource; private Resource resource;
@ -117,13 +113,9 @@ public class TurtleContentGenerator implements RdfContentGenerator<TurtleContent
@Override @Override
public RdfContentGenerator<TurtleContentParams> receive(Resource resource) throws IOException { public RdfContentGenerator<TurtleContentParams> receive(Resource resource) throws IOException {
resource.triples().forEach(t -> { for (Triple t : resource.triples()) {
try {
writeTriple(t); writeTriple(t);
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
} }
});
while (!embedded.isEmpty()) { while (!embedded.isEmpty()) {
closeEmbeddedResource(); closeEmbeddedResource();
} }

View file

@ -16,8 +16,9 @@ import org.xbib.content.rdf.internal.DefaultLiteral;
import org.xbib.content.rdf.internal.DefaultResource; import org.xbib.content.rdf.internal.DefaultResource;
import org.xbib.content.rdf.internal.DefaultTriple; import org.xbib.content.rdf.internal.DefaultTriple;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.content.resource.NamespaceContext;
import org.xbib.content.resource.Node; import org.xbib.content.resource.Node;
import org.xbib.content.resource.XmlNamespaceContext; import org.xbib.content.xml.XmlNamespaceContext;
import java.io.EOFException; import java.io.EOFException;
import java.io.IOException; import java.io.IOException;
@ -29,8 +30,6 @@ import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* Turtle - Terse RDF Triple Parser. * Turtle - Terse RDF Triple Parser.
@ -41,8 +40,6 @@ import java.util.logging.Logger;
*/ */
public class TurtleContentParser<R extends RdfContentParams> implements RdfContentParser<R> { public class TurtleContentParser<R extends RdfContentParams> implements RdfContentParser<R> {
private static final Logger logger = Logger.getLogger(TurtleContentParser.class.getName());
private final Resource resource = new DefaultAnonymousResource(); private final Resource resource = new DefaultAnonymousResource();
private final HashMap<String, Node> bnodes = new HashMap<>(); private final HashMap<String, Node> bnodes = new HashMap<>();
@ -93,7 +90,7 @@ public class TurtleContentParser<R extends RdfContentParams> implements RdfConte
/** /**
* The namespace context. * The namespace context.
*/ */
private XmlNamespaceContext context = XmlNamespaceContext.newDefaultInstance(); private NamespaceContext context;
public TurtleContentParser(InputStream in) throws IOException { public TurtleContentParser(InputStream in) throws IOException {
this(new InputStreamReader(in, StandardCharsets.UTF_8)); this(new InputStreamReader(in, StandardCharsets.UTF_8));
@ -101,6 +98,7 @@ public class TurtleContentParser<R extends RdfContentParams> implements RdfConte
public TurtleContentParser(Reader reader) { public TurtleContentParser(Reader reader) {
this.reader = new PushbackReader(reader, 2); this.reader = new PushbackReader(reader, 2);
this.context = XmlNamespaceContext.newInstance();
} }
public static String decode(String s, String encoding) throws UnsupportedEncodingException { public static String decode(String s, String encoding) throws UnsupportedEncodingException {
@ -154,7 +152,7 @@ public class TurtleContentParser<R extends RdfContentParams> implements RdfConte
return this; return this;
} }
public TurtleContentParser<R> context(XmlNamespaceContext context) { public TurtleContentParser<R> context(NamespaceContext context) {
this.context = context; this.context = context;
return this; return this;
} }
@ -781,7 +779,7 @@ public class TurtleContentParser<R extends RdfContentParams> implements RdfConte
if ((char) ch != v) { if ((char) ch != v) {
String message = (subject != null ? subject : "") + " unexpected character: '" + String message = (subject != null ? subject : "") + " unexpected character: '" +
(char) ch + "' expected: '" + v + "'"; (char) ch + "' expected: '" + v + "'";
logger.log(Level.WARNING, message); throw new IOException(message);
} }
} }

View file

@ -8,8 +8,6 @@ import java.io.IOException;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Set; import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* Implementation of {@link org.xbib.content.rdf.io.sink.TripleSink} which serializes triples to {@link * Implementation of {@link org.xbib.content.rdf.io.sink.TripleSink} which serializes triples to {@link
@ -18,8 +16,6 @@ import java.util.logging.Logger;
*/ */
public final class TurtleSerializer implements TripleSink, RDF { public final class TurtleSerializer implements TripleSink, RDF {
private static final Logger logger = Logger.getLogger(TurtleSerializer.class.getName());
private static final String DOT_EOL = " .\n"; private static final String DOT_EOL = " .\n";
private static final String COMMA_EOL = " ,\n"; private static final String COMMA_EOL = " ,\n";
private static final String SEMICOLON_EOL = " ;\n"; private static final String SEMICOLON_EOL = " ;\n";
@ -58,8 +54,7 @@ public final class TurtleSerializer implements TripleSink, RDF {
} }
@Override @Override
public void addNonLiteral(String subj, String pred, String obj) { public void addNonLiteral(String subj, String pred, String obj) throws IOException {
try {
startTriple(subj, pred); startTriple(subj, pred);
if (obj.startsWith(BNODE_PREFIX)) { if (obj.startsWith(BNODE_PREFIX)) {
if (!namedBnodes.contains(obj) && obj.endsWith(SHORTENABLE_BNODE_SUFFIX)) { if (!namedBnodes.contains(obj) && obj.endsWith(SHORTENABLE_BNODE_SUFFIX)) {
@ -70,35 +65,24 @@ public final class TurtleSerializer implements TripleSink, RDF {
} else { } else {
serializeUri(obj); serializeUri(obj);
} }
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
}
} }
@Override @Override
public void addPlainLiteral(String subj, String pred, String content, String lang) { public void addPlainLiteral(String subj, String pred, String content, String lang) throws IOException {
try {
startTriple(subj, pred); startTriple(subj, pred);
addContent(content); addContent(content);
if (lang != null) { if (lang != null) {
sink.process('@').process(lang); sink.process('@').process(lang);
} }
} catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e);
}
} }
@Override @Override
public void addTypedLiteral(String subj, String pred, String content, String type) { public void addTypedLiteral(String subj, String pred, String content, String type) throws IOException {
try {
startTriple(subj, pred); startTriple(subj, pred);
addContent(content); addContent(content);
sink.process("^^"); sink.process("^^");
serializeUri(type); serializeUri(type);
} catch (IOException e) { }
logger.log(Level.FINE, e.getMessage(), e);
}
}
@Override @Override
public void startStream() throws IOException { public void startStream() throws IOException {

View file

@ -2,7 +2,7 @@ package org.xbib.content.rdf.io.xml;
import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.RdfContentBuilder;
import org.xbib.content.rdf.RdfContentParams; import org.xbib.content.rdf.RdfContentParams;
import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.NamespaceContext;
import org.xml.sax.ContentHandler; import org.xml.sax.ContentHandler;
import org.xml.sax.DTDHandler; import org.xml.sax.DTDHandler;
import org.xml.sax.EntityResolver; import org.xml.sax.EntityResolver;
@ -15,9 +15,9 @@ import org.xml.sax.ErrorHandler;
public interface XmlHandler<P extends RdfContentParams> public interface XmlHandler<P extends RdfContentParams>
extends EntityResolver, DTDHandler, ContentHandler, ErrorHandler { extends EntityResolver, DTDHandler, ContentHandler, ErrorHandler {
IRINamespaceContext getNamespaceContext(); NamespaceContext getNamespaceContext();
XmlHandler<P> setNamespaceContext(IRINamespaceContext namespaceContext); XmlHandler<P> setNamespaceContext(NamespaceContext namespaceContext);
XmlHandler<P> setDefaultNamespace(String prefix, String uri); XmlHandler<P> setDefaultNamespace(String prefix, String uri);

View file

@ -1,14 +1,14 @@
package org.xbib.content.rdf; package org.xbib.content.rdf;
import org.junit.Assert; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.IRINamespaceContext;
/** /**
* *
*/ */
public class IRINamespaceCompactionTest extends Assert { public class IRINamespaceCompactionTest {
@Test @Test
public void testCompaction() throws Exception { public void testCompaction() throws Exception {

View file

@ -1,27 +1,32 @@
package org.xbib.content.rdf; package org.xbib.content.rdf;
import org.junit.Assert; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.Test; import static org.junit.jupiter.api.Assertions.assertNull;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.content.resource.IRISyntaxException; import org.xbib.content.resource.IRISyntaxException;
/** /**
* *
*/ */
public class IRITest extends Assert { public class IRITest {
@Test @Test
public void testJsonLd() { public void testJsonLd() {
IRI iri = IRI.create("@context"); IRI iri = IRI.create("@context");
assertEquals(null, iri.getScheme()); assertNull(iri.getScheme());
assertEquals("@context", iri.getSchemeSpecificPart()); assertEquals("@context", iri.getSchemeSpecificPart());
} }
@Test(expected = IRISyntaxException.class) @Test
public void testIllegalBlankNodeIRI() { public void testIllegalBlankNodeIRI() {
Assertions.assertThrows(IRISyntaxException.class, () -> {
IRI iri = IRI.create("_:a1"); IRI iri = IRI.create("_:a1");
assertEquals("_", iri.getScheme()); assertEquals("_", iri.getScheme());
assertEquals("a1", iri.getSchemeSpecificPart()); assertEquals("a1", iri.getSchemeSpecificPart());
});
} }
@Test @Test

View file

@ -1,9 +1,9 @@
package org.xbib.content.rdf; package org.xbib.content.rdf;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.xbib.content.rdf.RdfXContentFactory.rdfXContentBuilder; import static org.xbib.content.rdf.RdfXContentFactory.rdfXContentBuilder;
import org.junit.Assert; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.xbib.content.rdf.internal.DefaultLiteral; import org.xbib.content.rdf.internal.DefaultLiteral;
import org.xbib.content.rdf.internal.DefaultResource; import org.xbib.content.rdf.internal.DefaultResource;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
@ -11,7 +11,7 @@ import org.xbib.content.resource.IRI;
/** /**
* *
*/ */
public class RdfXContentGeneratorTest extends Assert { public class RdfXContentGeneratorTest {
@Test @Test
public void testContentBuilder() throws Exception { public void testContentBuilder() throws Exception {

View file

@ -1,13 +1,14 @@
package org.xbib.content.rdf; package org.xbib.content.rdf;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.xbib.content.rdf.RdfXContentFactory.routeRdfXContentBuilder; import static org.xbib.content.rdf.RdfXContentFactory.routeRdfXContentBuilder;
import static org.xbib.content.rdf.StreamTester.assertStream;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.rdf.internal.DefaultLiteral; import org.xbib.content.rdf.internal.DefaultLiteral;
import org.xbib.content.rdf.internal.DefaultResource; import org.xbib.content.rdf.internal.DefaultResource;
import org.xbib.content.rdf.io.rdfxml.RdfXmlContentParser; import org.xbib.content.rdf.io.rdfxml.RdfXmlContentParser;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.helper.StreamTester;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -18,7 +19,7 @@ import java.nio.charset.StandardCharsets;
/** /**
* *
*/ */
public class RouteRdfXContentBuilderTest extends StreamTester { public class RouteRdfXContentBuilderTest {
@Test @Test
public void testRoute() throws Exception { public void testRoute() throws Exception {

View file

@ -1,26 +1,26 @@
package org.xbib.helper; package org.xbib.content.rdf;
import org.junit.Assert;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.fail;
import java.io.InputStream; import java.io.InputStream;
import java.io.Reader; import java.io.Reader;
/** /**
* *
*/ */
public class StreamTester extends Assert { public class StreamTester {
protected static void assertStream(InputStream expected, InputStream actual) { public static void assertStream(InputStream expected, InputStream actual) {
int offset = 0; int offset = 0;
try { try {
while (true) { while (true) {
final int exp = expected.read(); final int exp = expected.read();
if (exp == -1) { if (exp == -1) {
assertEquals("Expecting end of actual stream at offset " + offset, -1, actual.read()); assertEquals(-1, actual.read());
break; break;
} else { } else {
final int act = actual.read(); final int act = actual.read();
assertEquals("Expecting same data at offset " + offset, exp, act); assertEquals(exp, act);
} }
offset++; offset++;
} }
@ -37,11 +37,11 @@ public class StreamTester extends Assert {
while (true) { while (true) {
final int exp = expected.read(); final int exp = expected.read();
if (exp == -1) { if (exp == -1) {
assertEquals("Expecting end of actual stream at offset " + offset, -1, actual.read()); assertEquals(-1, actual.read(), "Expecting end of actual stream at offset " + offset);
break; break;
} else { } else {
final int act = actual.read(); final int act = actual.read();
assertEquals("Expecting same data at offset " + offset, exp, act); assertEquals(exp, act, "Expecting same data at offset " + offset);
} }
offset++; offset++;
} }

View file

@ -1,7 +1,7 @@
package org.xbib.content.rdf.internal; package org.xbib.content.rdf.internal;
import org.junit.Assert; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.Resource;
import org.xbib.content.rdf.Triple; import org.xbib.content.rdf.Triple;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
@ -11,7 +11,7 @@ import java.util.Iterator;
/** /**
* *
*/ */
public class BlankNodeTest extends Assert { public class BlankNodeTest {
@Test @Test
public void testBlankNodeRenumbering() throws Exception { public void testBlankNodeRenumbering() throws Exception {

View file

@ -1,13 +1,13 @@
package org.xbib.content.rdf.internal; package org.xbib.content.rdf.internal;
import org.junit.Assert; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
/** /**
* *
*/ */
public class LiteralTest extends Assert { public class LiteralTest {
@Test @Test
public void testLiteral() { public void testLiteral() {

View file

@ -1,9 +1,11 @@
package org.xbib.content.rdf.internal; package org.xbib.content.rdf.internal;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder; import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder;
import org.junit.Assert; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.xbib.content.rdf.Literal; import org.xbib.content.rdf.Literal;
import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.RdfContentBuilder;
import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.Resource;
@ -19,16 +21,16 @@ import java.util.Iterator;
/** /**
* *
*/ */
public class ResourceTest extends Assert { public class ResourceTest {
@Test @Test
public void deleted() throws Exception { public void deleted() throws Exception {
Resource r = new DefaultAnonymousResource(); Resource r = new DefaultAnonymousResource();
assertEquals(r.isDeleted(), false); assertFalse(r.isDeleted());
r.setDeleted(true); r.setDeleted(true);
assertEquals(r.isDeleted(), true); assertTrue(r.isDeleted());
r.setDeleted(false); r.setDeleted(false);
assertEquals(r.isDeleted(), false); assertFalse(r.isDeleted());
} }
@Test @Test
@ -44,7 +46,7 @@ public class ResourceTest extends Assert {
@Test @Test
public void testEmptyResources() throws Exception { public void testEmptyResources() throws Exception {
Resource r = new DefaultResource(IRI.create("urn:root")); Resource r = new DefaultResource(IRI.create("urn:root"));
assertEquals(r.isEmpty(), true); assertTrue(r.isEmpty());
assertEquals(r.toString(), "urn:root"); assertEquals(r.toString(), "urn:root");
} }
@ -52,14 +54,14 @@ public class ResourceTest extends Assert {
public void testEmptyProperty() throws Exception { public void testEmptyProperty() throws Exception {
Resource r = new DefaultResource(IRI.create("urn:root")); Resource r = new DefaultResource(IRI.create("urn:root"));
r.add("urn:property", (String) null); r.add("urn:property", (String) null);
assertEquals(r.isEmpty(), true); assertTrue(r.isEmpty());
} }
@Test @Test
public void testStringLiteral() throws Exception { public void testStringLiteral() throws Exception {
Resource r = new DefaultResource(IRI.create("urn:root")); Resource r = new DefaultResource(IRI.create("urn:root"));
r.add("urn:property", "Hello World"); r.add("urn:property", "Hello World");
assertEquals(r.isEmpty(), false); assertFalse(r.isEmpty());
assertEquals(r.triples().get(0).object().toString(), "Hello World"); assertEquals(r.triples().get(0).object().toString(), "Hello World");
} }
@ -68,7 +70,7 @@ public class ResourceTest extends Assert {
Resource r = new DefaultResource(IRI.create("urn:root")); Resource r = new DefaultResource(IRI.create("urn:root"));
DefaultLiteral literal = new DefaultLiteral(123).type(Literal.INT); DefaultLiteral literal = new DefaultLiteral(123).type(Literal.INT);
r.add("urn:property", literal); r.add("urn:property", literal);
assertEquals(r.isEmpty(), false); assertFalse(r.isEmpty());
assertEquals(r.triples().get(0).object().toString(), "123^^xsd:int"); assertEquals(r.triples().get(0).object().toString(), "123^^xsd:int");
} }

View file

@ -1,7 +1,7 @@
package org.xbib.content.rdf.internal; package org.xbib.content.rdf.internal;
import org.junit.Assert; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.Resource;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.content.resource.Node; import org.xbib.content.resource.Node;
@ -9,7 +9,7 @@ import org.xbib.content.resource.Node;
/** /**
* *
*/ */
public class TripleTest extends Assert { public class TripleTest {
@Test @Test
public void testSimpleTriple() { public void testSimpleTriple() {

View file

@ -2,12 +2,13 @@ package org.xbib.content.rdf.io.json;
import static org.xbib.content.rdf.RdfContentFactory.jsonBuilder; import static org.xbib.content.rdf.RdfContentFactory.jsonBuilder;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.RdfContentBuilder;
import org.xbib.content.rdf.io.xml.XmlHandler; import org.xbib.content.rdf.io.xml.XmlHandler;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.IRINamespaceContext;
import org.xbib.helper.StreamTester; import org.xbib.content.resource.NamespaceContext;
import org.xbib.content.rdf.StreamTester;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -55,7 +56,7 @@ public class JsonReaderTest extends StreamTester {
} }
@Override @Override
public XmlHandler<JsonContentParams> setNamespaceContext(IRINamespaceContext namespaceContext) { public XmlHandler<JsonContentParams> setNamespaceContext(NamespaceContext namespaceContext) {
return this; return this;
} }

View file

@ -2,9 +2,9 @@ package org.xbib.content.rdf.io.ntriple;
import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder; import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.RdfContentBuilder;
import org.xbib.helper.StreamTester; import org.xbib.content.rdf.StreamTester;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;

View file

@ -1,9 +1,10 @@
package org.xbib.content.rdf.io.ntriple; package org.xbib.content.rdf.io.ntriple;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder; import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder;
import org.junit.Assert; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.RdfContentBuilder;
import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.Resource;
import org.xbib.content.rdf.XSDResourceIdentifiers; import org.xbib.content.rdf.XSDResourceIdentifiers;
@ -14,7 +15,7 @@ import org.xbib.content.resource.IRI;
/** /**
* *
*/ */
public class NTripleTest extends Assert { public class NTripleTest {
@Test @Test
public void testNTripleBuilder() throws Exception { public void testNTripleBuilder() throws Exception {

View file

@ -2,8 +2,7 @@ package org.xbib.content.rdf.io.rdfxml;
import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder; import static org.xbib.content.rdf.RdfContentFactory.ntripleBuilder;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.junit.experimental.categories.Category;
import org.xbib.content.rdf.RdfContent; import org.xbib.content.rdf.RdfContent;
import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.RdfContentBuilder;
import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.Resource;
@ -11,12 +10,11 @@ import org.xbib.content.rdf.Triple;
import org.xbib.content.rdf.internal.DefaultLiteral; import org.xbib.content.rdf.internal.DefaultLiteral;
import org.xbib.content.rdf.internal.DefaultRdfGraph; import org.xbib.content.rdf.internal.DefaultRdfGraph;
import org.xbib.content.rdf.internal.DefaultTriple; import org.xbib.content.rdf.internal.DefaultTriple;
import org.xbib.content.rdf.io.IOTests;
import org.xbib.content.rdf.io.ntriple.NTripleContent; import org.xbib.content.rdf.io.ntriple.NTripleContent;
import org.xbib.content.rdf.io.ntriple.NTripleContentParams; import org.xbib.content.rdf.io.ntriple.NTripleContentParams;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.content.resource.Node; import org.xbib.content.resource.Node;
import org.xbib.helper.StreamTester; import org.xbib.content.rdf.StreamTester;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -25,14 +23,12 @@ import java.util.Iterator;
/** /**
* *
*/ */
@Category(IOTests.class)
public class EuropeanaEDMReaderTest extends StreamTester { public class EuropeanaEDMReaderTest extends StreamTester {
private static final IRI GEO_LAT = IRI.create("http://www.w3.org/2003/01/geo/wgs84_pos#lat"); private static final IRI GEO_LAT = IRI.create("http://www.w3.org/2003/01/geo/wgs84_pos#lat");
private static final IRI GEO_LON = IRI.create("http://www.w3.org/2003/01/geo/wgs84_pos#long"); private static final IRI GEO_LON = IRI.create("http://www.w3.org/2003/01/geo/wgs84_pos#long");
private static final IRI location = IRI.create("location"); private static final IRI location = IRI.create("location");
@SuppressWarnings("unchecked")
@Test @Test
public void testEuropeana() throws Exception { public void testEuropeana() throws Exception {
String filename = "oai_edm.xml"; String filename = "oai_edm.xml";
@ -56,7 +52,7 @@ public class EuropeanaEDMReaderTest extends StreamTester {
builder.streamInput()); builder.streamInput());
} }
private class GeoJSONFilter extends RdfContentBuilder<NTripleContentParams> { private static class GeoJSONFilter extends RdfContentBuilder<NTripleContentParams> {
DefaultRdfGraph graph; DefaultRdfGraph graph;

View file

@ -2,28 +2,22 @@ package org.xbib.content.rdf.io.rdfxml;
import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.junit.experimental.categories.Category;
import org.xbib.content.rdf.RdfContentFactory; import org.xbib.content.rdf.RdfContentFactory;
import org.xbib.content.rdf.io.IOTests;
import org.xbib.content.rdf.io.ntriple.NTripleContentParams; import org.xbib.content.rdf.io.ntriple.NTripleContentParams;
import org.xbib.content.rdf.io.turtle.TurtleContentParams; import org.xbib.content.rdf.io.turtle.TurtleContentParams;
import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.IRINamespaceContext;
import org.xbib.helper.StreamTester; import org.xbib.content.rdf.StreamTester;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.StringReader; import java.io.StringReader;
import java.util.logging.Logger;
/** /**
* *
*/ */
@Category(IOTests.class)
public class GNDRdfXmlReaderTest extends StreamTester { public class GNDRdfXmlReaderTest extends StreamTester {
private static final Logger logger = Logger.getLogger(GNDRdfXmlReaderTest.class.getName());
@Test @Test
public void testGNDfromRdfXmltoTurtle() throws Exception { public void testGNDfromRdfXmltoTurtle() throws Exception {
String filename = "GND.rdf"; String filename = "GND.rdf";

View file

@ -2,28 +2,22 @@ package org.xbib.content.rdf.io.rdfxml;
import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.junit.experimental.categories.Category;
import org.xbib.content.rdf.internal.DefaultAnonymousResource; import org.xbib.content.rdf.internal.DefaultAnonymousResource;
import org.xbib.content.rdf.io.IOTests;
import org.xbib.content.rdf.io.turtle.TurtleContentParams; import org.xbib.content.rdf.io.turtle.TurtleContentParams;
import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.IRINamespaceContext;
import org.xbib.helper.StreamTester; import org.xbib.content.rdf.StreamTester;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.StringReader; import java.io.StringReader;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.logging.Logger;
/** /**
* *
*/ */
@Category(IOTests.class)
public class RdfXmlReaderTest extends StreamTester { public class RdfXmlReaderTest extends StreamTester {
private static final Logger logger = Logger.getLogger(RdfXmlReaderTest.class.getName());
@Test @Test
public void testReader() throws Exception { public void testReader() throws Exception {
String filename = "118540238.xml"; String filename = "118540238.xml";

View file

@ -2,12 +2,10 @@ package org.xbib.content.rdf.io.rdfxml;
import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.junit.experimental.categories.Category;
import org.xbib.content.rdf.io.IOTests;
import org.xbib.content.rdf.io.turtle.TurtleContentParams; import org.xbib.content.rdf.io.turtle.TurtleContentParams;
import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.IRINamespaceContext;
import org.xbib.helper.StreamTester; import org.xbib.content.rdf.StreamTester;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -17,7 +15,6 @@ import java.io.StringReader;
/** /**
* *
*/ */
@Category(IOTests.class)
public class VIAFRdfXmlReaderTest extends StreamTester { public class VIAFRdfXmlReaderTest extends StreamTester {
@Test @Test

View file

@ -1,22 +1,18 @@
package org.xbib.content.rdf.io.turtle; package org.xbib.content.rdf.io.turtle;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.rdf.RdfContentFactory; import org.xbib.content.rdf.RdfContentFactory;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.helper.StreamTester; import org.xbib.content.rdf.StreamTester;
import java.io.InputStream; import java.io.InputStream;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.logging.Level;
import java.util.logging.Logger;
/** /**
* *
*/ */
public class TurtleConformanceTest extends StreamTester { public class TurtleConformanceTest extends StreamTester {
private static final Logger logger = Logger.getLogger(TurtleConformanceTest.class.getName());
@Test @Test
public void conformance() throws Exception { public void conformance() throws Exception {
for (int n = 0; n < 30; n++) { for (int n = 0; n < 30; n++) {
@ -26,10 +22,9 @@ public class TurtleConformanceTest extends StreamTester {
.setBaseIRI(IRI.create("http://example/base/")); .setBaseIRI(IRI.create("http://example/base/"));
turtleParser.setRdfContentBuilderProvider(RdfContentFactory::turtleBuilder); turtleParser.setRdfContentBuilderProvider(RdfContentFactory::turtleBuilder);
turtleParser.setRdfContentBuilderHandler(b -> { turtleParser.setRdfContentBuilderHandler(b -> {
logger.log(Level.INFO, MessageFormat.format("turtle test {0}", b.string())); //logger.log(Level.INFO, MessageFormat.format("turtle test {0}", b.string()));
}); });
turtleParser.parse(); turtleParser.parse();
} }
} }
} }

View file

@ -1,17 +1,17 @@
package org.xbib.content.rdf.io.turtle; package org.xbib.content.rdf.io.turtle;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.junit.experimental.categories.Category;
import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.RdfContentBuilder;
import org.xbib.content.rdf.RdfContentFactory; import org.xbib.content.rdf.RdfContentFactory;
import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.Resource;
import org.xbib.content.rdf.internal.DefaultResource; import org.xbib.content.rdf.internal.DefaultResource;
import org.xbib.content.rdf.io.IOTests;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.IRINamespaceContext;
import org.xbib.helper.StreamTester; import org.xbib.content.resource.NamespaceContext;
import org.xbib.content.rdf.StreamTester;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.InputStream; import java.io.InputStream;
@ -21,12 +21,11 @@ import java.nio.charset.StandardCharsets;
/** /**
* *
*/ */
@Category(IOTests.class)
public class TurtleTest extends StreamTester { public class TurtleTest extends StreamTester {
@Test @Test
public void testTurtleGND() throws Exception { public void testTurtleGND() throws Exception {
IRINamespaceContext context = IRINamespaceContext.newInstance(); NamespaceContext context = IRINamespaceContext.newInstance();
context.addNamespace("gnd", "http://d-nb.info/gnd/"); context.addNamespace("gnd", "http://d-nb.info/gnd/");
InputStream in = getClass().getResourceAsStream("GND.ttl"); InputStream in = getClass().getResourceAsStream("GND.ttl");
TurtleContentParser<TurtleContentParams> reader = new TurtleContentParser<TurtleContentParams>(in) TurtleContentParser<TurtleContentParams> reader = new TurtleContentParser<TurtleContentParams>(in)

View file

@ -2,21 +2,18 @@ package org.xbib.content.rdf.io.xml;
import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.junit.experimental.categories.Category;
import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.RdfContentBuilder;
import org.xbib.content.rdf.io.IOTests;
import org.xbib.content.rdf.io.turtle.TurtleContentParams; import org.xbib.content.rdf.io.turtle.TurtleContentParams;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.IRINamespaceContext;
import org.xbib.helper.StreamTester; import org.xbib.content.resource.NamespaceContext;
import org.xbib.content.rdf.StreamTester;
import org.xbib.net.PercentEncoders; import org.xbib.net.PercentEncoders;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
@ -25,10 +22,7 @@ import javax.xml.namespace.QName;
*/ */
public class OAITest extends StreamTester { public class OAITest extends StreamTester {
private static final Logger logger = Logger.getLogger(OAITest.class.getName());
@Test @Test
@Category(IOTests.class)
public void testOAIListRecordsToTurtle() throws Exception { public void testOAIListRecordsToTurtle() throws Exception {
String filename = "oai-listrecords.xml"; String filename = "oai-listrecords.xml";
InputStream in = getClass().getResourceAsStream(filename); InputStream in = getClass().getResourceAsStream(filename);
@ -38,7 +32,7 @@ public class OAITest extends StreamTester {
IRINamespaceContext context = IRINamespaceContext.newInstance(); IRINamespaceContext context = IRINamespaceContext.newInstance();
XmlContentParams params = new XmlContentParams(context); XmlContentParams params = new XmlContentParams(context);
XmlHandler<TurtleContentParams> xmlHandler = new AbstractXmlResourceHandler<TurtleContentParams>(params) { XmlHandler<TurtleContentParams> xmlHandler = new AbstractXmlResourceHandler<>(params) {
@Override @Override
public boolean isResourceDelimiter(QName name) { public boolean isResourceDelimiter(QName name) {
@ -53,7 +47,7 @@ public class OAITest extends StreamTester {
getResource().setId(IRI.create("id:" + getResource().setId(IRI.create("id:" +
PercentEncoders.getRegNameEncoder(StandardCharsets.UTF_8).encode(value))); PercentEncoders.getRegNameEncoder(StandardCharsets.UTF_8).encode(value)));
} catch (IOException e) { } catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e); // ignore
} }
} }
} }
@ -64,7 +58,7 @@ public class OAITest extends StreamTester {
} }
@Override @Override
public XmlHandler<TurtleContentParams> setNamespaceContext(IRINamespaceContext namespaceContext) { public XmlHandler<TurtleContentParams> setNamespaceContext(NamespaceContext namespaceContext) {
return this; return this;
} }

View file

@ -1,21 +1,21 @@
package org.xbib.content.rdf.io.xml; package org.xbib.content.rdf.io.xml;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder; import static org.xbib.content.rdf.RdfContentFactory.turtleBuilder;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.junit.experimental.categories.Category;
import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.RdfContentBuilder;
import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.Resource;
import org.xbib.content.rdf.Triple; import org.xbib.content.rdf.Triple;
import org.xbib.content.rdf.internal.DefaultAnonymousResource; import org.xbib.content.rdf.internal.DefaultAnonymousResource;
import org.xbib.content.rdf.internal.DefaultResource; import org.xbib.content.rdf.internal.DefaultResource;
import org.xbib.content.rdf.io.IOTests;
import org.xbib.content.rdf.io.ntriple.NTripleContent; import org.xbib.content.rdf.io.ntriple.NTripleContent;
import org.xbib.content.rdf.io.ntriple.NTripleContentParams; import org.xbib.content.rdf.io.ntriple.NTripleContentParams;
import org.xbib.content.rdf.io.turtle.TurtleContentParams; import org.xbib.content.rdf.io.turtle.TurtleContentParams;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
import org.xbib.content.resource.IRINamespaceContext; import org.xbib.content.resource.IRINamespaceContext;
import org.xbib.helper.StreamTester; import org.xbib.content.resource.NamespaceContext;
import org.xbib.content.rdf.StreamTester;
import org.xbib.net.PercentEncoders; import org.xbib.net.PercentEncoders;
import java.io.IOException; import java.io.IOException;
@ -23,19 +23,14 @@ import java.io.InputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
/** /**
* *
*/ */
@Category(IOTests.class)
public class XmlReaderTest extends StreamTester { public class XmlReaderTest extends StreamTester {
private static final Logger logger = Logger.getLogger(XmlReaderTest.class.getName());
@Test @Test
public void testOAIDC() throws Exception { public void testOAIDC() throws Exception {
String filename = "oro-eprint-25656.xml"; String filename = "oro-eprint-25656.xml";
@ -49,7 +44,7 @@ public class XmlReaderTest extends StreamTester {
namespaceContext.addNamespace("dc", "http://purl.org/dc/elements/1.1/"); namespaceContext.addNamespace("dc", "http://purl.org/dc/elements/1.1/");
XmlContentParams params = new XmlContentParams(namespaceContext); XmlContentParams params = new XmlContentParams(namespaceContext);
XmlHandler<TurtleContentParams> xmlHandler = new AbstractXmlResourceHandler<TurtleContentParams>(params) { XmlHandler<TurtleContentParams> xmlHandler = new AbstractXmlResourceHandler<>(params) {
@Override @Override
public boolean isResourceDelimiter(QName name) { public boolean isResourceDelimiter(QName name) {
@ -64,7 +59,7 @@ public class XmlReaderTest extends StreamTester {
getResource().setId(IRI.create("id:" + getResource().setId(IRI.create("id:" +
PercentEncoders.getRegNameEncoder(StandardCharsets.UTF_8).encode(value))); PercentEncoders.getRegNameEncoder(StandardCharsets.UTF_8).encode(value)));
} catch (IOException e) { } catch (IOException e) {
logger.log(Level.FINE, e.getMessage(), e); // swallow
} }
} }
} }
@ -76,7 +71,7 @@ public class XmlReaderTest extends StreamTester {
} }
@Override @Override
public XmlHandler<TurtleContentParams> setNamespaceContext(IRINamespaceContext namespaceContext) { public XmlHandler<TurtleContentParams> setNamespaceContext(NamespaceContext namespaceContext) {
return this; return this;
} }
@ -104,7 +99,7 @@ public class XmlReaderTest extends StreamTester {
} }
IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(); IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance();
XmlContentParams params = new XmlContentParams(namespaceContext); XmlContentParams params = new XmlContentParams(namespaceContext);
AbstractXmlHandler<NTripleContentParams> xmlHandler = new AbstractXmlResourceHandler<NTripleContentParams>(params) { AbstractXmlHandler<NTripleContentParams> xmlHandler = new AbstractXmlResourceHandler<>(params) {
@Override @Override
public boolean isResourceDelimiter(QName name) { public boolean isResourceDelimiter(QName name) {
@ -122,7 +117,7 @@ public class XmlReaderTest extends StreamTester {
} }
@Override @Override
public XmlHandler<NTripleContentParams> setNamespaceContext(IRINamespaceContext namespaceContext) { public XmlHandler<NTripleContentParams> setNamespaceContext(NamespaceContext namespaceContext) {
return this; return this;
} }
@ -153,7 +148,7 @@ public class XmlReaderTest extends StreamTester {
} }
IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance(); IRINamespaceContext namespaceContext = IRINamespaceContext.newInstance();
XmlContentParams params = new XmlContentParams(namespaceContext); XmlContentParams params = new XmlContentParams(namespaceContext);
AbstractXmlHandler<NTripleContentParams> xmlHandler = new AbstractXmlResourceHandler<NTripleContentParams>(params) { AbstractXmlHandler<NTripleContentParams> xmlHandler = new AbstractXmlResourceHandler<>(params) {
@Override @Override
public boolean isResourceDelimiter(QName name) { public boolean isResourceDelimiter(QName name) {
return false; return false;
@ -170,7 +165,7 @@ public class XmlReaderTest extends StreamTester {
} }
@Override @Override
public XmlHandler<NTripleContentParams> setNamespaceContext(IRINamespaceContext namespaceContext) { public XmlHandler<NTripleContentParams> setNamespaceContext(NamespaceContext namespaceContext) {
return this; return this;
} }
@ -194,7 +189,7 @@ public class XmlReaderTest extends StreamTester {
); );
} }
private class MyBuilder extends RdfContentBuilder<NTripleContentParams> { private static class MyBuilder extends RdfContentBuilder<NTripleContentParams> {
final List<Triple> triples = new LinkedList<>(); final List<Triple> triples = new LinkedList<>();

View file

@ -1,22 +1,19 @@
package org.xbib.content.rdf.io.xml; package org.xbib.content.rdf.io.xml;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.xbib.content.rdf.RdfContentFactory.xmlBuilder; import static org.xbib.content.rdf.RdfContentFactory.xmlBuilder;
import org.junit.Assert; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.xbib.content.rdf.RdfContentBuilder; import org.xbib.content.rdf.RdfContentBuilder;
import org.xbib.content.rdf.Resource; import org.xbib.content.rdf.Resource;
import org.xbib.content.rdf.internal.DefaultAnonymousResource; import org.xbib.content.rdf.internal.DefaultAnonymousResource;
import org.xbib.content.rdf.internal.DefaultResource; import org.xbib.content.rdf.internal.DefaultResource;
import org.xbib.content.rdf.io.IOTests;
import org.xbib.content.resource.IRI; import org.xbib.content.resource.IRI;
/** /**
* *
*/ */
@Category(IOTests.class) public class XmlResourceWriterTest {
public class XmlResourceWriterTest extends Assert {
@Test @Test
public void testXMLResourceWriter() throws Exception { public void testXMLResourceWriter() throws Exception {

View file

@ -1,10 +1,8 @@
package org.xbib.content.rdf.util; package org.xbib.content.rdf.util;
import static org.junit.Assert.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
import org.junit.Test;
import java.util.Arrays; import java.util.Arrays;
/** /**

View file

@ -1,4 +0,0 @@
/**
* Classes for helpting the testing of RDF content.
*/
package org.xbib.helper;

View file

@ -1,4 +1,4 @@
dependencies { dependencies {
compile "org.xbib:net-url:${project.property('xbib-net.version')}" api "org.xbib:net-url:${project.property('xbib.net.version')}"
testCompile "com.fasterxml.jackson.core:jackson-databind:${project.property('jackson.version')}" testImplementation "com.fasterxml.jackson.core:jackson-databind:${project.property('jackson.version')}"
} }

View file

@ -0,0 +1,5 @@
module org.xbib.content.resource {
exports org.xbib.content.resource;
exports org.xbib.content.resource.text;
requires org.xbib.net.url;
}

View file

@ -1,36 +1,39 @@
package org.xbib.content.resource; package org.xbib.content.resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.MissingResourceException; import java.util.MissingResourceException;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
/** /**
* *
*/ */
public final class IRINamespaceContext extends XmlNamespaceContext { public final class IRINamespaceContext implements NamespaceContext {
/**
* Share namespace.properties with {@link XmlNamespaceContext}.
*/
private static final String DEFAULT_RESOURCE = private static final String DEFAULT_RESOURCE =
XmlNamespaceContext.class.getPackage().getName().replace('.', '/') + '/' + "namespace"; IRINamespaceContext.class.getPackage().getName().replace('.', '/') + '/' + "namespace";
private static IRINamespaceContext instance; private static IRINamespaceContext instance;
private static final IRINamespaceContext DEFAULT_CONTEXT = newInstance(DEFAULT_RESOURCE); private static final IRINamespaceContext DEFAULT_CONTEXT = newInstance(DEFAULT_RESOURCE);
// sort namespace by length in descending order, useful for compacting prefix
private final SortedMap<String, String> namespaces;
private final SortedMap<String, Set<String>> prefixes;
protected final Object lock;
private List<String> sortedNamespacesByPrefixLength; private List<String> sortedNamespacesByPrefixLength;
private IRINamespaceContext() {
super();
}
private IRINamespaceContext(ResourceBundle bundle) {
super(bundle);
}
public static IRINamespaceContext getInstance() { public static IRINamespaceContext getInstance() {
return DEFAULT_CONTEXT; return DEFAULT_CONTEXT;
@ -55,9 +58,36 @@ public final class IRINamespaceContext extends XmlNamespaceContext {
return new IRINamespaceContext(); return new IRINamespaceContext();
} }
protected IRINamespaceContext() {
this.namespaces = new TreeMap<>();
this.prefixes = new TreeMap<>();
this.lock = new Object();
}
private IRINamespaceContext(ResourceBundle bundle) {
this();
Enumeration<String> en = bundle.getKeys();
while (en.hasMoreElements()) {
String prefix = en.nextElement();
String namespace = bundle.getString(prefix);
addNamespace(prefix, namespace);
}
}
@Override @Override
public void addNamespace(String prefix, String namespace) { public void addNamespace(String prefix, String namespace) {
super.addNamespace(prefix, namespace); if (prefix != null && namespace != null) {
synchronized (lock) {
namespaces.put(prefix, namespace);
if (prefixes.containsKey(namespace)) {
prefixes.get(namespace).add(prefix);
} else {
Set<String> set = new HashSet<>();
set.add(prefix);
prefixes.put(namespace, set);
}
}
}
synchronized (lock) { synchronized (lock) {
sortedNamespacesByPrefixLength = new ArrayList<>(getNamespaces().values()); sortedNamespacesByPrefixLength = new ArrayList<>(getNamespaces().values());
// sort from longest to shortest prefix for successful matching // sort from longest to shortest prefix for successful matching
@ -71,7 +101,7 @@ public final class IRINamespaceContext extends XmlNamespaceContext {
public IRINamespaceContext add(Map<String, String> map) { public IRINamespaceContext add(Map<String, String> map) {
for (Map.Entry<String, String> e : map.entrySet()) { for (Map.Entry<String, String> e : map.entrySet()) {
super.addNamespace(e.getKey(), e.getValue()); addNamespace(e.getKey(), e.getValue());
} }
synchronized (lock) { synchronized (lock) {
sortedNamespacesByPrefixLength = new ArrayList<>(getNamespaces().values()); sortedNamespacesByPrefixLength = new ArrayList<>(getNamespaces().values());
@ -131,4 +161,37 @@ public final class IRINamespaceContext extends XmlNamespaceContext {
public String getPrefix(IRI uri) { public String getPrefix(IRI uri) {
return getNamespaceURI(uri.getScheme()) != null ? uri.getScheme() : getPrefix(uri.toString()); return getNamespaceURI(uri.getScheme()) != null ? uri.getScheme() : getPrefix(uri.toString());
} }
@Override
public SortedMap<String, String> getNamespaces() {
return namespaces;
}
@Override
public String getNamespaceURI(String prefix) {
if (prefix == null) {
return null;
}
return namespaces.getOrDefault(prefix, null);
}
@Override
public String getPrefix(String namespaceURI) {
Iterator<String> it = getPrefixes(namespaceURI);
return it != null && it.hasNext() ? it.next() : null;
}
@Override
public Iterator<String> getPrefixes(String namespace) {
if (namespace == null) {
throw new IllegalArgumentException("namespace URI cannot be null");
}
return prefixes.containsKey(namespace) ?
prefixes.get(namespace).iterator() : null;
}
@Override
public String toString() {
return namespaces.toString();
}
} }

View file

@ -0,0 +1,17 @@
package org.xbib.content.resource;
import java.util.Iterator;
import java.util.SortedMap;
public interface NamespaceContext {
String getNamespaceURI(String prefix);
String getPrefix(String namespaceURI);
Iterator<String> getPrefixes(String namespaceURI);
SortedMap<String, String> getNamespaces();
void addNamespace(String prefix, String namespace);
}

View file

@ -1,4 +1,4 @@
dependencies { dependencies {
compile project(':content-core') implementation project(':content-core')
compile "com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${project.property('jackson.version')}" api "com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${project.property('jackson.version')}"
} }

View file

@ -0,0 +1,7 @@
module org.xbib.content.smile {
exports org.xbib.content.smile;
requires org.xbib.content.core;
requires com.fasterxml.jackson.dataformat.smile;
provides org.xbib.content.XContent with
org.xbib.content.smile.SmileXContent;
}

View file

@ -1,7 +1,6 @@
dependencies { dependencies {
compile project(':content-core') implementation project(':content-core')
compile project(':content-resource') implementation project(':content-resource')
compile "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${project.property('jackson.version')}" api "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${project.property('jackson.version')}"
compile "com.fasterxml.jackson.core:jackson-databind:${project.property('jackson-databind.version')}" implementation "com.fasterxml.woodstox:woodstox-core:${project.property('woodstox.version')}"
compile "com.fasterxml.woodstox:woodstox-core:${project.property('woodstox.version')}"
} }

View file

@ -0,0 +1,15 @@
module org.xbib.content.xml {
exports org.xbib.content.xml;
exports org.xbib.content.xml.json;
exports org.xbib.content.xml.json.events;
exports org.xbib.content.xml.stream;
exports org.xbib.content.xml.transform;
exports org.xbib.content.xml.util;
requires java.xml;
requires org.xbib.content.core;
requires org.xbib.content.resource;
requires com.fasterxml.jackson.core;
requires com.fasterxml.jackson.dataformat.xml;
provides org.xbib.content.XContent with
org.xbib.content.xml.XmlXContent;
}

View file

@ -1,4 +1,4 @@
package org.xbib.content.resource; package org.xbib.content.xml;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.HashSet; import java.util.HashSet;
@ -15,12 +15,7 @@ import javax.xml.namespace.NamespaceContext;
/** /**
* Contains a simple context for XML namespaces. * Contains a simple context for XML namespaces.
*/ */
public class XmlNamespaceContext implements NamespaceContext { public class XmlNamespaceContext implements NamespaceContext, org.xbib.content.resource.NamespaceContext {
private static final String DEFAULT_RESOURCE =
XmlNamespaceContext.class.getPackage().getName().replace('.', '/') + '/' + "namespace";
private static final XmlNamespaceContext DEFAULT_CONTEXT = newDefaultInstance();
// sort namespace by length in descending order, useful for compacting prefix // sort namespace by length in descending order, useful for compacting prefix
private final SortedMap<String, String> namespaces; private final SortedMap<String, String> namespaces;
@ -45,10 +40,6 @@ public class XmlNamespaceContext implements NamespaceContext {
} }
} }
public static XmlNamespaceContext getInstance() {
return DEFAULT_CONTEXT;
}
/** /**
* Empty namespace context. * Empty namespace context.
* *
@ -58,22 +49,10 @@ public class XmlNamespaceContext implements NamespaceContext {
return new XmlNamespaceContext(); return new XmlNamespaceContext();
} }
public static XmlNamespaceContext newDefaultInstance() {
return newInstance(DEFAULT_RESOURCE);
}
/**
* Use thread context class laoder to instantiate a namespace context.
* @param bundleName the resource bundle name
* @return XML namespace context
*/
public static XmlNamespaceContext newInstance(String bundleName) {
return newInstance(bundleName, Locale.getDefault(), Thread.currentThread().getContextClassLoader());
}
public static XmlNamespaceContext newInstance(String bundleName, Locale locale, ClassLoader classLoader) { public static XmlNamespaceContext newInstance(String bundleName, Locale locale, ClassLoader classLoader) {
try { try {
return new XmlNamespaceContext(ResourceBundle.getBundle(bundleName, locale, classLoader)); ResourceBundle bundle = ResourceBundle.getBundle(bundleName, locale, classLoader);
return new XmlNamespaceContext(bundle);
} catch (MissingResourceException e) { } catch (MissingResourceException e) {
return new XmlNamespaceContext(); return new XmlNamespaceContext();
} }

View file

@ -17,8 +17,6 @@ import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.namespace.NamespaceContext; import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
@ -29,8 +27,6 @@ import javax.xml.stream.XMLStreamException;
*/ */
public class XmlXContentGenerator extends AbstractXContentGenerator { public class XmlXContentGenerator extends AbstractXContentGenerator {
private static final Logger logger = Logger.getLogger(XmlXContentGenerator.class.getName());
private final XmlXContentGeneratorDelegate delegate; private final XmlXContentGeneratorDelegate delegate;
private XmlXParams params; private XmlXParams params;
@ -50,7 +46,7 @@ public class XmlXContentGenerator extends AbstractXContentGenerator {
return params; return params;
} }
public XmlXContentGenerator setParams(XmlXParams params) { public XmlXContentGenerator setParams(XmlXParams params) throws IOException {
delegate.setParams(params); delegate.setParams(params);
return this; return this;
} }
@ -138,12 +134,12 @@ public class XmlXContentGenerator extends AbstractXContentGenerator {
this.params = params; this.params = params;
} }
public void setParams(XmlXParams params) { public void setParams(XmlXParams params) throws IOException {
this.params = params; this.params = params;
try { try {
generator.getStaxWriter().setPrefix(params.getRoot().getPrefix(), params.getRoot().getNamespaceURI()); generator.getStaxWriter().setPrefix(params.getRoot().getPrefix(), params.getRoot().getNamespaceURI());
} catch (XMLStreamException e) { } catch (XMLStreamException e) {
logger.log(Level.SEVERE, e.getMessage(), e); throw new IOException(e);
} }
} }
@ -183,7 +179,7 @@ public class XmlXContentGenerator extends AbstractXContentGenerator {
generator.getStaxWriter().writeNamespace(prefix, uri); generator.getStaxWriter().writeNamespace(prefix, uri);
} }
} catch (XMLStreamException e) { } catch (XMLStreamException e) {
logger.log(Level.SEVERE, e.getMessage(), e); throw new IOException(e);
} }
rootUsed = true; rootUsed = true;
} }

View file

@ -2,10 +2,6 @@ package org.xbib.content.xml;
import com.fasterxml.jackson.dataformat.xml.XmlFactory; import com.fasterxml.jackson.dataformat.xml.XmlFactory;
import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator; import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator;
import org.xbib.content.resource.XmlNamespaceContext;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLInputFactory;
@ -16,8 +12,6 @@ import javax.xml.stream.XMLOutputFactory;
*/ */
public class XmlXParams { public class XmlXParams {
private static final Logger logger = Logger.getLogger(XmlXParams.class.getName());
private static final XmlXParams DEFAULT_PARAMS = private static final XmlXParams DEFAULT_PARAMS =
new XmlXParams(new QName("root"), new XmlXParams(new QName("root"),
XmlNamespaceContext.newInstance(), XmlNamespaceContext.newInstance(),
@ -69,35 +63,23 @@ public class XmlXParams {
// load from service factories in META-INF/services // load from service factories in META-INF/services
// default impl is "com.sun.xml.internal.stream.XMLInputFactoryImpl" // default impl is "com.sun.xml.internal.stream.XMLInputFactoryImpl"
XMLInputFactory inputFactory = XMLInputFactory.newInstance(); XMLInputFactory inputFactory = XMLInputFactory.newInstance();
try {
inputFactory.setProperty("javax.xml.stream.isNamespaceAware", Boolean.TRUE); inputFactory.setProperty("javax.xml.stream.isNamespaceAware", Boolean.TRUE);
inputFactory.setProperty("javax.xml.stream.isValidating", Boolean.FALSE); inputFactory.setProperty("javax.xml.stream.isValidating", Boolean.FALSE);
inputFactory.setProperty("javax.xml.stream.isCoalescing", Boolean.TRUE); inputFactory.setProperty("javax.xml.stream.isCoalescing", Boolean.TRUE);
inputFactory.setProperty("javax.xml.stream.isReplacingEntityReferences", Boolean.FALSE); inputFactory.setProperty("javax.xml.stream.isReplacingEntityReferences", Boolean.FALSE);
inputFactory.setProperty("javax.xml.stream.isSupportingExternalEntities", Boolean.FALSE); inputFactory.setProperty("javax.xml.stream.isSupportingExternalEntities", Boolean.FALSE);
} catch (Exception e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
return inputFactory; return inputFactory;
} }
protected static XMLOutputFactory createXMLOutputFactory() { protected static XMLOutputFactory createXMLOutputFactory() {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
try {
outputFactory.setProperty("javax.xml.stream.isRepairingNamespaces", Boolean.FALSE); outputFactory.setProperty("javax.xml.stream.isRepairingNamespaces", Boolean.FALSE);
} catch (Exception e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
return outputFactory; return outputFactory;
} }
protected static XmlFactory createXmlFactory(XMLInputFactory inputFactory, XMLOutputFactory outputFactory) { protected static XmlFactory createXmlFactory(XMLInputFactory inputFactory, XMLOutputFactory outputFactory) {
XmlFactory xmlFactory = new XmlFactory(inputFactory, outputFactory); XmlFactory xmlFactory = new XmlFactory(inputFactory, outputFactory);
try {
xmlFactory.configure(ToXmlGenerator.Feature.WRITE_XML_1_1, true); xmlFactory.configure(ToXmlGenerator.Feature.WRITE_XML_1_1, true);
} catch (Exception e) {
logger.log(Level.SEVERE, e.getMessage(), e);
}
return xmlFactory; return xmlFactory;
} }

View file

@ -11,7 +11,7 @@ import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.core.JsonToken;
import org.xbib.content.resource.XmlNamespaceContext; import org.xbib.content.resource.NamespaceContext;
import org.xbib.content.xml.util.ToQName; import org.xbib.content.xml.util.ToQName;
import org.xml.sax.ContentHandler; import org.xml.sax.ContentHandler;
import org.xml.sax.Locator; import org.xml.sax.Locator;
@ -51,7 +51,7 @@ public class JsonSaxAdapter {
private QName root = new QName("root"); private QName root = new QName("root");
private XmlNamespaceContext context = XmlNamespaceContext.newDefaultInstance(); private NamespaceContext context;
public JsonSaxAdapter(Reader reader, ContentHandler contentHandler) throws IOException { public JsonSaxAdapter(Reader reader, ContentHandler contentHandler) throws IOException {
this(factory.createParser(reader), contentHandler); this(factory.createParser(reader), contentHandler);
@ -68,7 +68,7 @@ public class JsonSaxAdapter {
return this; return this;
} }
public JsonSaxAdapter context(XmlNamespaceContext context) { public JsonSaxAdapter context(NamespaceContext context) {
this.context = context; this.context = context;
return this; return this;
} }
@ -163,7 +163,7 @@ public class JsonSaxAdapter {
qname.getLocalPart(), qname.getPrefix() + ":" + qname.getLocalPart()); qname.getLocalPart(), qname.getPrefix() + ":" + qname.getLocalPart());
} }
private void writeNamespaceDeclarations(XmlNamespaceContext context) throws SAXException { private void writeNamespaceDeclarations(NamespaceContext context) throws SAXException {
Set<String> keys = new TreeSet<>(context.getNamespaces().keySet()); Set<String> keys = new TreeSet<>(context.getNamespaces().keySet());
if (root != null && !keys.contains(root.getPrefix())) { if (root != null && !keys.contains(root.getPrefix())) {
contentHandler.startPrefixMapping(root.getPrefix(), root.getNamespaceURI()); contentHandler.startPrefixMapping(root.getPrefix(), root.getNamespaceURI());

View file

@ -1,6 +1,6 @@
package org.xbib.content.xml.json; package org.xbib.content.xml.json;
import org.xbib.content.resource.XmlNamespaceContext; import org.xbib.content.xml.XmlNamespaceContext;
import org.xbib.content.xml.transform.StylesheetTransformer; import org.xbib.content.xml.transform.StylesheetTransformer;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
@ -9,6 +9,7 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.io.Writer; import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.util.Arrays; import java.util.Arrays;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
@ -24,7 +25,7 @@ public class JsonStylesheet {
private QName root = new QName("root"); private QName root = new QName("root");
private XmlNamespaceContext context = XmlNamespaceContext.newDefaultInstance(); private XmlNamespaceContext context;
private StylesheetTransformer transformer; private StylesheetTransformer transformer;
@ -51,7 +52,7 @@ public class JsonStylesheet {
} }
public JsonStylesheet transform(InputStream in, OutputStream out) throws IOException { public JsonStylesheet transform(InputStream in, OutputStream out) throws IOException {
return transform(in, new OutputStreamWriter(out, "UTF-8")); return transform(in, new OutputStreamWriter(out, StandardCharsets.UTF_8));
} }
public JsonStylesheet transform(InputStream in, Writer out) throws IOException { public JsonStylesheet transform(InputStream in, Writer out) throws IOException {
@ -78,7 +79,7 @@ public class JsonStylesheet {
} }
public JsonStylesheet toXML(InputStream in, OutputStream out) throws IOException { public JsonStylesheet toXML(InputStream in, OutputStream out) throws IOException {
return toXML(in, new OutputStreamWriter(out, "UTF-8")); return toXML(in, new OutputStreamWriter(out, StandardCharsets.UTF_8));
} }
public JsonStylesheet toXML(InputStream in, Writer out) throws IOException { public JsonStylesheet toXML(InputStream in, Writer out) throws IOException {

View file

@ -1,6 +1,6 @@
package org.xbib.content.xml.json; package org.xbib.content.xml.json;
import org.xbib.content.resource.XmlNamespaceContext; import org.xbib.content.xml.XmlNamespaceContext;
import org.xml.sax.ContentHandler; import org.xml.sax.ContentHandler;
import org.xml.sax.DTDHandler; import org.xml.sax.DTDHandler;
import org.xml.sax.EntityResolver; import org.xml.sax.EntityResolver;
@ -33,9 +33,9 @@ public class JsonXmlReader implements XMLReader {
private QName root = new QName("root"); private QName root = new QName("root");
private XmlNamespaceContext context = XmlNamespaceContext.newDefaultInstance(); private XmlNamespaceContext context;
private Map<String, Boolean> map = new HashMap<>(); private final Map<String, Boolean> map;
private ContentHandler contentHandler; private ContentHandler contentHandler;
@ -45,6 +45,10 @@ public class JsonXmlReader implements XMLReader {
private ErrorHandler errorHandler; private ErrorHandler errorHandler;
public JsonXmlReader() {
this.map = new HashMap<>();
}
public JsonXmlReader root(QName root) { public JsonXmlReader root(QName root) {
this.root = root; this.root = root;
return this; return this;

View file

@ -4,7 +4,8 @@ import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.core.JsonToken;
import org.xbib.content.resource.XmlNamespaceContext; import org.xbib.content.resource.NamespaceContext;
import org.xbib.content.xml.XmlNamespaceContext;
import org.xbib.content.xml.util.ToQName; import org.xbib.content.xml.util.ToQName;
import java.io.IOException; import java.io.IOException;
@ -39,12 +40,12 @@ public class JsonXmlStreamer {
private QName root; private QName root;
private XmlNamespaceContext context; private NamespaceContext context;
private Deque<QName> elements; private final Deque<QName> elements;
public JsonXmlStreamer() { public JsonXmlStreamer() {
context = XmlNamespaceContext.newDefaultInstance(); context = XmlNamespaceContext.newInstance();
root = new QName("root"); root = new QName("root");
eventFactory = XMLEventFactory.newInstance(); eventFactory = XMLEventFactory.newInstance();
outputFactory = XMLOutputFactory.newInstance(); outputFactory = XMLOutputFactory.newInstance();
@ -58,7 +59,7 @@ public class JsonXmlStreamer {
return this; return this;
} }
public JsonXmlStreamer context(XmlNamespaceContext context) { public JsonXmlStreamer context(NamespaceContext context) {
this.context = context; this.context = context;
return this; return this;
} }

View file

@ -1,8 +1,6 @@
package org.xbib.content.xml.stream; package org.xbib.content.xml.stream;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
import javax.xml.stream.Location; import javax.xml.stream.Location;
@ -17,8 +15,6 @@ import javax.xml.stream.events.XMLEvent;
*/ */
public abstract class AbstractXMLEvent implements XMLEvent { public abstract class AbstractXMLEvent implements XMLEvent {
private static final Logger logger = Logger.getLogger(AbstractXMLEvent.class.getName());
/** /**
* The event location. * The event location.
*/ */
@ -115,7 +111,7 @@ public abstract class AbstractXMLEvent implements XMLEvent {
try { try {
this.writeAsEncodedUnicode(writer); this.writeAsEncodedUnicode(writer);
} catch (XMLStreamException e) { } catch (XMLStreamException e) {
logger.log(Level.WARNING, e.getMessage(), e); // ignore
} }
return writer.toString(); return writer.toString();
} }

View file

@ -3,8 +3,6 @@ package org.xbib.content.xml.stream;
import java.io.IOException; import java.io.IOException;
import java.io.Writer; import java.io.Writer;
import java.util.Arrays; import java.util.Arrays;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.xml.stream.XMLEventWriter; import javax.xml.stream.XMLEventWriter;
@ -42,8 +40,6 @@ import javax.xml.stream.events.XMLEvent;
*/ */
public class IndentingXMLEventWriter extends EventWriterDelegate implements Indentation { public class IndentingXMLEventWriter extends EventWriterDelegate implements Indentation {
private static final Logger logger = Logger.getLogger(IndentingXMLEventWriter.class.getName());
private static final int WROTE_MARKUP = 1; private static final int WROTE_MARKUP = 1;
private static final int WROTE_DATA = 2; private static final int WROTE_DATA = 2;
/** /**
@ -153,7 +149,7 @@ public class IndentingXMLEventWriter extends EventWriterDelegate implements Inde
try { try {
newLineEvent.write(out, depth - 1); newLineEvent.write(out, depth - 1);
} catch (Exception e) { } catch (Exception e) {
logger.log(Level.FINE, e.getMessage(), e); // swallow
} }
} }
} }

View file

@ -1,8 +1,5 @@
package org.xbib.content.xml.stream; package org.xbib.content.xml.stream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter; import javax.xml.stream.XMLStreamWriter;
@ -35,8 +32,6 @@ import javax.xml.stream.XMLStreamWriter;
*/ */
public class IndentingXMLStreamWriter extends StreamWriterDelegate implements Indentation { public class IndentingXMLStreamWriter extends StreamWriterDelegate implements Indentation {
private static final Logger logger = Logger.getLogger(IndentingXMLStreamWriter.class.getName());
private static final int WROTE_MARKUP = 1; private static final int WROTE_MARKUP = 1;
private static final int WROTE_DATA = 2; private static final int WROTE_DATA = 2;
/** /**
@ -254,7 +249,7 @@ public class IndentingXMLStreamWriter extends StreamWriterDelegate implements In
try { try {
writeNewLine(depth - 1); writeNewLine(depth - 1);
} catch (XMLStreamException e) { } catch (XMLStreamException e) {
logger.log(Level.FINE, e.getMessage(), e); // swallow
} }
} }
} }
@ -270,7 +265,7 @@ public class IndentingXMLStreamWriter extends StreamWriterDelegate implements In
try { try {
writeNewLine(0); writeNewLine(0);
} catch (XMLStreamException e) { } catch (XMLStreamException e) {
logger.log(Level.FINE, e.getMessage(), e); // swallow
} }
} }
stack[depth] = 0; // start fresh stack[depth] = 0; // start fresh

View file

@ -5,8 +5,6 @@ import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl; import org.xml.sax.helpers.AttributesImpl;
import java.util.Iterator; import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLEventReader;
@ -32,8 +30,6 @@ import javax.xml.stream.events.XMLEvent;
*/ */
public class StaxEventXMLReader extends AbstractStaxXMLReader { public class StaxEventXMLReader extends AbstractStaxXMLReader {
private static final Logger logger = Logger.getLogger(StaxEventXMLReader.class.getName());
private final XMLEventReader reader; private final XMLEventReader reader;
/** /**
@ -52,7 +48,6 @@ public class StaxEventXMLReader extends AbstractStaxXMLReader {
throw new IllegalStateException("XMLEventReader not at start of document or element"); throw new IllegalStateException("XMLEventReader not at start of document or element");
} }
} catch (XMLStreamException ex) { } catch (XMLStreamException ex) {
logger.log(Level.FINE, ex.getMessage(), ex);
throw new IllegalStateException("Could not read first element: " + ex.getMessage()); throw new IllegalStateException("Could not read first element: " + ex.getMessage());
} }
this.reader = reader; this.reader = reader;

View file

@ -1,26 +1,21 @@
package org.xbib.content.xml.transform; package org.xbib.content.xml.transform;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.transform.ErrorListener; import javax.xml.transform.ErrorListener;
import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerException;
/** /**
* An {@link javax.xml.transform.ErrorListener} that reacts to errors when parsing (compiling) the stylesheet. * An {@link javax.xml.transform.ErrorListener} that reacts to errors when parsing (compiling) the stylesheet.
*/ */
public final class StylesheetErrorListener implements ErrorListener { public class DefaultStylesheetErrorListener implements ErrorListener {
private static final Logger logger = Logger.getLogger(StylesheetErrorListener.class.getName());
@Override @Override
public void warning(TransformerException e) throws TransformerException { public void warning(TransformerException e) throws TransformerException {
logger.log(Level.WARNING, "warning (recoverable): " + e.getMessage(), e); //logger.log(Level.WARNING, "warning (recoverable): " + e.getMessage(), e);
} }
@Override @Override
public void error(TransformerException e) throws TransformerException { public void error(TransformerException e) throws TransformerException {
logger.log(Level.WARNING, "error (recoverable): " + e.getMessage(), e); //logger.log(Level.WARNING, "error (recoverable): " + e.getMessage(), e);
} }
/** /**
@ -28,7 +23,7 @@ public final class StylesheetErrorListener implements ErrorListener {
*/ */
@Override @Override
public void fatalError(TransformerException e) throws TransformerException { public void fatalError(TransformerException e) throws TransformerException {
logger.log(Level.WARNING, "fatal error: " + e.getMessage(), e); //logger.log(Level.WARNING, "fatal error: " + e.getMessage(), e);
throw e; throw e;
} }
} }

View file

@ -3,8 +3,6 @@ package org.xbib.content.xml.transform;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.transform.Source; import javax.xml.transform.Source;
import javax.xml.transform.Templates; import javax.xml.transform.Templates;
@ -18,8 +16,6 @@ import javax.xml.transform.stream.StreamSource;
*/ */
public final class StylesheetPool { public final class StylesheetPool {
private static final Logger logger = Logger.getLogger(StylesheetPool.class.getName());
/** /**
* A map of precompiled stylesheets ({@link javax.xml.transform.Templates} objects). * A map of precompiled stylesheets ({@link javax.xml.transform.Templates} objects).
*/ */
@ -61,8 +57,6 @@ public final class StylesheetPool {
String systemId = source.getSystemId(); String systemId = source.getSystemId();
Templates template = stylesheets.get(systemId); Templates template = stylesheets.get(systemId);
if (template == null) { if (template == null) {
logger.log(Level.FINE, MessageFormat.format("new source={0} {1}",
source.getSystemId(), source.getClass().getName()));
template = transformerFactory.newTemplates(source); template = transformerFactory.newTemplates(source);
stylesheets.put(systemId, template); stylesheets.put(systemId, template);
} }

View file

@ -51,7 +51,7 @@ public class StylesheetTransformer implements Closeable {
if (transformerFactory == null) { if (transformerFactory == null) {
transformerFactory = (SAXTransformerFactory) TransformerFactory.newInstance(); transformerFactory = (SAXTransformerFactory) TransformerFactory.newInstance();
} }
transformerFactory.setErrorListener(new StylesheetErrorListener()); transformerFactory.setErrorListener(new DefaultStylesheetErrorListener());
setResolver(path == null ? new TransformerURIResolver() : new TransformerURIResolver(path)); setResolver(path == null ? new TransformerURIResolver() : new TransformerURIResolver(path));
return this; return this;
} }

View file

@ -1,8 +1,5 @@
package org.xbib.content.xml.transform; package org.xbib.content.xml.transform;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.transform.ErrorListener; import javax.xml.transform.ErrorListener;
import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerException;
@ -12,8 +9,6 @@ import javax.xml.transform.TransformerException;
*/ */
public final class TransformerErrorListener implements ErrorListener { public final class TransformerErrorListener implements ErrorListener {
private static final Logger logger = Logger.getLogger(TransformerErrorListener.class.getName());
/** /**
* We store the exception internally as a workaround to xalan, which reports * We store the exception internally as a workaround to xalan, which reports
* {@link javax.xml.transform.TransformerException} as {@link RuntimeException} (wrapped). * {@link javax.xml.transform.TransformerException} as {@link RuntimeException} (wrapped).
@ -25,7 +20,7 @@ public final class TransformerErrorListener implements ErrorListener {
*/ */
@Override @Override
public void warning(TransformerException e) throws TransformerException { public void warning(TransformerException e) throws TransformerException {
logger.log(Level.WARNING, "Warning (recoverable): " + e.getMessage(), e); //logger.log(Level.WARNING, "Warning (recoverable): " + e.getMessage(), e);
} }
/* /*
@ -33,7 +28,7 @@ public final class TransformerErrorListener implements ErrorListener {
*/ */
@Override @Override
public void error(TransformerException e) throws TransformerException { public void error(TransformerException e) throws TransformerException {
logger.log(Level.WARNING, "Error (recoverable): " + e.getMessage(), e); //logger.log(Level.WARNING, "Error (recoverable): " + e.getMessage(), e);
} }
/** /**
@ -41,7 +36,7 @@ public final class TransformerErrorListener implements ErrorListener {
*/ */
@Override @Override
public void fatalError(TransformerException e) throws TransformerException { public void fatalError(TransformerException e) throws TransformerException {
logger.log(Level.SEVERE, "Fatal error: " + e.getMessage(), e); //logger.log(Level.SEVERE, "Fatal error: " + e.getMessage(), e);
this.exception = e; this.exception = e;
throw e; throw e;
} }

View file

@ -14,8 +14,6 @@ import java.net.URL;
import java.util.Arrays; import java.util.Arrays;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParser;
@ -30,8 +28,6 @@ import javax.xml.transform.sax.SAXSource;
*/ */
public class TransformerURIResolver implements URIResolver, Closeable { public class TransformerURIResolver implements URIResolver, Closeable {
private static final Logger logger = Logger.getLogger(TransformerURIResolver.class.getName());
private List<InputStream> inputStreams = new LinkedList<>(); private List<InputStream> inputStreams = new LinkedList<>();
private List<String> bases = new LinkedList<>(); private List<String> bases = new LinkedList<>();
@ -78,7 +74,7 @@ public class TransformerURIResolver implements URIResolver, Closeable {
try { try {
in = url.openStream(); in = url.openStream();
} catch (IOException e) { } catch (IOException e) {
logger.log(Level.WARNING, "error while opening stream", e); // ignore
} }
} }
if (in == null) { if (in == null) {

View file

@ -1,6 +1,6 @@
package org.xbib.content.xml.util; package org.xbib.content.xml.util;
import javax.xml.namespace.NamespaceContext; import org.xbib.content.resource.NamespaceContext;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
/** /**

View file

@ -1,10 +1,9 @@
package org.xbib.content.xml; package org.xbib.content.xml;
import org.junit.Assert; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.XContentBuilder; import org.xbib.content.XContentBuilder;
import org.xbib.content.XContentHelper; import org.xbib.content.XContentHelper;
import org.xbib.content.resource.XmlNamespaceContext;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -15,7 +14,7 @@ import javax.xml.namespace.QName;
/** /**
* *
*/ */
public class XContentXmlBuilderTest extends Assert { public class XContentXmlBuilderTest {
@Test @Test
public void testConstructorForServiceLoader() { public void testConstructorForServiceLoader() {
@ -124,7 +123,7 @@ public class XContentXmlBuilderTest extends Assert {
@Test @Test
public void testParseJson() throws Exception { public void testParseJson() throws Exception {
XmlNamespaceContext context = XmlNamespaceContext.newDefaultInstance(); XmlNamespaceContext context = XmlNamespaceContext.newInstance();
context.addNamespace("bib", "info:srw/cql-context-set/1/bib-v1/"); context.addNamespace("bib", "info:srw/cql-context-set/1/bib-v1/");
context.addNamespace("xbib", "http://xbib.org/"); context.addNamespace("xbib", "http://xbib.org/");
context.addNamespace("abc", "http://localhost/"); context.addNamespace("abc", "http://localhost/");

View file

@ -1,10 +1,10 @@
package org.xbib.content.xml; package org.xbib.content.xml;
import static org.junit.Assert.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.Assert.assertTrue; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.xbib.content.XContentBuilder; import org.xbib.content.XContentBuilder;
import org.xbib.content.resource.XmlNamespaceContext; import org.xbib.content.xml.transform.StylesheetTransformer;
import java.util.Locale;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
/** /**
@ -15,14 +15,14 @@ public class XmlNamespaceContextTest {
@Test @Test
public void testDefaultNamespace() { public void testDefaultNamespace() {
XmlNamespaceContext context = XmlNamespaceContext.newInstance(); XmlNamespaceContext context = XmlNamespaceContext.newInstance();
assertTrue(context.getNamespaces().size() == 0); assertEquals(0, context.getNamespaces().size());
context = XmlNamespaceContext.newDefaultInstance();
assertTrue(context.getNamespaces().size() > 0);
} }
@Test @Test
public void testDefaultNamespaces() throws Exception { public void testDefaultNamespaces() throws Exception {
XmlNamespaceContext context = XmlNamespaceContext.newDefaultInstance(); XmlNamespaceContext context =
XmlNamespaceContext.newInstance("org/xbib/content/resource/namespace",
Locale.getDefault(), StylesheetTransformer.class.getClassLoader());
XmlXParams params = new XmlXParams(context); XmlXParams params = new XmlXParams(context);
XContentBuilder builder = XmlXContent.contentBuilder(params); XContentBuilder builder = XmlXContent.contentBuilder(params);
builder.startObject() builder.startObject()

View file

@ -1,7 +1,7 @@
package org.xbib.content.xml.json; package org.xbib.content.xml.json;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.resource.XmlNamespaceContext; import org.xbib.content.xml.XmlNamespaceContext;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@ -12,6 +12,7 @@ import java.io.OutputStreamWriter;
import java.io.Reader; import java.io.Reader;
import java.io.Writer; import java.io.Writer;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Locale;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
import javax.xml.transform.Transformer; import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactory;
@ -70,7 +71,7 @@ public class Json2XmlTest {
private Writer getOutput(String path) throws IOException { private Writer getOutput(String path) throws IOException {
File file = File.createTempFile(path, ".dat"); File file = File.createTempFile(path, ".dat");
return new OutputStreamWriter(new FileOutputStream(file), "UTF-8"); return new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8);
} }
private QName root() { private QName root() {
@ -78,12 +79,14 @@ public class Json2XmlTest {
} }
private XmlNamespaceContext context() { private XmlNamespaceContext context() {
XmlNamespaceContext nsContext = XmlNamespaceContext.newDefaultInstance(); XmlNamespaceContext context =
nsContext.addNamespace("bib", "info:srw/cql-context-set/1/bib-v1/"); XmlNamespaceContext.newInstance("org/xbib/content/resource/namespace",
nsContext.addNamespace("xbib", "http://xbib.org/"); Locale.getDefault(), Json2XmlTest.class.getClassLoader());
nsContext.addNamespace("abc", "http://localhost/"); context.addNamespace("bib", "info:srw/cql-context-set/1/bib-v1/");
nsContext.addNamespace("lia", "http://xbib.org/namespaces/lia/"); context.addNamespace("xbib", "http://xbib.org/");
return nsContext; context.addNamespace("abc", "http://localhost/");
context.addNamespace("lia", "http://xbib.org/namespaces/lia/");
return context;
} }
} }

View file

@ -1,13 +1,14 @@
package org.xbib.content.xml.json; package org.xbib.content.xml.json;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.resource.XmlNamespaceContext; import org.xbib.content.xml.XmlNamespaceContext;
import org.xbib.content.xml.transform.StylesheetTransformer; import org.xbib.content.xml.transform.StylesheetTransformer;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Locale;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
import javax.xml.transform.sax.SAXSource; import javax.xml.transform.sax.SAXSource;
@ -18,7 +19,9 @@ public class StylesheetTransformerTest {
private final QName root = new QName("http://example.org", "result", "ex"); private final QName root = new QName("http://example.org", "result", "ex");
private final XmlNamespaceContext context = XmlNamespaceContext.newDefaultInstance(); private final XmlNamespaceContext context =
XmlNamespaceContext.newInstance("org/xbib/content/resource/namespace",
Locale.getDefault(), StylesheetTransformer.class.getClassLoader());
@Test @Test
public void testJsonAsXML() throws Exception { public void testJsonAsXML() throws Exception {

View file

@ -1,6 +1,6 @@
package org.xbib.content.xml.util; package org.xbib.content.xml.util;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.xbib.content.xml.stream.SaxEventConsumer; import org.xbib.content.xml.stream.SaxEventConsumer;
import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.helpers.DefaultHandler;
import java.util.LinkedList; import java.util.LinkedList;

View file

@ -1,12 +1,12 @@
package org.xbib.content.xml.util; package org.xbib.content.xml.util;
import org.junit.Assert; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.Test; import org.junit.jupiter.api.Test;
/** /**
* *
*/ */
public class XMLUtilTest extends Assert { public class XMLUtilTest {
@Test @Test
public void testWhitespaceCleaner() { public void testWhitespaceCleaner() {

View file

@ -1,4 +1,4 @@
dependencies { dependencies {
compile project(':content-core') api project(':content-core')
compile "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${project.property('jackson.version')}" api "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${project.property('jackson.version')}"
} }

View file

@ -0,0 +1,9 @@
module org.xbib.content.yaml {
exports org.xbib.content.yaml;
requires org.xbib.content.core;
requires com.fasterxml.jackson.dataformat.yaml;
provides org.xbib.content.XContent with
org.xbib.content.yaml.YamlXContent;
provides org.xbib.content.settings.SettingsLoader with
org.xbib.content.yaml.YamlSettingsLoader;
}

View file

@ -1,17 +1,12 @@
group = org.xbib group = org.xbib
name = content name = content
version = 2.1.0 version = 2.2.0
xbib-net.version = 2.0.3 gradle.wrapper.version = 6.4.1
xbib.net.version = 2.0.4
jackson.version = 2.9.10 jackson.version = 2.9.10
jackson-databind.version = 2.9.10.1 jackson.databind.version = 2.9.10.1
woodstox.version = 6.0.2 woodstox.version = 6.2.1
# test
junit.version = 5.6.2
junit4.version = 4.13
hamcrest.version = 2.2
mockito.version = 3.1.0 mockito.version = 3.1.0
junit4.version = 4.13
# doc
asciidoclet.version = 1.5.6 asciidoclet.version = 1.5.6

View file

@ -0,0 +1,35 @@
apply plugin: 'java-library'
java {
modularity.inferModulePath.set(true)
}
compileJava {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
compileTestJava {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
jar {
manifest {
attributes('Implementation-Version': project.version)
}
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier 'javadoc'
}
artifacts {
archives sourcesJar, javadocJar
}

View file

@ -0,0 +1,36 @@
apply plugin: 'org.xbib.gradle.plugin.asciidoctor'
configurations {
asciidoclet
}
dependencies {
asciidoclet "org.asciidoctor:asciidoclet:${project.property('asciidoclet.version')}"
}
subprojects {
/*javadoc {
options.docletpath = configurations.asciidoclet.files.asType(List)
options.doclet = 'org.asciidoctor.Asciidoclet'
//options.overview = "src/docs/asciidoclet/overview.adoc"
options.addStringOption "-base-dir", "${projectDir}"
options.addStringOption "-attribute",
"name=${project.name},version=${project.version},title-link=https://github.com/xbib/${project.name}"
configure(options) {
noTimestamp = true
}
}*/
asciidoctor {
attributes 'source-highlighter': 'coderay',
toc: 'left',
doctype: 'book',
icons: 'font',
encoding: 'utf-8',
sectlink: true,
sectanchors: true,
linkattrs: true,
imagesdir: 'img'
}
}

13
gradle/ide/idea.gradle Normal file
View file

@ -0,0 +1,13 @@
apply plugin: 'idea'
idea {
module {
outputDir file('build/classes/java/main')
testOutputDir file('build/classes/java/test')
}
}
if (project.convention.findPlugin(JavaPluginConvention)) {
//sourceSets.main.output.classesDirs = file("build/classes/java/main")
//sourceSets.test.output.classesDirs = file("build/classes/java/test")
}

View file

@ -0,0 +1,64 @@
apply plugin: "de.marcphilipp.nexus-publish"
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifact sourcesJar
artifact javadocJar
pom {
name = project.name
description = rootProject.ext.description
url = rootProject.ext.url
inceptionYear = rootProject.ext.inceptionYear
packaging = 'jar'
organization {
name = 'xbib'
url = 'https://xbib.org'
}
developers {
developer {
id = 'jprante'
name = 'Jörg Prante'
email = 'joergprante@gmail.com'
url = 'https://github.com/jprante'
}
}
scm {
url = rootProject.ext.scmUrl
connection = rootProject.ext.scmConnection
developerConnection = rootProject.ext.scmDeveloperConnection
}
issueManagement {
system = rootProject.ext.issueManagementSystem
url = rootProject.ext.issueManagementUrl
}
licenses {
license {
name = rootProject.ext.licenseName
url = rootProject.ext.licenseUrl
distribution = 'repo'
}
}
}
}
}
}
if (project.hasProperty("signing.keyId")) {
apply plugin: 'signing'
signing {
sign publishing.publications.mavenJava
}
}
nexusPublishing {
repositories {
sonatype {
username = project.property('ossrhUsername')
password = project.property('ossrhPassword')
packageGroup = "org.xbib"
}
}
}

View file

@ -0,0 +1,11 @@
if (project.hasProperty('ossrhUsername') && project.hasProperty('ossrhPassword')) {
apply plugin: 'io.codearte.nexus-staging'
nexusStaging {
username = project.property('ossrhUsername')
password = project.property('ossrhPassword')
packageGroup = "org.xbib"
}
}

27
gradle/test/junit5.gradle Normal file
View file

@ -0,0 +1,27 @@
def junitVersion = project.hasProperty('junit.version')?project.property('junit.version'):'5.6.2'
def hamcrestVersion = project.hasProperty('hamcrest.version')?project.property('hamcrest.version'):'2.2'
dependencies {
testImplementation "org.junit.jupiter:junit-jupiter-api:${junitVersion}"
testImplementation "org.junit.jupiter:junit-jupiter-params:${junitVersion}"
testImplementation "org.hamcrest:hamcrest-library:${hamcrestVersion}"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"
}
test {
useJUnitPlatform()
failFast = true
testLogging {
events 'STARTED', 'PASSED', 'FAILED', 'SKIPPED'
}
afterSuite { desc, result ->
if (!desc.parent) {
println "\nTest result: ${result.resultType}"
println "Test summary: ${result.testCount} tests, " +
"${result.successfulTestCount} succeeded, " +
"${result.failedTestCount} failed, " +
"${result.skippedTestCount} skipped"
}
}
}

Binary file not shown.

View file

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-6.4.1-all.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

31
gradlew vendored
View file

@ -82,6 +82,7 @@ esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM. # Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
@ -129,6 +130,7 @@ fi
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"` APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"` JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath # We build the pattern for arguments to be converted via cygpath
@ -154,19 +156,19 @@ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
else else
eval `echo args$i`="\"$arg\"" eval `echo args$i`="\"$arg\""
fi fi
i=$((i+1)) i=`expr $i + 1`
done done
case $i in case $i in
(0) set -- ;; 0) set -- ;;
(1) set -- "$args0" ;; 1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;; 2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;; 3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;; 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac esac
fi fi
@ -175,14 +177,9 @@ save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " " echo " "
} }
APP_ARGS=$(save "$@") APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules # Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@" exec "$JAVACMD" "$@"

Some files were not shown because too many files have changed in this diff Show more