You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2013/03/11 23:57:10 UTC

svn commit: r1455357 - in /jena/trunk/jena-arq/src/main/java/org/apache/jena/riot: adapters/JenaReadersWriters.java adapters/RDFReaderRIOT.java adapters/RDFWriterRIOT.java system/IO_JenaWriters.java

Author: andy
Date: Mon Mar 11 22:57:09 2013
New Revision: 1455357

URL: http://svn.apache.org/r1455357
Log:
Maximise model.writer(RDF?XML) compatibility by using old-style writers (so properties work).
Clean up.

Modified:
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterRIOT.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaWriters.java

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java?rev=1455357&r1=1455356&r2=1455357&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java Mon Mar 11 22:57:09 2013
@@ -18,17 +18,30 @@
 
 package org.apache.jena.riot.adapters;
 
+import com.hp.hpl.jena.n3.N3JenaWriter ;
+
 public class JenaReadersWriters
 {
-
-    // Yukky hack to integrate into current jena-core where the structure of model.read assumes
-    // the language is determined before the reading process starts.
     // Temporary - eventually, replace all model.read calls with the correct call to RIOT
     // and then the common RDFReaderRIOT can be used.
-    public static class RDFReaderRIOT_RDFXML extends RDFReaderRIOT   { public RDFReaderRIOT_RDFXML() { super("RDF/XML") ; } }
-    public static class RDFReaderRIOT_TTL extends RDFReaderRIOT      { public RDFReaderRIOT_TTL() { super("TTL") ; } }
-    public static class RDFReaderRIOT_NT extends RDFReaderRIOT       { public RDFReaderRIOT_NT() { super("N-TRIPLE") ; } }
-    public static class RDFReaderRIOT_RDFJSON extends RDFReaderRIOT  { public RDFReaderRIOT_RDFJSON() { super("RDF/JSON") ; } }
-
+    
+    public static class RDFReaderRIOT_RDFXML        extends RDFReaderRIOT   { public RDFReaderRIOT_RDFXML()     { super("RDF/XML") ; } }
+    public static class RDFReaderRIOT_TTL           extends RDFReaderRIOT   { public RDFReaderRIOT_TTL()        { super("TTL") ; } }
+    public static class RDFReaderRIOT_NT            extends RDFReaderRIOT   { public RDFReaderRIOT_NT()         { super("N-TRIPLE") ; } }
+    public static class RDFReaderRIOT_RDFJSON       extends RDFReaderRIOT   { public RDFReaderRIOT_RDFJSON()    { super("RDF/JSON") ; } }
+    
+    // Unused - we use the originsl RDF/XML writers directly to preserve property setting.  
+//    public static class RDFWriterRIOT_RDFXML        extends RDFWriterRIOT   { public RDFWriterRIOT_RDFXML()         { super("RDF/XML") ; } }
+//    public static class RDFWriterRIOT_RDFXMLAbbrev  extends RDFWriterRIOT   { public RDFWriterRIOT_RDFXMLAbbrev()   { super("RDF/XML-ABBREV") ; } }
+    public static class RDFWriterRIOT_NTriples      extends RDFWriterRIOT   { public RDFWriterRIOT_NTriples()       { super("N-TRIPLES") ; } }
+    public static class RDFWriterRIOT_N3            extends RDFWriterRIOT   { public RDFWriterRIOT_N3()             { super("N3") ; } }
+    public static class RDFWriterRIOT_N3_PP         extends RDFWriterRIOT   { public RDFWriterRIOT_N3_PP()          { super(N3JenaWriter.n3WriterPrettyPrinter) ; } }
+    public static class RDFWriterRIOT_N3Plain       extends RDFWriterRIOT   { public RDFWriterRIOT_N3Plain()        { super(N3JenaWriter.n3WriterPlain) ; } }
+    public static class RDFWriterRIOT_N3Triples     extends RDFWriterRIOT   { public RDFWriterRIOT_N3Triples()      { super(N3JenaWriter.n3WriterTriples) ; } }
+    public static class RDFWriterRIOT_N3TriplesAlt  extends RDFWriterRIOT   { public RDFWriterRIOT_N3TriplesAlt()   { super(N3JenaWriter.n3WriterTriplesAlt) ; } }
+    public static class RDFWriterRIOT_Turtle        extends RDFWriterRIOT   { public RDFWriterRIOT_Turtle()         { super(N3JenaWriter.turtleWriter) ; } }
+    public static class RDFWriterRIOT_Turtle1       extends RDFWriterRIOT   { public RDFWriterRIOT_Turtle1()        { super(N3JenaWriter.turtleWriterAlt1) ; } }
+    public static class RDFWriterRIOT_Turtle2       extends RDFWriterRIOT   { public RDFWriterRIOT_Turtle2()        { super(N3JenaWriter.turtleWriterAlt2) ; } }
+    public static class RDFWriterRIOT_RDFJSON       extends RDFWriterRIOT   { public RDFWriterRIOT_RDFJSON()        { super("RDF/JSON") ; } }
 }
 

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT.java?rev=1455357&r1=1455356&r2=1455357&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT.java Mon Mar 11 22:57:09 2013
@@ -38,18 +38,17 @@ public class RDFReaderRIOT implements RD
     private final String basename ; // This will be per reader instance.
     private final String hintlang ;
     private Context context = new Context() ;
-    
-    RDFErrorHandler errorHandler = new RDFDefaultErrorHandler();
+    private RDFErrorHandler errorHandler = new RDFDefaultErrorHandler();
     
     public RDFReaderRIOT()
     {
-        basename = "org.apache.jena.lang.generic" ;
+        basename = "org.apache.jena.riot.reader.generic" ;
         hintlang = null ;
     }
     
     public RDFReaderRIOT(String lang)
     {
-        basename = "org.apache.jena.lang."+lang.toLowerCase(Locale.ENGLISH) ;
+        basename = "org.apache.jena.riot.reader."+lang.toLowerCase(Locale.ENGLISH) ;
         hintlang = lang ;
     }
 

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterRIOT.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterRIOT.java?rev=1455357&r1=1455356&r2=1455357&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterRIOT.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterRIOT.java Mon Mar 11 22:57:09 2013
@@ -20,6 +20,7 @@ package org.apache.jena.riot.adapters;
 
 import java.io.OutputStream ;
 import java.io.Writer ;
+import java.util.Locale ;
 
 import org.apache.jena.riot.* ;
 import org.apache.jena.riot.system.IO_JenaWriters ;
@@ -29,22 +30,49 @@ import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.rdf.model.Model ;
 import com.hp.hpl.jena.rdf.model.RDFErrorHandler ;
 import com.hp.hpl.jena.rdf.model.RDFWriter ;
+import com.hp.hpl.jena.rdf.model.impl.RDFDefaultErrorHandler ;
 import com.hp.hpl.jena.sparql.util.Context ;
+import com.hp.hpl.jena.sparql.util.Symbol ;
 
 /** Adapter from RIOT to old style Jena RDFWriter. */
 public class RDFWriterRIOT implements RDFWriter 
 {
+    private final String basename ; 
     private final String jenaName ; 
     private Context context = new Context() ;
+    private WriterGraphRIOT writer ;
+    private RDFErrorHandler errorHandler = new RDFDefaultErrorHandler();
+    
+//    public RDFWriterRIOT() {
+//        this.basename = "org.apache.jena.riot.writer.generic" ;
+//        this.jenaName = null ;
+//        writer = writer() ;
+//    }
     
     public RDFWriterRIOT(String jenaName)
     { 
+        this.basename = "org.apache.jena.riot.writer."+jenaName.toLowerCase(Locale.ENGLISH) ;
         this.jenaName = jenaName ;
     }
     
-    //Initial late to avoid confusing exceptions during newInstance. 
+    //Initialize late to avoid confusing exceptions during newInstance. 
     private WriterGraphRIOT writer()
     {
+        if ( writer != null ) 
+            return writer ;
+        if ( jenaName == null )
+            throw new IllegalArgumentException("Jena writer name is null") ;
+        writer = setWriter() ;
+        return writer ;
+    }
+    
+    // Delayed lookup (avoid problems in newInstance). 
+    private WriterGraphRIOT setWriter()
+    {
+        if ( writer != null ) 
+            return writer ;
+        if ( jenaName == null )
+            throw new IllegalArgumentException("Jena writer name is null") ;
         RDFFormat format = IO_JenaWriters.getFormatForJenaWriter(jenaName) ;
         if ( format != null )
             return RDFDataMgr.createGraphWriter(format) ;
@@ -76,12 +104,16 @@ public class RDFWriterRIOT implements RD
     @Override
     public Object setProperty(String propName, Object propValue)
     {
-        return null ;
+        Symbol sym = Symbol.create(basename+propName) ;
+        Object oldObj = context.get(sym) ;
+        return oldObj ;
     }
-
+    
     @Override
     public RDFErrorHandler setErrorHandler(RDFErrorHandler errHandler)
     {
-        return null ;
+        RDFErrorHandler old = errorHandler ;
+        errorHandler = errHandler ;
+        return old ;
     }
 }

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaWriters.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaWriters.java?rev=1455357&r1=1455356&r2=1455357&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaWriters.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaWriters.java Mon Mar 11 22:57:09 2013
@@ -23,29 +23,15 @@ import java.util.HashMap ;
 import java.util.Map ;
 
 import org.apache.jena.riot.RDFFormat ;
-import org.apache.jena.riot.adapters.RDFWriterRIOT ;
 
 import com.hp.hpl.jena.Jena ;
 import com.hp.hpl.jena.n3.N3JenaWriter ;
 import com.hp.hpl.jena.rdf.model.impl.RDFWriterFImpl ;
 
+import static org.apache.jena.riot.adapters.JenaReadersWriters.* ;
+
 public class IO_JenaWriters
 {
-    // Jena writer adapters
-    // To adapters.JenaReadersWriters
-    public static class RDFWriterRIOT_RDFXML        extends RDFWriterRIOT   { public RDFWriterRIOT_RDFXML()         { super("RDF/XML") ; } }
-    public static class RDFWriterRIOT_RDFXMLAbbrev  extends RDFWriterRIOT   { public RDFWriterRIOT_RDFXMLAbbrev()   { super("RDF/XML-ABBREV") ; } }
-    public static class RDFWriterRIOT_NTriples      extends RDFWriterRIOT   { public RDFWriterRIOT_NTriples()       { super("N-TRIPLES") ; } }
-    public static class RDFWriterRIOT_N3            extends RDFWriterRIOT   { public RDFWriterRIOT_N3()             { super("N3") ; } }
-    public static class RDFWriterRIOT_N3_PP         extends RDFWriterRIOT   { public RDFWriterRIOT_N3_PP()          { super(N3JenaWriter.n3WriterPrettyPrinter) ; } }
-    public static class RDFWriterRIOT_N3Plain       extends RDFWriterRIOT   { public RDFWriterRIOT_N3Plain()        { super(N3JenaWriter.n3WriterPlain) ; } }
-    public static class RDFWriterRIOT_N3Triples     extends RDFWriterRIOT   { public RDFWriterRIOT_N3Triples()      { super(N3JenaWriter.n3WriterTriples) ; } }
-    public static class RDFWriterRIOT_N3TriplesAlt  extends RDFWriterRIOT   { public RDFWriterRIOT_N3TriplesAlt()   { super(N3JenaWriter.n3WriterTriplesAlt) ; } }
-    public static class RDFWriterRIOT_Turtle        extends RDFWriterRIOT   { public RDFWriterRIOT_Turtle()         { super(N3JenaWriter.turtleWriter) ; } }
-    public static class RDFWriterRIOT_Turtle1       extends RDFWriterRIOT   { public RDFWriterRIOT_Turtle1()        { super(N3JenaWriter.turtleWriterAlt1) ; } }
-    public static class RDFWriterRIOT_Turtle2       extends RDFWriterRIOT   { public RDFWriterRIOT_Turtle2()        { super(N3JenaWriter.turtleWriterAlt2) ; } }
-    public static class RDFWriterRIOT_RDFJSON       extends RDFWriterRIOT   { public RDFWriterRIOT_RDFJSON()        { super("RDF/JSON") ; } }
-    
     private static Map<String, RDFFormat> mapJenaNameToFormat               = new HashMap<String, RDFFormat>() ;
 
     /** return the RDFFormat for the existing Jena writer name, or null */ 
@@ -77,15 +63,18 @@ public class IO_JenaWriters
         setFormatForJenaWriter("RDF/JSON",                          RDFFormat.RDFJSON) ;
         setFormatForJenaWriter("RDFJSON",                           RDFFormat.RDFJSON) ;
         
-//        RDFWriterFImpl.LANGS
-//        RDFWriterFImpl.DEFAULTWRITER
-        registerForModelWrite("RDF/XML",            RDFWriterRIOT_RDFXML.class) ;
-        registerForModelWrite("RDF/XML-ABBREV",     RDFWriterRIOT_RDFXMLAbbrev.class) ;
-        registerForModelWrite("N-TRIPLE",           RDFWriterRIOT_NTriples.class) ;
-        registerForModelWrite("N-TRIPLES",          RDFWriterRIOT_NTriples.class) ;
-        registerForModelWrite("N-Triples",          RDFWriterRIOT_NTriples.class) ;
-        registerForModelWrite("NT",                 RDFWriterRIOT_NTriples.class) ;
-        registerForModelWrite("N3",                 RDFWriterRIOT_N3.class) ;
+        //registerForModelWrite("RDF/XML",                            RDFWriterRIOT_RDFXML.class) ;
+        //registerForModelWrite("RDF/XML-ABBREV",                     RDFWriterRIOT_RDFXMLAbbrev.class) ;
+        
+        // Use the original classes so that setting properties works transparently.
+        registerForModelWrite("RDF/XML",                            com.hp.hpl.jena.xmloutput.impl.Basic.class) ;
+        registerForModelWrite("RDF/XML-ABBREV",                     com.hp.hpl.jena.xmloutput.impl.Abbreviated.class) ;
+        
+        registerForModelWrite("N-TRIPLE",                           RDFWriterRIOT_NTriples.class) ;
+        registerForModelWrite("N-TRIPLES",                          RDFWriterRIOT_NTriples.class) ;
+        registerForModelWrite("N-Triples",                          RDFWriterRIOT_NTriples.class) ;
+        registerForModelWrite("NT",                                 RDFWriterRIOT_NTriples.class) ;
+        registerForModelWrite("N3",                                 RDFWriterRIOT_N3.class) ;
         
         registerForModelWrite(N3JenaWriter.n3WriterPrettyPrinter,   RDFWriterRIOT_N3_PP.class) ;
         registerForModelWrite(N3JenaWriter.n3WriterPlain,           RDFWriterRIOT_N3Plain.class) ;