add Java named modules, Gradle 6, remove all logging, JUnit 5
This commit is contained in:
parent
00639d970b
commit
d46afa4c03
101 changed files with 868 additions and 923 deletions
204
build.gradle
204
build.gradle
|
@ -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"
|
||||||
}
|
}
|
||||||
|
|
||||||
subprojects {
|
wrapper {
|
||||||
|
gradleVersion = "${rootProject.property('gradle.wrapper.version')}"
|
||||||
apply plugin: 'java'
|
distributionType = Wrapper.DistributionType.ALL
|
||||||
apply plugin: 'maven'
|
|
||||||
apply plugin: 'pmd'
|
|
||||||
apply plugin: 'checkstyle'
|
|
||||||
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 {
|
ext {
|
||||||
projectDescription = 'Content processing library for Java'
|
user = 'xbib'
|
||||||
scmUrl = 'https://github.com/xbib/content'
|
name = 'content'
|
||||||
scmConnection = 'scm:git:git://github.com/xbib/content.git'
|
description = 'Content processing library for Java'
|
||||||
scmDeveloperConnection = 'scm:git:git://github.com/xbib/content.git'
|
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'
|
||||||
}
|
}
|
||||||
|
|
||||||
task sonatypeUpload(type: Upload, dependsOn: build) {
|
subprojects {
|
||||||
group = 'publish'
|
apply plugin: 'java-library'
|
||||||
configuration = configurations.archives
|
apply from: rootProject.file('gradle/ide/idea.gradle')
|
||||||
uploadDescriptor = true
|
apply from: rootProject.file('gradle/compile/java.gradle')
|
||||||
repositories {
|
apply from: rootProject.file('gradle/test/junit5.gradle')
|
||||||
if (project.hasProperty('ossrhUsername')) {
|
apply from: rootProject.file('gradle/publishing/publication.gradle')
|
||||||
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')
|
||||||
|
|
|
@ -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"/>
|
||||||
|
|
|
@ -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')}"
|
||||||
}
|
}
|
||||||
|
|
14
content-core/src/main/java/module-info.java
Normal file
14
content-core/src/main/java/module-info.java
Normal 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;
|
||||||
|
}
|
|
@ -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);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
3
content-csv/src/main/java/module-info.java
Normal file
3
content-csv/src/main/java/module-info.java
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module org.xbib.content.csv {
|
||||||
|
exports org.xbib.content.csv;
|
||||||
|
}
|
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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')}"
|
|
||||||
}
|
}
|
||||||
|
|
8
content-json/src/main/java/module-info.java
Normal file
8
content-json/src/main/java/module-info.java
Normal 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;
|
||||||
|
}
|
4
content-language/src/main/java/module-info.java
Normal file
4
content-language/src/main/java/module-info.java
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
module org.xbib.content.language {
|
||||||
|
exports org.xbib.content.language;
|
||||||
|
exports org.xbib.content.language.enums;
|
||||||
|
}
|
|
@ -1,3 +1,5 @@
|
||||||
dependencies {
|
dependencies {
|
||||||
compile project(':content-xml')
|
implementation project(':content-core')
|
||||||
|
implementation project(':content-resource')
|
||||||
|
implementation project(':content-xml')
|
||||||
}
|
}
|
||||||
|
|
17
content-rdf/src/main/java/module-info.java
Normal file
17
content-rdf/src/main/java/module-info.java
Normal 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;
|
||||||
|
}
|
|
@ -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));
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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,34 +65,23 @@ 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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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++;
|
||||||
}
|
}
|
|
@ -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 {
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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<>();
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
/**
|
|
||||||
* Classes for helpting the testing of RDF content.
|
|
||||||
*/
|
|
||||||
package org.xbib.helper;
|
|
|
@ -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')}"
|
||||||
}
|
}
|
5
content-resource/src/main/java/module-info.java
Normal file
5
content-resource/src/main/java/module-info.java
Normal 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;
|
||||||
|
}
|
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
|
@ -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')}"
|
||||||
}
|
}
|
||||||
|
|
7
content-smile/src/main/java/module-info.java
Normal file
7
content-smile/src/main/java/module-info.java
Normal 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;
|
||||||
|
}
|
|
@ -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')}"
|
|
||||||
}
|
}
|
||||||
|
|
15
content-xml/src/main/java/module-info.java
Normal file
15
content-xml/src/main/java/module-info.java
Normal 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;
|
||||||
|
}
|
|
@ -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();
|
||||||
}
|
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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/");
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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')}"
|
||||||
}
|
}
|
9
content-yaml/src/main/java/module-info.java
Normal file
9
content-yaml/src/main/java/module-info.java
Normal 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;
|
||||||
|
}
|
|
@ -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
|
||||||
|
|
35
gradle/compile/java.gradle
Normal file
35
gradle/compile/java.gradle
Normal 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
|
||||||
|
}
|
36
gradle/documentation/asciidoc.gradle
Normal file
36
gradle/documentation/asciidoc.gradle
Normal 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
13
gradle/ide/idea.gradle
Normal 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")
|
||||||
|
}
|
64
gradle/publishing/publication.gradle
Normal file
64
gradle/publishing/publication.gradle
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
gradle/publishing/sonatype.gradle
Normal file
11
gradle/publishing/sonatype.gradle
Normal 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
27
gradle/test/junit5.gradle
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -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
31
gradlew
vendored
|
@ -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
Loading…
Reference in a new issue