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/06/11 19:51:24 UTC

[1/2] jena git commit: Eliminate /jena.cmdline, deprecate rdfcat

Repository: jena
Updated Branches:
  refs/heads/master d45a90890 -> 21b37d1b8


Eliminate <jena-core>/jena.cmdline, deprecate rdfcat


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

Branch: refs/heads/master
Commit: ca45fa5e3ca087865e1a5ae61545974b8500ccf1
Parents: d45a908
Author: ajs6f <aj...@virginia.edu>
Authored: Tue Jun 9 13:48:01 2015 -0400
Committer: ajs6f <aj...@virginia.edu>
Committed: Thu Jun 11 12:24:40 2015 -0400

----------------------------------------------------------------------
 jena-core/pom.xml                               |  11 +
 jena-core/src/main/java/jena/InvokingUtil.java  |  66 ++
 jena-core/src/main/java/jena/RuleMap.java       |  37 +-
 jena-core/src/main/java/jena/cmdline/Arg.java   |  54 --
 .../src/main/java/jena/cmdline/ArgDecl.java     | 248 ------
 .../src/main/java/jena/cmdline/ArgHandler.java  |  29 -
 .../main/java/jena/cmdline/CmdLineUtils.java    |  77 --
 .../src/main/java/jena/cmdline/CommandLine.java | 446 ----------
 jena-core/src/main/java/jena/qtest.java         |   3 +-
 jena-core/src/main/java/jena/query.java         |   3 +-
 jena-core/src/main/java/jena/rdfcat.java        | 809 ++++++++++++++++---
 jena-core/src/main/java/jena/rdfcompare.java    |   4 +-
 jena-core/src/main/java/jena/rdfcopy.java       |   4 +-
 jena-core/src/main/java/jena/rdfparse.java      |   4 +-
 jena-core/src/main/java/jena/rset.java          |   3 +-
 jena-core/src/main/java/jena/schemagen.java     |   6 +-
 jena-core/src/main/java/jena/sparql.java        |   3 +-
 jena-core/src/main/java/jena/turtle.java        |   3 +-
 jena-core/src/main/java/jena/version.java       |   4 +-
 .../src/test/java/jena/test/Test_rdfcat.java    |   1 +
 .../java/org/apache/jena/test/TestPackage.java  |   5 +-
 jena-parent/pom.xml                             |   5 +
 22 files changed, 835 insertions(+), 990 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/pom.xml
----------------------------------------------------------------------
diff --git a/jena-core/pom.xml b/jena-core/pom.xml
index 7541954..8d14ddd 100644
--- a/jena-core/pom.xml
+++ b/jena-core/pom.xml
@@ -56,12 +56,23 @@
 			<groupId>xerces</groupId>
 			<artifactId>xercesImpl</artifactId>
 		</dependency>
+    
+        <dependency>
+            <artifactId>commons-cli</artifactId>
+            <groupId>commons-cli</groupId>
+        </dependency>
 
 		<dependency>
 			<groupId>org.xenei</groupId>
 			<artifactId>junit-contracts</artifactId>
 			<version>0.1.2</version>
 			<scope>test</scope>
+            <exclusions>
+                <exclusion>
+                  <artifactId>commons-cli</artifactId>
+                  <groupId>commons-cli</groupId>
+                </exclusion>
+            </exclusions>
 		</dependency>
 		
 		<dependency>

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/InvokingUtil.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/InvokingUtil.java b/jena-core/src/main/java/jena/InvokingUtil.java
new file mode 100644
index 0000000..85b5ca8
--- /dev/null
+++ b/jena-core/src/main/java/jena/InvokingUtil.java
@@ -0,0 +1,66 @@
+/*
+ * 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 jena;
+
+import java.lang.reflect.InvocationTargetException ;
+import java.lang.reflect.Method ;
+
+public class InvokingUtil
+{
+    public static void invokeCmd(String className, String[] args)
+    {
+        Class<?> cmd = null ;
+        try { cmd = Class.forName(className) ; }
+        catch (ClassNotFoundException ex)
+        {
+            System.err.println("Class '"+className+"' not found") ;
+            System.exit(1) ;
+        }
+        
+        Method method = null ;
+        try { method = cmd.getMethod("main", new Class[]{String[].class}) ; }
+        catch (NoSuchMethodException ex)
+        {
+            System.err.println("'main' not found but the class '"+className+"' was") ;
+            System.exit(1) ;
+        }
+        
+        try 
+        {
+            method.invoke(null, new Object[]{args}) ;
+            return ;
+        } catch (IllegalArgumentException ex)
+        {
+            System.err.println("IllegalArgumentException exception: "+ex.getMessage());
+            System.exit(7) ;
+        } catch (IllegalAccessException ex)
+        {
+            System.err.println("IllegalAccessException exception: "+ex.getMessage());
+            System.exit(8) ;
+        } catch (InvocationTargetException ex)
+        {
+            System.err.println("InvocationTargetException exception: "+ex.getMessage());
+            System.exit(9) ;
+        }
+
+        
+        //arq.query.main(args) ;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/RuleMap.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/RuleMap.java b/jena-core/src/main/java/jena/RuleMap.java
index b3dd7d9..111f44b 100644
--- a/jena-core/src/main/java/jena/RuleMap.java
+++ b/jena-core/src/main/java/jena/RuleMap.java
@@ -19,12 +19,15 @@
 package jena;
 
 
-import static jena.cmdline.CmdLineUtils.setLog4jConfiguration;
-import jena.cmdline.*;
+import static org.apache.jena.atlas.logging.LogCtl.setCmdLogging;
 
 import java.util.*;
 import java.io.*;
 
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.Options;
 import org.apache.jena.graph.* ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.reasoner.Reasoner ;
@@ -50,7 +53,7 @@ import org.apache.jena.util.FileUtils ;
  * </p>
  */
 public class RuleMap {
-    static { setLog4jConfiguration() ; }
+    static { setCmdLogging() ; }
     
     /**
      * Load a set of rule definitions including processing of
@@ -137,22 +140,19 @@ public class RuleMap {
     	try {
 
             // Parse the command line
-            CommandLine cl = new CommandLine();
             String usage = "Usage:  RuleMap [-il inlang] [-ol outlang] [-d] rulefile infile (- for stdin)"; 
-            cl.setUsage(usage);
-            cl.add("il", true);
-            cl.add("ol", true);
-            cl.add("d", false);
-            cl.process(args);
-            if (cl.numItems() != 2) {
+            final CommandLineParser parser = new DefaultParser();
+			Options options = new Options().addOption("il", "inputLang", true, "input language")
+					.addOption("ol", "outputLang", true, "output language").addOption("d", "Deductions only?");
+			CommandLine cl = parser.parse(options, args);
+			final List<String> filenameArgs = cl.getArgList();
+            if (filenameArgs.size() != 2) {
                 System.err.println(usage);
                 System.exit(1);
             }
             
-            // Load the input data
-            Arg il = cl.getArg("il");
-            String inLang = (il == null) ? null : il.getValue();
-            String fname = cl.getItem(1);
+            String inLang = cl.getOptionValue("inputLang");
+            String fname = filenameArgs.get(1);
             Model inModel = null;
             if (fname.equals("-")) {
                 inModel = ModelFactory.createDefaultModel();
@@ -161,17 +161,14 @@ public class RuleMap {
                 inModel = FileManager.get().loadModel(fname, inLang);
             }
             
-            // Determine the type of the output
-            Arg ol = cl.getArg("ol");
-            String outLang =  (ol == null) ? "N3" : ol.getValue();
+            String outLang = cl.hasOption("outputLang") ? cl.getOptionValue("outputLang") : "N3";            
             
-            Arg d = cl.getArg("d");
-            boolean deductionsOnly = (d != null);
+            boolean deductionsOnly = cl.hasOption('d');
             
             // Fetch the rule set and create the reasoner
             BuiltinRegistry.theRegistry.register(new Deduce());
             Map<String, String> prefixes = new HashMap<>();
-            List<Rule> rules = loadRules(cl.getItem(0), prefixes);
+            List<Rule> rules = loadRules(filenameArgs.get(0), prefixes);
             Reasoner reasoner = new GenericRuleReasoner(rules);
             
             // Process

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/cmdline/Arg.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/cmdline/Arg.java b/jena-core/src/main/java/jena/cmdline/Arg.java
deleted file mode 100644
index eb24195..0000000
--- a/jena-core/src/main/java/jena/cmdline/Arg.java
+++ /dev/null
@@ -1,54 +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 jena.cmdline;
-
-import java.util.* ;
-
-/** A command line argument that has been foundspecification.
- */
-public class Arg
-{
-    String name ;
-    String value ;
-    List<String> values = new ArrayList<>() ;
-    
-    Arg() { name = null ; value = null ; }
-    
-    Arg(String _name) { this() ; setName(_name) ; }
-    
-    Arg(String _name, String _value) { this() ; setName(_name) ; setValue(_value) ; }
-    
-    void setName(String n) { name = n ; }
-    
-    void setValue(String v) { value = v ; }
-    void addValue(String v) { values.add(v) ; }
-    
-    public String getName() { return name ; }
-    public String getValue() { return value; }
-    public List<String> getValues() { return values; }
-    
-    public boolean hasValue() { return value != null ; }
-    
-    public boolean matches(ArgDecl decl)
-    {
-        return decl.getNames().contains(name) ;
-    }
-    
-        
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/cmdline/ArgDecl.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/cmdline/ArgDecl.java b/jena-core/src/main/java/jena/cmdline/ArgDecl.java
deleted file mode 100644
index 030fcfa..0000000
--- a/jena-core/src/main/java/jena/cmdline/ArgDecl.java
+++ /dev/null
@@ -1,248 +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 jena.cmdline;
-
-import java.util.* ;
-
-/** A command line argument specification.
- */
-public class ArgDecl
-{
-    boolean takesValue ;
-    Set<String> names = new HashSet<>() ;
-    boolean takesArg = false ;
-    List<ArgHandler> argHooks = new ArrayList<>() ;
-    public static final boolean HasValue = true ;
-    public static final boolean NoValue = false ;
-
-    /** Create a declaration for a command argument.
-     *
-     * @param hasValue  Does it take a value or not?
-     */
-
-    public ArgDecl(boolean hasValue)
-    {
-        takesValue = hasValue ;
-    }
-
-    /** Create a declaration for a command argument.
-     *
-     * @param hasValue  Does it take a value or not?
-     * @param name      Name of argument
-     */
-
-    public ArgDecl(boolean hasValue, String name)
-    {
-        this(hasValue) ;
-        addName(name) ;
-    }
-
-    /** Create a declaration for a command argument.
-     *
-     * @param hasValue  Does it take a value or not?
-     * @param name      Name of argument
-     * @param handler   ArgHandler
-     */
-
-    public ArgDecl(boolean hasValue, String name, ArgHandler handler)
-    {
-        this(hasValue) ;
-        addName(name) ;
-        addHook( handler );
-    }
-
-    /** Create a declaration for a command argument.
-     *
-     * @param hasValue  Does it take a value or not?
-     * @param name1      Name of argument
-     * @param name2      Name of argument
-     */
-
-    public ArgDecl(boolean hasValue, String name1, String name2)
-    {
-        this(hasValue) ;
-        addName(name1) ;
-        addName(name2) ;
-    }
-
-    /** Create a declaration for a command argument.
-     *
-     * @param hasValue  Does it take a value or not?
-     * @param name1      Name of argument
-     * @param name2      Name of argument
-     * @param handler   ArgHandler
-     */
-
-    public ArgDecl(boolean hasValue, String name1, String name2, ArgHandler handler)
-    {
-        this(hasValue) ;
-        addName(name1) ;
-        addName(name2) ;
-        addHook( handler );
-    }
-
-    /** Create a declaration for a command argument.
-     *
-     * @param hasValue  Does it take a value or not?
-     * @param name1      Name of argument
-     * @param name2      Name of argument
-     * @param name3      Name of argument
-     */
-
-    public ArgDecl(boolean hasValue, String name1, String name2, String name3)
-    {
-        this(hasValue) ;
-        addName(name1) ;
-        addName(name2) ;
-        addName(name3) ;
-    }
-
-    /** Create a declaration for a command argument.
-     *
-     * @param hasValue  Does it take a value or not?
-     * @param name1      Name of argument
-     * @param name2      Name of argument
-     * @param name3      Name of argument
-     * @param handler   ArgHandler
-     */
-
-    public ArgDecl(boolean hasValue, String name1, String name2, String name3, ArgHandler handler)
-    {
-        this(hasValue) ;
-        addName(name1) ;
-        addName(name2) ;
-        addName(name3) ;
-        addHook( handler );
-    }
-
-    /** Create a declaration for a command argument.
-     *
-     * @param hasValue  Does it take a value or not?
-     * @param name1      Name of argument
-     * @param name2      Name of argument
-     * @param name3      Name of argument
-     * @param name4      Name of argument
-     */
-
-    public ArgDecl(boolean hasValue, String name1, String name2, String name3, String name4)
-    {
-        this(hasValue) ;
-        addName(name1) ;
-        addName(name2) ;
-        addName(name3) ;
-        addName(name4) ;
-    }
-
-    /** Create a declaration for a command argument.
-     *
-     * @param hasValue  Does it take a value or not?
-     * @param name1      Name of argument
-     * @param name2      Name of argument
-     * @param name3      Name of argument
-     * @param name4      Name of argument
-     * @param handler    ArgHandler
-     */
-
-    public ArgDecl(boolean hasValue, String name1, String name2, String name3, String name4, ArgHandler handler)
-    {
-        this(hasValue) ;
-        addName(name1) ;
-        addName(name2) ;
-        addName(name3) ;
-        addName(name4) ;
-        addHook( handler );
-    }
-
-    /** Create a declaration for a command argument.
-     *
-     * @param hasValue  Does it take a value or not?
-     * @param name1      Name of argument
-     * @param name2      Name of argument
-     * @param name3      Name of argument
-     * @param name4      Name of argument
-     * @param name5      Name of argument
-     * @param handler    ArgHandler
-     */
-
-    public ArgDecl(boolean hasValue, String name1, String name2, String name3, String name4, String name5, ArgHandler handler)
-    {
-        this(hasValue) ;
-        addName(name1) ;
-        addName(name2) ;
-        addName(name3) ;
-        addName(name4) ;
-        addName(name5) ;
-        addHook( handler );
-    }
-
-    public void addName(String name)
-    {
-        name = canonicalForm(name) ;
-        names.add(name) ;
-    }
-
-    public Set<String> getNames() { return names ; }
-    public Iterator<String> names() { return names.iterator() ; }
-
-    // Callback model
-
-    public void addHook(ArgHandler argHandler)
-    {
-        argHooks.add(argHandler) ;
-    }
-
-    protected void trigger(Arg arg)
-    {
-        for ( ArgHandler handler : argHooks )
-        {
-            handler.action( arg.getName(), arg.getValue() );
-        }
-    }
-
-    public boolean takesValue() { return takesValue ; }
-
-    public boolean matches(Arg a)
-    {
-        for ( String n : names )
-        {
-            if ( a.getName().equals( n ) )
-            {
-                return true;
-            }
-        }
-        return false ;
-    }
-
-    public boolean matches(String arg)
-    {
-        arg = canonicalForm(arg) ;
-        return names.contains(arg) ;
-    }
-
-    static String canonicalForm(String str)
-    {
-        if ( str.startsWith("--") )
-            return str.substring(2) ;
-
-        if ( str.startsWith("-") )
-            return str.substring(1) ;
-
-        return str ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/cmdline/ArgHandler.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/cmdline/ArgHandler.java b/jena-core/src/main/java/jena/cmdline/ArgHandler.java
deleted file mode 100644
index 1ce69ab..0000000
--- a/jena-core/src/main/java/jena/cmdline/ArgHandler.java
+++ /dev/null
@@ -1,29 +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 jena.cmdline;
-
-/** Interface for processing flag arguments.
- */
-public interface ArgHandler
-{
-    /** Process a flag argument.
-     *  Called with the value found or null if no value for this flag.
-     */ 
-    void action(String arg, String val) throws java.lang.IllegalArgumentException ;
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/cmdline/CmdLineUtils.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/cmdline/CmdLineUtils.java b/jena-core/src/main/java/jena/cmdline/CmdLineUtils.java
deleted file mode 100644
index 57a3a55..0000000
--- a/jena-core/src/main/java/jena/cmdline/CmdLineUtils.java
+++ /dev/null
@@ -1,77 +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 jena.cmdline;
-
-import java.lang.reflect.InvocationTargetException ;
-import java.lang.reflect.Method ;
-
-public class CmdLineUtils
-{
-    static public void setLog4jConfiguration() 
-    {
-		setLog4jConfiguration("jena-log4j.properties") ;
-    }
-    
-    static public void setLog4jConfiguration(String resourceName) 
-    {
-    	if ( System.getProperty("log4j.configuration") == null ) 
-        	System.setProperty("log4j.configuration", resourceName) ;    		
-    }
-    
-    public static void invokeCmd(String className, String[] args)
-    {
-        Class<?> cmd = null ;
-        try { cmd = Class.forName(className) ; }
-        catch (ClassNotFoundException ex)
-        {
-            System.err.println("Class '"+className+"' not found") ;
-            System.exit(1) ;
-        }
-        
-        Method method = null ;
-        try { method = cmd.getMethod("main", new Class[]{String[].class}) ; }
-        catch (NoSuchMethodException ex)
-        {
-            System.err.println("'main' not found but the class '"+className+"' was") ;
-            System.exit(1) ;
-        }
-        
-        try 
-        {
-            method.invoke(null, new Object[]{args}) ;
-            return ;
-        } catch (IllegalArgumentException ex)
-        {
-            System.err.println("IllegalArgumentException exception: "+ex.getMessage());
-            System.exit(7) ;
-        } catch (IllegalAccessException ex)
-        {
-            System.err.println("IllegalAccessException exception: "+ex.getMessage());
-            System.exit(8) ;
-        } catch (InvocationTargetException ex)
-        {
-            System.err.println("InvocationTargetException exception: "+ex.getMessage());
-            System.exit(9) ;
-        }
-
-        
-        //arq.query.main(args) ;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/cmdline/CommandLine.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/cmdline/CommandLine.java b/jena-core/src/main/java/jena/cmdline/CommandLine.java
deleted file mode 100644
index b7afa74..0000000
--- a/jena-core/src/main/java/jena/cmdline/CommandLine.java
+++ /dev/null
@@ -1,446 +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 jena.cmdline;
-
-import java.io.* ;
-import java.util.* ;
-
-import org.apache.jena.util.FileUtils ;
-
-/**
- * Command line argument processing based on a trigger model.
- * An action is called whenever an argument is encountered. Example:
- * <CODE>
- * public static void main (String[] args)
- * {
- *  CommandLine cl = new CommandLine() ;
- *  cl.add(false, "verbose")
- *    .add(true, "--file") ;
- *  cl.process(args) ;
- *
- *  for ( Iterator iter = cl.args() ; iter.hasNext() ; )
- *  ...
- * }
- * </CODE>
- * A gloabl hook is provided to inspect arguments just before the
- * action.  Tracing is enabled by setting this to a suitable function
- * such as that provided by trace():
- * <CODE>
- *  cl.setHook(cl.trace()) ;
- * </CODE>
- *
- * <ul>
- * <li>Neutral as to whether options have - or --</li>
- * <li>Does not allow multiple single letter options to be concatenated.</li>
- * <li>Options may be ended with - or --</li>
- * <li>Arguments with values can use "="</li>
- * </ul>
- */
-
-
-public class CommandLine
-{
-    /* Extra processor called before the registered one when set.
-     * Used for tracing.
-     */
-    protected ArgHandler argHook = null ;
-    protected String usage = null ;
-    protected Map<String, ArgDecl> argMap = new HashMap<>() ;
-    protected Map<String, Arg> args = new HashMap<>() ;
-    //protected boolean ignoreUnknown = false ;
-
-    // Rest of the items found on the command line
-    String indirectionMarker = "@" ;
-    protected boolean allowItemIndirect = false ;   // Allow @ to mean contents of file
-    boolean ignoreIndirectionMarker = false ;       // Allow comand line items to have leading @ but strip it.
-    protected List<String> items = new ArrayList<>() ;
-
-
-    /** Creates new CommandLine */
-    public CommandLine()
-    {
-    }
-
-    /** Set the global argument handler.  Called on every valid argument.
-     * @param argHandler Handler
-     */
-    public void setHook(ArgHandler argHandler) { argHook = argHandler ; }
-
-    public void setUsage(String usageMessage) { usage = usageMessage ; }
-
-    public boolean hasArgs() { return args.size() > 0 ; }
-    public boolean hasItems() { return items.size() > 0 ; }
-
-    public Iterator<Arg> args() { return args.values().iterator() ; }
-//    public Map args() { return args ; }
-//    public List items() { return items ; }
-
-    public int numArgs() { return args.size() ; }
-    public int numItems() { return items.size() ; }
-    public void pushItem(String s) { items.add(s) ; }
-
-    public boolean isIndirectItem(int i)
-    { return allowItemIndirect && items.get(i).startsWith(indirectionMarker) ; }
-
-    public String getItem(int i)
-    {
-        return getItem(i, allowItemIndirect) ;
-    }
-
-    public String getItem(int i, boolean withIndirect)
-    {
-        if ( i < 0 || i >= items.size() )
-            return null ;
-
-
-        String item = items.get(i) ;
-
-        if ( withIndirect && item.startsWith(indirectionMarker) )
-        {
-            item = item.substring(1) ;
-            try { item = FileUtils.readWholeFileAsUTF8(item) ; }
-            catch (Exception ex)
-            { throw new IllegalArgumentException("Failed to read '"+item+"': "+ex.getMessage()) ; }
-        }
-        return item ;
-    }
-
-
-    /** Process a set of command line arguments.
-     * @param argv The words of the command line.
-     * @throws IllegalArgumentException Throw when something is wrong (no value found, action fails).
-     */
-    public void process(String[] argv) throws java.lang.IllegalArgumentException
-    {
-        List<String> argList = new ArrayList<>() ;
-        argList.addAll(Arrays.asList(argv)) ;
-
-        int i = 0 ;
-        for ( ; i < argList.size() ; i++ )
-        {
-            String argStr = argList.get(i) ;
-            if (endProcessing(argStr))
-                break ;
-            
-            if ( ignoreArgument(argStr) )
-                continue ;
-
-            // If the flag has a "=" or :, it is long form --arg=value.
-            // Split and insert the arg
-            int j1 = argStr.indexOf('=') ;
-            int j2 = argStr.indexOf(':') ;
-            int j = Integer.MAX_VALUE ;
-
-            if ( j1 > 0 && j1 < j )
-                j = j1 ;
-            if ( j2 > 0 && j2 < j )
-                j = j2 ;
-
-            if ( j != Integer.MAX_VALUE )
-            {
-                String a2 = argStr.substring(j+1) ;
-                argList.add(i+1,a2) ;
-                argStr = argStr.substring(0,j) ;
-            }
-
-            argStr = ArgDecl.canonicalForm(argStr) ;
-            String val = null ;
-
-            if ( argMap.containsKey(argStr) )
-            {
-                if ( ! args.containsKey(argStr))
-                    args.put(argStr, new Arg(argStr)) ;
-
-                Arg arg = args.get(argStr) ;
-                ArgDecl argDecl = argMap.get(argStr) ;
-
-                if ( argDecl.takesValue() )
-                {
-                    if ( i == (argList.size()-1) )
-                        throw new IllegalArgumentException("No value for argument: "+arg.getName()) ;
-                    i++ ;
-                    val = argList.get(i) ;
-                    arg.setValue(val) ;
-                    arg.addValue(val) ;
-                }
-
-                // Global hook
-                if ( argHook != null )
-                    argHook.action(argStr, val) ;
-
-                argDecl.trigger(arg) ;
-            }
-            else
-                handleUnrecognizedArg( argList.get(i) );
-//                if ( ! getIgnoreUnknown() )
-//                    // Not recognized
-//                    throw new IllegalArgumentException("Unknown argument: "+argStr) ;
-        }
-
-        // Remainder.
-        if ( i < argList.size() )
-        {
-            if ( argList.get(i).equals("-") || argList.get(i).equals("--") )
-                i++ ;
-            for ( ; i < argList.size() ; i++ )
-            {
-                String item = argList.get(i) ;
-                items.add(item) ;
-            }
-        }
-    }
-
-    /** Hook to test whether this argument should be processed further
-     */
-    public boolean ignoreArgument( String argStr )
-    { return false ; }
-    
-    /** Answer true if this argument terminates argument processing for the rest
-     * of the command line. Default is to stop just before the first arg that
-     * does not start with "-", or is "-" or "--".
-     */
-    public boolean endProcessing( String argStr )
-    {
-        return ! argStr.startsWith("-") || argStr.equals("--") || argStr.equals("-");
-    }
-
-    /**
-     * Handle an unrecognised argument; default is to throw an exception
-     * @param argStr The string image of the unrecognised argument
-     */
-    public void handleUnrecognizedArg( String argStr ) {
-        throw new IllegalArgumentException("Unknown argument: "+argStr) ;
-    }
-
-
-    /** Test whether an argument was seen.
-     */
-
-    public boolean contains(ArgDecl argDecl) { return getArg(argDecl) != null ; }
-
-    /** Test whether an argument was seen.
-     */
-
-    public boolean contains(String s) { return getArg(s) != null ; }
-
-
-    /** Test whether the command line had a particular argument
-     *
-     * @param argName
-     */
-    public boolean hasArg(String argName) { return getArg(argName) != null ; }
-
-    /** Test whether the command line had a particular argument
-     *
-     * @param argDecl
-     */
-
-    public boolean hasArg(ArgDecl argDecl) { return getArg(argDecl) != null ; }
-
-
-    /** Get the argument associated with the argument declaration.
-     *  Actually returns the LAST one seen
-     *  @param argDecl Argument declaration to find
-     *  @return Last argument that matched.
-     */
-
-    public Arg getArg(ArgDecl argDecl)
-    {
-        Arg arg = null ;
-        for ( Arg a : args.values() )
-        {
-            if ( argDecl.matches( a ) )
-            {
-                arg = a;
-            }
-        }
-        return arg ;
-    }
-
-    /** Get the argument associated with the arguement name.
-     *  Actually returns the LAST one seen
-     *  @param arg Argument declaration to find
-     *  @return Arg - Last argument that matched.
-     */
-
-    public Arg getArg(String arg)
-    {
-        arg = ArgDecl.canonicalForm(arg) ;
-        return args.get(arg) ;
-    }
-
-    /**
-     * Returns the value (a string) for an argument with a value -
-     * returns null for no argument and no value.
-     * @param argDecl
-     * @return String
-     */
-    public String getValue(ArgDecl argDecl)
-    {
-        Arg arg = getArg(argDecl) ;
-        if ( arg == null )
-            return null ;
-        if ( arg.hasValue())
-            return arg.getValue() ;
-        return null ;
-    }
-
-    /**
-     * Returns the value (a string) for an argument with a value -
-     * returns null for no argument and no value.
-     * @param argName
-     * @return String
-     */
-    public String getValue(String argName)
-    {
-        Arg arg = getArg(argName) ;
-        if ( arg == null )
-            return null ;
-        return arg.getValue() ;
-    }
-
-    /**
-     * Returns all the values (0 or more strings) for an argument.
-     * @param argDecl
-     * @return List
-     */
-    public List<String> getValues(ArgDecl argDecl)
-    {
-        Arg arg = getArg(argDecl) ;
-        if ( arg == null )
-            return null ;
-        return arg.getValues() ;
-    }
-
-    /**
-     * Returns all the values (0 or more strings) for an argument.
-     * @param argName
-     * @return List
-     */
-    public List<String> getValues(String argName)
-    {
-        Arg arg = getArg(argName) ;
-        if ( arg == null )
-            return null ;
-        return arg.getValues() ;
-    }
-
-
-
-    /** Add an argument to those to be accepted on the command line.
-     * @param argName Name
-     * @param hasValue True if the command takes a (string) value
-     * @return The CommandLine processor object
-     */
-
-    public CommandLine add(String argName, boolean hasValue)
-    {
-        return add(new ArgDecl(hasValue, argName)) ;
-    }
-
-    /** Add an argument to those to be accepted on the command line.
-     *  Argument order reflects ArgDecl.
-     * @param hasValue True if the command takes a (string) value
-     * @param argName Name
-     * @return The CommandLine processor object
-     */
-
-    public CommandLine add(boolean hasValue, String argName)
-    {
-        return add(new ArgDecl(hasValue, argName)) ;
-    }
-
-    /** Add an argument object
-     * @param arg Argument to add
-     * @return The CommandLine processor object
-     */
-
-    public CommandLine add(ArgDecl arg)
-    {
-        for ( Iterator<String> iter = arg.names() ; iter.hasNext() ; )
-            argMap.put(iter.next(), arg) ;
-        return this ;
-    }
-
-//    public boolean getIgnoreUnknown() { return ignoreUnknown ; }
-//    public void setIgnoreUnknown(boolean ign) { ignoreUnknown = ign ; }
-
-    /**
-     * @return Returns whether items starting "@" have the value of named file.
-     */
-    public boolean allowItemIndirect()
-    {
-        return allowItemIndirect ;
-    }
-
-    /**
-     * @param allowItemIndirect Set whether items starting "@" have the value of named file.
-
-     */
-    public void setAllowItemIndirect(boolean allowItemIndirect)
-    {
-        this.allowItemIndirect = allowItemIndirect ;
-    }
-
-    /**
-     * @return Returns the ignoreIndirectionMarker.
-     */
-    public boolean isIgnoreIndirectionMarker()
-    {
-        return ignoreIndirectionMarker ;
-    }
-
-    /**
-     * @return Returns the indirectionMarker.
-     */
-    public String getIndirectionMarker()
-    {
-        return indirectionMarker ;
-    }
-
-    /**
-     * @param indirectionMarker The indirectionMarker to set.
-     */
-    public void setIndirectionMarker(String indirectionMarker)
-    {
-        this.indirectionMarker = indirectionMarker ;
-    }
-
-    /**
-     * @param ignoreIndirectionMarker The ignoreIndirectionMarker to set.
-     */
-    public void setIgnoreIndirectionMarker(boolean ignoreIndirectionMarker)
-    {
-        this.ignoreIndirectionMarker = ignoreIndirectionMarker ;
-    }
-
-    public ArgHandler trace()
-    {
-        final PrintStream _out = System.err ;
-        return new ArgHandler()
-            {
-                @Override
-                public void action (String arg, String val) //throws java.lang.IllegalArgumentException
-                {
-                    if ( _out != null )
-                        _out.println("Seen: "+arg+((val!=null)?" = "+val:"")) ;
-                }
-            } ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/qtest.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/qtest.java b/jena-core/src/main/java/jena/qtest.java
index 0345dfb..5d5137b 100644
--- a/jena-core/src/main/java/jena/qtest.java
+++ b/jena-core/src/main/java/jena/qtest.java
@@ -18,13 +18,12 @@
 
 package jena;
 
-import jena.cmdline.CmdLineUtils ;
 
 public class qtest
 {
     // Call-through to arq command line application
     public static void main(String[] args)
     {
-        CmdLineUtils.invokeCmd("arq.qtest",args) ;
+        InvokingUtil.invokeCmd("arq.qtest",args) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/query.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/query.java b/jena-core/src/main/java/jena/query.java
index 6b6e59d..1d0c431 100644
--- a/jena-core/src/main/java/jena/query.java
+++ b/jena-core/src/main/java/jena/query.java
@@ -18,7 +18,6 @@
 
 package jena;
 
-import jena.cmdline.CmdLineUtils ;
 
 
 public class query
@@ -29,6 +28,6 @@ public class query
         // Do this by reflection so it is not assumed that ARQ is available
         // at compile time.
         
-        CmdLineUtils.invokeCmd("arq.query", args) ;
+        InvokingUtil.invokeCmd("arq.query", args) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/rdfcat.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/rdfcat.java b/jena-core/src/main/java/jena/rdfcat.java
index f2c5f38..8a40bcc 100644
--- a/jena-core/src/main/java/jena/rdfcat.java
+++ b/jena-core/src/main/java/jena/rdfcat.java
@@ -24,14 +24,12 @@ package jena;
 // Imports
 ///////////////
 
-import static jena.cmdline.CmdLineUtils.setLog4jConfiguration ;
+import static org.apache.jena.atlas.logging.LogCtl.setCmdLogging;
 
 import java.io.OutputStream ;
 import java.util.* ;
+import java.util.function.BiConsumer;
 
-import jena.cmdline.ArgDecl ;
-import jena.cmdline.ArgHandler ;
-import jena.cmdline.CommandLine ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.rdf.model.impl.IO_Ctl ;
 import org.apache.jena.rdf.model.impl.RDFWriterFImpl ;
@@ -40,8 +38,6 @@ import org.apache.jena.util.FileManager ;
 import org.apache.jena.util.FileUtils ;
 import org.apache.jena.vocabulary.OWL ;
 import org.apache.jena.vocabulary.RDFS ;
-import org.slf4j.Logger ;
-import org.slf4j.LoggerFactory ;
 
 
 /**
@@ -122,96 +118,66 @@ import org.slf4j.LoggerFactory ;
  * input documents, and does not preserve any statement ordering from the input
  * serialisations. Also, duplicate triples will be suppressed.</p>
  */
+@Deprecated
 public class rdfcat
 {
-    static { setLog4jConfiguration() ; }
+    static { setCmdLogging("jena-log4j.properties") ; }
+    
+    /** The merged model containing all of the inputs */
+    protected Model m_model = ModelFactory.createDefaultModel();
+
+    /** The output format to write to, defaults to RDF/XML-ABBREV */
+    protected String m_outputFormat = "RDF/XML-ABBREV";
+
+    /** The input format we're expecting for the next URL to be read - defaults to RDF/XML */
+    protected String m_inputFormat = "RDF/XML";
+
+    /** Flag to indicate whether we include owl:imports and rdfs:seeAlso */
+    protected boolean m_include = false;
+
+    /** List of URL's that have been loaded already, occurs check */
+    protected Set<String> m_seen = new HashSet<>();
+
+    /** Flag to control whether import/include statements are filtered from merged models */
+    protected boolean m_removeIncludeStatements = true;
+
+    /** Action queue */
+    protected List<RCAction> m_actionQ = new ArrayList<>();
+
     
     // Constants
     //////////////////////////////////
 
     /** Argument setting expected input language to N3 */
     public final ArgDecl IN_N3 = new ArgDecl( true, "n", "n3", "ttl", "N3",
-            new ArgHandler() {
-                @Override
-                public void action( String arg, String val ) throws IllegalArgumentException {
-                    m_actionQ.add( new ReadAction( val, "N3") );
-            }} );
+    		(arg,val) -> m_actionQ.add( new ReadAction( val, "N3") ) );
 
     /** Argument setting expected input language to RDF/XML */
     public final ArgDecl IN_RDF_XML = new ArgDecl( true, "x", "xml", "rdfxml", "rdf",
-            new ArgHandler() {
-                @Override
-                public void action( String arg, String val ) throws IllegalArgumentException {
-                    m_actionQ.add( new ReadAction( val, "RDF/XML") );
-            }} );
+    		(arg,val) -> m_actionQ.add( new ReadAction( val, "RDF/XML") ) );
 
     /** Argument setting expected input language to NTRIPLE */
     public final ArgDecl IN_NTRIPLE = new ArgDecl( true, "t", "ntriples", "ntriple", "n-triple", "n-triples",
-            new ArgHandler() {
-                @Override
-                public void action( String arg, String val ) throws IllegalArgumentException {
-                    m_actionQ.add( new ReadAction( val, "N-TRIPLE" ) );
-            }} );
+    		(arg,val) -> m_actionQ.add( new ReadAction( val, "N-TRIPLE" ) ) );    
 
     /** Argument to set the output language */
-    public final ArgDecl OUT_LANG = new ArgDecl( true, "out",
-            new ArgHandler() {
-                @Override
-                public void action( String arg, String val ) throws IllegalArgumentException {
-                    setOutput( val );
-            }} );
+    public final ArgDecl OUT_LANG = new ArgDecl( true, "out", (arg,val) -> setOutput( val ) );
 
     /** Argument to set the default input language */
-    public final ArgDecl IN_LANG = new ArgDecl( true, "in",
-            new ArgHandler() {
-                @Override
-                public void action( String arg, String val ) throws IllegalArgumentException {
-                    expectInput( val );
-            }} );
+    public final ArgDecl IN_LANG = new ArgDecl( true, "in", (arg,val) -> expectInput( val ) );
 
     /** Argument to turn include processing on */
-    public final ArgDecl INCLUDE = new ArgDecl( false, "include",
-            new ArgHandler() {
-                @Override
-                public void action( String arg, String val ) throws IllegalArgumentException {
-                    setInclude( true );
-            }} );
+    public final ArgDecl INCLUDE = new ArgDecl( false, "include", (arg,val) -> setInclude( true ) );
 
     /** Argument to turn include processing off */
-    public final ArgDecl NOINCLUDE = new ArgDecl( false, "noinclude",
-            new ArgHandler() {
-                @Override
-                public void action( String arg, String val ) throws IllegalArgumentException {
-                    setInclude( false );
-            }} );
+    public final ArgDecl NOINCLUDE = new ArgDecl( false, "noinclude", (arg,val) -> setInclude( false ) );
 
     /** Argument to leave import/seeAlso statements in place in flattened models */
-    public final ArgDecl NOFILTER = new ArgDecl( false, "nofilter",
-            new ArgHandler() {
-                @Override
-                public void action( String arg, String val ) throws IllegalArgumentException {
-                    setRemoveIncludeStatements( false );
-            }} );
+    public final ArgDecl NOFILTER = new ArgDecl( false, "nofilter", (arg,val) -> setRemoveIncludeStatements( false ) );
 
     /** Argument to show usage */
-    public final ArgDecl HELP = new ArgDecl( false, "help",
-            new ArgHandler() {
-                @Override
-                public void action( String arg, String val ) throws IllegalArgumentException {
-                    usage();
-            }} );
-    public final ArgDecl USAGE = new ArgDecl( false, "usage",
-            new ArgHandler() {
-                @Override
-                public void action( String arg, String val ) throws IllegalArgumentException {
-                    usage();
-            }} );
-
-
-    // Static variables
-    //////////////////////////////////
-
-    static private Logger log = LoggerFactory.getLogger( rdfcat.class );
+    public final ArgDecl HELP = new ArgDecl( false, "help", (arg,val) -> usage() );
+    public final ArgDecl USAGE = new ArgDecl( false, "usage", (arg,val) -> usage() );
 
     // Instance variables
     //////////////////////////////////
@@ -228,28 +194,6 @@ public class rdfcat
                                                          .add( HELP )
                                                          .add( USAGE );
 
-    /** The merged model containing all of the inputs */
-    protected Model m_model = ModelFactory.createDefaultModel();
-
-    /** The output format to write to, defaults to RDF/XML-ABBREV */
-    protected String m_outputFormat = "RDF/XML-ABBREV";
-
-    /** The input format we're expecting for the next URL to be read - defaults to RDF/XML */
-    protected String m_inputFormat = "RDF/XML";
-
-    /** Flag to indicate whether we include owl:imports and rdfs:seeAlso */
-    protected boolean m_include = false;
-
-    /** List of URL's that have been loaded already, occurs check */
-    protected Set<String> m_seen = new HashSet<>();
-
-    /** Flag to control whether import/include statements are filtered from merged models */
-    protected boolean m_removeIncludeStatements = true;
-
-    /** Action queue */
-    protected List<RCAction> m_actionQ = new ArrayList<>();
-
-
     // Constructors
     //////////////////////////////////
 
@@ -265,6 +209,11 @@ public class rdfcat
 
     /* main loop */
     protected void go( String[] args ) {
+    		
+    		System.err.println( "------------------------------------" );
+		System.err.println( "DEPRECATED: Please use riot instead." );
+		System.err.println( "------------------------------------\n" );
+    	
         // ensure we use the new RIOT parser subsystem
         enableRIOTParser();
 
@@ -418,6 +367,9 @@ public class rdfcat
     }
 
     protected void usage() {
+    		System.err.println( "------------------------------------" );
+    		System.err.println( "DEPRECATED: Please use riot instead." );
+    		System.err.println( "------------------------------------\n" );
         System.err.println( "Usage: java jena.rdfcat (option|input)*" );
         System.err.println( "Concatenates the contents of zero or more input RDF documents." );
         System.err.println( "Options: -out N3 | N-TRIPLE | RDF/XML | RDF/XML-ABBREV" );
@@ -453,6 +405,7 @@ public class rdfcat
     //==============================================================================
 
     /** Local extension to CommandLine to handle mixed arguments and values */
+    @SuppressWarnings("deprecation")
     protected class RCCommandLine
         extends CommandLine
     {
@@ -504,6 +457,7 @@ public class rdfcat
     }
 
     /** Action to set the output format */
+    @SuppressWarnings("deprecation")
     protected class ReadAction
         implements RCAction
     {
@@ -528,4 +482,675 @@ public class rdfcat
             rc.expectInput( l );
         }
     }
+    
+    /**
+     * Command line argument processing based on a trigger model.
+     * An action is called whenever an argument is encountered. Example:
+     * <CODE>
+     * public static void main (String[] args)
+     * {
+     *  CommandLine cl = new CommandLine() ;
+     *  cl.add(false, "verbose")
+     *    .add(true, "--file") ;
+     *  cl.process(args) ;
+     *
+     *  for ( Iterator iter = cl.args() ; iter.hasNext() ; )
+     *  ...
+     * }
+     * </CODE>
+     * A gloabl hook is provided to inspect arguments just before the
+     * action.  Tracing is enabled by setting this to a suitable function
+     * such as that provided by trace():
+     * <CODE>
+     *  cl.setHook(cl.trace()) ;
+     * </CODE>
+     *
+     * <ul>
+     * <li>Neutral as to whether options have - or --</li>
+     * <li>Does not allow multiple single letter options to be concatenated.</li>
+     * <li>Options may be ended with - or --</li>
+     * <li>Arguments with values can use "="</li>
+     * </ul>
+     */
+
+
+    static class CommandLine
+    {
+        /* Extra processor called before the registered one when set.
+         * Used for tracing.
+         */
+        protected BiConsumer<String,String> argHook = null ;
+        protected String usage = null ;
+        protected Map<String, ArgDecl> argMap = new HashMap<>() ;
+        protected Map<String, Arg> args = new HashMap<>() ;
+        //protected boolean ignoreUnknown = false ;
+
+        // Rest of the items found on the command line
+        String indirectionMarker = "@" ;
+        protected boolean allowItemIndirect = false ;   // Allow @ to mean contents of file
+        boolean ignoreIndirectionMarker = false ;       // Allow comand line items to have leading @ but strip it.
+        protected List<String> items = new ArrayList<>() ;
+
+
+        /** Creates new CommandLine */
+        public CommandLine()
+        {
+        }
+
+        /** Set the global argument handler.  Called on every valid argument.
+         * @param argHandler Handler
+         */
+        public void setHook(BiConsumer<String, String> argHandler) { argHook = argHandler ; }
+
+        public void setUsage(String usageMessage) { usage = usageMessage ; }
+
+        public boolean hasArgs() { return args.size() > 0 ; }
+        public boolean hasItems() { return items.size() > 0 ; }
+
+        public Iterator<Arg> args() { return args.values().iterator() ; }
+//        public Map args() { return args ; }
+//        public List items() { return items ; }
+
+        public int numArgs() { return args.size() ; }
+        public int numItems() { return items.size() ; }
+        public void pushItem(String s) { items.add(s) ; }
+
+        public boolean isIndirectItem(int i)
+        { return allowItemIndirect && items.get(i).startsWith(indirectionMarker) ; }
+
+        public String getItem(int i)
+        {
+            return getItem(i, allowItemIndirect) ;
+        }
+
+        public String getItem(int i, boolean withIndirect)
+        {
+            if ( i < 0 || i >= items.size() )
+                return null ;
+
+
+            String item = items.get(i) ;
+
+            if ( withIndirect && item.startsWith(indirectionMarker) )
+            {
+                item = item.substring(1) ;
+                try { item = FileUtils.readWholeFileAsUTF8(item) ; }
+                catch (Exception ex)
+                { throw new IllegalArgumentException("Failed to read '"+item+"': "+ex.getMessage()) ; }
+            }
+            return item ;
+        }
+
+
+        /** Process a set of command line arguments.
+         * @param argv The words of the command line.
+         * @throws IllegalArgumentException Throw when something is wrong (no value found, action fails).
+         */
+        public void process(String[] argv) throws java.lang.IllegalArgumentException
+        {
+            List<String> argList = new ArrayList<>() ;
+            argList.addAll(Arrays.asList(argv)) ;
+
+            int i = 0 ;
+            for ( ; i < argList.size() ; i++ )
+            {
+                String argStr = argList.get(i) ;
+                if (endProcessing(argStr))
+                    break ;
+                
+                if ( ignoreArgument(argStr) )
+                    continue ;
+
+                // If the flag has a "=" or :, it is long form --arg=value.
+                // Split and insert the arg
+                int j1 = argStr.indexOf('=') ;
+                int j2 = argStr.indexOf(':') ;
+                int j = Integer.MAX_VALUE ;
+
+                if ( j1 > 0 && j1 < j )
+                    j = j1 ;
+                if ( j2 > 0 && j2 < j )
+                    j = j2 ;
+
+                if ( j != Integer.MAX_VALUE )
+                {
+                    String a2 = argStr.substring(j+1) ;
+                    argList.add(i+1,a2) ;
+                    argStr = argStr.substring(0,j) ;
+                }
+
+                argStr = ArgDecl.canonicalForm(argStr) ;
+                String val = null ;
+
+                if ( argMap.containsKey(argStr) )
+                {
+                    if ( ! args.containsKey(argStr))
+                        args.put(argStr, new Arg(argStr)) ;
+
+                    Arg arg = args.get(argStr) ;
+                    ArgDecl argDecl = argMap.get(argStr) ;
+
+                    if ( argDecl.takesValue() )
+                    {
+                        if ( i == (argList.size()-1) )
+                            throw new IllegalArgumentException("No value for argument: "+arg.getName()) ;
+                        i++ ;
+                        val = argList.get(i) ;
+                        arg.setValue(val) ;
+                        arg.addValue(val) ;
+                    }
+
+                    // Global hook
+                    if ( argHook != null )
+                        argHook.accept(argStr, val) ;
+
+                    argDecl.trigger(arg) ;
+                }
+                else
+                    handleUnrecognizedArg( argList.get(i) );
+//                    if ( ! getIgnoreUnknown() )
+//                        // Not recognized
+//                        throw new IllegalArgumentException("Unknown argument: "+argStr) ;
+            }
+
+            // Remainder.
+            if ( i < argList.size() )
+            {
+                if ( argList.get(i).equals("-") || argList.get(i).equals("--") )
+                    i++ ;
+                for ( ; i < argList.size() ; i++ )
+                {
+                    String item = argList.get(i) ;
+                    items.add(item) ;
+                }
+            }
+        }
+
+        /** Hook to test whether this argument should be processed further
+         */
+        public boolean ignoreArgument( String argStr )
+        { return false ; }
+        
+        /** Answer true if this argument terminates argument processing for the rest
+         * of the command line. Default is to stop just before the first arg that
+         * does not start with "-", or is "-" or "--".
+         */
+        public boolean endProcessing( String argStr )
+        {
+            return ! argStr.startsWith("-") || argStr.equals("--") || argStr.equals("-");
+        }
+
+        /**
+         * Handle an unrecognised argument; default is to throw an exception
+         * @param argStr The string image of the unrecognised argument
+         */
+        public void handleUnrecognizedArg( String argStr ) {
+            throw new IllegalArgumentException("Unknown argument: "+argStr) ;
+        }
+
+
+        /** Test whether an argument was seen.
+         */
+
+        public boolean contains(ArgDecl argDecl) { return getArg(argDecl) != null ; }
+
+        /** Test whether an argument was seen.
+         */
+
+        public boolean contains(String s) { return getArg(s) != null ; }
+
+
+        /** Test whether the command line had a particular argument
+         *
+         * @param argName
+         */
+        public boolean hasArg(String argName) { return getArg(argName) != null ; }
+
+        /** Test whether the command line had a particular argument
+         *
+         * @param argDecl
+         */
+
+        public boolean hasArg(ArgDecl argDecl) { return getArg(argDecl) != null ; }
+
+
+        /** Get the argument associated with the argument declaration.
+         *  Actually returns the LAST one seen
+         *  @param argDecl Argument declaration to find
+         *  @return Last argument that matched.
+         */
+
+        public Arg getArg(ArgDecl argDecl)
+        {
+            Arg arg = null ;
+            for ( Arg a : args.values() )
+            {
+                if ( argDecl.matches( a ) )
+                {
+                    arg = a;
+                }
+            }
+            return arg ;
+        }
+
+        /** Get the argument associated with the arguement name.
+         *  Actually returns the LAST one seen
+         *  @param arg Argument declaration to find
+         *  @return Arg - Last argument that matched.
+         */
+
+        public Arg getArg(String arg)
+        {
+            arg = ArgDecl.canonicalForm(arg) ;
+            return args.get(arg) ;
+        }
+
+        /**
+         * Returns the value (a string) for an argument with a value -
+         * returns null for no argument and no value.
+         * @param argDecl
+         * @return String
+         */
+        public String getValue(ArgDecl argDecl)
+        {
+            Arg arg = getArg(argDecl) ;
+            if ( arg == null )
+                return null ;
+            if ( arg.hasValue())
+                return arg.getValue() ;
+            return null ;
+        }
+
+        /**
+         * Returns the value (a string) for an argument with a value -
+         * returns null for no argument and no value.
+         * @param argName
+         * @return String
+         */
+        public String getValue(String argName)
+        {
+            Arg arg = getArg(argName) ;
+            if ( arg == null )
+                return null ;
+            return arg.getValue() ;
+        }
+
+        /**
+         * Returns all the values (0 or more strings) for an argument.
+         * @param argDecl
+         * @return List
+         */
+        public List<String> getValues(ArgDecl argDecl)
+        {
+            Arg arg = getArg(argDecl) ;
+            if ( arg == null )
+                return null ;
+            return arg.getValues() ;
+        }
+
+        /**
+         * Returns all the values (0 or more strings) for an argument.
+         * @param argName
+         * @return List
+         */
+        public List<String> getValues(String argName)
+        {
+            Arg arg = getArg(argName) ;
+            if ( arg == null )
+                return null ;
+            return arg.getValues() ;
+        }
+
+
+
+        /** Add an argument to those to be accepted on the command line.
+         * @param argName Name
+         * @param hasValue True if the command takes a (string) value
+         * @return The CommandLine processor object
+         */
+
+        public CommandLine add(String argName, boolean hasValue)
+        {
+            return add(new ArgDecl(hasValue, argName)) ;
+        }
+
+        /** Add an argument to those to be accepted on the command line.
+         *  Argument order reflects ArgDecl.
+         * @param hasValue True if the command takes a (string) value
+         * @param argName Name
+         * @return The CommandLine processor object
+         */
+
+        public CommandLine add(boolean hasValue, String argName)
+        {
+            return add(new ArgDecl(hasValue, argName)) ;
+        }
+
+        /** Add an argument object
+         * @param arg Argument to add
+         * @return The CommandLine processor object
+         */
+
+        public CommandLine add(ArgDecl arg)
+        {
+            for ( Iterator<String> iter = arg.names() ; iter.hasNext() ; )
+                argMap.put(iter.next(), arg) ;
+            return this ;
+        }
+
+//        public boolean getIgnoreUnknown() { return ignoreUnknown ; }
+//        public void setIgnoreUnknown(boolean ign) { ignoreUnknown = ign ; }
+
+        /**
+         * @return Returns whether items starting "@" have the value of named file.
+         */
+        public boolean allowItemIndirect()
+        {
+            return allowItemIndirect ;
+        }
+
+        /**
+         * @param allowItemIndirect Set whether items starting "@" have the value of named file.
+
+         */
+        public void setAllowItemIndirect(boolean allowItemIndirect)
+        {
+            this.allowItemIndirect = allowItemIndirect ;
+        }
+
+        /**
+         * @return Returns the ignoreIndirectionMarker.
+         */
+        public boolean isIgnoreIndirectionMarker()
+        {
+            return ignoreIndirectionMarker ;
+        }
+
+        /**
+         * @return Returns the indirectionMarker.
+         */
+        public String getIndirectionMarker()
+        {
+            return indirectionMarker ;
+        }
+
+        /**
+         * @param indirectionMarker The indirectionMarker to set.
+         */
+        public void setIndirectionMarker(String indirectionMarker)
+        {
+            this.indirectionMarker = indirectionMarker ;
+        }
+
+        /**
+         * @param ignoreIndirectionMarker The ignoreIndirectionMarker to set.
+         */
+        public void setIgnoreIndirectionMarker(boolean ignoreIndirectionMarker)
+        {
+            this.ignoreIndirectionMarker = ignoreIndirectionMarker ;
+        }
+
+	    	public BiConsumer<String, String> trace() {
+	    		return (arg, val) -> {
+	    			System.err.println("Seen: " + arg + (val != null ? " = " + val : ""));
+	    		};
+	    	}
+
+    }
+    
+    /** A command line argument that has been foundspecification.
+	 */
+	static class Arg
+	{
+	    String name ;
+	    String value ;
+	    List<String> values = new ArrayList<>() ;
+	    
+	    Arg() { name = null ; value = null ; }
+	    
+	    Arg(String _name) { this() ; setName(_name) ; }
+	    
+	    Arg(String _name, String _value) { this() ; setName(_name) ; setValue(_value) ; }
+	    
+	    void setName(String n) { name = n ; }
+	    
+	    void setValue(String v) { value = v ; }
+	    void addValue(String v) { values.add(v) ; }
+	    
+	    public String getName() { return name ; }
+	    public String getValue() { return value; }
+	    public List<String> getValues() { return values; }
+	    
+	    public boolean hasValue() { return value != null ; }
+	    
+	    public boolean matches(ArgDecl decl)
+	    {
+	        return decl.getNames().contains(name) ;
+	    }
+	    
+	}
+    
+    /** A command line argument specification.
+	 */
+	static class ArgDecl
+	{
+	    boolean takesValue ;
+	    Set<String> names = new HashSet<>() ;
+	    boolean takesArg = false ;
+		List<BiConsumer<String, String>> argHooks = new ArrayList<>() ;
+	    public static final boolean HasValue = true ;
+	    public static final boolean NoValue = false ;
+
+	    /** Create a declaration for a command argument.
+	     *
+	     * @param hasValue  Does it take a value or not?
+	     */
+
+	    public ArgDecl(boolean hasValue)
+	    {
+	        takesValue = hasValue ;
+	    }
+
+	    /** Create a declaration for a command argument.
+	     *
+	     * @param hasValue  Does it take a value or not?
+	     * @param name      Name of argument
+	     */
+
+	    public ArgDecl(boolean hasValue, String name)
+	    {
+	        this(hasValue) ;
+	        addName(name) ;
+	    }
+
+	    /** Create a declaration for a command argument.
+	     *
+	     * @param hasValue  Does it take a value or not?
+	     * @param name      Name of argument
+	     * @param handler   BiConsumer<String, String>
+	     */
+
+	    public ArgDecl(boolean hasValue, String name, BiConsumer<String, String> handler)
+	    {
+	        this(hasValue) ;
+	        addName(name) ;
+	        addHook( handler );
+	    }
+
+	    /** Create a declaration for a command argument.
+	     *
+	     * @param hasValue  Does it take a value or not?
+	     * @param name1      Name of argument
+	     * @param name2      Name of argument
+	     */
+
+	    public ArgDecl(boolean hasValue, String name1, String name2)
+	    {
+	        this(hasValue) ;
+	        addName(name1) ;
+	        addName(name2) ;
+	    }
+
+	    /** Create a declaration for a command argument.
+	     *
+	     * @param hasValue  Does it take a value or not?
+	     * @param name1      Name of argument
+	     * @param name2      Name of argument
+	     * @param handler   BiConsumer<String, String>
+	     */
+
+	    public ArgDecl(boolean hasValue, String name1, String name2, BiConsumer<String, String> handler)
+	    {
+	        this(hasValue) ;
+	        addName(name1) ;
+	        addName(name2) ;
+	        addHook( handler );
+	    }
+
+	    /** Create a declaration for a command argument.
+	     *
+	     * @param hasValue  Does it take a value or not?
+	     * @param name1      Name of argument
+	     * @param name2      Name of argument
+	     * @param name3      Name of argument
+	     */
+
+	    public ArgDecl(boolean hasValue, String name1, String name2, String name3)
+	    {
+	        this(hasValue) ;
+	        addName(name1) ;
+	        addName(name2) ;
+	        addName(name3) ;
+	    }
+
+	    /** Create a declaration for a command argument.
+	     *
+	     * @param hasValue  Does it take a value or not?
+	     * @param name1      Name of argument
+	     * @param name2      Name of argument
+	     * @param name3      Name of argument
+	     * @param handler   BiConsumer<String, String>
+	     */
+
+	    public ArgDecl(boolean hasValue, String name1, String name2, String name3, BiConsumer<String, String> handler)
+	    {
+	        this(hasValue) ;
+	        addName(name1) ;
+	        addName(name2) ;
+	        addName(name3) ;
+	        addHook( handler );
+	    }
+
+	    /** Create a declaration for a command argument.
+	     *
+	     * @param hasValue  Does it take a value or not?
+	     * @param name1      Name of argument
+	     * @param name2      Name of argument
+	     * @param name3      Name of argument
+	     * @param name4      Name of argument
+	     */
+
+	    public ArgDecl(boolean hasValue, String name1, String name2, String name3, String name4)
+	    {
+	        this(hasValue) ;
+	        addName(name1) ;
+	        addName(name2) ;
+	        addName(name3) ;
+	        addName(name4) ;
+	    }
+
+	    /** Create a declaration for a command argument.
+	     *
+	     * @param hasValue  Does it take a value or not?
+	     * @param name1      Name of argument
+	     * @param name2      Name of argument
+	     * @param name3      Name of argument
+	     * @param name4      Name of argument
+	     * @param handler    BiConsumer<String, String>
+	     */
+
+	    public ArgDecl(boolean hasValue, String name1, String name2, String name3, String name4, BiConsumer<String, String> handler)
+	    {
+	        this(hasValue) ;
+	        addName(name1) ;
+	        addName(name2) ;
+	        addName(name3) ;
+	        addName(name4) ;
+	        addHook( handler );
+	    }
+
+	    /** Create a declaration for a command argument.
+	     *
+	     * @param hasValue  Does it take a value or not?
+	     * @param name1      Name of argument
+	     * @param name2      Name of argument
+	     * @param name3      Name of argument
+	     * @param name4      Name of argument
+	     * @param name5      Name of argument
+	     * @param handler    BiConsumer<String, String>
+	     */
+
+	    public ArgDecl(boolean hasValue, String name1, String name2, String name3, String name4, String name5, BiConsumer<String, String> handler)
+	    {
+	        this(hasValue) ;
+	        addName(name1) ;
+	        addName(name2) ;
+	        addName(name3) ;
+	        addName(name4) ;
+	        addName(name5) ;
+	        addHook( handler );
+	    }
+
+	    public void addName(String name)
+	    {
+	        name = canonicalForm(name) ;
+	        names.add(name) ;
+	    }
+
+	    public Set<String> getNames() { return names ; }
+	    public Iterator<String> names() { return names.iterator() ; }
+
+	    // Callback model
+
+	    public void addHook(BiConsumer<String, String> argHandler)
+	    {
+	        argHooks.add(argHandler) ;
+	    }
+
+	    protected void trigger(Arg arg)
+	    {
+			argHooks.forEach(action -> action.accept( arg.getName(), arg.getValue() ));
+	    }
+
+	    public boolean takesValue() { return takesValue ; }
+
+	    public boolean matches(Arg a)
+	    {
+	        for ( String n : names )
+	        {
+	            if ( a.getName().equals( n ) )
+	            {
+	                return true;
+	            }
+	        }
+	        return false ;
+	    }
+
+	    public boolean matches(String arg)
+	    {
+	        arg = canonicalForm(arg) ;
+	        return names.contains(arg) ;
+	    }
+
+	    static String canonicalForm(String str)
+	    {
+	        if ( str.startsWith("--") )
+	            return str.substring(2) ;
+
+	        if ( str.startsWith("-") )
+	            return str.substring(1) ;
+
+	        return str ;
+	    }
+	}
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/rdfcompare.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/rdfcompare.java b/jena-core/src/main/java/jena/rdfcompare.java
index a58958f..062a250 100644
--- a/jena-core/src/main/java/jena/rdfcompare.java
+++ b/jena-core/src/main/java/jena/rdfcompare.java
@@ -18,7 +18,7 @@
 
 package jena;
 
-import static jena.cmdline.CmdLineUtils.setLog4jConfiguration;
+import static org.apache.jena.atlas.logging.LogCtl.setCmdLogging;
 
 import java.net.URL;
 import java.io.FileInputStream;
@@ -46,7 +46,7 @@ import org.apache.jena.rdf.model.* ;
  */
 public class rdfcompare extends java.lang.Object {
 
-    static { setLog4jConfiguration() ; }
+    static { setCmdLogging("jena-log4j.properties") ; }
 
     /**
     * @param args the command line arguments

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/rdfcopy.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/rdfcopy.java b/jena-core/src/main/java/jena/rdfcopy.java
index 79174b3..991b03f 100644
--- a/jena-core/src/main/java/jena/rdfcopy.java
+++ b/jena-core/src/main/java/jena/rdfcopy.java
@@ -18,7 +18,7 @@
 
 package jena;
 
-import static jena.cmdline.CmdLineUtils.setLog4jConfiguration;
+import static org.apache.jena.atlas.logging.LogCtl.setCmdLogging;
 
 import java.net.*;
 import java.io.*;
@@ -52,7 +52,7 @@ import org.apache.jena.shared.JenaException ;
  */
 public class rdfcopy extends java.lang.Object {
 
-    static { setLog4jConfiguration() ; }
+    static { setCmdLogging("jena-log4j.properties") ; }
 
 	/**
 	* @param args the command line arguments

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/rdfparse.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/rdfparse.java b/jena-core/src/main/java/jena/rdfparse.java
index 911cb3c..a875bc3 100644
--- a/jena-core/src/main/java/jena/rdfparse.java
+++ b/jena-core/src/main/java/jena/rdfparse.java
@@ -18,7 +18,7 @@
 
 package jena;
 
-import static jena.cmdline.CmdLineUtils.setLog4jConfiguration ;
+import static org.apache.jena.atlas.logging.LogCtl.setCmdLogging;
 
 import java.lang.reflect.Constructor ;
 
@@ -77,7 +77,7 @@ import org.apache.jena.shared.Command ;
 
 public class rdfparse {
 
-    static { setLog4jConfiguration() ; }
+    static { setCmdLogging("jena-log4j.properties") ; }
 
     /** Either start an RDF/XML to NTriple converter, or run test suite.
 	 * @param args The command-line arguments.

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/rset.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/rset.java b/jena-core/src/main/java/jena/rset.java
index 2eb2604..2374681 100644
--- a/jena-core/src/main/java/jena/rset.java
+++ b/jena-core/src/main/java/jena/rset.java
@@ -18,13 +18,12 @@
 
 package jena;
 
-import jena.cmdline.CmdLineUtils ;
 
 public class rset
 {
     // Call-through to arq command line application
     public static void main(String... args)
     {
-        CmdLineUtils.invokeCmd("arq.rset", args) ;
+        InvokingUtil.invokeCmd("arq.rset", args) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/schemagen.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/schemagen.java b/jena-core/src/main/java/jena/schemagen.java
index 29642bc..41b0313 100644
--- a/jena-core/src/main/java/jena/schemagen.java
+++ b/jena-core/src/main/java/jena/schemagen.java
@@ -21,9 +21,7 @@
 package jena;
 
 
-// Imports
-///////////////
-import static jena.cmdline.CmdLineUtils.setLog4jConfiguration ;
+import static org.apache.jena.atlas.logging.LogCtl.setCmdLogging;
 
 import java.io.ByteArrayOutputStream ;
 import java.io.File ;
@@ -62,7 +60,7 @@ import org.slf4j.LoggerFactory ;
  */
 public class schemagen {
     
-    static { setLog4jConfiguration() ; }
+    static { setCmdLogging("jena-log4j.properties") ; }
 
     // Constants
     //////////////////////////////////

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/sparql.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/sparql.java b/jena-core/src/main/java/jena/sparql.java
index 4671aa2..e3340d3 100644
--- a/jena-core/src/main/java/jena/sparql.java
+++ b/jena-core/src/main/java/jena/sparql.java
@@ -18,13 +18,12 @@
 
 package jena;
 
-import jena.cmdline.CmdLineUtils ;
 
 public class sparql
 {
     // Call-through to arq command line application
     public static void main(String[] args)
     {
-        CmdLineUtils.invokeCmd("arq.sparql",args) ;
+        InvokingUtil.invokeCmd("arq.sparql",args) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/turtle.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/turtle.java b/jena-core/src/main/java/jena/turtle.java
index 964e46c..36557eb 100644
--- a/jena-core/src/main/java/jena/turtle.java
+++ b/jena-core/src/main/java/jena/turtle.java
@@ -18,13 +18,12 @@
 
 package jena;
 
-import jena.cmdline.CmdLineUtils ;
 
 
 public class turtle
 {
     public static void main(String... args)
     {
-        CmdLineUtils.invokeCmd("riotcmd.turtle",args) ;
+        InvokingUtil.invokeCmd("riotcmd.turtle",args) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/main/java/jena/version.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/version.java b/jena-core/src/main/java/jena/version.java
index 1982bf4..d633812 100644
--- a/jena-core/src/main/java/jena/version.java
+++ b/jena-core/src/main/java/jena/version.java
@@ -18,7 +18,7 @@
 
 package jena;
 
-import static jena.cmdline.CmdLineUtils.setLog4jConfiguration;
+import static org.apache.jena.atlas.logging.LogCtl.setCmdLogging;
 
 import java.lang.reflect.*;
 
@@ -30,7 +30,7 @@ import org.apache.jena.Jena ;
  */
 public class version implements Jena {
 
-    static { setLog4jConfiguration() ; }
+    static { setCmdLogging("jena-log4j.properties") ; }
 
     /**
 	 * Print out jena version information and exit.

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/test/java/jena/test/Test_rdfcat.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/jena/test/Test_rdfcat.java b/jena-core/src/test/java/jena/test/Test_rdfcat.java
index a72c57b..d2c42aa 100644
--- a/jena-core/src/test/java/jena/test/Test_rdfcat.java
+++ b/jena-core/src/test/java/jena/test/Test_rdfcat.java
@@ -26,6 +26,7 @@ import junit.framework.TestCase;
 import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.rdf.model.ModelFactory ;
 
+@SuppressWarnings("deprecation")
 public class Test_rdfcat extends TestCase
 {
     public void testAbbreviationTable()

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-core/src/test/java/org/apache/jena/test/TestPackage.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/test/TestPackage.java b/jena-core/src/test/java/org/apache/jena/test/TestPackage.java
index faaa5d8..51cde58 100644
--- a/jena-core/src/test/java/org/apache/jena/test/TestPackage.java
+++ b/jena-core/src/test/java/org/apache/jena/test/TestPackage.java
@@ -18,9 +18,10 @@
 
 package org.apache.jena.test;
 
-import static jena.cmdline.CmdLineUtils.setLog4jConfiguration;
+import static org.apache.jena.atlas.logging.LogCtl.setCmdLogging;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
+
 import org.apache.jena.assembler.test.TestAssemblerPackage ;
 
 /**
@@ -32,7 +33,7 @@ import org.apache.jena.assembler.test.TestAssemblerPackage ;
 public class TestPackage extends TestCase {
 
     static {
-    	setLog4jConfiguration(JenaTest.log4jFilenameTests) ;
+    	setCmdLogging(JenaTest.log4jFilenameTests);
     }
 	
     static public TestSuite suite() {

http://git-wip-us.apache.org/repos/asf/jena/blob/ca45fa5e/jena-parent/pom.xml
----------------------------------------------------------------------
diff --git a/jena-parent/pom.xml b/jena-parent/pom.xml
index 8fece33..643219c 100644
--- a/jena-parent/pom.xml
+++ b/jena-parent/pom.xml
@@ -298,6 +298,11 @@
           </exclusion>
         </exclusions>
       </dependency>
+      <dependency>
+        <groupId>commons-cli</groupId>
+        <artifactId>commons-cli</artifactId>
+        <version>1.3</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 


[2/2] jena git commit: Remove seemingly unnecessary @SuppressWarnings("deprecation")

Posted by an...@apache.org.
Remove seemingly unnecessary @SuppressWarnings("deprecation")


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

Branch: refs/heads/master
Commit: 21b37d1b8a4359de8f69786a57aa7d4283f3b779
Parents: ca45fa5
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Jun 11 18:48:31 2015 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Jun 11 18:48:31 2015 +0100

----------------------------------------------------------------------
 jena-core/src/main/java/jena/rdfcat.java | 2 --
 1 file changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/21b37d1b/jena-core/src/main/java/jena/rdfcat.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/jena/rdfcat.java b/jena-core/src/main/java/jena/rdfcat.java
index 8a40bcc..e80742a 100644
--- a/jena-core/src/main/java/jena/rdfcat.java
+++ b/jena-core/src/main/java/jena/rdfcat.java
@@ -405,7 +405,6 @@ public class rdfcat
     //==============================================================================
 
     /** Local extension to CommandLine to handle mixed arguments and values */
-    @SuppressWarnings("deprecation")
     protected class RCCommandLine
         extends CommandLine
     {
@@ -457,7 +456,6 @@ public class rdfcat
     }
 
     /** Action to set the output format */
-    @SuppressWarnings("deprecation")
     protected class ReadAction
         implements RCAction
     {