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; }
