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 2015/09/21 18:39:10 UTC

[1/8] jena git commit: javadoc

Repository: jena
Updated Branches:
  refs/heads/Jena-1029_subsystem f30b75c45 -> b0e86257f


javadoc

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

Branch: refs/heads/Jena-1029_subsystem
Commit: 04b665aba0beb117ff46abb4e0cbb59cb68266b5
Parents: f30b75c
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Sep 19 15:05:07 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Sep 19 15:05:07 2015 +0100

----------------------------------------------------------------------
 .../org/apache/jena/system/JenaSubsystemLifecycle.java  |  2 +-
 .../org/apache/jena/system/JenaSubsystemRegistry.java   | 12 +++++-------
 2 files changed, 6 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/04b665ab/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemLifecycle.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemLifecycle.java b/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemLifecycle.java
index a3cd771..3587d79 100644
--- a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemLifecycle.java
+++ b/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemLifecycle.java
@@ -21,7 +21,7 @@ package org.apache.jena.system;
 /** Lifecycle interface for jena modules and subsystems. */ 
 public interface JenaSubsystemLifecycle {
     
-    /** start - a module should be ready to oeprate when this returns */  
+    /** start - a module should be ready to operate when this returns */  
     public void start() ;
     
     /** stop - a module should have preformed any shutdown operations by the time this returns */   

http://git-wip-us.apache.org/repos/asf/jena/blob/04b665ab/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java b/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java
index f052ee3..214d55a 100644
--- a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java
+++ b/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java
@@ -22,24 +22,21 @@ import java.util.List ;
 
 /**
  * A {@code JenaSubsystemRegistry} is a set of objects implementing {@link JenaSubsystemLifecycle}.
- * <p>
- * It is a set - at most one entry.
- * <p>Discovered in some way.
  */
 public interface JenaSubsystemRegistry {
     
     /** Load - peform some kinds of search for {@link JenaSubsystemLifecycle} implementations.
-     * This is called once only.
+     * This is called once in the initialization process.
      */
     public void load();
     
-    /** Add to the colection. */
+    /** Add to the collection. */
     public void add(JenaSubsystemLifecycle module);
 
     /** check whether registered */
     public boolean isRegistered(JenaSubsystemLifecycle module);
 
-    /** Remove from the colection. */
+    /** Remove from the collection. */
     public void remove(JenaSubsystemLifecycle module);
 
     public int size();
@@ -47,9 +44,10 @@ public interface JenaSubsystemRegistry {
     public boolean isEmpty();
 
     /**
-     * Return the registered items a copied list.
+     * Return the registered items in a copied list.
      * The list is detached from the
      * registry and the caller can mutate it.
+     * There is no specific ordering requirement. 
      */
     public List<JenaSubsystemLifecycle> snapshot();
 


[3/8] jena git commit: Typo

Posted by an...@apache.org.
Typo


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

Branch: refs/heads/Jena-1029_subsystem
Commit: 536cc83114c2ff1d9cd1921a903a15353fb70150
Parents: 740e1b4
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Sep 20 14:58:03 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Sep 20 14:58:03 2015 +0100

----------------------------------------------------------------------
 jena-core/src/main/java/org/apache/jena/system/JenaSystem.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/536cc831/jena-core/src/main/java/org/apache/jena/system/JenaSystem.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/system/JenaSystem.java b/jena-core/src/main/java/org/apache/jena/system/JenaSystem.java
index f29fa65..fae4c0b 100644
--- a/jena-core/src/main/java/org/apache/jena/system/JenaSystem.java
+++ b/jena-core/src/main/java/org/apache/jena/system/JenaSystem.java
@@ -80,7 +80,7 @@ public class JenaSystem {
         // Net effect:
         // After a top level call of JenaSystem.init() returns, tjena has
         // finishes initialization.
-        // Rececursive calls do not have this property.
+        // Recursive calls do not have this property.
 
         if ( initialized )
             return ;


[5/8] jena git commit: JENA-1033 : Rework RDFReaderFImpl/RDFWriterFImpl and RIOT integration.

Posted by an...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFWriterFImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFWriterFImpl.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFWriterFImpl.java
index 7e0552b..7f52dc9 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFWriterFImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFWriterFImpl.java
@@ -18,140 +18,146 @@
 
 package org.apache.jena.rdf.model.impl;
 
-import java.util.Arrays;
-import java.util.Properties;
-
-import org.apache.jena.* ;
-import org.apache.jena.n3.N3JenaWriter ;
-import org.apache.jena.rdf.model.* ;
-import org.apache.jena.shared.* ;
+import java.util.LinkedHashMap;
+import java.util.Map;
 
+import org.apache.jena.atlas.logging.Log ;
+import org.apache.jena.n3.N3JenaWriter;
+import org.apache.jena.rdf.model.RDFWriter;
+import org.apache.jena.rdf.model.RDFWriterF;
+import org.apache.jena.shared.ConfigException;
+import org.apache.jena.shared.JenaException;
+import org.apache.jena.shared.NoWriterForLangException ;
 
 /**
  */
 public class RDFWriterFImpl extends Object implements RDFWriterF {
-
-    protected static Properties langToClassName = null;
-
-    // predefined languages - these should probably go in a properties file
-
-    protected static final String LANGS[] =
-        { "RDF/XML",
-          "RDF/XML-ABBREV",
-          
-          "N-TRIPLE",
-          "N-TRIPLES",
-          "N-Triples",
-          
-          "N3",
-          N3JenaWriter.n3WriterPrettyPrinter,
-          N3JenaWriter.n3WriterPlain,
-          N3JenaWriter.n3WriterTriples,
-          N3JenaWriter.n3WriterTriplesAlt,
-          
-          N3JenaWriter.turtleWriter,
-          N3JenaWriter.turtleWriterAlt1, 
-          N3JenaWriter.turtleWriterAlt2 
-        };
-    // default readers for each language
-
-    protected static final String DEFAULTWRITERS[] =
-        {
-            org.apache.jena.rdfxml.xmloutput.impl.Basic.class.getName(),
-            org.apache.jena.rdfxml.xmloutput.impl.Abbreviated.class.getName(),
-            
-            org.apache.jena.rdf.model.impl.NTripleWriter.class.getName(),
-            org.apache.jena.rdf.model.impl.NTripleWriter.class.getName(),
-            org.apache.jena.rdf.model.impl.NTripleWriter.class.getName(),
-            
-            org.apache.jena.n3.N3JenaWriter.class.getName(),
-            org.apache.jena.n3.N3JenaWriterPP.class.getName(),
-            org.apache.jena.n3.N3TurtleJenaWriter.class.getName(),   // Write Turtle to ensure safe round tripping.
-            org.apache.jena.n3.N3TurtleJenaWriter.class.getName(),   // Ditto.
-            org.apache.jena.n3.N3JenaWriterTriples.class.getName(),     
-
-            org.apache.jena.n3.N3TurtleJenaWriter.class.getName(),      // Alternative names for Turtle
-            org.apache.jena.n3.N3TurtleJenaWriter.class.getName(),
-            org.apache.jena.n3.N3TurtleJenaWriter.class.getName()
-             };
-
-    protected static final String DEFAULTLANG = LANGS[0];
-
-    protected static final String PROPNAMEBASE = Jena.PATH + ".writer.";
-
-    static { // static initializer - set default readers
-    	reset();
+    public static final String DEFAULTLANG = "RDF/XML";
+    private static Map<String, Class<? extends RDFWriter>> custom = new LinkedHashMap<>();
+    private static RDFWriterF rewiredAlternative = null ;
+    /** Rewire to use an external RDFWriterF (typically, RIOT).
+     * Set to null to use old jena-core setup.
+     * @param other
+     */
+    public static void alternative(RDFWriterF other) {
+        rewiredAlternative = other ;
     }
     
-    private static void reset() {
-    	Properties newLangToClassName = new Properties();
-        for (int i = 0; i < LANGS.length; i++) {
-        	newLangToClassName.setProperty(
-                LANGS[i],
-                JenaRuntime.getSystemProperty(PROPNAMEBASE + LANGS[i], DEFAULTWRITERS[i]));
-        }
-        // do the setup all at once.
-        langToClassName = newLangToClassName;  	
-    }
-    
-    private static String remove( String lang) throws IllegalArgumentException {
-    	if (Arrays.asList( LANGS ).contains( lang ))
-    	{
-    		throw new IllegalArgumentException( lang+" is a required language set in initialization");
-    	}
-    	Object prev = langToClassName.remove(lang);
-    	return prev==null?null:prev.toString();  	
-    }
-
     /** Creates new RDFReaderFImpl */
-    public RDFWriterFImpl() {
-    }
+    public RDFWriterFImpl() {}
 
     @Override
-    public RDFWriter getWriter()  {
+    public RDFWriter getWriter() {
         return getWriter(DEFAULTLANG);
     }
 
     @Override
-    public RDFWriter getWriter(String lang)  {
-
-        // setup default language
-        if (lang == null || lang.equals("")) {
-            lang = LANGS[0];
-        }
-
-        String className = langToClassName.getProperty(lang);
-        if (className == null || className.equals("")) {
-            throw new NoWriterForLangException( lang );
-        }
+    public RDFWriter getWriter(String lang) {
+        // If RIOT ->
+        if ( rewiredAlternative != null )
+            return rewiredAlternative.getWriter(lang) ;
+        if (lang==null || lang.equals(""))
+            lang = DEFAULTLANG ;
+        Class<? extends RDFWriter> c = custom.get(lang);
+        if ( c == null )
+            throw new NoWriterForLangException("Writer not found: " + lang);
         try {
-            return (RDFWriter) Class.forName(className).newInstance();
-        } catch (Exception e) {
-            if ( e instanceof JenaException )
-                throw (JenaException)e ;
+            return c.newInstance();
+        }
+        catch (InstantiationException | IllegalAccessException e) {
             throw new JenaException(e);
         }
     }
 
+    /**
+     * Use RIOT to add custom RDF parsers. See
+     * {@code RDFWriterRegistry.registerLang}
+     * 
+     * @deprecated Register with RIOT.
+     */
     @Override
+    @Deprecated
     public String setWriterClassName(String lang, String className) {
-    	return setBaseWriterClassName(lang, className);
+        return setBaseWriterClassName(lang, className);
     }
 
+    /**
+     * Use RIOT to add custom RDF parsers. See
+     * {@code RDFWriterRegistry.registerLang}
+     * 
+     * @deprecated Register with RIOT.
+     */
+    @Deprecated
     public static String setBaseWriterClassName(String lang, String className) {
-        String oldClassName = langToClassName.getProperty(lang);
-        langToClassName.setProperty(lang, className);
-        return oldClassName;
+        if ( rewiredAlternative != null )
+            Log.fatal(RDFWriterFImpl.class, "Rewired RDFWriterFImpl2 - configuration changes have no effect on writing");
+        String oldClassName = currentEntry(lang);
+        try {
+            @SuppressWarnings("unchecked")
+            Class<? extends RDFWriter> newClass = (Class<? extends RDFWriter>)Class.forName(className, false,
+                                                                                            Thread.currentThread().getContextClassLoader());
+            custom.put(lang, newClass);
+            return oldClassName;
+        }
+        catch (ClassNotFoundException e) {
+            throw new ConfigException("Reader not found on classpath", e);
+        }
+        catch (Exception e) {
+            throw new JenaException(e);
+        }
+    }
+
+    @Override
+    public void resetRDFWriterF() {
+        reset();
+    }
+
+    @Override
+    public String removeWriter(String lang) throws IllegalArgumentException {
+        return remove(lang);
     }
 
-	@Override
-	public void resetRDFWriterF() {
-		reset();
-	}
+    static { // static initializer - set default readers
+        reset();
+    }
 
-	@Override
-	public String removeWriter(String lang) throws IllegalArgumentException {
-		return remove(lang);
-	}
+    private static void reset() {
+        Class<? extends RDFWriter> rdfxmlWriter = org.apache.jena.rdfxml.xmloutput.impl.Basic.class;
+        Class<? extends RDFWriter> rdfxmlAbbrevWriter = org.apache.jena.rdfxml.xmloutput.impl.Abbreviated.class;
+        Class<? extends RDFWriter> ntWriter = org.apache.jena.rdf.model.impl.NTripleWriter.class;
+        Class<? extends RDFWriter> ttlWriter = org.apache.jena.n3.N3TurtleJenaWriter.class;
+
+        custom.put("RDF/XML", rdfxmlWriter);
+        custom.put("RDF/XML-ABBREV", rdfxmlAbbrevWriter);
+
+        custom.put("N-TRIPLE", ntWriter);
+        custom.put("N-TRIPLES", ntWriter);
+        custom.put("N-Triples", ntWriter);
+
+        custom.put("N3", org.apache.jena.n3.N3JenaWriter.class);
+        custom.put(N3JenaWriter.n3WriterPrettyPrinter, org.apache.jena.n3.N3JenaWriterPP.class);
+        custom.put(N3JenaWriter.n3WriterPlain, org.apache.jena.n3.N3JenaWriterPP.class);
+        custom.put(N3JenaWriter.n3WriterTriples, ttlWriter);
+        custom.put(N3JenaWriter.n3WriterTriplesAlt, org.apache.jena.n3.N3JenaWriterTriples.class);
+
+        custom.put(N3JenaWriter.turtleWriter, ttlWriter);
+        custom.put(N3JenaWriter.turtleWriterAlt1, ttlWriter);
+        custom.put(N3JenaWriter.turtleWriterAlt2, ttlWriter);
+    }
 
+    private static String currentEntry(String lang) {
+        Class<? extends RDFWriter> oldClass = custom.get(lang);
+        if ( oldClass != null )
+            return oldClass.getName();
+        else
+            return null;
+    }
+
+    private static String remove(String lang) {
+        if ( rewiredAlternative != null )
+            Log.fatal(RDFWriterFImpl.class, "Rewired RDFWriterFImpl2 - configuration changes have no effect on writing");
+        String oldClassName = currentEntry(lang);
+        custom.remove(lang);
+        return oldClassName;
+    }
 }


[4/8] jena git commit: Update to Jena 3.0.1 development

Posted by an...@apache.org.
Update to Jena 3.0.1 development


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

Branch: refs/heads/Jena-1029_subsystem
Commit: 852569a2a80814da99d364f003a635ed594183d2
Parents: 536cc83
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Sep 20 14:58:32 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Sep 20 14:58:32 2015 +0100

----------------------------------------------------------------------
 apache-jena-osgi/jena-osgi-test/pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/852569a2/apache-jena-osgi/jena-osgi-test/pom.xml
----------------------------------------------------------------------
diff --git a/apache-jena-osgi/jena-osgi-test/pom.xml b/apache-jena-osgi/jena-osgi-test/pom.xml
index d22e728..2e63b54 100644
--- a/apache-jena-osgi/jena-osgi-test/pom.xml
+++ b/apache-jena-osgi/jena-osgi-test/pom.xml
@@ -21,12 +21,12 @@ limitations under the License.
   <parent>
     <groupId>org.apache.jena</groupId>
     <artifactId>jena-parent</artifactId>
-    <version>13-SNAPSHOT</version>
+    <version>15-SNAPSHOT</version>
     <relativePath>../../jena-parent</relativePath>
   </parent> 
 
   <artifactId>jena-osgi-test</artifactId>
-  <version>3.0.0-SNAPSHOT</version>
+  <version>3.0.1-SNAPSHOT</version>
   <name>Apache Jena - OSGi integration tests</name>
   <description>Tests for jena-osgi as a bundle</description>
   <packaging>bundle</packaging>


[6/8] jena git commit: JENA-1033 : Rework RDFReaderFImpl/RDFWriterFImpl and RIOT integration.

Posted by an...@apache.org.
JENA-1033 : Rework RDFReaderFImpl/RDFWriterFImpl and RIOT integration.

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

Branch: refs/heads/Jena-1029_subsystem
Commit: e214ba27f149ae49f0a0e767bda6be4945681a73
Parents: 852569a
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Sep 21 17:12:40 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Sep 21 17:12:40 2015 +0100

----------------------------------------------------------------------
 .../arq/examples/riot/ExRIOT_5.java             |  22 +-
 .../arq/examples/riot/ExRIOT_out3.java          |  12 +-
 .../main/java/org/apache/jena/riot/IO_Jena.java |  31 +--
 .../org/apache/jena/riot/RDFWriterRegistry.java |  39 +++-
 .../jena/riot/adapters/JenaReadersWriters.java  |  50 -----
 .../riot/adapters/RDFReaderFactoryRIOT.java     |  53 ++---
 .../jena/riot/adapters/RDFReaderRIOT.java       |   2 +-
 .../jena/riot/adapters/RDFReaderRIOT_ARP.java   |  94 --------
 .../jena/riot/adapters/RDFReaderRIOT_CSV.java   |  62 ------
 .../jena/riot/adapters/RDFReaderRIOT_Web.java   |  99 ---------
 .../riot/adapters/RDFWriterFactoryRIOT.java     |  53 +++++
 .../jena/riot/adapters/RDFWriterRIOT.java       |  92 ++++----
 .../apache/jena/riot/system/IO_JenaReaders.java |  76 +++----
 .../apache/jena/riot/system/IO_JenaWriters.java | 122 ++--------
 .../jena/riot/system/TestIO_JenaReaders.java    |  97 ++++----
 .../jena/riot/system/TestIO_JenaWriters.java    | 111 ++++------
 .../jena/riot/writer/TestJenaWriters.java       |   6 +-
 .../apache/jena/rdf/model/impl/ModelCom.java    |   7 +-
 .../jena/rdf/model/impl/RDFReaderFImpl.java     | 218 +++++++++---------
 .../jena/rdf/model/impl/RDFWriterFImpl.java     | 222 ++++++++++---------
 20 files changed, 548 insertions(+), 920 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src-examples/arq/examples/riot/ExRIOT_5.java
----------------------------------------------------------------------
diff --git a/jena-arq/src-examples/arq/examples/riot/ExRIOT_5.java b/jena-arq/src-examples/arq/examples/riot/ExRIOT_5.java
index cdad38e..ed8095c 100644
--- a/jena-arq/src-examples/arq/examples/riot/ExRIOT_5.java
+++ b/jena-arq/src-examples/arq/examples/riot/ExRIOT_5.java
@@ -22,6 +22,7 @@ import java.io.InputStream ;
 import java.io.Reader ;
 import java.util.Iterator ;
 
+import org.apache.jena.atlas.logging.LogCtl ;
 import org.apache.jena.atlas.web.ContentType ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.graph.Triple ;
@@ -38,9 +39,11 @@ import org.apache.jena.sparql.sse.SSE ;
 import org.apache.jena.sparql.sse.builders.BuilderGraph ;
 import org.apache.jena.sparql.util.Context ;
 
-/** Example of using RIOT : register a new language */
+/** Example of using RIOT : register a new input language */
 public class ExRIOT_5
 {
+    static { LogCtl.setCmdLogging(); }
+    
     public static void main(String... argv) {
         Lang lang = LangBuilder.create("SSE", "text/x-sse").addFileExtensions("rsse").build() ;
         // This just registers the name, not the parser.
@@ -51,21 +54,18 @@ public class ExRIOT_5
         RDFParserRegistry.registerLangTriples(lang, factory) ;
 
         // use it ...
-        String filename = "data.rsse" ;
+        String filename = "/home/afs/tmp/data.rsse" ;
         // model.read(filename)
+        System.out.println("## -- RDFDataMgr.loadModel") ;
         Model model = RDFDataMgr.loadModel(filename) ;
 
         // print results.
-        model.write(System.out, "TTL") ;
-
-        // Optional extra:
-        // If needed to set or override the syntax, register the name explicitly
-        // ...
-        System.out.println("## --") ;
-        IO_Jena.registerForModelRead("SSE", RDFReaderSSE.class) ;
-        // and use read( , "SSE")
+        RDFDataMgr.write(System.out, model, Lang.TTL) ;
+
+        System.out.println("## -- Model.read") ;
+        // Model.read( , "SSE")
         Model model2 = ModelFactory.createDefaultModel().read(filename, "SSE") ;
-        model2.write(System.out, "TTL") ;
+        RDFDataMgr.write(System.out, model2, Lang.TTL) ;
     }
 
     static class SSEReaderFactory implements ReaderRIOTFactory

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src-examples/arq/examples/riot/ExRIOT_out3.java
----------------------------------------------------------------------
diff --git a/jena-arq/src-examples/arq/examples/riot/ExRIOT_out3.java b/jena-arq/src-examples/arq/examples/riot/ExRIOT_out3.java
index 7c74cb9..ac7c26e 100644
--- a/jena-arq/src-examples/arq/examples/riot/ExRIOT_out3.java
+++ b/jena-arq/src-examples/arq/examples/riot/ExRIOT_out3.java
@@ -22,6 +22,7 @@ import java.io.OutputStream ;
 import java.io.Writer ;
 
 import org.apache.jena.atlas.io.IndentedWriter ;
+import org.apache.jena.atlas.logging.LogCtl ;
 import org.apache.jena.graph.Graph ;
 import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.riot.* ;
@@ -35,6 +36,8 @@ import org.apache.jena.sparql.util.Context ;
 /** Example of registering a new writer with RIOT */
 public class ExRIOT_out3
 {
+    static { LogCtl.setCmdLogging(); }
+    
     // See also ExRIOT_5
     public static void main(String[] args)
     {
@@ -55,7 +58,7 @@ public class ExRIOT_out3
         RDFWriterRegistry.register(format, new SSEWriterFactory()) ;
 
         // ---- Use the register writer
-        Model model = RDFDataMgr.loadModel("D.ttl") ;
+        Model model = RDFDataMgr.loadModel("/home/afs/tmp/D.ttl") ;
         // Write
         System.out.println("## Write by format") ;
         RDFDataMgr.write(System.out, model, format) ;
@@ -63,11 +66,8 @@ public class ExRIOT_out3
         System.out.println("## Write by language") ;
         RDFDataMgr.write(System.out, model, lang) ;
         
-        // ---- Register for use with Model.read
-        // because naming is explicit, need to register an adapter.  
-        IO_Jena.registerForModelWrite("SSE", RDFWriterSSE.class) ;
-        
-        // and use it
+        // ---- Or use Model.write
+        System.out.println("## Write by Model.write") ;
         model.write(System.out, "SSE") ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java b/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java
index 4709b0c..e04e7e8 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java
@@ -18,40 +18,25 @@
 
 package org.apache.jena.riot ;
 
-import org.apache.jena.riot.adapters.AdapterFileManager ;
 import org.apache.jena.riot.system.IO_JenaReaders ;
 import org.apache.jena.riot.system.IO_JenaWriters ;
-import org.apache.jena.sparql.util.Symbol ;
-import org.apache.jena.util.FileManager ;
+import org.apache.jena.system.JenaSystem ;
 
 public class IO_Jena
 {
-    private static String      riotBase               = "http://jena.apache.org/riot/" ;
-    private static String      streamManagerSymbolStr = riotBase + "streammanager" ;
-    public static Symbol       streamManagerSymbol    = Symbol.create(streamManagerSymbolStr) ;
-    private static FileManager coreFileManager        = null ;
+    static { JenaSystem.init(); }
+    
+//    private static String      riotBase               = "http://jena.apache.org/riot/" ;
+//    private static String      streamManagerSymbolStr = riotBase + "streammanager" ;
+//    public static Symbol       streamManagerSymbol    = Symbol.create(streamManagerSymbolStr) ;
 
     public static void wireIntoJena() {
-        FileManager.setGlobalFileManager(AdapterFileManager.get()) ;
-        IO_JenaReaders.wireIntoJena() ;
-        IO_JenaWriters.wireIntoJena() ;
+       IO_JenaReaders.wireIntoJena() ;
+       IO_JenaWriters.wireIntoJena() ;
     }
 
     public static void resetJena() {
-        // This forces reinitialization if ever used.
-        FileManager.setGlobalFileManager(null) ;
         IO_JenaReaders.resetJena() ;
         IO_JenaWriters.resetJena() ;
     }
-
-    /** Register for use with Model.read (old style compatibility) */
-    public static void registerForModelRead(String name, Class<? > cls) {
-        IO_JenaReaders.registerForModelRead(name, cls) ;
-    }
-
-    /** Register for use with Model.write (old style compatibility) */
-    public static void registerForModelWrite(String name, Class<? > cls) {
-        IO_JenaWriters.registerForModelWrite(name, cls) ;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/main/java/org/apache/jena/riot/RDFWriterRegistry.java
----------------------------------------------------------------------
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 139c3fe..101b459 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
@@ -20,6 +20,7 @@ package org.apache.jena.riot;
 
 import java.util.* ;
 
+import org.apache.jena.n3.N3JenaWriter ;
 import org.apache.jena.riot.out.CharSpace ;
 import org.apache.jena.riot.out.JsonLDWriter ;
 import org.apache.jena.riot.system.RiotLib ;
@@ -36,10 +37,11 @@ public class RDFWriterRegistry
     // UTF-8 is universal - but UTF-8 is not the default in Java ("platform encoding" is).
     
     static { JenaSystem.init() ; }
-
+    
     private static Map<RDFFormat, WriterGraphRIOTFactory> registryGraph     = new HashMap<>() ;
     private static Map<RDFFormat, WriterDatasetRIOTFactory> registryDataset = new HashMap<>() ;
     private static Map<Lang, RDFFormat> langToFormat                        = new HashMap<>() ;
+    private static Map<String, RDFFormat> mapJenaNameToFormat               = new HashMap<>() ;
     
     // Writing a graph
     static WriterGraphRIOTFactory wgfactory = new WriterGraphRIOTFactory() {
@@ -208,6 +210,41 @@ public class RDFWriterRegistry
          register(RDFFormat.TRIX, wdsTriXFactory) ;
      }
     
+     // ---- Compatibility
+     
+     /** return the RDFFormat for the existing Jena writer name, or null */
+     public static RDFFormat getFormatForJenaWriter(String jenaName) {
+         return mapJenaNameToFormat.get(jenaName);
+     }
+
+     /** Register an RDFFormat for a Jena writer name */
+     private /*public*/ static void setFormatForJenaWriter(String jenaName, RDFFormat format) {
+         mapJenaNameToFormat.put(jenaName, format);
+     }
+
+     /** Return a collection of Jena writer names */
+     public static Collection<String> getJenaWriterNames() {
+         return mapJenaNameToFormat.keySet();
+     }
+
+     private static void setup() {
+         setFormatForJenaWriter("RDF/XML",                           RDFFormat.RDFXML_PLAIN) ;
+         setFormatForJenaWriter("RDF/XML-ABBREV",                    RDFFormat.RDFXML_ABBREV) ;
+         setFormatForJenaWriter("N-TRIPLE",                          RDFFormat.NTRIPLES) ;
+         setFormatForJenaWriter("NT",                                RDFFormat.NTRIPLES) ;
+         setFormatForJenaWriter("N-TRIPLES",                         RDFFormat.NTRIPLES) ;
+         setFormatForJenaWriter("N-Triples",                         RDFFormat.NTRIPLES) ;
+         setFormatForJenaWriter("N3",                                RDFFormat.TURTLE) ;
+         setFormatForJenaWriter(N3JenaWriter.n3WriterPrettyPrinter,  RDFFormat.TURTLE_PRETTY) ;
+         setFormatForJenaWriter(N3JenaWriter.n3WriterPlain,          RDFFormat.TURTLE_BLOCKS) ;
+         setFormatForJenaWriter(N3JenaWriter.n3WriterTriples,        RDFFormat.TURTLE_FLAT) ;
+         setFormatForJenaWriter(N3JenaWriter.n3WriterTriplesAlt,     RDFFormat.TURTLE_FLAT) ;
+         setFormatForJenaWriter(N3JenaWriter.turtleWriter,           RDFFormat.TURTLE) ;
+         setFormatForJenaWriter(N3JenaWriter.turtleWriterAlt1,       RDFFormat.TURTLE) ;
+         setFormatForJenaWriter(N3JenaWriter.turtleWriterAlt2,       RDFFormat.TURTLE) ;
+     }
+
+     
     /** Register the serialization for graphs and it's associated factory
      * @param serialization         RDFFormat for the output format.
      * @param graphWriterFactory    Source of writer engines

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java b/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java
deleted file mode 100644
index c92b05a..0000000
--- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/JenaReadersWriters.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * 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.adapters;
-
-import static org.apache.jena.riot.RDFLanguages.JSONLD ;
-import org.apache.jena.n3.N3JenaWriter ;
-
-public class JenaReadersWriters
-{
-    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_JSONLD        extends RDFReaderRIOT   { public RDFReaderRIOT_JSONLD()  { super(JSONLD.getName()) ; } }
-    public static class RDFReaderRIOT_RDFJSON       extends RDFReaderRIOT   { public RDFReaderRIOT_RDFJSON()    { super("RDF/JSON") ; } }
-    
-    // Unused - we use the original 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_JSONLD        extends RDFWriterRIOT   { public RDFWriterRIOT_JSONLD()         { super("JSON-LD") ; } }
-    public static class RDFWriterRIOT_JSONLDAlt     extends RDFWriterRIOT   { public RDFWriterRIOT_JSONLDAlt()      { super("JSONLD") ; } }
-    
-    public static class RDFWriterRIOT_RDFJSON       extends RDFWriterRIOT   { public RDFWriterRIOT_RDFJSON()        { super("RDF/JSON") ; } }
-}
-

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderFactoryRIOT.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderFactoryRIOT.java b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderFactoryRIOT.java
index da73306..b49ee9c 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderFactoryRIOT.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderFactoryRIOT.java
@@ -18,48 +18,37 @@
 
 package org.apache.jena.riot.adapters;
 
-import org.apache.jena.rdf.model.RDFReader ;
-import org.apache.jena.rdf.model.RDFReaderF ;
-import org.apache.jena.riot.Lang ;
-import org.apache.jena.riot.RDFLanguages ;
+import org.apache.jena.rdf.model.RDFReader;
+import org.apache.jena.rdf.model.RDFReaderF;
+import org.apache.jena.rdf.model.impl.RDFReaderFImpl;
 
-/** Adapter to old style Jena reader factory */ 
-public class RDFReaderFactoryRIOT implements RDFReaderF
-{
+/** Adapter to old style Jena reader factory */
+public class RDFReaderFactoryRIOT implements RDFReaderF {
     public RDFReaderFactoryRIOT() {}
-    
+
     @Override
-    public RDFReader getReader()
-    {
-        return new RDFReaderRIOT() ;
+    public RDFReader getReader() {
+        return getReader(RDFReaderFImpl.DEFAULTLANG);
     }
 
     @Override
-    public RDFReader getReader(String langname)
-    {
-        // If RDF/XML, then return an ARP 
-        
-        Lang lang = RDFLanguages.nameToLang(langname) ;
-        if ( RDFLanguages.RDFXML.equals(lang) )
-            return new RDFReaderRIOT_ARP() ;
-        return new RDFReaderRIOT(langname) ; 
+    public RDFReader getReader(String langname) {
+        // For RIOT, the language name is a hint.
+        return new RDFReaderRIOT(langname);
     }
 
     @Override
-    public String setReaderClassName(String lang, String className)
-    {
-        return null ;
+    public String setReaderClassName(String lang, String className) {
+        return null;
     }
 
-	@Override
-	public void resetRDFReaderF() {
-		// does nothing as the reader can not be modified.
-		
-	}
+    @Override
+    public void resetRDFReaderF() {
+        // does nothing as the reader can not be modified.
+    }
 
-	@Override
-	public String removeReader(String lang) throws IllegalArgumentException {
-		return null;
-	}
+    @Override
+    public String removeReader(String lang) throws IllegalArgumentException {
+        return null;
+    }
 }
-

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT.java b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT.java
index 9d34f0c..bf576da 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT.java
@@ -45,7 +45,7 @@ public class RDFReaderRIOT implements RDFReader {
     }
 
     public RDFReaderRIOT(String lang) {
-        this(RDFLanguages.nameToLang(lang)) ;
+        this(lang != null ? RDFLanguages.nameToLang(lang) : null) ;
     }
 
     public RDFReaderRIOT(Lang hintlang) {

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_ARP.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_ARP.java b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_ARP.java
deleted file mode 100644
index 4cc726f..0000000
--- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_ARP.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * 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.adapters;
-
-import java.io.InputStream ;
-import java.io.Reader ;
-
-import org.apache.jena.atlas.lib.IRILib ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.RDFErrorHandler ;
-import org.apache.jena.rdf.model.RDFReader ;
-import org.apache.jena.rdfxml.xmlinput.JenaReader ;
-import org.apache.jena.riot.SysRIOT ;
-import org.apache.jena.util.FileManager ;
-import org.apache.jena.util.FileUtils ;
-
-/** Adapter from Jena2 original style adapter for ARP - adds the file: */
-
-public class RDFReaderRIOT_ARP implements RDFReader
-{
-    // A FileManager sort out baseURIs for files.
-    static FileManager fileMgr = new FileManager() ;
-    static {
-        fileMgr.addLocatorFile() ;
-        fileMgr.addLocatorURL() ;
-    }
-    
-    JenaReader reader = new JenaReader() ;
-    
-    public RDFReaderRIOT_ARP() {}
-
-    @Override
-    public void read(Model model, Reader r, String base)
-    { reader.read(model, r, base) ; }
-
-    @Override
-    public void read(Model model, InputStream r, String base)
-    { reader.read(model, r, base) ; }
-    
-    @Override
-    public void read(Model model, String url)
-    {
-        url = fixupURL(url) ;
-        reader.read(model, url) ;
-    }
-
-    /** Sort out filename-like URLs: file:, X: and plain filename */ 
-    private static String fixupURL(String url)
-    {
-        String scheme = FileUtils.getScheme(url) ;
-
-        if ( scheme != null )
-        {
-            // Skip any scheme that is not file: and not a windows drive letter.
-            if ( ! scheme.equals("file") && ! isWindowsDrive(scheme) )
-                return url ;
-        }
-        return IRILib.filenameToIRI(url) ;
-    }
-    
-    private static boolean isWindowsDrive(String scheme)
-    {
-        return  (SysRIOT.isWindows && scheme.length() == 1) ;
-    }
-
-    @Override
-    public Object setProperty(String propName, Object propValue)
-    {
-        return reader.setProperty(propName, propValue) ;
-    }
-    
-    @Override
-    public RDFErrorHandler setErrorHandler(RDFErrorHandler errHandler)
-    {
-        return reader.setErrorHandler(errHandler) ;
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_CSV.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_CSV.java b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_CSV.java
deleted file mode 100644
index 07fffde..0000000
--- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_CSV.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.adapters;
-
-import java.io.InputStream;
-import java.io.Reader;
-
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.RDFErrorHandler ;
-import org.apache.jena.rdf.model.RDFReader ;
-
-public class RDFReaderRIOT_CSV implements RDFReader{
-
-	private RDFReader reader ;
-	public RDFReaderRIOT_CSV(){
-		reader = new RDFReaderRIOT("CSV");
-	}
-
-	@Override
-	public void read(Model model, Reader r, String base) {
-		reader.read(model, r, base);
-		
-	}
-
-	@Override
-	public void read(Model model, InputStream r, String base) {
-		reader.read(model, r, base);
-		
-	}
-
-	@Override
-	public void read(Model model, String url) {
-		reader.read(model, url);
-		
-	}
-
-	@Override
-	public Object setProperty(String propName, Object propValue) {
-		return reader.setProperty(propName, propValue);
-	}
-
-	@Override
-	public RDFErrorHandler setErrorHandler(RDFErrorHandler errHandler) {
-		return reader.setErrorHandler(errHandler);
-	}
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java
deleted file mode 100644
index 6d58bf7..0000000
--- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_Web.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * 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.adapters;
-
-import java.io.InputStream ;
-import java.io.Reader ;
-import java.util.Objects;
-
-import org.apache.jena.atlas.web.TypedInputStream ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.riot.Lang ;
-import org.apache.jena.riot.RDFDataMgr ;
-import org.apache.jena.riot.RDFLanguages ;
-import org.apache.jena.riot.WebContent ;
-import org.apache.jena.riot.system.stream.StreamManager ;
-import org.apache.jena.shared.NotFoundException ;
-
-/** This is a reader primarily for model.read(url)
- */ 
-public class RDFReaderRIOT_Web extends RDFReaderRIOT
-{
-    private static final String defaultSyntax = "RDF/XML" ;
-    
-    public RDFReaderRIOT_Web()
-    {
-        super(defaultSyntax) ;
-    }
-    
-    @SuppressWarnings("deprecation")
-    @Override
-    public void read(Model model, Reader r, String base)
-    { 
-        // model.read(Reader, baseURI)
-        startRead(model) ; 
-        RDFDataMgr.read(model, r, base, hintlang) ;
-        finishRead(model) ;
-    }
-
-    
-    @Override
-    public void read(Model model, InputStream r, String base)
-    {
-        // model.read(InputStream, baseURI)
-        startRead(model) ; 
-        RDFDataMgr.read(model, r, base, hintlang) ;
-        finishRead(model) ;
-    }
-    
-    @Override
-    public void read(Model model, String url)
-    {
-        // model.read(url)
-        TypedInputStream in = StreamManager.get().open(url) ;
-        if ( in == null )
-            throw new NotFoundException(url) ;
-        String contentType = in.getContentType() ;
-        
-        // Reading a URL, no hint language provided.
-        // Use the URL structure as the hint.
-        Lang lang = null ;
-        if ( ! Objects.equals(contentType, WebContent.contentTypeTextPlain) )
-            lang = RDFLanguages.contentTypeToLang(contentType) ; 
-        
-        if ( lang == null )
-            lang = RDFLanguages.filenameToLang(url) ;
-        
-        if ( lang == null )
-            lang = super.hintlang ;
-        
-        // Here, we want syntax determination to be:
-        // ctLang > fileExtLang > RDF/XML
-        //
-        // whereas RDFDataMgr.read(.. , lang) ;
-        // treats lang to override.
-                        
-        // ** 
-        
-        startRead(model) ;
-        RDFDataMgr.read(model, in, url, lang) ;
-        finishRead(model) ;
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterFactoryRIOT.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterFactoryRIOT.java b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterFactoryRIOT.java
new file mode 100644
index 0000000..7d6a730
--- /dev/null
+++ b/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFWriterFactoryRIOT.java
@@ -0,0 +1,53 @@
+/**
+ * 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.adapters;
+
+import org.apache.jena.rdf.model.RDFWriter;
+import org.apache.jena.rdf.model.RDFWriterF;
+
+/** Adapter to old style Jena writer factory */
+public class RDFWriterFactoryRIOT implements RDFWriterF {
+    public RDFWriterFactoryRIOT() {}
+
+    @Override
+    public RDFWriter getWriter() {
+        return getWriter(null);
+    }
+
+    @Override
+    public RDFWriter getWriter(String langname) {
+        return new RDFWriterRIOT(langname);
+    }
+
+    @Override
+    public String setWriterClassName(String lang, String className) {
+        return null;
+    }
+
+    @Override
+    public void resetRDFWriterF() {
+        // does nothing as the reader can not be modified.
+
+    }
+
+    @Override
+    public String removeWriter(String lang) {
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/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 f2b2340..3c9d53d 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
@@ -28,7 +28,6 @@ import org.apache.jena.rdf.model.RDFErrorHandler ;
 import org.apache.jena.rdf.model.RDFWriter ;
 import org.apache.jena.rdf.model.impl.RDFDefaultErrorHandler ;
 import org.apache.jena.riot.* ;
-import org.apache.jena.riot.system.IO_JenaWriters ;
 import org.apache.jena.riot.system.RiotLib ;
 import org.apache.jena.sparql.util.Context ;
 import org.apache.jena.sparql.util.Symbol ;
@@ -36,6 +35,7 @@ import org.apache.jena.sparql.util.Symbol ;
 /** Adapter from RIOT to old style Jena RDFWriter. */
 public class RDFWriterRIOT implements RDFWriter 
 {
+    // ---- Compatibility
     private final String basename ; 
     private final String jenaName ; 
     private Context context = new Context() ;
@@ -48,71 +48,63 @@ public class RDFWriterRIOT implements RDFWriter
 //        writer = writer() ;
 //    }
     
-    public RDFWriterRIOT(String jenaName)
-    { 
-        this.basename = "org.apache.jena.riot.writer."+jenaName.toLowerCase(Locale.ROOT) ;
-        this.jenaName = jenaName ;
+    public RDFWriterRIOT(String jenaName) {
+        this.basename = "org.apache.jena.riot.writer." + jenaName.toLowerCase(Locale.ROOT);
+        this.jenaName = jenaName;
     }
-    
-    //Initialize late to avoid confusing exceptions during newInstance. 
-    private WriterGraphRIOT writer()
-    {
-        if ( writer != null ) 
-            return writer ;
+
+    // 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 ;
+            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 ;
+
+    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) ;
+            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 )
             return RDFDataMgr.createGraphWriter(format) ;
-        // Try lang instead.
-        Lang lang = RDFLanguages.nameToLang(jenaName) ;
+        Lang lang = RDFLanguages.nameToLang(jenaName);
         if ( lang != null )
-            return RDFDataMgr.createGraphWriter(lang) ;
-        throw new RiotException("No graph writer for '"+jenaName+"'") ;
+            return RDFDataMgr.createGraphWriter(lang);
+        throw new RiotException("No graph writer for '" + jenaName + "'");
     }
-    
+
     @Override
-    public void write(Model model, Writer out, String base)
-    {
-        if (  base != null && base.equals("") )
-            base = null ;
-        Graph graph = model.getGraph() ;
-        writer().write(out, graph, RiotLib.prefixMap(graph), base, context) ;
+    public void write(Model model, Writer out, String base) {
+        if ( base != null && base.equals("") )
+            base = null;
+        Graph graph = model.getGraph();
+        writer().write(out, graph, RiotLib.prefixMap(graph), base, context);
     }
-
+    
     @Override
-    public void write(Model model, OutputStream out, String base)
-    {
+    public void write(Model model, OutputStream out, String base) {
         if ( base != null && base.equals("") )
-            base = null ;
-        Graph graph = model.getGraph() ;
-        writer().write(out, graph, RiotLib.prefixMap(graph), base, context) ;
+            base = null;
+        Graph graph = model.getGraph();
+        writer().write(out, graph, RiotLib.prefixMap(graph), base, context);
     }
 
     @Override
-    public Object setProperty(String propName, Object propValue)
-    {
-        Symbol sym = Symbol.create(basename+propName) ;
-        Object oldObj = context.get(sym) ;
-        return oldObj ;
+    public Object setProperty(String propName, Object propValue) {
+        Symbol sym = Symbol.create(basename + propName);
+        Object oldObj = context.get(sym);
+        return oldObj;
     }
-    
+
     @Override
-    public RDFErrorHandler setErrorHandler(RDFErrorHandler errHandler)
-    {
-        RDFErrorHandler old = errorHandler ;
-        errorHandler = errHandler ;
-        return old ;
+    public RDFErrorHandler setErrorHandler(RDFErrorHandler errHandler) {
+        RDFErrorHandler old = errorHandler;
+        errorHandler = errHandler;
+        return old;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaReaders.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaReaders.java b/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaReaders.java
index 0b5c3a0..5372539 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaReaders.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaReaders.java
@@ -19,63 +19,41 @@
 package org.apache.jena.riot.system;
 
 import org.apache.jena.rdf.model.impl.RDFReaderFImpl ;
-import org.apache.jena.riot.adapters.JenaReadersWriters ;
-import org.apache.jena.riot.adapters.RDFReaderRIOT_Web ;
-import org.apache.jena.sparql.util.Symbol ;
+import org.apache.jena.riot.adapters.AdapterFileManager ;
+import org.apache.jena.riot.adapters.RDFReaderFactoryRIOT ;
+import org.apache.jena.util.FileManager ;
 
 public class IO_JenaReaders
 {
-    private static String riotBase = "http://jena.apache.org/riot/" ; 
-    private static String streamManagerSymbolStr = riotBase+"streammanager" ; 
-    public static Symbol streamManagerSymbol = Symbol.create(streamManagerSymbolStr) ; 
+//    private static String riotBase = "http://jena.apache.org/riot/" ; 
+//    private static String streamManagerSymbolStr = riotBase+"streammanager" ; 
+//    public static Symbol streamManagerSymbol = Symbol.create(streamManagerSymbolStr) ; 
 
+    private static FileManager coreFileManager = null;
+    private static boolean     isWiredIn       = false;
+    
     public static void wireIntoJena() {
-        registerForModelRead("RDF",             RDFReaderRIOT_Web.class) ; // Default
-        registerForModelRead("RDF/XML",         JenaReadersWriters.RDFReaderRIOT_RDFXML.class) ;
-        registerForModelRead("RDF/XML-ABBREV",  JenaReadersWriters.RDFReaderRIOT_RDFXML.class) ;
-
-        registerForModelRead("N-TRIPLES",       JenaReadersWriters.RDFReaderRIOT_NT.class) ;
-        registerForModelRead("N-Triples",       JenaReadersWriters.RDFReaderRIOT_NT.class) ;
-        registerForModelRead("N-TRIPLE",        JenaReadersWriters.RDFReaderRIOT_NT.class) ;
-        registerForModelRead("N3",              JenaReadersWriters.RDFReaderRIOT_TTL.class) ;
-        registerForModelRead("TURTLE",          JenaReadersWriters.RDFReaderRIOT_TTL.class) ;
-        registerForModelRead("Turtle",          JenaReadersWriters.RDFReaderRIOT_TTL.class) ;
-        registerForModelRead("TTL",             JenaReadersWriters.RDFReaderRIOT_TTL.class) ;
-        registerForModelRead("JSON-LD",         JenaReadersWriters.RDFReaderRIOT_JSONLD.class) ;
-        registerForModelRead("JSONLD",          JenaReadersWriters.RDFReaderRIOT_JSONLD.class) ;
-        registerForModelRead("RDF/JSON",        JenaReadersWriters.RDFReaderRIOT_RDFJSON.class) ;
+        if ( isWiredIn )
+            return ;
+        isWiredIn = true ;
+        if ( coreFileManager == null )
+            coreFileManager = FileManager.get();
+        FileManager.setGlobalFileManager(AdapterFileManager.get());
+        RDFReaderFImpl.alternative(new RDFReaderFactoryRIOT());
     }
-    
-    static String jenaNTriplesReader = org.apache.jena.rdf.model.impl.NTripleReader.class.getName(); 
-    static String jenaTurtleReader = org.apache.jena.n3.turtle.TurtleReader.class.getName();
-    static String jenaN3Reader = jenaTurtleReader ;
-    static String jenaRDFReader = org.apache.jena.rdfxml.xmlinput.JenaReader.class.getName(); 
-    
-    public static void resetJena() {
-        RDFReaderFImpl.setBaseReaderClassName("RDF", jenaRDFReader) ;
-        RDFReaderFImpl.setBaseReaderClassName("RDF/XML", jenaRDFReader) ;
-        RDFReaderFImpl.setBaseReaderClassName("RDF/XML-ABBREV", jenaRDFReader) ;
-
-        RDFReaderFImpl.setBaseReaderClassName("N-TRIPLES", jenaNTriplesReader) ;
-        RDFReaderFImpl.setBaseReaderClassName("N-Triples", jenaNTriplesReader) ;
-        RDFReaderFImpl.setBaseReaderClassName("N-TRIPLE", jenaNTriplesReader) ;
 
-        RDFReaderFImpl.setBaseReaderClassName("N3", jenaTurtleReader) ;
-        RDFReaderFImpl.setBaseReaderClassName("TURTLE", jenaTurtleReader) ;
-        RDFReaderFImpl.setBaseReaderClassName("Turtle", jenaTurtleReader) ;
-        RDFReaderFImpl.setBaseReaderClassName("TTL", jenaTurtleReader) ;
-
-        RDFReaderFImpl.setBaseReaderClassName("JSON-LD", "") ;
-        RDFReaderFImpl.setBaseReaderClassName("JSONLD", "") ;
-
-        RDFReaderFImpl.setBaseReaderClassName("RDF/JSON", "") ;
-        RDFReaderFImpl.setBaseReaderClassName("RDFJSON", "") ;
+    public static void resetJena() {
+        if ( ! isWiredIn )
+            return ;
+        isWiredIn = false ;
+        RDFReaderFImpl.alternative(null);
+        // Or set to null - this forces reinitialization if ever used.
+        FileManager.setGlobalFileManager(coreFileManager) ;
     }
-    
+
     /** Register for use with Model.read (old style compatibility) */ 
-    public static void registerForModelRead(String name, Class<?> cls)
-    {
-        RDFReaderFImpl.setBaseReaderClassName(name, cls.getName()) ;
+    @Deprecated
+    public static void registerForModelRead(String name, Class<? > cls) {
+        RDFReaderFImpl.setBaseReaderClassName(name, cls.getName());
     }
 }
-

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaWriters.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaWriters.java b/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaWriters.java
index e369abb..e8e287f 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaWriters.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/IO_JenaWriters.java
@@ -18,118 +18,30 @@
 
 package org.apache.jena.riot.system;
 
-import java.util.Collection ;
-import java.util.HashMap ;
-import java.util.Map ;
-
-import org.apache.jena.n3.N3JenaWriter ;
 import org.apache.jena.rdf.model.impl.RDFWriterFImpl ;
-import org.apache.jena.riot.RDFFormat ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_JSONLD ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_N3 ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_N3Plain ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_N3Triples ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_N3TriplesAlt ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_N3_PP ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_NTriples ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_RDFJSON ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_Turtle ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_Turtle1 ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_Turtle2 ;
+import org.apache.jena.riot.adapters.RDFWriterFactoryRIOT ;
 
 public class IO_JenaWriters
-{
-    private static Map<String, RDFFormat> mapJenaNameToFormat               = new HashMap<>() ;
-
-    /** return the RDFFormat for the existing Jena writer name, or null */ 
-    public static RDFFormat getFormatForJenaWriter(String jenaName) { return mapJenaNameToFormat.get(jenaName) ; }
-
-    /** Register an RDFFormat for a Jena writer name */ 
-    public static void setFormatForJenaWriter(String jenaName, RDFFormat format) { mapJenaNameToFormat.put(jenaName, format) ; }
-
-    /** Return a collection of jena writer names */ 
-    public static Collection<String> getJenaWriterNames() { return mapJenaNameToFormat.keySet() ; }
+{ 
+    // Do once.
+    private static boolean isWiredIn = false ;
     
-    public static void wireIntoJena()
-    {
-        setFormatForJenaWriter("RDF/XML",                           RDFFormat.RDFXML_PLAIN) ;
-        setFormatForJenaWriter("RDF/XML-ABBREV",                    RDFFormat.RDFXML_ABBREV) ;
-        setFormatForJenaWriter("N-TRIPLE",                          RDFFormat.NTRIPLES) ;
-        setFormatForJenaWriter("NT",                                RDFFormat.NTRIPLES) ;
-        setFormatForJenaWriter("N-TRIPLES",                         RDFFormat.NTRIPLES) ;
-        setFormatForJenaWriter("N-Triples",                         RDFFormat.NTRIPLES) ;
-        setFormatForJenaWriter("N3",                                RDFFormat.TURTLE) ;
-        setFormatForJenaWriter(N3JenaWriter.n3WriterPrettyPrinter,  RDFFormat.TURTLE_PRETTY) ;
-        setFormatForJenaWriter(N3JenaWriter.n3WriterPlain,          RDFFormat.TURTLE_BLOCKS) ;
-        setFormatForJenaWriter(N3JenaWriter.n3WriterTriples,        RDFFormat.TURTLE_FLAT) ;
-        setFormatForJenaWriter(N3JenaWriter.n3WriterTriplesAlt,     RDFFormat.TURTLE_FLAT) ;
-        setFormatForJenaWriter(N3JenaWriter.turtleWriter,           RDFFormat.TURTLE) ;
-        setFormatForJenaWriter(N3JenaWriter.turtleWriterAlt1,       RDFFormat.TURTLE) ;
-        setFormatForJenaWriter(N3JenaWriter.turtleWriterAlt2,       RDFFormat.TURTLE) ;
-
-        setFormatForJenaWriter("JSON-LD",                           RDFFormat.JSONLD) ; 
-        setFormatForJenaWriter("JSONLD",                            RDFFormat.JSONLD) ; 
-        
-        setFormatForJenaWriter("RDF/JSON",                          RDFFormat.RDFJSON) ;
-        setFormatForJenaWriter("RDFJSON",                           RDFFormat.RDFJSON) ;
-        
-        //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",                            org.apache.jena.rdfxml.xmloutput.impl.Basic.class) ;
-        registerForModelWrite("RDF/XML-ABBREV",                     org.apache.jena.rdfxml.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) ;
-        registerForModelWrite(N3JenaWriter.n3WriterTriples,         RDFWriterRIOT_N3Triples.class) ;
-        registerForModelWrite(N3JenaWriter.n3WriterTriplesAlt,      RDFWriterRIOT_N3TriplesAlt.class) ;
-        
-        registerForModelWrite(N3JenaWriter.turtleWriter,            RDFWriterRIOT_Turtle.class) ;
-        registerForModelWrite(N3JenaWriter.turtleWriterAlt1,        RDFWriterRIOT_Turtle1.class) ;
-        registerForModelWrite(N3JenaWriter.turtleWriterAlt2,        RDFWriterRIOT_Turtle2.class) ;
-
-        registerForModelWrite("JSON-LD",                            RDFWriterRIOT_JSONLD.class) ;
-        registerForModelWrite("JSONLD",                             RDFWriterRIOT_JSONLD.class) ;
-        
-        registerForModelWrite("RDF/JSON",                           RDFWriterRIOT_RDFJSON.class) ;
-        registerForModelWrite("RDFJSON",                            RDFWriterRIOT_RDFJSON.class) ;
+    public static void wireIntoJena() {
+        if ( isWiredIn )
+            return ;
+        isWiredIn = true ;
+        RDFWriterFImpl.alternative(new RDFWriterFactoryRIOT());
     }
     
-    public static void resetJena()
-    {
-        // This is the old Jena configuration (bugs and all) 
-        RDFWriterFImpl.setBaseWriterClassName("RDF/XML",        org.apache.jena.rdfxml.xmloutput.impl.Basic.class.getName()) ;
-        RDFWriterFImpl.setBaseWriterClassName("RDF/XML-ABBREV", org.apache.jena.rdfxml.xmloutput.impl.Abbreviated.class.getName()) ;
-
-        RDFWriterFImpl.setBaseWriterClassName("N-TRIPLE",       org.apache.jena.rdf.model.impl.NTripleWriter.class.getName()) ;
-        RDFWriterFImpl.setBaseWriterClassName("NT",             "") ;
-        RDFWriterFImpl.setBaseWriterClassName("N-TRIPLES",      org.apache.jena.rdf.model.impl.NTripleWriter.class.getName()) ;
-        RDFWriterFImpl.setBaseWriterClassName("N-Triples",      org.apache.jena.rdf.model.impl.NTripleWriter.class.getName()) ;
-
-        RDFWriterFImpl.setBaseWriterClassName("N3",             org.apache.jena.n3.N3JenaWriter.class.getName()) ;         
-        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterPrettyPrinter,    org.apache.jena.n3.N3JenaWriterPP.class.getName()) ;
-        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterPlain,           org.apache.jena.n3.N3TurtleJenaWriter.class.getName()) ;
-        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterTriples,         org.apache.jena.n3.N3TurtleJenaWriter.class.getName()) ;
-        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.n3WriterTriplesAlt,      org.apache.jena.n3.N3JenaWriterTriples.class.getName()) ;
-        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.turtleWriter,            org.apache.jena.n3.N3TurtleJenaWriter.class.getName()) ;
-        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.turtleWriterAlt1,        org.apache.jena.n3.N3TurtleJenaWriter.class.getName()) ;
-        RDFWriterFImpl.setBaseWriterClassName(N3JenaWriter.turtleWriterAlt2,        org.apache.jena.n3.N3TurtleJenaWriter.class.getName()) ;
-        
-        RDFWriterFImpl.setBaseWriterClassName("JSON-LD",    "");
-        RDFWriterFImpl.setBaseWriterClassName("JSON",       "");
-
-        RDFWriterFImpl.setBaseWriterClassName("RDF/JSON",   "");
-        RDFWriterFImpl.setBaseWriterClassName("RDFJSON",    "");
+    public static void resetJena() {
+        if ( ! isWiredIn )
+            return ;
+        isWiredIn = false ;
+        RDFWriterFImpl.alternative(null);
     }
-    
-    /** Register for use with Model.write  (old style compatibility) */ 
+
+    /** Register for use with Model.write  (old style compatibility) */
+    @Deprecated
     public static void registerForModelWrite(String name, Class<?> cls)
     {
         RDFWriterFImpl.setBaseWriterClassName(name, cls.getName()) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/test/java/org/apache/jena/riot/system/TestIO_JenaReaders.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/system/TestIO_JenaReaders.java b/jena-arq/src/test/java/org/apache/jena/riot/system/TestIO_JenaReaders.java
index d3424b9..a3b5d19 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/system/TestIO_JenaReaders.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/system/TestIO_JenaReaders.java
@@ -18,20 +18,14 @@
 package org.apache.jena.riot.system;
 
 import static org.junit.Assert.assertEquals ;
-import static org.junit.Assert.assertFalse ;
-
-import java.util.LinkedHashMap ;
-import java.util.Map ;
-import java.util.Properties ;
+import static org.junit.Assert.assertNotEquals ;
+import static org.junit.Assert.fail ;
 
+import org.apache.jena.rdf.model.RDFReaderF ;
 import org.apache.jena.rdf.model.impl.RDFReaderFImpl ;
 import org.apache.jena.riot.IO_Jena ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFReaderRIOT_NT ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFReaderRIOT_RDFJSON ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFReaderRIOT_JSONLD ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFReaderRIOT_RDFXML ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFReaderRIOT_TTL ;
-import org.apache.jena.riot.adapters.* ;
+import org.apache.jena.riot.adapters.RDFReaderRIOT ;
+import org.apache.jena.shared.NoReaderForLangException ;
 import org.junit.AfterClass ;
 import org.junit.BeforeClass ;
 import org.junit.Test ;
@@ -40,59 +34,48 @@ public class TestIO_JenaReaders {
     @BeforeClass public static void beforeClass() { } 
     @AfterClass public static void afterClass()   { IO_Jena.wireIntoJena(); }
     
-    private final class RDFReaderFImplExposingProtected extends RDFReaderFImpl {
-        public Map<String, String> defaultReaders() {
-            Map<String,String> defaults = new LinkedHashMap<>();
-            for (int i=0; i<LANGS.length; i++) {
-                defaults.put(LANGS[i], DEFAULTREADERS[i]);
-            }
-            return defaults;
-        }
-        public Properties getLangToClassName() {
-            return langToClassName;
-        }
-    }
-
     @Test
     public void wireIntoJena() {
-        IO_JenaReaders.wireIntoJena();
-        RDFReaderFImpl readerF = new RDFReaderFImpl();
-        assertEquals(RDFReaderRIOT_Web.class,       readerF.getReader().getClass());
-        assertEquals(RDFReaderRIOT_RDFXML.class,    readerF.getReader("RDF/XML").getClass());
-        assertEquals(RDFReaderRIOT_RDFXML.class,    readerF.getReader("RDF/XML-ABBREV").getClass());
-        assertEquals(RDFReaderRIOT_NT.class,        readerF.getReader("N-TRIPLES").getClass());
-        assertEquals(RDFReaderRIOT_NT.class,        readerF.getReader("N-Triples").getClass());
-        assertEquals(RDFReaderRIOT_NT.class,        readerF.getReader("N-TRIPLE").getClass());
-        assertEquals(RDFReaderRIOT_TTL.class,       readerF.getReader("N3").getClass());
-        assertEquals(RDFReaderRIOT_TTL.class,       readerF.getReader("TURTLE").getClass());
-        assertEquals(RDFReaderRIOT_TTL.class,       readerF.getReader("Turtle").getClass());
-        assertEquals(RDFReaderRIOT_TTL.class,       readerF.getReader("TTL").getClass());
-        assertEquals(RDFReaderRIOT_JSONLD.class,    readerF.getReader("JSON-LD").getClass());
-        assertEquals(RDFReaderRIOT_JSONLD.class,    readerF.getReader("JSONLD").getClass());
-        assertEquals(RDFReaderRIOT_RDFJSON.class,   readerF.getReader("RDF/JSON").getClass());
-        
+        IO_Jena.wireIntoJena();
+        RDFReaderF readerF = new RDFReaderFImpl();
+
+        assertEquals(RDFReaderRIOT.class, readerF.getReader().getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("RDF/XML").getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("RDF/XML-ABBREV").getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("N-TRIPLES").getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("N-Triples").getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("N-TRIPLE").getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("N3").getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("TURTLE").getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("Turtle").getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("TTL").getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("JSON-LD").getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("JSONLD").getClass());
+        assertEquals(RDFReaderRIOT.class, readerF.getReader("RDF/JSON").getClass());
     }
     
     @Test
     public void resetJena() {
-        IO_JenaReaders.wireIntoJena();
-        IO_JenaReaders.resetJena();
-        RDFReaderFImplExposingProtected readerF = new RDFReaderFImplExposingProtected();
-        Map<String, String> defaults = readerF.defaultReaders();
-        assertFalse(defaults.isEmpty());
-        for (String lang : defaults.keySet()) {
-            assertEquals(defaults.get(lang), readerF.getLangToClassName().get(lang));
-            if (lang.equals("GRDDL")) {
-                // Can't load
-                continue;
-            }
-            assertEquals(defaults.get(lang), readerF.getReader(lang).getClass().getName());
-        }
+        IO_Jena.wireIntoJena();
+        IO_Jena.resetJena();
+        RDFReaderF readerF = new RDFReaderFImpl();
+        
+        assertNotEquals(RDFReaderRIOT.class, readerF.getReader().getClass());
+        assertNotEquals(RDFReaderRIOT.class, readerF.getReader("RDF/XML").getClass());
+        assertNotEquals(RDFReaderRIOT.class, readerF.getReader("RDF/XML-ABBREV").getClass());
+        assertNotEquals(RDFReaderRIOT.class, readerF.getReader("N-TRIPLES").getClass());
+        assertNotEquals(RDFReaderRIOT.class, readerF.getReader("N-Triples").getClass());
+        assertNotEquals(RDFReaderRIOT.class, readerF.getReader("N-TRIPLE").getClass());
+        assertNotEquals(RDFReaderRIOT.class, readerF.getReader("N3").getClass());
+        assertNotEquals(RDFReaderRIOT.class, readerF.getReader("TURTLE").getClass());
+        assertNotEquals(RDFReaderRIOT.class, readerF.getReader("Turtle").getClass());
+        assertNotEquals(RDFReaderRIOT.class, readerF.getReader("TTL").getClass());
+        
+        try { readerF.getReader("NT")      ; fail("Exception expected") ; } catch (NoReaderForLangException e) {}
+        try { readerF.getReader("JSON_LD") ; fail("Exception expected") ; } catch (NoReaderForLangException e) {}
+        try { readerF.getReader("RDF/JSON"); fail("Exception expected") ; } catch (NoReaderForLangException e) {}
         
-        // And unregistered our additional langs
-        assertEquals("", readerF.getLangToClassName().get("JSON-LD"));
-        assertEquals("", readerF.getLangToClassName().get("RDF/JSON"));
-        IO_JenaReaders.wireIntoJena();
+        IO_Jena.wireIntoJena();
     }
 
     

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/test/java/org/apache/jena/riot/system/TestIO_JenaWriters.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/system/TestIO_JenaWriters.java b/jena-arq/src/test/java/org/apache/jena/riot/system/TestIO_JenaWriters.java
index b7c71a3..f835b3b 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/system/TestIO_JenaWriters.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/system/TestIO_JenaWriters.java
@@ -18,27 +18,15 @@
 package org.apache.jena.riot.system;
 
 import static org.junit.Assert.assertEquals ;
-import static org.junit.Assert.assertFalse ;
-
-import java.util.LinkedHashMap ;
-import java.util.Map ;
-import java.util.Properties ;
+import static org.junit.Assert.assertNotEquals ;
+import static org.junit.Assert.fail ;
 
 import org.apache.jena.n3.N3JenaWriter ;
+import org.apache.jena.rdf.model.RDFWriterF ;
 import org.apache.jena.rdf.model.impl.RDFWriterFImpl ;
-import org.apache.jena.rdfxml.xmloutput.impl.Abbreviated ;
-import org.apache.jena.rdfxml.xmloutput.impl.Basic ;
 import org.apache.jena.riot.IO_Jena ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_N3 ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_N3Plain ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_N3Triples ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_N3TriplesAlt ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_N3_PP ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_NTriples ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_RDFJSON ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_Turtle ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_Turtle1 ;
-import org.apache.jena.riot.adapters.JenaReadersWriters.RDFWriterRIOT_Turtle2 ;
+import org.apache.jena.riot.adapters.RDFWriterRIOT ;
+import org.apache.jena.shared.NoWriterForLangException ;
 import org.junit.AfterClass ;
 import org.junit.BeforeClass ;
 import org.junit.Test ;
@@ -48,62 +36,59 @@ public class TestIO_JenaWriters {
     @BeforeClass public static void beforeClass() { } 
     @AfterClass public static void afterClass()   { IO_Jena.wireIntoJena(); }
     
-    private final class RDFWriterFImplExposingProtected extends RDFWriterFImpl {
-        public Map<String, String> defaultWriters() {
-            Map<String,String> defaults = new LinkedHashMap<>();
-            for (int i=0; i<LANGS.length; i++) {
-                defaults.put(LANGS[i], DEFAULTWRITERS[i]);
-            }
-            return defaults;
-        }
-        public Properties getLangToClassName() {
-            return langToClassName;
-        }
-    }
-
     @Test
     public void testWireIntoJena() {
-        IO_JenaWriters.wireIntoJena();
-        RDFWriterFImpl writerF = new RDFWriterFImpl();
-        assertEquals(Basic.class, writerF.getWriter().getClass());
-        assertEquals(Basic.class, writerF.getWriter("RDF/XML").getClass());
-        assertEquals(Abbreviated.class, writerF.getWriter("RDF/XML-ABBREV").getClass());
-        assertEquals(RDFWriterRIOT_NTriples.class, writerF.getWriter("N-TRIPLE").getClass());
-        assertEquals(RDFWriterRIOT_NTriples.class, writerF.getWriter("N-Triples").getClass());
-        assertEquals(RDFWriterRIOT_NTriples.class, writerF.getWriter("N-TRIPLE").getClass());
-        assertEquals(RDFWriterRIOT_NTriples.class, writerF.getWriter("NT").getClass());
+        IO_Jena.wireIntoJena();
+        RDFWriterF writerF = new RDFWriterFImpl();
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter().getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter("RDF/XML").getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter("RDF/XML-ABBREV").getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter("N-TRIPLE").getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter("N-Triples").getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter("N-TRIPLE").getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter("NT").getClass());
 
-        assertEquals(RDFWriterRIOT_N3.class, writerF.getWriter("N3").getClass());
-        assertEquals(RDFWriterRIOT_N3_PP.class, writerF.getWriter(N3JenaWriter.n3WriterPrettyPrinter).getClass());
-        assertEquals(RDFWriterRIOT_N3Plain.class, writerF.getWriter(N3JenaWriter.n3WriterPlain).getClass());
-        assertEquals(RDFWriterRIOT_N3Triples.class, writerF.getWriter(N3JenaWriter.n3WriterTriples).getClass());
-        assertEquals(RDFWriterRIOT_N3TriplesAlt.class, writerF.getWriter(N3JenaWriter.n3WriterTriplesAlt).getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter("N3").getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.n3WriterPrettyPrinter).getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.n3WriterPlain).getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.n3WriterTriples).getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.n3WriterTriplesAlt).getClass());
         
-        assertEquals(RDFWriterRIOT_Turtle.class, writerF.getWriter(N3JenaWriter.turtleWriter).getClass());
-        assertEquals(RDFWriterRIOT_Turtle1.class, writerF.getWriter(N3JenaWriter.turtleWriterAlt1).getClass());
-        assertEquals(RDFWriterRIOT_Turtle2.class, writerF.getWriter(N3JenaWriter.turtleWriterAlt2).getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.turtleWriter).getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.turtleWriterAlt1).getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.turtleWriterAlt2).getClass());
 
-        assertEquals(RDFWriterRIOT_RDFJSON.class, writerF.getWriter("RDF/JSON").getClass());
-        assertEquals(RDFWriterRIOT_RDFJSON.class, writerF.getWriter("RDFJSON").getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter("RDF/JSON").getClass());
+        assertEquals(RDFWriterRIOT.class, writerF.getWriter("RDFJSON").getClass());
     }
     
     @Test
     public void testResetJena() {
-        IO_JenaWriters.wireIntoJena();
-        IO_JenaWriters.resetJena();
-        RDFWriterFImplExposingProtected writerF = new RDFWriterFImplExposingProtected();
-        Map<String, String> defaults = writerF.defaultWriters();
-        assertFalse(defaults.isEmpty());
-        for (String lang : defaults.keySet()) {
-            assertEquals(defaults.get(lang), writerF.getLangToClassName().get(lang));
-            assertEquals(defaults.get(lang), writerF.getWriter(lang).getClass().getName());
-        }
+        IO_Jena.wireIntoJena();
+        IO_Jena.resetJena();
+        RDFWriterF writerF = new RDFWriterFImpl();
         
-        // And unregistered our additional langs
-        assertEquals("", writerF.getLangToClassName().get("NT"));
-        assertEquals("", writerF.getLangToClassName().get("RDF/JSON"));
-        assertEquals("", writerF.getLangToClassName().get("RDFJSON"));
-        IO_JenaWriters.wireIntoJena();
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter().getClass());
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter("RDF/XML").getClass());
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter("RDF/XML-ABBREV").getClass());
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter("N-TRIPLE").getClass());
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter("N-Triples").getClass());
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter("N-TRIPLE").getClass());
+
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter("N3").getClass());
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.n3WriterPrettyPrinter).getClass());
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.n3WriterPlain).getClass());
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.n3WriterTriples).getClass());
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.n3WriterTriplesAlt).getClass());
+        
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.turtleWriter).getClass());
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.turtleWriterAlt1).getClass());
+        assertNotEquals(RDFWriterRIOT.class, writerF.getWriter(N3JenaWriter.turtleWriterAlt2).getClass());
+
+        try { writerF.getWriter("NT"); fail("Exception expected") ; } catch (NoWriterForLangException ex) {}
+        try { writerF.getWriter("RDF/JSON") ; fail("Exception expected") ; } catch (NoWriterForLangException ex) {}
+        try { writerF.getWriter("RDFJSON"); fail("Exception expected") ; } catch (NoWriterForLangException ex) {}
+        IO_Jena.wireIntoJena();
     }
 
     

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-arq/src/test/java/org/apache/jena/riot/writer/TestJenaWriters.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/writer/TestJenaWriters.java b/jena-arq/src/test/java/org/apache/jena/riot/writer/TestJenaWriters.java
index 3f0d5f0..5bfcca2 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/writer/TestJenaWriters.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/writer/TestJenaWriters.java
@@ -25,7 +25,7 @@ import java.util.List ;
 import org.apache.jena.atlas.lib.Bytes ;
 import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.riot.RDFDataMgr ;
-import org.apache.jena.riot.system.IO_JenaWriters ;
+import org.apache.jena.riot.RDFWriterRegistry ;
 import org.junit.Test ;
 import org.junit.runner.RunWith ;
 import org.junit.runners.Parameterized ;
@@ -37,7 +37,7 @@ public class TestJenaWriters extends AbstractWriterTest
     @Parameters(name = "{index}: {0}")
     public static Iterable<Object[]> data() {
         List<Object[]> x = new ArrayList<>() ;
-        for ( String wname : IO_JenaWriters.getJenaWriterNames() )
+        for ( String wname :  RDFWriterRegistry.getJenaWriterNames())
             x.add(new Object[]{wname}) ;
         return x ; 
     }
@@ -58,7 +58,7 @@ public class TestJenaWriters extends AbstractWriterTest
     private void test(String filename) {
         Model m = readModel(filename) ;
         ByteArrayOutputStream out2 = new ByteArrayOutputStream() ;
-        RDFDataMgr.write(out2, m, IO_JenaWriters.getFormatForJenaWriter(jenaFormatName)) ;
+        RDFDataMgr.write(out2, m, RDFWriterRegistry.getFormatForJenaWriter(jenaFormatName)) ;
 
         ByteArrayOutputStream out1 = new ByteArrayOutputStream() ;
         m.write(out1, jenaFormatName) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
index ff93f69..8e48855 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
@@ -50,7 +50,6 @@ import org.apache.jena.vocabulary.RDF ;
 public class ModelCom extends EnhGraph
 implements Model, PrefixMapping, Lock
 {
-
     private static final RDFReaderF readerFactory = new RDFReaderFImpl();
     private static final RDFWriterF writerFactory = new RDFWriterFImpl();
     private Lock modelLock = null ;
@@ -58,7 +57,7 @@ implements Model, PrefixMapping, Lock
 
     static {
         // This forces RIOT (in ARQ) to initialize but after Jena readers/writers
-        // have cleanly initialized from the calls of  RDFReaderFImpl and RDFWriterFImpl
+        // have cleanly initialized from the calls of RDFReaderFImpl and RDFWriterFImpl
         // above.  RIOT initialization happens before model.read can be called.
         JenaSystem.init() ;
     }
@@ -213,6 +212,8 @@ implements Model, PrefixMapping, Lock
         return readerFactory.getReader(lang);
     }
 
+    /** @deprecated Use {@code org.apache.jena.riot.RDFParserRegistry.register}
+     */
     @Override
     @Deprecated
     public String setReaderClassName(String lang, String className) {
@@ -300,6 +301,8 @@ implements Model, PrefixMapping, Lock
     }
 
 
+    /** @deprecated Use {@code org.apache.jena.riot.RDFWriterRegistry.register}
+     */
     @Override
     @Deprecated
     public String setWriterClassName(String lang, String className) {

http://git-wip-us.apache.org/repos/asf/jena/blob/e214ba27/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFReaderFImpl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFReaderFImpl.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFReaderFImpl.java
index 7dd1aa2..4c3eaff 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFReaderFImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/RDFReaderFImpl.java
@@ -18,134 +18,144 @@
 
 package org.apache.jena.rdf.model.impl;
 
-import java.util.Arrays;
-import java.util.Properties;
+import java.util.LinkedHashMap;
+import java.util.Map;
 
-import org.apache.jena.* ;
-import org.apache.jena.rdf.model.* ;
-import org.apache.jena.shared.* ;
+import org.apache.jena.atlas.logging.Log ;
+import org.apache.jena.rdf.model.RDFReader;
+import org.apache.jena.rdf.model.RDFReaderF;
+import org.apache.jena.shared.ConfigException;
+import org.apache.jena.shared.JenaException;
+import org.apache.jena.shared.NoReaderForLangException;
 
-/**
- */
 public class RDFReaderFImpl extends Object implements RDFReaderF {
-    // ** The setting in this class are overrided by RIOT **
-    private static final String TURTLEREADER = org.apache.jena.n3.turtle.TurtleReader.class.getName() ;
-    
-	protected static Properties langToClassName = null;
-
-    // predefined languages - these should probably go in a properties file
-
-    protected static final String LANGS[] = { "RDF" ,
-                                              "RDF/XML",
-                                              "RDF/XML-ABBREV",
-                                              "N-TRIPLE",
-                                              "N-TRIPLES",
-                                              "N-Triples",
-                                              "N3",
-                                              "TURTLE",
-                                              "Turtle",
-                                              "TTL",
-                                              "CSV"};
-    // default readers for each language
-
-    protected static final String DEFAULTREADERS[] = {
-        org.apache.jena.rdfxml.xmlinput.JenaReader.class.getName(),
-        org.apache.jena.rdfxml.xmlinput.JenaReader.class.getName(),
-        org.apache.jena.rdfxml.xmlinput.JenaReader.class.getName(),
-        org.apache.jena.rdf.model.impl.NTripleReader.class.getName(),
-        org.apache.jena.rdf.model.impl.NTripleReader.class.getName(),
-        org.apache.jena.rdf.model.impl.NTripleReader.class.getName(),
-        TURTLEREADER,  // N3 replaced by a Turtle-based parser 
-        TURTLEREADER,
-        TURTLEREADER,
-        TURTLEREADER,
-        "org.apache.jena.riot.adapters.RDFReaderRIOT_CSV",
-        
-    };
-
-    protected static final String DEFAULTLANG = LANGS[0];
-
-    protected static final String PROPNAMEBASE = Jena.PATH + ".reader.";
-
-    static { // static initializer - set default readers
-        reset();
+    public static final String DEFAULTLANG = "RDF/XML" ;
+    private static Map<String, Class<? extends RDFReader>> custom = new LinkedHashMap<>();
+    private static RDFReaderF rewiredAlternative = null ;
+    /** Rewire to use an external RDFReaderF (typically, RIOT).
+     * Set to null to use old jena-core setup.
+     * @param other
+     */
+    public static void alternative(RDFReaderF other) {
+        rewiredAlternative = other ;
     }
     
-    private static void reset()
-    {
-    	Properties newLangToClassName = new Properties();
-        for (int i = 0; i<LANGS.length; i++) {
-        	newLangToClassName.setProperty(
-                               LANGS[i],
-                               JenaRuntime.getSystemProperty(PROPNAMEBASE + LANGS[i],
-                                                  DEFAULTREADERS[i]));
-        }
-        // reset all at once
-        langToClassName = newLangToClassName;
-    }
-
-    private static String remove(String lang )
-    {
-    	if (Arrays.asList( LANGS ).contains(lang))
-		{
-			throw new IllegalArgumentException( lang+" is an initial language and may not be removed");
-		}
-		Object prev = langToClassName.remove(lang);
-		return prev==null?null:prev.toString();
-    }
-
     /** Creates new RDFReaderFImpl */
-    public  RDFReaderFImpl() {
-    }
-
+    public RDFReaderFImpl() {}
+    
     @Override
     public RDFReader getReader()  {
-        return getReader(DEFAULTLANG);
+        return getReader(null);
     }
-
+    
     @Override
-    public RDFReader getReader(String lang)  {
+    public RDFReader getReader(String lang) {
+        // Jena model.read rule for defaulting.
+        if (lang==null || lang.equals(""))
+            lang = DEFAULTLANG ;
+        // if RIOT ->
+        if ( rewiredAlternative != null )
+            return rewiredAlternative.getReader(lang) ;
+        Class<? extends RDFReader> c = custom.get(lang);
+        if ( c == null )
+            throw new NoReaderForLangException("Reader not found: " + lang);
 
-        // setup default language
-        if (lang==null || lang.equals("")) {
-            lang = LANGS[0];
+        try {
+            return c.newInstance();
         }
-
-        String className = langToClassName.getProperty(lang);
-        if (className == null || className.equals("")) {
-            throw new NoReaderForLangException( lang );
+        catch (InstantiationException | IllegalAccessException e) {
+            throw new JenaException(e);
         }
+    }
+
+    /**
+     * Use RIOT to add custom RDF parsers. See
+     * {@code RDFParserRegistry.registerLangTriples} and
+     * {@code RDFParserRegistry.registerLangQuads}
+     * 
+     * @deprecated Register with RIOT.
+     */
+    @Override
+    @Deprecated
+    public String setReaderClassName(String lang, String className) {
+        return setBaseReaderClassName(lang, className);
+    }
+
+    /**
+     * Use RIOT to add custom RDF parsers. See
+     * {@code RDFParserRegistry.registerLang}
+     * 
+     * @deprecated Register with RIOT.
+     */
+    @Deprecated
+    public static String setBaseReaderClassName(String lang, String className) {
+        if ( rewiredAlternative != null )
+            Log.fatal(RDFReaderFImpl.class, "Rewired RDFReaderFImpl - configuration changes have no effect on reading");
+            
+        String oldClassName = currentEntry(lang);
         try {
-          return (RDFReader) Class.forName(className)
-                                  .newInstance();
-        } catch (ClassNotFoundException e) {
-        	throw new ConfigException("Reader not found on classpath",e);
-        } catch (Exception e) {
+            @SuppressWarnings("unchecked")
+            Class<? extends RDFReader> newClass = (Class<? extends RDFReader>)Class.forName(className, false,
+                                                                                            Thread.currentThread().getContextClassLoader());
+            custom.put(lang, newClass);
+            return oldClassName;
+        }
+        catch (ClassNotFoundException e) {
+            throw new ConfigException("Reader not found on classpath", e);
+        }
+        catch (Exception e) {
             throw new JenaException(e);
         }
     }
 
+    @Override
+    public void resetRDFReaderF() {
+        reset();
+    }
 
     @Override
-    public String setReaderClassName( String lang,String className ) {
-        return setBaseReaderClassName( lang, className );
+    public String removeReader(String lang) throws IllegalArgumentException {
+        return remove(lang);
     }
-    
-    public static String setBaseReaderClassName( String lang, String className ) {
-        String oldClassName = langToClassName.getProperty(lang);
-        langToClassName.setProperty(lang, className);
-        return oldClassName;
+
+    static { 
+        // static initializer - set default readers
+        reset();
     }
 
+    private static void reset() {
+        Class<? extends RDFReader> rdfxmlReader = org.apache.jena.rdfxml.xmlinput.JenaReader.class;
+        Class<? extends RDFReader> ntReader = org.apache.jena.rdf.model.impl.NTripleReader.class;
+        Class<? extends RDFReader> turtleReader = org.apache.jena.n3.turtle.TurtleReader.class;
 
-	@Override
-	public void resetRDFReaderF() {
-		reset();
-	}
+        custom.put("RDF", rdfxmlReader);
+        custom.put("RDF/XML", rdfxmlReader);
+        custom.put("RDF/XML-ABBREV", rdfxmlReader);
 
+        custom.put("N-TRIPLE", ntReader);
+        custom.put("N-TRIPLES", ntReader);
+        custom.put("N-Triples", ntReader);
 
-	@Override
-	public String removeReader(String lang) throws IllegalArgumentException {
-		return remove( lang );
-	}
+        custom.put("N3", turtleReader);
+        custom.put("TURTLE", turtleReader);
+        custom.put("Turtle", turtleReader);
+        custom.put("TTL", turtleReader);
+    }
+
+    private static String currentEntry(String lang) {
+        Class<? extends RDFReader> oldClass = custom.get(lang);
+        if ( oldClass != null )
+            return oldClass.getName();
+        else
+            return null;
+    }
+
+    private static String remove(String lang) {
+        if ( rewiredAlternative != null )
+            Log.fatal(RDFReaderFImpl.class, "Rewired RDFReaderFImpl - configuration changes have no effect on reading");
+
+        String oldClassName = currentEntry(lang);
+        custom.remove(lang);
+        return oldClassName;
+    }
 }


[2/8] jena git commit: Stray blank line

Posted by an...@apache.org.
Stray blank line

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

Branch: refs/heads/Jena-1029_subsystem
Commit: 740e1b46b01c5c61dad78d19d2a853a176965625
Parents: 04b665a
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Sep 19 15:05:25 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Sep 19 15:05:25 2015 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/740e1b46/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java b/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java
index 214d55a..3131434 100644
--- a/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java
+++ b/jena-core/src/main/java/org/apache/jena/system/JenaSubsystemRegistry.java
@@ -50,5 +50,4 @@ public interface JenaSubsystemRegistry {
      * There is no specific ordering requirement. 
      */
     public List<JenaSubsystemLifecycle> snapshot();
-
 }


[8/8] jena git commit: Initialise system after constants set.

Posted by an...@apache.org.
Initialise system after constants set.

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

Branch: refs/heads/Jena-1029_subsystem
Commit: b0e86257fb2a80f7c391566f42a3384b8f1703f2
Parents: e3e6855
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Sep 21 17:26:57 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Sep 21 17:26:57 2015 +0100

----------------------------------------------------------------------
 jena-core/src/main/java/org/apache/jena/util/FileManager.java | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/b0e86257/jena-core/src/main/java/org/apache/jena/util/FileManager.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/util/FileManager.java b/jena-core/src/main/java/org/apache/jena/util/FileManager.java
index 1da9d56..c7ce21f 100644
--- a/jena-core/src/main/java/org/apache/jena/util/FileManager.java
+++ b/jena-core/src/main/java/org/apache/jena/util/FileManager.java
@@ -71,11 +71,11 @@ import org.slf4j.LoggerFactory ;
 public class FileManager
 {
     // The case of the FileManager used first.
-    static { JenaSystem.init(); }
+    private static Logger log = LoggerFactory.getLogger(FileManager.class) ;
+    
     /** Delimiter between path entries : because URI scheme names use : we only allow ; */
     public static final String PATH_DELIMITER = ";";
     public static final String filePathSeparator = java.io.File.separator ;
-    private static Logger log = LoggerFactory.getLogger(FileManager.class) ;
 
     static FileManager fmInstance = null ;
 
@@ -83,6 +83,8 @@ public class FileManager
     protected List<Locator> fmHandlers = new ArrayList<>() ;
     protected LocationMapper fmMapper = null ;
     
+    static { JenaSystem.init(); }
+
     /** Get the global file manager.
      * @return the global file manager
      */


[7/8] jena git commit: Add development build information to HTTP response if SNAPSHOT.

Posted by an...@apache.org.
Add development build information to HTTP response if SNAPSHOT.

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

Branch: refs/heads/Jena-1029_subsystem
Commit: e3e68552b8876206240febea2f453829ea03578d
Parents: e214ba2
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Sep 21 17:15:29 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Sep 21 17:15:29 2015 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/jena/fuseki/Fuseki.java  | 18 ++++++++++++++----
 .../apache/jena/fuseki/servlets/ServletBase.java  |  3 +++
 2 files changed, 17 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e3e68552/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
index 8472422..47d656a 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
@@ -24,8 +24,6 @@ import java.util.concurrent.TimeUnit ;
 
 import org.apache.jena.atlas.lib.DateTimeUtils ;
 import org.apache.jena.query.ARQ ;
-import org.apache.jena.query.spatial.SpatialQuery ;
-import org.apache.jena.query.text.TextQuery ;
 import org.apache.jena.riot.system.stream.LocatorFTP ;
 import org.apache.jena.riot.system.stream.LocatorHTTP ;
 import org.apache.jena.riot.system.stream.StreamManager ;
@@ -113,8 +111,20 @@ public class Fuseki {
 
     /** An identifier for the HTTP Fuseki server instance */
     static public final String        serverHttpName    = NAME + " (" + VERSION + ")" ;
-
-    /** Loger name for operations */
+    /** An additional identifier for the HTTP Fuseki server instance in a develoment build 
+     */
+    static public final String        serverHttpNameDev   ;
+    static {
+        // (See ServletBase.setCommonheaders
+        // If it look like a SNAPSHOT, print build date. Not perfect, but better.  
+        System.err.println(">>"+BUILD_DATE);
+        System.err.println(">>"+VERSION);
+        if ( VERSION.contains("SNAPSHOT") && ! BUILD_DATE.startsWith("\\${") )
+            serverHttpNameDev = NAME + " (" + VERSION + " / " + BUILD_DATE +")" ;
+        else 
+            serverHttpNameDev = null ;
+    }
+    /** Logger name for operations */
     public static final String        actionLogName     = PATH + ".Fuseki" ;
 
     /** Instance of log for operations */

http://git-wip-us.apache.org/repos/asf/jena/blob/e3e68552/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java
index a39cdd1..4b8c361 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java
@@ -82,6 +82,7 @@ public abstract class ServletBase extends HttpServlet {
         httpResponse.setHeader(HttpNames.hVary, varyHeaderSetting) ;
     }
 
+    /** Done via web.xml */ 
     public static boolean CORS_ENABLED = false ;
     
     public static void setCommonHeadersForOptions(HttpServletResponse httpResponse) {
@@ -94,5 +95,7 @@ public abstract class ServletBase extends HttpServlet {
         if ( CORS_ENABLED )
             httpResponse.setHeader(HttpNames.hAccessControlAllowOrigin, "*") ;
         httpResponse.setHeader(HttpNames.hServer, Fuseki.serverHttpName) ;
+        if ( Fuseki.serverHttpNameDev != null )
+            httpResponse.setHeader("X-"+HttpNames.hServer, Fuseki.serverHttpNameDev) ;
     }
 }