This is an automated email from the ASF dual-hosted git repository.
andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git
The following commit(s) were added to refs/heads/main by this push:
new 3396d72cb3 Registry for ResultSetLang
3396d72cb3 is described below
commit 3396d72cb3567e58e557917be98b423c93115e50
Author: Andy Seaborne <[email protected]>
AuthorDate: Fri May 31 17:36:08 2024 +0100
Registry for ResultSetLang
---
jena-arq/pom.xml | 6 +++
.../java/org/apache/jena/riot/RDFLanguages.java | 1 +
.../org/apache/jena/riot/RDFWriterRegistry.java | 7 +--
.../apache/jena/riot/resultset/ResultSetLang.java | 36 +++++++++++---
.../riot/resultset/ResultSetReaderRegistry.java | 4 +-
.../riot/resultset/ResultSetWriterRegistry.java | 5 +-
.../jena/riot/resultset/TS_ResultSetRIOT.java | 2 +-
.../jena/riot/resultset/TestResultSetLang.java | 57 ++++++++++++++++++++++
8 files changed, 103 insertions(+), 15 deletions(-)
diff --git a/jena-arq/pom.xml b/jena-arq/pom.xml
index c8034344b9..0efa9cd1c8 100644
--- a/jena-arq/pom.xml
+++ b/jena-arq/pom.xml
@@ -121,6 +121,12 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-params</artifactId>
+ <scope>test</scope>
+ </dependency>
+
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
b/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
index 27eb0fe931..9e7274235a 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFLanguages.java
@@ -197,6 +197,7 @@ public class RDFLanguages
private static Map<String, Lang> mapFileExtToLang = new
HashMap<>();
// ----------------------
+ /** System initialization function. */
public static void init() {}
static { init$(); }
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
b/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
index 641de98340..c19dcd7982 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
@@ -279,9 +279,10 @@ public class RDFWriterRegistry
}
/** Is the RDFFormat registered for use? */
- public static boolean contains(RDFFormat format)
- { return langToFormat.containsKey(format.getLang()) &&
(registryGraph.containsKey(format) || registryDataset.containsKey(format)); }
-
+ public static boolean contains(RDFFormat format) {
+ return langToFormat.containsKey(format.getLang()) &&
+ (registryGraph.containsKey(format) ||
registryDataset.containsKey(format));
+ }
/** All registered graph formats */
public static Collection<RDFFormat> registeredGraphFormats() {
diff --git
a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
index 685dc403ed..5061cf580e 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetLang.java
@@ -18,6 +18,9 @@
package org.apache.jena.riot.resultset;
+import java.util.HashSet;
+import java.util.Set;
+
import org.apache.jena.riot.Lang;
import org.apache.jena.riot.LangBuilder;
import org.apache.jena.riot.RDFLanguages;
@@ -25,8 +28,11 @@ import org.apache.jena.riot.WebContent;
import org.apache.jena.riot.rowset.RowSetReaderRegistry;
import org.apache.jena.riot.rowset.RowSetWriterRegistry;
+/** {@link Lang} related to SPARQL result sets. */
public class ResultSetLang {
+ private ResultSetLang() {}
+
/** SPARQL results in XML syntax */
public static final Lang RS_XML = LangBuilder.create("SPARQL-Results-XML",
WebContent.contentTypeResultsXML)
.addAltNames("SRX")
@@ -59,22 +65,40 @@ public class ResultSetLang {
public static final Lang RS_None =
LangBuilder.create("SPARQL-Results-None",
"application/sparql-results+none").build();
private static boolean initialized = false;
+
+ /** System initialization function */
public static void init() {
if ( initialized )
return;
initialized = true;
- RDFLanguages.register(RS_XML);
- RDFLanguages.register(RS_JSON);
- RDFLanguages.register(RS_CSV);
- RDFLanguages.register(RS_TSV);
- RDFLanguages.register(RS_Thrift);
+ registerResultSetLang(RS_XML);
+ registerResultSetLang(RS_JSON);
+ registerResultSetLang(RS_CSV);
+ registerResultSetLang(RS_TSV);
+ registerResultSetLang(RS_Thrift);
+ registerResultSetLang(RS_Protobuf);
// Not output-only text.
- RDFLanguages.register(RS_None);
+ registerResultSetLang(RS_None);
RowSetReaderRegistry.init();
RowSetWriterRegistry.init();
ResultSetReaderRegistry.init();
ResultSetWriterRegistry.init();
+ registered = Set.copyOf(registered);
+ }
+
+ /**
+ * Is a lang a registered {@link ResultSetLang}?
+ * @param lang
+ */
+ public static boolean isRegistered(Lang lang) {
+ return registered.contains(lang);
+ }
+
+ private static Set<Lang> registered = new HashSet<>();
+ private static void registerResultSetLang(Lang rsLang) {
+ registered.add(rsLang);
+ RDFLanguages.register(rsLang);
}
}
diff --git
a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetReaderRegistry.java
b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetReaderRegistry.java
index e8b6a0696a..e4983932cd 100644
---
a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetReaderRegistry.java
+++
b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetReaderRegistry.java
@@ -75,10 +75,10 @@ public class ResultSetReaderRegistry {
register(RS_Thrift, factory) ;
register(RS_Protobuf, factory) ;
}
-
+
/** Return registered result set languages. */
public static Set<Lang> registered() {
- return Collections.unmodifiableSet(registry.keySet());
+ return Set.copyOf(registry.keySet());
}
private static class ResultSetReaderAdapter implements ResultSetReader {
diff --git
a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java
b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java
index 969cfcd538..865c3f3770 100644
---
a/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java
+++
b/jena-arq/src/main/java/org/apache/jena/riot/resultset/ResultSetWriterRegistry.java
@@ -22,7 +22,6 @@ import static org.apache.jena.riot.resultset.ResultSetLang.*;
import java.io.OutputStream;
import java.io.Writer;
-import java.util.Collection;
import java.util.Map ;
import java.util.Objects ;
import java.util.Set;
@@ -60,10 +59,10 @@ public class ResultSetWriterRegistry {
}
/** All registered languages */
- public static Collection<Lang> registered() {
+ public static Set<Lang> registered() {
return Set.copyOf(registry.keySet());
}
-
+
private static boolean initialized = false ;
public static void init() {
if ( initialized )
diff --git
a/jena-arq/src/test/java/org/apache/jena/riot/resultset/TS_ResultSetRIOT.java
b/jena-arq/src/test/java/org/apache/jena/riot/resultset/TS_ResultSetRIOT.java
index efc497b8b8..f29ee4b0d8 100644
---
a/jena-arq/src/test/java/org/apache/jena/riot/resultset/TS_ResultSetRIOT.java
+++
b/jena-arq/src/test/java/org/apache/jena/riot/resultset/TS_ResultSetRIOT.java
@@ -28,7 +28,7 @@ import org.junit.runners.Suite ;
TestResultSetIO.class
, TestResultSetWriterCSV.class
, TestResultSetWriterTSV.class
+ , TestResultSetLang.class
})
public class TS_ResultSetRIOT { }
-
diff --git
a/jena-arq/src/test/java/org/apache/jena/riot/resultset/TestResultSetLang.java
b/jena-arq/src/test/java/org/apache/jena/riot/resultset/TestResultSetLang.java
new file mode 100644
index 0000000000..394f68985d
--- /dev/null
+++
b/jena-arq/src/test/java/org/apache/jena/riot/resultset/TestResultSetLang.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.riot.resultset;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.stream.Stream;
+
+import org.apache.jena.riot.Lang;
+import org.apache.jena.sys.JenaSystem;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+public class TestResultSetLang {
+
+ // Testing assumes JenaSystem.init() has run.
+ // Call here for a standalone test suite.
+ static { JenaSystem.init(); }
+
+ @DisplayName("ResultSetLang registration")
+ @ParameterizedTest(name="{index} - {1}")
+ @MethodSource("provideLangs")
+ void registrationResultSetLang(Lang rsLang, String label) {
+ boolean b = ResultSetLang.isRegistered(rsLang);
+ assertTrue(label+" : not registered", b);
+ }
+
+ private static Stream<Arguments> provideLangs() {
+ return Stream.of
+ (Arguments.of(ResultSetLang.RS_JSON, "SPARQL JSON results"),
+ Arguments.of(ResultSetLang.RS_XML, "SPARQL XML results"),
+ Arguments.of(ResultSetLang.RS_CSV, "SPARQL CSV results"),
+ Arguments.of(ResultSetLang.RS_TSV, "SPARQL TSV results"),
+ Arguments.of(ResultSetLang.RS_Thrift, "SPARQL RDF-Thrift
results"),
+ Arguments.of(ResultSetLang.RS_Protobuf, "SPARQL RDF-Protobuf
results"),
+ // Not a readable format -- ResultSetLang.RS_Text
+ Arguments.of(ResultSetLang.RS_None, "SPARQL None results"));
+ }
+}