Repository: jena
Updated Branches:
  refs/heads/master 316772cee -> 0b506715c


JENA-1168 : Add support for old-style writer properties.

This applied to writers run by RIOT via an adapter.
Currently that's the XML writers.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/0b506715
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/0b506715
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/0b506715

Branch: refs/heads/master
Commit: 0b506715c64a086b85565e8b01c0a87ef5e4d044
Parents: 316772c
Author: Andy Seaborne <[email protected]>
Authored: Fri Apr 22 19:16:25 2016 +0100
Committer: Andy Seaborne <[email protected]>
Committed: Fri Apr 22 19:16:25 2016 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/jena/riot/SysRIOT.java | 13 ++++-------
 .../jena/riot/adapters/AdapterRDFWriter.java    | 18 +++++++++++++++
 .../jena/riot/adapters/RDFWriterRIOT.java       | 24 ++++++--------------
 3 files changed, 30 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/0b506715/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java 
b/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java
index f19417f..33c5b52a 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java
@@ -19,8 +19,8 @@
 package org.apache.jena.riot;
 
 import org.apache.jena.atlas.lib.IRILib ;
-import org.apache.jena.base.Sys ;
 import org.apache.jena.riot.system.IRIResolver ;
+import org.apache.jena.sparql.util.Symbol ;
 import org.apache.jena.util.FileUtils ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
@@ -39,14 +39,11 @@ public class SysRIOT
      * where the unnormalized part is in a prefix name changes the outcome.
      * Jena has always normalized abolute URIs.  
      */
-    public static boolean AbsURINoNormalization       = false ;
-    public static final String BNodeGenIdPrefix       = "genid" ;
+    public static final boolean AbsURINoNormalization   = false ;
+    public static final String BNodeGenIdPrefix         = "genid" ;
     
-    /**
-     * @deprecated Use Sys.isWindows
-     */
-    @Deprecated
-    public static final boolean isWindows = Sys.isWindows ;
+    /** Context key for old style RDFWriter properties */ 
+    public static final Symbol rdfWriterProperties      = 
Symbol.create("riot.rdfWriter_properties") ;
     
     public static void setStrictMode(boolean state) {
         SysRIOT.strictMode = state ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0b506715/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterRDFWriter.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterRDFWriter.java 
b/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterRDFWriter.java
index 5b20348..4eae2e5 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterRDFWriter.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterRDFWriter.java
@@ -20,11 +20,14 @@ package org.apache.jena.riot.adapters;
 
 import java.io.OutputStream ;
 import java.io.Writer ;
+import java.util.Map ;
 
+import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.rdf.model.ModelFactory ;
 import org.apache.jena.rdf.model.RDFWriter ;
 import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.SysRIOT ;
 import org.apache.jena.riot.system.PrefixMap ;
 import org.apache.jena.riot.writer.WriterGraphRIOTBase ;
 import org.apache.jena.sparql.util.Context ;
@@ -41,6 +44,7 @@ public abstract class AdapterRDFWriter extends 
WriterGraphRIOTBase
     public void write(Writer out, Graph graph, PrefixMap prefixMap, String 
baseURI, Context context)
     {
         RDFWriter w = create() ;
+        setProperties(w, context) ;
         w.write(ModelFactory.createModelForGraph(graph), out, baseURI) ;
     }
 
@@ -48,7 +52,21 @@ public abstract class AdapterRDFWriter extends 
WriterGraphRIOTBase
     public void write(OutputStream out, Graph graph, PrefixMap prefixMap, 
String baseURI, Context context)
     {
         RDFWriter w = create() ;
+        setProperties(w, context) ;
         w.write(ModelFactory.createModelForGraph(graph), out, baseURI) ;
     }
+    
+    private static void setProperties(RDFWriter w, Context context) {
+        try { 
+            @SuppressWarnings("unchecked")
+            Map<String, Object> p = (Map<String, 
Object>)(context.get(SysRIOT.rdfWriterProperties)) ;
+            if ( p != null )
+                p.forEach((k,v) -> w.setProperty(k, v)) ;
+        } catch (Throwable ex) {
+            Log.warn(AdapterRDFWriter.class, "Problem setting properties", ex);
+        }
+    }
+
+
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/0b506715/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterRIOT.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterRIOT.java 
b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterRIOT.java
index 3c9d53d..59a4b71 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterRIOT.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterRIOT.java
@@ -20,7 +20,9 @@ package org.apache.jena.riot.adapters;
 
 import java.io.OutputStream ;
 import java.io.Writer ;
+import java.util.HashMap ;
 import java.util.Locale ;
+import java.util.Map ;
 
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.rdf.model.Model ;
@@ -39,35 +41,21 @@ public class RDFWriterRIOT implements RDFWriter
     private final String basename ; 
     private final String jenaName ; 
     private Context context = new Context() ;
+    private Map<String, Object> properties = new HashMap<>() ;
     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.ROOT);
         this.jenaName = jenaName;
+        context.put(SysRIOT.rdfWriterProperties, properties);
     }
 
-    // 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;
-    }
-
-    private WriterGraphRIOT setWriter() {
-        if ( writer != null )
-            return writer;
-        if ( jenaName == null )
-            throw new IllegalArgumentException("Jena writer name is null");
         // For writing via model.write(), use the old names for jena writers.
         RDFFormat format = RDFWriterRegistry.getFormatForJenaWriter(jenaName) ;
         if ( format != null )
@@ -96,8 +84,10 @@ public class RDFWriterRIOT implements RDFWriter
 
     @Override
     public Object setProperty(String propName, Object propValue) {
-        Symbol sym = Symbol.create(basename + propName);
+        Symbol sym = Symbol.create(basename + "#" + propName);
         Object oldObj = context.get(sym);
+        context.set(sym, propValue);
+        properties.put(propName, propValue) ;
         return oldObj;
     }
 

Reply via email to