Skip to content

Commit a565784

Browse files
authored
Merge main into develop (#5388)
2 parents e611e16 + bd3526b commit a565784

7 files changed

Lines changed: 74 additions & 12 deletions

File tree

core/repository/manager/src/main/java/org/eclipse/rdf4j/repository/manager/LocalRepositoryManager.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,12 @@ public synchronized RepositoryConfig getRepositoryConfig(String id) {
261261
File dataDir = getRepositoryDir(id);
262262
if (new File(dataDir, CFG_FILE).exists()) {
263263
File configFile = new File(dataDir, CFG_FILE);
264-
try (InputStream input = new FileInputStream(configFile)) {
265-
Model model = Rio.parse(input, configFile.toURI().toString(), CONFIG_FORMAT);
264+
try {
265+
Model model;
266+
// We read the input and close it so that it may be reopend by the migration process
267+
try (InputStream input = new FileInputStream(configFile)) {
268+
model = Rio.parse(input, configFile.toURI().toString(), CONFIG_FORMAT);
269+
}
266270

267271
Set<String> repositoryIDs = RepositoryConfigUtil.getRepositoryIDs(model);
268272
if (repositoryIDs.isEmpty()) {

tools/console/src/main/java/org/eclipse/rdf4j/console/command/Convert.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
package org.eclipse.rdf4j.console.command;
1212

1313
import java.io.BufferedInputStream;
14-
import java.io.BufferedWriter;
14+
import java.io.BufferedOutputStream;
1515
import java.io.IOException;
1616
import java.nio.file.Files;
1717
import java.nio.file.Path;
@@ -132,7 +132,7 @@ private void convert(String fileFrom, String fileTo) {
132132
String baseURI = pathFrom.toUri().toString();
133133

134134
try (BufferedInputStream r = new BufferedInputStream(Files.newInputStream(pathFrom));
135-
BufferedWriter w = Files.newBufferedWriter(pathTo)) {
135+
BufferedOutputStream w = new BufferedOutputStream(Files.newOutputStream(pathTo))) {
136136
RDFWriter writer = Rio.createWriter(fmtTo.get(), w);
137137
parser.setRDFHandler(writer);
138138

@@ -141,6 +141,8 @@ private void convert(String fileFrom, String fileTo) {
141141

142142
parser.parse(r, baseURI);
143143

144+
w.flush();
145+
144146
long diff = (System.nanoTime() - startTime) / 1_000_000;
145147
writeln("Data has been written to file (" + diff + " ms)");
146148
} catch (IOException | RDFParseException | RDFHandlerException e) {

tools/console/src/main/java/org/eclipse/rdf4j/console/command/Export.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@
1010
*******************************************************************************/
1111
package org.eclipse.rdf4j.console.command;
1212

13-
import java.io.IOException;
14-
import java.io.Writer;
15-
import java.nio.charset.StandardCharsets;
13+
import java.io.*;
1614
import java.nio.file.Files;
1715
import java.nio.file.Path;
1816
import java.nio.file.StandardOpenOption;
@@ -127,8 +125,8 @@ private void export(Repository repository, String fileName, Resource... contexts
127125
}
128126

129127
try (RepositoryConnection conn = repository.getConnection();
130-
Writer w = Files.newBufferedWriter(path, StandardCharsets.UTF_8, StandardOpenOption.CREATE,
131-
StandardOpenOption.TRUNCATE_EXISTING)) {
128+
BufferedOutputStream w = new BufferedOutputStream(Files.newOutputStream(path, StandardOpenOption.CREATE,
129+
StandardOpenOption.TRUNCATE_EXISTING))) {
132130

133131
RDFFormat fmt = Rio.getWriterFormatForFileName(fileName)
134132
.orElseThrow(() -> new UnsupportedRDFormatException("No RDF parser for " + fileName));
@@ -139,6 +137,8 @@ private void export(Repository repository, String fileName, Resource... contexts
139137

140138
conn.export(writer, contexts);
141139

140+
w.flush();
141+
142142
long diff = (System.nanoTime() - startTime) / 1_000_000;
143143
writeln("Data has been written to file (" + diff + " ms)");
144144
} catch (IOException | UnsupportedRDFormatException e) {

tools/console/src/main/java/org/eclipse/rdf4j/console/command/Verify.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
*******************************************************************************/
1111
package org.eclipse.rdf4j.console.command;
1212

13+
import java.io.BufferedOutputStream;
1314
import java.io.IOException;
1415
import java.io.InputStream;
15-
import java.io.Writer;
1616
import java.net.MalformedURLException;
1717
import java.net.URL;
1818
import java.nio.file.Files;
@@ -186,7 +186,7 @@ private void shacl(String dataPath, String shaclPath, String reportFile) {
186186
writeln("Loading shapes from " + shaclPath);
187187

188188
URL shaclURL = new URL(shaclPath);
189-
RDFFormat format = Rio.getParserFormatForFileName(reportFile).orElse(RDFFormat.TURTLE);
189+
RDFFormat format = Rio.getParserFormatForFileName(shaclPath).orElse(RDFFormat.TURTLE);
190190

191191
try (SailRepositoryConnection conn = repo.getConnection()) {
192192
conn.begin(IsolationLevels.NONE, ShaclSail.TransactionSettings.ValidationApproach.Disabled);
@@ -279,8 +279,9 @@ private void writeReport(Model model, String reportFile) {
279279

280280
RDFFormat format = Rio.getParserFormatForFileName(reportFile).orElse(RDFFormat.TURTLE);
281281

282-
try (Writer w = Files.newBufferedWriter(Paths.get(reportFile))) {
282+
try (BufferedOutputStream w = new BufferedOutputStream(Files.newOutputStream(Paths.get(reportFile)))) {
283283
Rio.write(model, w, format, cfg);
284+
w.flush();
284285
} catch (IOException ex) {
285286
writeError("Could not write report to " + reportFile, ex);
286287
}

tools/console/src/test/java/org/eclipse/rdf4j/console/command/ConvertTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,14 @@ public final void testConvert() {
6666
assertTrue(o != null, "Invalid JSON");
6767
}
6868

69+
@Test
70+
public final void testConvertToBinary() {
71+
File binary = new File(locationFile, "alien.brf");
72+
cmd.execute("convert", from.getAbsolutePath(), binary.getAbsolutePath());
73+
74+
assertTrue(binary.length() > 0, "File is empty");
75+
}
76+
6977
@Test
7078
public final void testConvertWorkDir() {
7179
setWorkingDir(cmd);

tools/console/src/test/java/org/eclipse/rdf4j/console/command/ExportTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,15 @@ public final void testExportAll() throws RepositoryException, IOException {
6868
nq.delete();
6969
}
7070

71+
@Test
72+
public final void testExportAllToBinary() throws RepositoryException {
73+
File binary = new File(locationFile, "all.brf");
74+
cmd.execute("export", binary.getAbsolutePath());
75+
assertTrue(binary.length() > 0, "File is empty");
76+
77+
binary.delete();
78+
}
79+
7180
@Test
7281
public final void testExportWorkDir() throws RepositoryException, IOException {
7382
setWorkingDir(cmd);

tools/console/src/test/java/org/eclipse/rdf4j/console/command/VerifyTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,44 @@ public final void testShaclValid() throws IOException {
127127
assertFalse(io.wasErrorWritten());
128128
}
129129

130+
@Test
131+
public final void testShaclInvalidFormat() throws IOException {
132+
File report = new File(locationFile, "testShaclInvalid.nt");
133+
cmd.execute("verify", copyFromRes("ok.ttl"), copyFromRes("shacl_invalid.ttl"), report.toString());
134+
assertTrue(io.wasErrorWritten());
135+
assertTrue(Files.size(report.toPath()) > 0);
136+
}
137+
138+
@Test
139+
public final void testShaclValidFormat() throws IOException {
140+
File report = new File(locationFile, "testShaclValid.nt");
141+
assertTrue(report.createNewFile());
142+
cmd.execute("verify", copyFromRes("ok.ttl"), copyFromRes("shacl_valid.ttl"), report.toString());
143+
144+
verify(mockConsoleIO, never()).writeError(anyString());
145+
assertFalse(Files.size(report.toPath()) > 0);
146+
assertFalse(io.wasErrorWritten());
147+
}
148+
149+
@Test
150+
public final void testShaclInvalidToBinary() throws IOException {
151+
File report = new File(locationFile, "testShaclInvalid.brf");
152+
cmd.execute("verify", copyFromRes("ok.ttl"), copyFromRes("shacl_invalid.ttl"), report.toString());
153+
assertTrue(io.wasErrorWritten());
154+
assertTrue(Files.size(report.toPath()) > 0);
155+
}
156+
157+
@Test
158+
public final void testShaclValidToBinary() throws IOException {
159+
File report = new File(locationFile, "testShaclValid.brf");
160+
assertTrue(report.createNewFile());
161+
cmd.execute("verify", copyFromRes("ok.ttl"), copyFromRes("shacl_valid.ttl"), report.toString());
162+
163+
verify(mockConsoleIO, never()).writeError(anyString());
164+
assertFalse(Files.size(report.toPath()) > 0);
165+
assertFalse(io.wasErrorWritten());
166+
}
167+
130168
@Test
131169
public final void testShaclValidWorkDir() throws IOException {
132170
setWorkingDir(cmd);

0 commit comments

Comments
 (0)