Repository: commons-rdf
Updated Branches:
  refs/heads/master f6ea05832 -> ef7f4442a


COMMONSRDF-47 RDFSyntax as an interface

OfficialRDFSyntax is the enum - which implements the interface

basically .mediaType -> .mediaType() etc


Project: http://git-wip-us.apache.org/repos/asf/commons-rdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-rdf/commit/ee725a5a
Tree: http://git-wip-us.apache.org/repos/asf/commons-rdf/tree/ee725a5a
Diff: http://git-wip-us.apache.org/repos/asf/commons-rdf/diff/ee725a5a

Branch: refs/heads/master
Commit: ee725a5aaf5d94c9ab5ff7f355bb5d0cb370bfa7
Parents: 34c9b42
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Fri Oct 28 16:34:49 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Fri Oct 28 16:35:52 2016 +0100

----------------------------------------------------------------------
 .../org/apache/commons/rdf/api/RDFSyntax.java   | 212 +++++++++++++------
 .../apache/commons/rdf/api/AbstractRDFTest.java |   1 -
 .../apache/commons/rdf/api/RDFSyntaxTest.java   |  32 +--
 .../org/apache/commons/rdf/jena/JenaRDF.java    |   2 +-
 .../simple/experimental/AbstractRDFParser.java  |   2 +-
 5 files changed, 165 insertions(+), 84 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/ee725a5a/api/src/main/java/org/apache/commons/rdf/api/RDFSyntax.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/commons/rdf/api/RDFSyntax.java 
b/api/src/main/java/org/apache/commons/rdf/api/RDFSyntax.java
index 2637a96..e267157 100644
--- a/api/src/main/java/org/apache/commons/rdf/api/RDFSyntax.java
+++ b/api/src/main/java/org/apache/commons/rdf/api/RDFSyntax.java
@@ -22,6 +22,124 @@ import java.util.Locale;
 import java.util.Optional;
 
 /**
+ * An RDF syntax, e.g. as used for parsing and writing RDF.
+ * <p>
+ * An RDF syntax is uniquely identified by its {@link #mediaType()}, and has a
+ * suggested {@link #fileExtension()}.
+ * <p>
+ * Some of the RDF syntaxes may {@link #supportsDataset()}, meaning they can
+ * represent {@link Quad}s.
+ * <p>
+ * An enumeration of the official RDF 1.1 syntaxes is available in 
+ * {@link OfficialRDFSyntax} - for convenience they are also accessible
+ * as constants here, e.g. <code>RDFSyntax.JSONLD</code>.
+ * 
+ */
+public interface RDFSyntax {
+ 
+    public static OfficialRDFSyntax JSONLD = OfficialRDFSyntax.JSONLD;
+    public static OfficialRDFSyntax TURTLE = OfficialRDFSyntax.TURTLE;
+    public static OfficialRDFSyntax NQUADS = OfficialRDFSyntax.NQUADS;
+    public static OfficialRDFSyntax NTRIPLES = OfficialRDFSyntax.NTRIPLES;
+    public static OfficialRDFSyntax RDFA_HTML = OfficialRDFSyntax.RDFA_HTML;
+    public static OfficialRDFSyntax RDFA_XHTML = OfficialRDFSyntax.RDFA_XHTML;
+    public static OfficialRDFSyntax RDFXML = OfficialRDFSyntax.RDFXML;
+    public static OfficialRDFSyntax TRIG = OfficialRDFSyntax.TRIG;
+    
+    /**
+     * A short name of the RDF Syntax.
+     * <p>
+     * The name typically corresponds to the {@link Enum#name()} of for
+     * {@link OfficialRDFSyntax}, e.g. <code>JSONLD</code>.
+     * 
+     * @return Short name for RDF syntax
+     */
+    public String name();
+
+    /**
+     * The title of the RDF Syntax.
+     * <p>
+     * This is generally the title of the corresponding standard, 
+     * e.g. <em>RDF 1.1 Turtle</em>.
+     * 
+     * @return Title of RDF Syntax
+     */
+    public String title();    
+    
+    /**
+     * The <a href="https://tools.ietf.org/html/rfc2046";>IANA media type</a> 
for
+     * the RDF syntax.
+     * <p>
+     * The media type can be used as part of <code>Content-Type</code> and
+     * <code>Accept</code> for <em>content negotiation</em> in the
+     * <a href="https://tools.ietf.org/html/rfc7231#section-3.1.1.1";>HTTP
+     * protocol</a>.
+     */
+    public String mediaType();
+
+    /**
+     * The <a href="https://tools.ietf.org/html/rfc2046";>IANA-registered</a>
+     * file extension.
+     * <p>
+     * The file extension includes the leading period, e.g. 
<code>.jsonld</code>
+     */
+    public String fileExtension();
+
+    /**
+     * Indicate if this RDF syntax supports
+     * <a href="https://www.w3.org/TR/rdf11-concepts/#section-dataset";>RDF
+     * Datasets</a>.
+     */
+    public boolean supportsDataset();
+
+
+    /**
+     * Return the RDFSyntax with the specified media type.
+     * <p>
+     * The <code>mediaType</code> is compared in lower case, therefore it might
+     * not be equal to the {@link RDFSyntax#mediaType} of the returned
+     * RDFSyntax.
+     * <p>
+     * For convenience matching of media types used in a
+     * <code>Content-Type</code> header, if the <code>mediaType</code> contains
+     * the characters <code>;</code>, <code>,</code> or white space, only the
+     * part of the string to the left of those characters are considered.
+     * 
+     * @param mediaType
+     *            The media type to match
+     * @return If {@link Optional#isPresent()}, the {@link RDFSyntax} which has
+     *         a matching {@link RDFSyntax#mediaType}, otherwise
+     *         {@link Optional#empty()} indicating that no matching syntax was
+     *         found.
+     */
+    public static Optional<RDFSyntax> byMediaType(String mediaType) {
+        final String type = 
mediaType.toLowerCase(Locale.ENGLISH).split("\\s*[;,]", 2)[0];
+        return Arrays.stream(OfficialRDFSyntax.values()).filter(t -> 
t.mediaType().equals(type))
+                .map(RDFSyntax.class::cast).findAny();
+    }
+
+    /**
+     * Return the RDFSyntax with the specified file extension.
+     * <p>
+     * The <code>fileExtension</code> is compared in lower case, therefore it
+     * might not be equal to the {@link RDFSyntax#fileExtension} of the 
returned
+     * RDFSyntax.
+     * 
+     * @param fileExtension
+     *            The fileExtension to match, starting with <code>.</code>
+     * @return If {@link Optional#isPresent()}, the {@link RDFSyntax} which has
+     *         a matching {@link RDFSyntax#fileExtension}, otherwise
+     *         {@link Optional#empty()} indicating that no matching file
+     *         extension was found.
+     */
+    public static Optional<RDFSyntax> byFileExtension(String fileExtension) {
+        final String ext = fileExtension.toLowerCase(Locale.ENGLISH);        
+        return Arrays.stream(OfficialRDFSyntax.values()).filter(t -> 
t.fileExtension().equals(ext))
+                .map(RDFSyntax.class::cast).findAny();
+    }    
+    
+
+/**
  * Enumeration of the RDF 1.1 serialization syntaxes.
  * <p>
  * This enumeration lists the W3C standardized RDF 1.1 syntaxes like
@@ -34,7 +152,7 @@ import java.util.Optional;
  *      1.1 Primer</a>
  * @see org.apache.commons.rdf.experimental.RDFParser
  */
-public enum RDFSyntax {
+  public enum OfficialRDFSyntax implements RDFSyntax {
 
     /**
      * JSON-LD 1.0
@@ -103,92 +221,56 @@ public enum RDFSyntax {
     TRIG("RDF 1.1 TriG", "application/trig", ".trig", true);
 
     /**
-     * The <a href="https://tools.ietf.org/html/rfc2046";>IANA media type</a> 
for
-     * the RDF syntax.
-     * <p>
-     * The media type can be used as part of <code>Content-Type</code> and
-     * <code>Accept</code> for <em>content negotiation</em> in the
-     * <a href="https://tools.ietf.org/html/rfc7231#section-3.1.1.1";>HTTP
-     * protocol</a>.
+     * Deprecated, use {@link #mediaType()}. 
      */
+    @Deprecated
     public final String mediaType;
 
     /**
-     * The <a href="https://tools.ietf.org/html/rfc2046";>IANA-registered</a>
-     * file extension.
-     * <p>
-     * The file extension includes the leading period, e.g. 
<code>.jsonld</code>
+     * Deprecated, use {@link #fileExtension()}.
      */
+    @Deprecated
     public final String fileExtension;
 
     /**
-     * Indicate if this RDF syntax supports
-     * <a href="https://www.w3.org/TR/rdf11-concepts/#section-dataset";>RDF
-     * Datasets</a>.
+     * Deprecated, use {@link #supportsDataset()}.
      */
+    @Deprecated
     public final boolean supportsDataset;
 
-    private final String name;
+    private final String title;
 
-    /**
-     * A human-readable name for the RDF syntax.
-     * <p>
-     * The name is equivalent to the the title of the corresponding W3C
-     * Specification.
-     */
     @Override
     public String toString() {
-        return name;
+        return title();
     }
 
-    private RDFSyntax(String name, String mediaType, String fileExtension, 
boolean supportsDataset) {
-        this.name = name;
+    private OfficialRDFSyntax(String title, String mediaType, String 
fileExtension, boolean supportsDataset) {
+        this.title = title;
         this.mediaType = mediaType;
         this.fileExtension = fileExtension;
         this.supportsDataset = supportsDataset;
     }
 
-    /**
-     * Return the RDFSyntax with the specified media type.
-     * <p>
-     * The <code>mediaType</code> is compared in lower case, therefore it might
-     * not be equal to the {@link RDFSyntax#mediaType} of the returned
-     * RDFSyntax.
-     * <p>
-     * For convenience matching of media types used in a
-     * <code>Content-Type</code> header, if the <code>mediaType</code> contains
-     * the characters <code>;</code>, <code>,</code> or white space, only the
-     * part of the string to the left of those characters are considered.
-     * 
-     * @param mediaType
-     *            The media type to match
-     * @return If {@link Optional#isPresent()}, the {@link RDFSyntax} which has
-     *         a matching {@link RDFSyntax#mediaType}, otherwise
-     *         {@link Optional#empty()} indicating that no matching syntax was
-     *         found.
-     */
-    public static Optional<RDFSyntax> byMediaType(String mediaType) {
-        final String type = 
mediaType.toLowerCase(Locale.ENGLISH).split("\\s*[;,]", 2)[0];
-        return Arrays.stream(RDFSyntax.values()).filter(t -> 
t.mediaType.equals(type)).findAny();
+    @Override
+    public String mediaType() {
+        return mediaType;
     }
 
-    /**
-     * Return the RDFSyntax with the specified file extension.
-     * <p>
-     * The <code>fileExtension</code> is compared in lower case, therefore it
-     * might not be equal to the {@link RDFSyntax#fileExtension} of the 
returned
-     * RDFSyntax.
-     * 
-     * @param fileExtension
-     *            The fileExtension to match, starting with <code>.</code>
-     * @return If {@link Optional#isPresent()}, the {@link RDFSyntax} which has
-     *         a matching {@link RDFSyntax#fileExtension}, otherwise
-     *         {@link Optional#empty()} indicating that no matching file
-     *         extension was found.
-     */
-    public static Optional<RDFSyntax> byFileExtension(String fileExtension) {
-        final String ext = fileExtension.toLowerCase(Locale.ENGLISH);
-        return Arrays.stream(RDFSyntax.values()).filter(t -> 
t.fileExtension.equals(ext)).findAny();
+    @Override
+    public String fileExtension() {
+        return fileExtension;
+    }
+
+    @Override
+    public boolean supportsDataset() {
+        return supportsDataset;
+    }
+    
+    @Override
+    public String title() {
+        return title;
     }
 
-}
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/ee725a5a/api/src/test/java/org/apache/commons/rdf/api/AbstractRDFTest.java
----------------------------------------------------------------------
diff --git a/api/src/test/java/org/apache/commons/rdf/api/AbstractRDFTest.java 
b/api/src/test/java/org/apache/commons/rdf/api/AbstractRDFTest.java
index e58ede6..bd3865a 100644
--- a/api/src/test/java/org/apache/commons/rdf/api/AbstractRDFTest.java
+++ b/api/src/test/java/org/apache/commons/rdf/api/AbstractRDFTest.java
@@ -24,7 +24,6 @@ import static org.junit.Assert.assertNotSame;
 
 import java.util.Objects;
 
-import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/ee725a5a/api/src/test/java/org/apache/commons/rdf/api/RDFSyntaxTest.java
----------------------------------------------------------------------
diff --git a/api/src/test/java/org/apache/commons/rdf/api/RDFSyntaxTest.java 
b/api/src/test/java/org/apache/commons/rdf/api/RDFSyntaxTest.java
index a1cb62e..335eb90 100644
--- a/api/src/test/java/org/apache/commons/rdf/api/RDFSyntaxTest.java
+++ b/api/src/test/java/org/apache/commons/rdf/api/RDFSyntaxTest.java
@@ -84,26 +84,26 @@ public class RDFSyntaxTest {
 
     @Test
     public void fileExtension() throws Exception {
-        assertEquals(".jsonld", RDFSyntax.JSONLD.fileExtension);
-        assertEquals(".nq", RDFSyntax.NQUADS.fileExtension);
-        assertEquals(".nt", RDFSyntax.NTRIPLES.fileExtension);
-        assertEquals(".html", RDFSyntax.RDFA_HTML.fileExtension);
-        assertEquals(".xhtml", RDFSyntax.RDFA_XHTML.fileExtension);
-        assertEquals(".rdf", RDFSyntax.RDFXML.fileExtension);
-        assertEquals(".trig", RDFSyntax.TRIG.fileExtension);
-        assertEquals(".ttl", RDFSyntax.TURTLE.fileExtension);
+        assertEquals(".jsonld", RDFSyntax.JSONLD.fileExtension());
+        assertEquals(".nq", RDFSyntax.NQUADS.fileExtension());
+        assertEquals(".nt", RDFSyntax.NTRIPLES.fileExtension());
+        assertEquals(".html", RDFSyntax.RDFA_HTML.fileExtension());
+        assertEquals(".xhtml", RDFSyntax.RDFA_XHTML.fileExtension());
+        assertEquals(".rdf", RDFSyntax.RDFXML.fileExtension());
+        assertEquals(".trig", RDFSyntax.TRIG.fileExtension());
+        assertEquals(".ttl", RDFSyntax.TURTLE.fileExtension());
     }
 
     @Test
     public void mediaType() throws Exception {
-        assertEquals("application/ld+json", RDFSyntax.JSONLD.mediaType);
-        assertEquals("application/n-quads", RDFSyntax.NQUADS.mediaType);
-        assertEquals("application/n-triples", RDFSyntax.NTRIPLES.mediaType);
-        assertEquals("text/html", RDFSyntax.RDFA_HTML.mediaType);
-        assertEquals("application/xhtml+xml", RDFSyntax.RDFA_XHTML.mediaType);
-        assertEquals("application/rdf+xml", RDFSyntax.RDFXML.mediaType);
-        assertEquals("application/trig", RDFSyntax.TRIG.mediaType);
-        assertEquals("text/turtle", RDFSyntax.TURTLE.mediaType);
+        assertEquals("application/ld+json", RDFSyntax.JSONLD.mediaType());
+        assertEquals("application/n-quads", RDFSyntax.NQUADS.mediaType());
+        assertEquals("application/n-triples", RDFSyntax.NTRIPLES.mediaType());
+        assertEquals("text/html", RDFSyntax.RDFA_HTML.mediaType());
+        assertEquals("application/xhtml+xml", 
RDFSyntax.RDFA_XHTML.mediaType());
+        assertEquals("application/rdf+xml", RDFSyntax.RDFXML.mediaType());
+        assertEquals("application/trig", RDFSyntax.TRIG.mediaType());
+        assertEquals("text/turtle", RDFSyntax.TURTLE.mediaType());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/ee725a5a/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
----------------------------------------------------------------------
diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java 
b/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
index b49656f..036e084 100644
--- a/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
+++ b/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDF.java
@@ -551,7 +551,7 @@ public final class JenaRDF implements RDF {
      * @return Matched {@link Lang}, otherwise {@link Optional#empty()}
      */
     public Optional<Lang> asJenaLang(RDFSyntax rdfSyntax) {
-        return 
Optional.ofNullable(RDFLanguages.contentTypeToLang(rdfSyntax.mediaType));
+        return 
Optional.ofNullable(RDFLanguages.contentTypeToLang(rdfSyntax.mediaType()));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/commons-rdf/blob/ee725a5a/simple/src/main/java/org/apache/commons/rdf/simple/experimental/AbstractRDFParser.java
----------------------------------------------------------------------
diff --git 
a/simple/src/main/java/org/apache/commons/rdf/simple/experimental/AbstractRDFParser.java
 
b/simple/src/main/java/org/apache/commons/rdf/simple/experimental/AbstractRDFParser.java
index 584bff3..62fe79c 100644
--- 
a/simple/src/main/java/org/apache/commons/rdf/simple/experimental/AbstractRDFParser.java
+++ 
b/simple/src/main/java/org/apache/commons/rdf/simple/experimental/AbstractRDFParser.java
@@ -240,7 +240,7 @@ public abstract class AbstractRDFParser<T extends 
AbstractRDFParser<T>> implemen
     public T contentType(RDFSyntax rdfSyntax) throws IllegalArgumentException {
         AbstractRDFParser<T> c = clone();
         c.contentTypeSyntax = Optional.ofNullable(rdfSyntax);
-        c.contentType = c.contentTypeSyntax.map(syntax -> syntax.mediaType);
+        c.contentType = c.contentTypeSyntax.map(syntax -> syntax.mediaType());
         return c.asT();
     }
 

Reply via email to