summaryrefslogtreecommitdiff
path: root/Build/source/texk/tex4htk/java/xtpipes
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/tex4htk/java/xtpipes')
-rw-r--r--Build/source/texk/tex4htk/java/xtpipes/FileInfo.java170
-rw-r--r--Build/source/texk/tex4htk/java/xtpipes/InputObject.java323
-rw-r--r--Build/source/texk/tex4htk/java/xtpipes/Xtpipes.java1508
-rw-r--r--Build/source/texk/tex4htk/java/xtpipes/XtpipesPrintWriter.java28
-rw-r--r--Build/source/texk/tex4htk/java/xtpipes/XtpipesUni.java41
-rw-r--r--Build/source/texk/tex4htk/java/xtpipes/util/ScriptsManager.java197
-rw-r--r--Build/source/texk/tex4htk/java/xtpipes/util/ScriptsManagerLH.java26
7 files changed, 0 insertions, 2293 deletions
diff --git a/Build/source/texk/tex4htk/java/xtpipes/FileInfo.java b/Build/source/texk/tex4htk/java/xtpipes/FileInfo.java
deleted file mode 100644
index 001b273dce1..00000000000
--- a/Build/source/texk/tex4htk/java/xtpipes/FileInfo.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package xtpipes;
-/*
-FileInfo.java (2009-01-27-22:19)
-*/
-import java.io.File;
-import java.io.PrintWriter;
-
-public class FileInfo{
- static String [] classPaths = null;
-static String [] scriptPaths = null;
-static java.util.HashMap <String,String> registry =
- new java.util.HashMap <String,String>();
-static String slash = System.getProperty("file.separator");
-static String ii_scriptDir;
-static PrintWriter log;
-static boolean trace;
-
- public FileInfo(PrintWriter log, String iii_scriptDir, boolean trace){
- FileInfo.log = log;
- FileInfo.ii_scriptDir = iii_scriptDir;
- FileInfo.trace = trace;
- classPaths = FileInfo.getPaths( System.getProperty("java.class.path") );
-if( iii_scriptDir != null ){
- scriptPaths = FileInfo.getPaths( iii_scriptDir );
-}
-
-
- }
- public static String searchFile( String file ){
- String key = ((ii_scriptDir == null)? "" : ii_scriptDir )
- + "!" + file;
- String result = (String) registry.get( key );
- if( result == null ){
- for(int i=0; i<2; i++){
- if( trace ){
- log.println( "Searching: " + file );
- }
- if( (new File(file)).exists() ){
- result = ( file.indexOf(slash) == -1 )?
- (System.getProperty("user.dir") + slash + file)
- :
- file;
- }
- else {
- if( ii_scriptDir != null ){
- int k = scriptPaths.length;
-while( k>0 ){
- k--;
- if( trace ){
- log.println( "Searching: " + file
- + ", recursively in directory: " + scriptPaths[k] );
- }
- result = searchDirectory( new File(scriptPaths[k]), file);
- if( result != null ){ break; }
-}
-String s = ii_scriptDir + file;
-if( (new File( s )).exists() ){ result = s; }
-
- }
- if( result == null ){
- int k = classPaths.length;
-String toFile = "xtpipes" + slash + "lib" + slash + file;
-while( k>0 ){
- k--;
- String s = classPaths[k] + toFile;
- if( trace ){ log.println( "Searching: " + s ); }
- if( new File(s).exists() ){ result = s; break; }
-}
-
- } }
- if( result != null ){ break; }
- file = new File(file).getName();
- }
- if( result != null ){
- result = FileInfo.cleanPath(result);
- registry.put(key, result);
- }
- }
- if( trace ){
- if( result == null ){
- log.println(
- "Directory paths from xtpipes command line option -i: "
- + ii_scriptDir );
- } else { log.println( "Found: " + result + "\n" ); }
- log.flush();
- }
- return result;
-}
-
- static String [] getPaths( String dirs ){
- String [] paths = null;
- paths = dirs.split( System.getProperty("path.separator") );
- int k = paths.length;
- while( k>0 ){
- k--;
- paths[k] = cleanPath( paths[k] );
-
- int len = paths[k].length();
- if( (len>1) && (paths[k].lastIndexOf(slash + ".") == (len-1)) ){
- paths[k] = paths[k].substring(0,len-1);
- } else if( (len>0) && ((len-1) != paths[k].lastIndexOf( slash )) ){
- paths[k] += slash;
- } }
- return paths;
-}
-
- public static String cleanPath( String path ){
- String slash = System.getProperty("file.separator");
- String userDir = System.getProperty( "user.dir" );
- if( (path.length() > 0) && (path.charAt(0) == '~') ){
- if( (path.length() == 1) || (path.charAt(1) != '~') ){
- path = System.getProperty( "user.home" )
- + path.substring(1);
- } }
-
- if( path.startsWith("..") ){
- path = userDir.substring(0,
- Math.max(0,Math.max(
- userDir.lastIndexOf("/")
- ,
- userDir.lastIndexOf("\\")
- )))
- + path.substring(2);
- }
- if( path.startsWith(".") ){
- path = userDir + slash + path.substring(1);
- }
-
- int i;
- while(
- ((i=path.indexOf("/..")) != -1)
- ||
- ((i=path.indexOf("\\..")) != -1)
- ){
- String s = path.substring(0,i);
- int j = Math.max(s.lastIndexOf("/"), s.lastIndexOf("\\"));
- path = path.substring(0,j) + path.substring(i+3);
- }
- while(
- ((i=path.indexOf("/.")) != -1)
- ||
- ((i=path.indexOf("\\.")) != -1)
- ){
- String s = path.substring(0,i);
- int j = Math.max(s.indexOf("/"), s.indexOf("\\"));
- path = path.substring(0,j) + path.substring(i+2);
- }
-
- return path;
-}
-
- static String searchDirectory(File dir, String file) {
- String result = null;
- if( dir.isDirectory() ){
- String [] children = dir.list();
- for (int i=0; i<children.length; i++) {
- result = searchDirectory( new File(dir,children[i]), file);
- if( result != null ) { break; }
- }
- } else {
- String s = dir.toString();
- if( s.equals(file) || s.endsWith(slash + file) ){
- result = s;
- }
- }
- return result;
-}
-
-}
-
diff --git a/Build/source/texk/tex4htk/java/xtpipes/InputObject.java b/Build/source/texk/tex4htk/java/xtpipes/InputObject.java
deleted file mode 100644
index 43dde6d4d0e..00000000000
--- a/Build/source/texk/tex4htk/java/xtpipes/InputObject.java
+++ /dev/null
@@ -1,323 +0,0 @@
-package xtpipes;
-/*
-InputObject.java (2009-01-27-22:19)
-*/
-import java.io.PrintWriter;
-import java.net.URL;
-import java.net.URLConnection;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.InputStream;
-
-
-public class InputObject{
- InputStream inputStream = null;
-URLConnection connection = null;
-String filename = null;
-static PrintWriter log;
-String dtdRoot = null,
- publicId = null,
- systemId = null,
- xtpipes = null,
- url = null,
- metaType = null,
- contentType = null,
- root = null;
-
- public InputObject( String filename, PrintWriter log ){
- InputObject.log = log;
- filename = filename.trim();
- try{
- inputStream = getInputStream(filename);
- } catch (Exception exp0){
- if( !filename.startsWith( "http://" ) ){
- try{
- String name = "http://" + filename;
- inputStream = getInputStream( name );
- filename = name;
- } catch (Exception exp1){
- try{
- String name = FileInfo.cleanPath(filename);
- inputStream = getInputStream( name );
- filename = name;
- } catch (Exception exp2){ inputStream = null; }
- } } }
- this.filename = filename;
-}
-public InputObject( byte [] bytes, PrintWriter log ){
- InputObject.log = log;
- inputStream = new ByteArrayInputStream( bytes );
-}
-
- private java.io.InputStream getInputStream(
- String filename )
- throws java.io.IOException{
- if( filename == null ){ return null; }
- URL url;
- java.io.InputStream inputStream = null;
-// String loadingError = "Failed to get requested file.";
- try {
- url = new File(filename).toURI().toURL();
- inputStream = getInputStream( url );
- } catch (Exception ie) {
- try {
- url = new URL(filename);
- inputStream = getInputStream( url );
- } catch (java.io.FileNotFoundException ife) {
- throw new java.io.IOException(
- "File not found: " + filename);
- } catch (Exception ife) {
- throw new java.io.IOException(ife + "\n" + ie);
- } }
- return inputStream;
-}
-
- private java.io.InputStream getInputStream( URL url )
- throws java.io.FileNotFoundException,
- java.io.IOException {
- java.io.InputStream inputStream = null;
- String errMssg = "";
- try{
- connection = null;
- connection = url.openConnection();
- connection.setRequestProperty("User-Agent",
- "["
- + System.getProperty("os.name")
- + " / "
- + System.getProperty("os.arch")
- + "]"
- + "["
- + System.getProperty("java.version")
- + " - "
- + System.getProperty("java.vendor")
- + "]"
-
- );
- inputStream = connection.getInputStream();
- } catch(java.io.FileNotFoundException ve){
- errMssg = "File not found: " + url;
- throw new java.io.FileNotFoundException(
- "--- Ml2xml input error --- " + errMssg );
- } catch (javax.net.ssl.SSLHandshakeException ve){
- errMssg = "SSL Handshake Exception: " + ve.getMessage();
- throw new javax.net.ssl.SSLHandshakeException(
- "--- Ml2xml input error --- " + errMssg );
- } catch (java.net.UnknownHostException ve){
- errMssg = "Unknown Host Exception: " + ve.getMessage();
- throw new java.net.UnknownHostException(
- "--- Ml2xml input error --- " + errMssg );
- }
- return inputStream;
-}
-
- public void buildProfile( boolean trace ){
- if( trace ){
- log.println(
- "xtpipes (2009-01-27-22:19)"
- + "\n java.version: " + System.getProperty("java.version")
- + "\n java.class.path: " + System.getProperty("java.class.path")
- + "\n os.name: " + System.getProperty("os.name")
- + "\n user.home: " + System.getProperty("user.home")
- + "\n user.dir: " + System.getProperty("user.dir")
- );
- }
- if( connection != null ){
- contentType = connection . getContentType();
-url = connection . getURL() . toString();
-
- }
- int max = 8192;
-int buffSize = 4096;
-byte [] buff = new byte [ buffSize ];
-int m = 0;
-int length = 0;
-int ch;
-int type = 0
-;
-String token = null;
-while( m < max ){
- try{
- int k = Math.min( max - m, buffSize );
- length = inputStream.read( buff, 0, k );
- if( length == -1 ){ break; }
- if( length == 0 ){ continue; }
- } catch (java.io.IOException e){
- System.err.println( "--- xtpipes error --- : " + e );
- break;
- }
- for(int i = 0 ; i < length; i++ ){
- switch( ch = buff[i] ){
- case '<': token = "";
- type = 1
-;
- break;
- case '>': if( token != null ){
- token = token . replaceAll( "\\s+", " ");
- if( type == 9
- ){
- if( xtpipes == null ){
- int n = token.length();
- if( (n > 1) && (token.charAt( n - 1 ) == '?')
- && (token.startsWith("xtpipes") ) ){
- String s = token . substring(7,n-1) . replaceAll( "\\s+", "");
- n = s.length();
- if( (n>6) && (s.startsWith("file="))
- && (s.charAt(5) == s.charAt(n-1)) ){
- xtpipes = s.substring(6,n-1);
- } } }
-} else if( type == 11
- ){
- if( metaType == null ){
- token = token . replaceAll( "\\s+", "");
- int k = token.indexOf("http-equiv");
- int n = token.indexOf("content");
- if( (k != -1) && (n != -1) ){
- if( token.length() > (Math.max(k,n)+3) ){
- if( token.substring(k+12).startsWith("Content-Type") ){
- token = token.substring(n+9);
- n = token.indexOf(";");
- if( n !=-1 ){ metaType = token.substring(0,n); }
- } } } }
-} else if( (type == 2
-) && (root == null) ){
- root = token;
-}
-
- token = null;
- }
- break;
- case '\n':
- case ' ': if( token != null ){
- if( type == 2
- ){
- if( token.equals("meta") ){
- if( metaType == null ){
- type = 11
-;
- token = " ";
- } else {
- token = null;
- }
- } else {
- if( root == null ){
- root = token;
- }
- token = null;
- }
-} else if( type == 4
- ){
- if( token.equals("DOCTYPE") ){
- type = 5
-;
- token = " ";
- } else { token = null; }
-} else if( type == 5
- ){
- if( !token.trim().equals("") ){
- dtdRoot = token.trim();
- token = " ";
- type = 6
-;
- } else { token = null; }
-} else if( type == 6
- ){
- if( !token.trim().equals("") ){
- token = token.trim();
- if( token.equals("PUBLIC") ){
- type = 7
-;
- token = "";
- } else if( token.equals("SYSTEM") ){
- type = 8
-;
- token = "";
- } else { token = null; }
- }
-} else { token += ' '; }
-
- }
- break;
- case '"':
- case '\'': if( token == null ){ break; }
- if( !token.trim().equals("") ){
- if( token.trim().charAt(0) == ch ){
- if( type == 7
- ){
- publicId = token.trim().substring(1);
- type = 8
-;
- token = "";
- break;
- }
- else if( type == 8
- ){
- systemId = token.trim().substring(1);
- token = null;
- break;
- }
-} }
-
- default: if( token != null ){
- if( type == 3
- ){
- if( ch == 'D' ){
- type = 4
-;
- token += (char) ch;
- } else { token = null; type = 0
-; }
- }
- else
- if( token.equals("") && (type == 1
-) ){
- switch( ch ){
- case '!': type = 3
-;
- break;
- case '?': type = 9
- ;
- break;
- default: if( Character.isLetter(ch)
- && ((root == null) || (metaType == null)) ){
- type = 2
-;
- token += (char) ch;
- } else { token = null; }
-}
-
- } else { token += (char) ch; }
-} }
-
- m++;
-} }
-
- if( trace ){
- log.println(
- " url = " + url
- + "\n contentType = " + contentType
- + "\n publicId = " + publicId
- + "\n systemId = " + systemId
- + "\n xtpipes = " + xtpipes
- + "\n root = " + root
- + "\n dtdRoot = " + dtdRoot
- );
-} }
-
- public InputStream getInputStream(){ return inputStream; }
- public String getFilename(){
- return (url == null)?
- ( (connection == null)? filename
- :
- connection . getURL() . toString()
- )
- : url;
- }
- public String getContentType(){ return contentType; }
- public String getMetaType(){ return metaType; }
- public String getPublicId(){ return publicId; }
- public String getSystemId(){ return systemId; }
- public String getXtpipes(){ return xtpipes; }
- public String getRoot(){ return root; }
- public String getDtdRoot(){ return dtdRoot; }
-}
-
diff --git a/Build/source/texk/tex4htk/java/xtpipes/Xtpipes.java b/Build/source/texk/tex4htk/java/xtpipes/Xtpipes.java
deleted file mode 100644
index e1a037b5405..00000000000
--- a/Build/source/texk/tex4htk/java/xtpipes/Xtpipes.java
+++ /dev/null
@@ -1,1508 +0,0 @@
-package xtpipes;
-/*
-Xtpipes.java (2009-01-27-22:19)
-*/
-// import xtpipes.util.InputObject;
-// import xtpipes.util.FileInfo;
-import java.net.URLConnection;
-import java.io.*;
-import java.lang.reflect.*;
-import java.util.HashMap;
-import java.util.Stack;
-import javax.xml.parsers.*;
-import javax.xml.transform.*;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.*;
-import org.w3c.dom.*;
-import org.xml.sax.*;
-import org.xml.sax.helpers.*;
-import java.net.URL;
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-
-
-public class Xtpipes {
- private static HashMap <String,Object> map;
-private static boolean needScript;
-private static boolean returnDom;
-private static String result;
-static PrintWriter logWriter = new PrintWriter( System.err );
-private static String inFile,
- inData;
-private static boolean exceptionErrs, messages;
-public static InputObject inputObject;
-private static String outFileName;
-private static PrintWriter outPrintWriter;
-private static boolean returnToFile = false;
-public static String scriptFile;
-private static String scriptMap;
-static String i_scriptDir;
-private static TransformerFactory fc;
-private static Transformer identityTransformer;
-private static SAXParserFactory saxFactory;
-private static DocumentBuilder domBuilder;
-private static Stack <XMLReader> saxReaderStack;
-private static Method method;
-private static String rootName;
-static boolean trace;
-private static String [] ml2xml = null;
-static Class<?> ml2xmlClassObj = null;
-public static String errMssg;
-
- public static void main(String args[]) throws Exception {
- map = new HashMap <String,Object> ();
-needScript = true;
-returnDom = false;
-result = null;
-inFile = null;
-inData = null;
-exceptionErrs = false;
-messages = false;
-outFileName = null;
-outPrintWriter = null;
-scriptFile = null;
-i_scriptDir = null;
-scriptMap = null;
-saxReaderStack = new Stack <XMLReader> ();
-rootName = null;
-trace = false;
-
- mainMethod(args);
-}
-
- public static void xtpipes(String [] args,
- OutputStream out,
- PrintWriter log)
- throws Exception {
- map = new HashMap <String,Object> ();
-needScript = true;
-returnDom = false;
-result = null;
-inFile = null;
-inData = null;
-exceptionErrs = false;
-messages = false;
-outFileName = null;
-outPrintWriter = null;
-scriptFile = null;
-i_scriptDir = null;
-scriptMap = null;
-saxReaderStack = new Stack <XMLReader> ();
-rootName = null;
-trace = false;
-
- outPrintWriter = new XtpipesPrintWriter( out, true );
- logWriter = (log==null)? (new PrintWriter( System.err )) : log;
- mainMethod(args);
- outPrintWriter.flush();
-}
-
- public static void xtpipes(String [] args,
- OutputStreamWriter out,
- PrintWriter log)
- throws Exception {
- map = new HashMap <String,Object> ();
-needScript = true;
-returnDom = false;
-result = null;
-inFile = null;
-inData = null;
-exceptionErrs = false;
-messages = false;
-outFileName = null;
-outPrintWriter = null;
-scriptFile = null;
-i_scriptDir = null;
-scriptMap = null;
-saxReaderStack = new Stack <XMLReader> ();
-rootName = null;
-trace = false;
-
- outPrintWriter = new XtpipesPrintWriter( out );
- logWriter = (log==null)? (new PrintWriter( System.err )) : log;
- mainMethod(args);
- outPrintWriter.flush();
-}
-
- public static void xtpipes(String [] args,
- XtpipesPrintWriter out,
- PrintWriter log)
- throws Exception {
- map = new HashMap <String,Object> ();
-needScript = true;
-returnDom = false;
-result = null;
-inFile = null;
-inData = null;
-exceptionErrs = false;
-messages = false;
-outFileName = null;
-outPrintWriter = null;
-scriptFile = null;
-i_scriptDir = null;
-scriptMap = null;
-saxReaderStack = new Stack <XMLReader> ();
-rootName = null;
-trace = false;
-
- outPrintWriter = out;
- logWriter = (log==null)? (new PrintWriter( System.err )) : log;
- mainMethod(args);
- outPrintWriter.flush();
-}
-
- public static Document getDOM(String args[])
- throws Exception {
- map = new HashMap <String,Object> ();
-needScript = true;
-returnDom = false;
-result = null;
-inFile = null;
-inData = null;
-exceptionErrs = false;
-messages = false;
-outFileName = null;
-outPrintWriter = null;
-scriptFile = null;
-i_scriptDir = null;
-scriptMap = null;
-saxReaderStack = new Stack <XMLReader> ();
-rootName = null;
-trace = false;
-
- returnDom = true;
- mainMethod(args);
- Document dom = null;
- if( result == null ){
- System.err.println(
- "--- xtpipes warning --- getDOM without <return name=\"...\"> from 4xt file: "
- + scriptFile );
- } else {
- try{
- byte [] bytes = result.getBytes("UTF-8");
- InputStream is = new ByteArrayInputStream( bytes );
- dom = domBuilder.parse (is);
- } catch ( org.xml.sax.SAXParseException e ){
- if( Xtpipes.trace ){
- Xtpipes.logWriter.println(
- "\n---------------------------------------------------\n"
- + result +
- "\n---------------------------------------------------\n" );
- }
- String s = "";
- for( int n=0; n<args.length; n++ ){
- if( args[n].charAt(0)!='-' ){
- s += " input file: " + args[n] + "."; break;
- }
- else if( args[n].equals("-s")
- || args[n].equals("-S")
- || args[n].equals("-i")
- || args[n].equals("-o")
- || args[n].equals("-d") ){ n++; }
-}
-
- if( scriptFile != null ){ s += " script file: " + scriptFile; }
- instructionErr( null,
- "parsing error: " + e.getMessage() +s, 21 );
- } catch ( Exception e ){
- instructionErr( null, e.toString(), 5 );
- }
- if( ml2xmlClassObj != null ){
- Class<?> [] argTypes = { };
- Method m = ml2xmlClassObj.getMethod( "closeFiles", argTypes );
- Object parmValues[] = new Object[0];
- m.invoke( null, parmValues );
-}
-
- }
- return dom;
-}
-public static Document getDOM(String s, String args[])
- throws Exception {
- map = new HashMap <String,Object> ();
-needScript = true;
-returnDom = false;
-result = null;
-inFile = null;
-inData = null;
-exceptionErrs = false;
-messages = false;
-outFileName = null;
-outPrintWriter = null;
-scriptFile = null;
-i_scriptDir = null;
-scriptMap = null;
-saxReaderStack = new Stack <XMLReader> ();
-rootName = null;
-trace = false;
-
- returnDom = true;
- inData = s;
- mainMethod(args);
- Document dom = null;
- if( result == null ){
- System.err.println(
- "--- xtpipes warning --- getDOM without"
- + " <return name=\"...\"> from 4xt file: "
- + scriptFile );
- } else {
- try{
- byte [] bytes = result.getBytes("UTF-8");
- InputStream is = new ByteArrayInputStream( bytes );
- dom = domBuilder.parse (is);
- } catch ( org.xml.sax.SAXParseException e ){
- instructionErr( null, "improper xml: " + e.getMessage()
- + "\n code starts with: "
- + result.substring(0, Math.min(100,result.length()))
- , 17 );
- } catch ( Exception e ){
- instructionErr( null, e.toString(), 6 );
- }
- if( ml2xmlClassObj != null ){
- Class<?> [] argTypes = { };
- Method m = ml2xmlClassObj.getMethod( "closeFiles", argTypes );
- Object parmValues[] = new Object[0];
- m.invoke( null, parmValues );
-}
-
- }
- return dom;
-}
-public static Document getDOM(String args[], PrintWriter log)
- throws Exception {
- logWriter = (log==null)? new PrintWriter( System.err ) : log;
- return getDOM(args);
-}
-public static Document getDOM(String s, String args[], PrintWriter log)
- throws Exception {
- logWriter = (log==null)? (new PrintWriter( System.err )) : log;
- return getDOM(s, args);
-}
-
- private static void mainMethod(String args[]) throws Exception {
- try{
- String xtpipes_call =
- " xtpipes (2009-01-27-22:19)"
- + "\n Command line options: "
- + "\n java xtpipes [-trace] [-help] [-m] [-E] [-s script_file]"
- + " [-S script_map]"
- + "\n [-i script_dir] [-o out_file] "
- + "\n [-x...ml2xml_arg...] "
- + "(-d in_data | in_file)"
- + "\n -m messages printing mode"
- + "\n -E error messages into exception calls"
- + "\n in_data XML data directly into the command line\n"
-;
-
- boolean help=false;
-for( int n=0; n<args.length; n++ ){
- if( args[n] == null ){}
-else if( args[n].equals("") ){}
-else if( args[n].charAt(0)!='-' ){ inFile = args[n]; }
-else if( args[n].equals("-m") ){
- messages = true;
- logWriter.println(
- "xtpipes (2009-01-27-22:19)"
- + "\n java.version: " + System.getProperty("java.version")
- + "\n java.class.path: " + System.getProperty("java.class.path")
- + "\n os.name: " + System.getProperty("os.name")
- + "\n user.home: " + System.getProperty("user.home")
- + "\n user.dir: " + System.getProperty("user.dir")
-);
-for( int k=0; k<args.length; k++ ){
- logWriter.println( " " + args[k] );
-}
-
-}
-else if( args[n].equals("-s") ){
- n++;
-if( n < args.length ){ scriptFile=args[n]; }
-else {
- System.err.println(
- "--- Error --- Missing field for -s argument" );
- inFile = null; inData = null; break;
-}
-
-}
-else if( args[n].equals("-S") ){
- n++;
-if( n < args.length ){ scriptMap=args[n]; }
-else {
- System.err.println(
- "--- Error --- Missing field for -S argument" );
- inFile = null; inData = null; break;
-}
-
-}
-else if( args[n].equals("-i") ){
- n++;
-if( n < args.length ){
- i_scriptDir=args[n];
-} else {
- System.err.println(
- "--- Error --- Missing field for -i argument" );
- inFile = null; inData = null; break;
-}
-
-}
-else if( args[n].equals("-o") ){
- n++;
-if( n < args.length ){
- outFileName = args[n];
-} else {
- System.err.println(
- "--- Error --- Missing field for -o argument" );
- inFile = null; inData = null; break;
-}
-
-}
-else if( args[n].startsWith("-x") ){
- if( args[n].substring(2).equals("") ){
- if( ml2xml == null ){ ml2xml = new String[0]; }
-} else {
- if( ml2xml == null ){
- ml2xml = new String[1];
- } else {
- String [] m2x = new String [ml2xml.length + 1];
- for(int cnt=0; cnt < ml2xml.length; cnt++){
- m2x[cnt] = ml2xml[cnt];
- }
- ml2xml = m2x;
- }
- ml2xml[ ml2xml.length - 1 ] = args[n].substring(2);
-}
-
-}
-else if( args[n].equals("-E") ){
- exceptionErrs = true;
-}
-else if( args[n].equals("-d") ){
- n++;
-if( n < args.length ){
- inData = args[n];
-} else {
- System.err.println(
- "--- Error --- Missing field for -d argument" );
- inFile = null; inData = null; break;
-}
-
-}
-else if( args[n].equals("-trace") ){ trace=true; }
-else if( args[n].equals("-help") ){ help=true; }
-else { if( !exceptionErrs ){
- for(int i=n+1; i<args.length; i++ ){
- if( args[i].equals("-E") ){ exceptionErrs = true; }
-} }
-instructionErr( null,
- "Improper argument: " + args[n] + "\n" + xtpipes_call, 26 );
- }
-
-}
-if( outPrintWriter == null ){
- outPrintWriter = new XtpipesPrintWriter(System.out,true);
-}
-
-if( !returnDom ){
- if( help || ((inFile == null) && (inData == null)) ){
- System.err.println( xtpipes_call );
-
- if( (inFile == null) && (inData == null) ){
- System.exit(0);
-} } }
-
-new FileInfo(logWriter, i_scriptDir, trace);
-if( inFile != null ){
- inputObject = new InputObject( inFile, logWriter );
- if( inputObject.getInputStream() == null ){
- instructionErr( null, "Could not find or open file: " + inFile, 28 );
- }
- inFile = inputObject.getFilename();
-} else {
- inputObject = new InputObject( inData.getBytes("UTF-8"), logWriter );
-}
-inputObject.buildProfile( trace );
-
- } catch (Exception e){
- instructionErr( null, e.getMessage(), e.getStackTrace(), 31 );
- }
- try {
- DocumentBuilderFactory domFactory =
- DocumentBuilderFactory.newInstance();
- domFactory.setValidating(true);
- DocumentBuilder validatingDomBuilder =
- domFactory.newDocumentBuilder();
- validatingDomBuilder.setEntityResolver(new XtpipesEntityResolver()
-);
- validatingDomBuilder.setErrorHandler(new ErrorHandler() {
- public void warning(SAXParseException e) throws SAXParseException {
- showSpecifics("warning",e);
- }
- public void error(SAXParseException e) throws SAXParseException {
- showSpecifics("error",e);
- }
- public void fatalError(SAXParseException e) throws SAXParseException {
- showSpecifics("fatal error",e);
- }
- public void showSpecifics(String s, SAXParseException e)
- throws SAXParseException {
- String err = "--- xtpipes " + s + " 24 --- " + e.getSystemId()
- + " line " + e.getLineNumber()
- + " col " + e.getColumnNumber()
- + " : " + e.getMessage() ;
- if( exceptionErrs ) { throw new SAXParseException(
- err, (org.xml.sax.Locator) null ); }
- else {
- System.err.println( err );
- System.exit(1);
-} } }
-);
- fc = TransformerFactory.newInstance();
-identityTransformer = fc.newTransformer();
-identityTransformer.setErrorListener(
- new ErrorListener() {
- public void warning(TransformerException e) throws TransformerException {
- showSpecifics(e);
- }
- public void error(TransformerException e) throws TransformerException {
- showSpecifics(e);
- }
- public void fatalError(TransformerException e) throws TransformerException {
- showSpecifics(e);
- }
- void showSpecifics(TransformerException e)
- throws TransformerException{
- String err = e.getMessage() ;
- String loc = e.getLocationAsString();
- if( loc != null ){ err = loc + ": " + err; }
- throw new TransformerException(err);
-} }
- );
-saxFactory = SAXParserFactory.newInstance();
-saxFactory.setValidating(true);
-domFactory.setValidating(false);
-domBuilder = domFactory.newDocumentBuilder();
-saxFactory = SAXParserFactory.newInstance();
-saxFactory.setValidating(false);
-Class <?> cls = Xtpipes.class;
-Class<?> [] argTypes = { Node.class, String.class };
-method = cls.getMethod( "execute", argTypes );
-
- if( scriptMap != null ){
- try{
- String f = FileInfo.searchFile( scriptMap );
- if( f == null ){
- throw new java.io.FileNotFoundException( scriptMap );
- } else {
- scriptMap = f;
- }
- XMLReader saxReader;
-if( saxReaderStack.empty() ){
- SAXParser saxParser = saxFactory.newSAXParser();
- saxReader = saxParser.getXMLReader();
- saxReader.setEntityResolver(new org.xml.sax.EntityResolver() {
- public InputSource resolveEntity(
- String publicId, String systemId) {
- if( (new File(systemId)).exists() ){
- return new org.xml.sax.InputSource( systemId );
- }
- StringReader strReader = new StringReader("");
- return new org.xml.sax.InputSource(strReader);
- }
-});
-
-} else {
- saxReader = (XMLReader) saxReaderStack.pop();
-}
-
- saxReader.setContentHandler( new DefaultHandler(){
- private Stack <Boolean> condition = new Stack <Boolean> ();
-public void startDocument () {
- condition.push( new Boolean(true) );
-}
-public void startElement(String ns, String sName,
- String qName, Attributes atts) {
- if( condition == null ){ return; }
- if( Xtpipes.trace ){
- String s = "<" + qName + "\n";
- for(int i=0; i<atts.getLength(); i++ ){
- String name = atts.getQName(i);
- s += " " + name + "=\"" + atts.getValue(i) + "\"";
- }
- s += ">" ;
- Xtpipes.logWriter.println( s );
-}
-
- boolean cond = ((Boolean) condition.peek()).booleanValue();
- if( qName.equals("when") ){
- if( cond ){ String name = atts.getValue("name");
-String value = atts.getValue("value");
-if( name.equals("system-id") ){
- cond = value.equals(inputObject.getSystemId());
-}
-else
-if( name.equals("public-id") ){
- cond = value.equals(inputObject.getPublicId());
-}
-else
-if( name.equals("dtd-root") ){
- cond = value.equals(inputObject.getDtdRoot());
-}
-else
-if( name.equals("root") ){
- cond = value.equals(inputObject.getRoot());
-}
-else
-if( name.equals("ext") ){
- cond = inputObject.getFilename().endsWith("." + value);
-}
-else
-if( name.equals("prefix") ){
- name = inputObject.getFilename();
- if( name != null ){
- int i = name.lastIndexOf('/');
- if( (i != -1) && ((i+1) < name.length()) ){
- name = name.substring(i+1);
- }
- i = name.lastIndexOf('\\');
- if( (i != -1) && ((i+1) < name.length()) ){
- name = name.substring(i+1);
- }
- cond = name.startsWith(value);
-} }
-else
-if( name.equals("meta-type") ){
- cond = value.equals(inputObject.getMetaType());
-}
-else
-if( name.equals("content-type") ){
- cond = value.equals(inputObject.getContentType());
-}
- }
- }
- else
- if( qName.equals("command-line") ){
- if( scriptFile != null ){
- if( trace ){
- Xtpipes.logWriter.println( " Found script file in map: "
- + Xtpipes.scriptFile );
-}
-
- condition = null;
- return;
- } }
- else
- if( qName.equals("processing-instruction") ){
- if( cond ){
- String s = inputObject.getXtpipes();
- if( s != null ){
- Xtpipes.scriptFile = s;
- if( trace ){
- Xtpipes.logWriter.println( " Found script file in map: "
- + Xtpipes.scriptFile );
-}
-
- condition = null;
- return;
- } } }
- else
- if( qName.equals("select") ){
- if( cond ){
- Xtpipes.scriptFile = atts.getValue("name");
- if( trace ){
- Xtpipes.logWriter.println( " Found script file in map: "
- + Xtpipes.scriptFile );
-}
-
- condition = null;
- return;
- } }
- condition.push( new Boolean(cond) );
-}
-public void endElement(String ns, String sName, String qName) {
- if( condition == null ){ return; }
- if( Xtpipes.trace ){
- String s = "</" + qName + ">";
- Xtpipes.logWriter.println( s );
-}
-
- condition.pop();
-}
-
- } );
- InputStream inputStream =
- (InputStream) (new File(scriptMap).toURI().toURL().openStream());
- saxReader.parse( new InputSource(inputStream) );
- saxReaderStack.push( saxReader );
- } catch( java.io.FileNotFoundException e ){
- instructionErr( null,
- "File not found: " + e.getMessage()
- + "; command line option -i",
- 33 );
- } catch( Exception e ){
- instructionErr( null, e.toString(), e.getStackTrace(), 27 );
- }
-}
-if( scriptFile == null ){
- scriptFile = "xtpipes-default.4xt";
-}
-
- while( needScript ){
- if( scriptFile == null ){
- instructionErr( null, "Missing 4xt script file name", 32 );
- }
- String f = FileInfo.searchFile( scriptFile );
-if( f == null ){
- throw new java.io.FileNotFoundException( scriptFile );
-} else {
- scriptFile = f;
-}
-
- Document script = validatingDomBuilder.parse(scriptFile);
- if( trace ){
- logWriter.println( "(" + scriptFile + ")" );
-}
-
- execute( script.getFirstChild() );
- }
- if( outFileName != null ){
- outPrintWriter.close();
-}
-
- Xtpipes.logWriter.flush();
- } catch( org.xml.sax.SAXParseException e ){
- String s = "Improper file " + scriptFile + ": " + e.getMessage();
- instructionErr( null, s, 2 );
- } catch( java.io.FileNotFoundException e ){
- String s;
- if( scriptFile.equals( e.getMessage() ) ){
- s = "Could not find file: " + scriptFile;
- } else {
- s = "Problem at script " + scriptFile + ": Could not find file "
- + e.getMessage();
- }
- instructionErr( null, s, 3 );
- } catch( Exception e ){
- String s = "Problems at file: " + scriptFile + "\n " + e;
- instructionErr( null, s, 4 );
-} }
-
- private static void execute( Node node ) throws Exception {
- while( node != null ){
- if( node.getNodeType()==Node.ELEMENT_NODE ){
- String instruction = node.getNodeName();
- if( trace ){
- logWriter.print( "[##] = xtpipes => " + instruction );
- if( node.hasAttributes() ){
- NamedNodeMap attributes = node.getAttributes();
- for(int i=0; i < attributes.getLength(); i++ ){
- Node attr = attributes.item(i);
- logWriter.print( " " + attr.getNodeName()
- + "=\"" + attr.getNodeValue() + "\"" );
- } }
- logWriter.println(); logWriter.flush();
-}
-
- if( instruction.equals( "xtpipes" ) ){
- // String errMsg = "";
-needScript = false;
-if( node.hasChildNodes() ){
- if( outFileName != null ){
- try {
- FileWriter fw = new FileWriter( outFileName );
- outPrintWriter = new XtpipesPrintWriter( fw );
- returnToFile = true;
- } catch(Exception e){
- instructionErr( null, e.toString(), 12 );
-} }
-
- if( node.hasAttributes() ){
- Node attr = node.getAttributes()
- .getNamedItem( "signature" );
- if ( (attr != null) && messages ) {
- logWriter.println( attr.getNodeValue() );
-}
-
- attr = node.getAttributes()
- .getNamedItem( "preamble" );
- if( (attr != null)
- && attr.getNodeValue().equals( "yes" ) ){
- // BufferedReader br = null;
-try {
- String s;
- boolean front = true;
- rootName = "<" + ((rootName==null)? inputObject.getRoot() : rootName);
- if( inData == null ){
- // FileReader fr = new FileReader(inFile);
-// BufferedReader in = new BufferedReader(fr);
-URLConnection connection =
- new URL(inFile).openConnection();
-connection.setRequestProperty("User-Agent",
- "["
- + System.getProperty("os.name")
- + " / "
- + System.getProperty("os.arch")
- + "]"
- + "["
- + System.getProperty("java.version")
- + " - "
- + System.getProperty("java.vendor")
- + "]"
-);
-InputStream inputStream = connection.getInputStream();
-BufferedReader in = new BufferedReader (
- new InputStreamReader ( inputStream ) );
-
-while ( ((s = in.readLine()) != null) && front ) {
- int i = s.indexOf( rootName );
- if( i > -1 ){
- front = false;
- s = s.substring(0,i);
- }
- outPrintWriter.println(s);
- returnToFile = false;
-}
-in.close();
-
- } else {
- int i = inData.indexOf( rootName );
-if( i > -1 ){
- front = false;
- s = inData.substring(0,i);
-} else { s = ""; }
-outPrintWriter.println(s);
-returnToFile = false;
-
- }
-} catch (Exception e) {
- System.err.println(
- "--- Error --- Couldn't copy preamble: " + e);
-}
-
-} }
-
- execute( node.getFirstChild() );
-} else {
- if( inData == null ){
- /*
-errMsg = "Searching <?xtpipes file=\"...\"?> in "
- + inFile + ": ";
-*/
-scriptFile = inputObject.getXtpipes();
-rootName = inputObject.getRoot();
-needScript = true;
-
-} else {
- scriptFile = inputObject.getXtpipes();
-rootName = inputObject.getRoot();
-needScript = true;
-
-}
-
-}
-
- } else if( instruction.equals( "set" ) ){
- String name = node.getAttributes().getNamedItem( "name" )
- .getNodeValue();
-Node cdata = node.getFirstChild();
-while( cdata.getNodeType() != Node.CDATA_SECTION_NODE ){
- cdata = cdata.getNextSibling();
-}
-String code = cdata.getNodeValue().trim();
-map.put( name, (Object) code );
-
- } else if( instruction.equals( "get" ) ){
- try {
- String name = node.getAttributes()
- .getNamedItem( "name" ).getNodeValue();
- String file = node.getAttributes()
- .getNamedItem( "file" ).getNodeValue();
- StreamSource in = new StreamSource( new File(file) );
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- identityTransformer.transform( in, new StreamResult(baos) );
- byte [] bytes = baos.toByteArray();
- map.put( name, (Object) new String(bytes) );
-} catch( Exception e ){
- instructionErr( node, e.toString(), 14 );
-}
-
- } else if( instruction.equals( "print" ) ){
- String name = node.getAttributes()
- .getNamedItem( "name" ).getNodeValue();
-String xml = (String) map.get(name);
-if( node.getAttributes().getNamedItem( "file" )==null ){
- if( !Xtpipes.trace ){
- logWriter.println( "[##] = xtpipes => print: " + scriptFile );
- }
- logWriter.println( XtpipesUni.toUni(xml, "") );
-} else {
- String file = node.getAttributes()
- .getNamedItem( "file" ).getNodeValue();
- try{
- FileWriter fw = new FileWriter( file );
- XtpipesPrintWriter out = new XtpipesPrintWriter( fw );
- out.println( xml );
- out.close();
- } catch(Exception e){
- instructionErr( node, e.toString(),15 );
-} }
-
- } else if( instruction.equals( "return" ) ){
- String name = node.getAttributes()
- .getNamedItem( "name" ).getNodeValue();
-result = (String) map.get(name);
-if( returnToFile ){
- outPrintWriter.println(result);
-}
-
- } else if( instruction.equals( "if" ) ){
- try{
- String xml = node.getAttributes()
- .getNamedItem( "xml" ).getNodeValue();
-String dtd = node.getAttributes()
- .getNamedItem( "dtd" ).getNodeValue();
-// String root = node.getAttributes()
-// .getNamedItem( "root" ).getNodeValue();
-String doc = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"
- + "<!DOCTYPE doc [\n"
- + (String) map.get(dtd)
- + "\n]>\n"
- + (String) map.get(xml) ;
-
- byte [] bytes = doc.getBytes("UTF-8");
- ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
- InputSource in = new InputSource( bais );
- SAXParser saxParser = saxFactory.newSAXParser();
- XMLReader xmlReader = saxParser.getXMLReader();
- xmlReader.parse( in );
- if( trace ){
- logWriter.print( "--> true" );
-}
-
- execute( node.getFirstChild() );
-} catch ( Exception e ){ if( trace ){
- logWriter.print( "--> true" );
-}
- }
-
- } else if( instruction.equals( "xslt" ) ){
- try{
- Node xmlNode = node.getAttributes().getNamedItem( "xml" );
-StreamSource inDoc = null;
-String xml;
-if( xmlNode == null ){
- if( inData == null ){
- inDoc = new StreamSource( new File(inFile) );
-} else {
- byte [] bytes = inData.getBytes("UTF-8");
- ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
- inDoc = new StreamSource( bais );
-}
-
-} else {
- xml = xmlNode.getNodeValue();
- String doc = (String) map.get(xml);
- if( doc!=null ){
- byte [] bytes = doc.getBytes("UTF-8");
- ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
- inDoc = new StreamSource( bais );
-} }
-
- String xslt = node.getAttributes()
- .getNamedItem( "xsl" ).getNodeValue();
-String templates = (String) map.get(xslt);
-byte [] bytes = templates.getBytes("UTF-8");
-ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
-StreamSource inXslt = new StreamSource( bais );
-
- Node nameNode = node.getAttributes().getNamedItem("name");
-StreamResult outDoc;
-CharArrayWriter caos = null;
-if( nameNode == null ){
- outDoc = new StreamResult(outPrintWriter);
- returnToFile = false;
-} else {
- caos = new CharArrayWriter();
- outDoc = new StreamResult(caos);
-}
-
- errMssg = null;
- fc.setErrorListener( new ErrorListener() {
- public void warning(TransformerException e) throws TransformerException {
- showSpecifics(e);
- }
- public void error(TransformerException e) throws TransformerException {
- showSpecifics(e);
- }
- public void fatalError(TransformerException e) throws TransformerException {
- showSpecifics(e);
- }
- void showSpecifics(TransformerException e)
- throws TransformerException{
- String err = e.getMessage() ;
- String loc = e.getLocationAsString();
- if( loc != null ){ err = loc + ": " + err; }
- err = "XSL stylesheet problem: " + err;
- if( errMssg == null ){ errMssg = err; }
- throw new TransformerException(err);
-} }
- );
- Transformer transformer = fc.newTransformer( inXslt );
- transformer.setErrorListener( new ErrorListener() {
- public void warning(TransformerException e) throws TransformerException {
- showSpecifics(e);
- }
- public void error(TransformerException e) throws TransformerException {
- showSpecifics(e);
- }
- public void fatalError(TransformerException e) throws TransformerException {
- showSpecifics(e);
- }
- void showSpecifics(TransformerException e)
- throws TransformerException{
- String err = e.getMessage() ;
- String loc = e.getLocationAsString();
- if( loc != null ){ err = loc + ": " + err; }
- if( errMssg == null ){ errMssg = err; }
- err = "XML document prblem: " + err;
- throw new TransformerException(err);
-} }
- );
- transformer.transform(inDoc, outDoc );
- if( nameNode != null ){
- String name = nameNode.getNodeValue();
- char [] chars = caos.toCharArray() ;
- map.put( name, (Object) new String(chars) );
-}
-
-
-} catch ( javax.xml.transform.TransformerException e ){
- if( Xtpipes.trace ){ e.printStackTrace(); }
- instructionErr( node,
- e.getMessage()
- +
- ((errMssg==null)? "" : ("; " +errMssg))
- , 37);
-} catch ( Exception e ){
- if( Xtpipes.trace ){ e.printStackTrace(); }
- instructionErr( node, (errMssg==null)? e.toString()
- : e.toString() + "; " + errMssg
- , 16 );
-}
-
- } else if( instruction.equals( "dom" ) ){
- try{
- Node xmlNode = node.getAttributes().getNamedItem( "xml" );
-Document dom;
-if( xmlNode == null ){
- if( inData == null ){
- dom = domBuilder.parse( new File(inFile) );
-} else {
- byte [] bytes = inData.getBytes("UTF-8");
- InputStream is = new ByteArrayInputStream( bytes );
- dom = domBuilder.parse (is);}
-
-} else {
- String xml = xmlNode.getNodeValue();
- String doc = (String) map.get(xml);
- if( doc == null ){
- instructionErr( node, "improper xml attribute value", 18 );
- }
- byte [] bytes = doc.getBytes("UTF-8");
- InputStream is = new ByteArrayInputStream( bytes );
- dom = domBuilder.parse (is);
-}
-
- String className = node.getAttributes()
- .getNamedItem( "class" ).getNodeValue();
-String methodName = node.getAttributes()
- .getNamedItem( "method" ).getNodeValue();
-Class <?> cls = Class.forName( className );
-Class<?> [] argTypes = { Node.class };
-Method m = cls.getMethod( methodName, argTypes );
-Object parmValues[] = new Object[1];
-parmValues[0] = dom;
-m.invoke( null, parmValues );
-
- Node nameNode = node.getAttributes().getNamedItem("name");
-StreamResult outDoc;
-CharArrayWriter caos = null;
-if( nameNode == null ){
- outDoc = new StreamResult(outPrintWriter);
- returnToFile = false;
-} else {
- caos = new CharArrayWriter();
- outDoc = new StreamResult(caos);
-}
-
-cleanXmlns(dom);
-DOMSource domSource = new DOMSource(dom);
-try{
- identityTransformer.transform( domSource, outDoc );
-} catch ( javax.xml.transform.TransformerException e ){
- String s = Xtpipes.trace?
- (
- "\n------------------------ xml code ------------------------\n"
- + serialize( dom )
- + "\n----------------------------------------------------------\n"
- )
- : "";
- instructionErr( node, e.getMessage() + s, 35 );
-}
-if( nameNode != null ){
- String name = nameNode.getNodeValue();
- char [] chars = caos.toCharArray() ;
- String domString = new String(chars);
- Node dcl = node.getAttributes().getNamedItem( "dcl" );
-if( ((dcl == null) || (dcl.getNodeValue().equals("no") ))
- &&
- (domString.length() > 7)
- &&
- domString.startsWith("<?xml")
- &&
- !Character.isLetterOrDigit( domString.charAt(5) )
-){
- domString = domString.substring( domString.indexOf("?>") + 2 );
-}
-
- map.put( name, (Object) domString );
-}
-
-} catch ( NoSuchMethodException e ){
- instructionErr( node,
- "could not find method: " + e.getMessage(), 18 );
-} catch ( java.lang.reflect.InvocationTargetException e ){
- if( Xtpipes.trace ){ e.printStackTrace(); }
- instructionErr( node, e.getCause().toString(), 36);
-} catch ( Exception e ){
- if( Xtpipes.trace ){ e.printStackTrace(); }
- instructionErr( node, e.toString(), 20 );
-}
-
- } else if( instruction.equals( "sax" ) ){
- String errMsg = "";
-try{
- Node xmlNode = node.getAttributes().getNamedItem( "xml" );
-InputSource inputSource=null;
-String xml = null;
-if( xmlNode == null ){
- if( inData == null ){
- xml = inFile;
-} else {
- byte [] bytes = inData.getBytes("UTF-8");
- ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
- inputSource = new InputSource( bais );
-}
-
-} else {
- xml = xmlNode.getNodeValue();
- String doc = (String) map.get(xml);
- if( doc!=null ){
- byte [] bytes = doc.getBytes("UTF-8");
- ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
- inputSource = new InputSource( bais );
-} }
-
- String [] className = node.getAttributes()
- .getNamedItem( "content-handler" )
- .getNodeValue()
- .split(",");
-
- Class<?> [] argTypes = {
- PrintWriter.class, HashMap.class, Method.class,
- PrintWriter.class, boolean.class };
-Node nameNode = node.getAttributes().getNamedItem("name");
-PrintWriter out;
-CharArrayWriter caos = null;
-if( nameNode == null ){
- out = outPrintWriter;
- returnToFile = false;
-} else {
- caos = new CharArrayWriter();
- out = new PrintWriter( caos );
-}
-
-Object parmValues[] = new Object[5];
-parmValues[0] = out;
-HashMap <String,Object> scripts = new HashMap <String,Object> ();
-Node script = node.getFirstChild();
-while( script != null ){
- if( script.getNodeType()==Node.ELEMENT_NODE ){
- String element = script.getAttributes().getNamedItem( "element" )
- .getNodeValue();
- if( scripts.containsKey(element) ){
- System.err.println(
- "--- Warning --- redfining script: " + element );
- }
- scripts.put( element, (Object) script );
- }
- script = script.getNextSibling();
-}
- parmValues[1] = scripts;
-parmValues[2] = method;
-parmValues[3] = Xtpipes.logWriter;
-parmValues[4] = (Object) Xtpipes.trace;
-Class<?> cls = Class.forName( className[0].trim() );
-Constructor<?> c = cls.getConstructor( argTypes );
-Object ch = (Object) c.newInstance( parmValues );
-
- XMLReader saxReader;
-if( saxReaderStack.empty() ){
- SAXParser saxParser = saxFactory.newSAXParser();
- saxReader = saxParser.getXMLReader();
- saxReader.setEntityResolver(new org.xml.sax.EntityResolver() {
- public InputSource resolveEntity(
- String publicId, String systemId) {
- if( (new File(systemId)).exists() ){
- return new org.xml.sax.InputSource( systemId );
- }
- StringReader strReader = new StringReader("");
- return new org.xml.sax.InputSource(strReader);
- }
-});
-
-} else {
- saxReader = (XMLReader) saxReaderStack.pop();
-}
-
- XMLReader reader = saxReader;
- for( int i=1; i<className.length; i++ ){
- argTypes = new Class [3];
- argTypes[0] = PrintWriter.class;
- argTypes[1] = PrintWriter.class;
- argTypes[2] = boolean.class;
- parmValues = new Object[3];
- parmValues[0] = out;
- parmValues[1] = Xtpipes.logWriter;
- parmValues[2] = (Object) Xtpipes.trace;
- errMsg = "Class.forName( " + className[i].trim() + ") " ;
- cls = Class.forName( className[i].trim() );
- errMsg = "get-constructor "
- + className[i].trim()
- + "( PrintWriter, PrintWriter, boolean ) " ;
- c = cls.getConstructor( argTypes );
- errMsg = "get-object "
- + className[i].trim()
- + "( PrintWriter, PrintWriter, boolean ) " ;
- if( (cls.getModifiers() % 2) != 1 ){
- errMsg += "; class not defined to be public. ";
- }
- XMLFilter filter = (XMLFilter) c.newInstance( parmValues );
- errMsg = "set-parent "
- + className[i].trim()
- + "( PrintWriter, PrintWriter, boolean ) " ;
- filter.setParent(saxReader);
- saxReader = filter;
-}
-
- errMsg = "setContentHandler( "
- + className[0].trim() + " )";
- saxReader.setContentHandler( (org.xml.sax.ContentHandler) ch );
- Node lexAttr = node.getAttributes()
- .getNamedItem( "lexical-handler" );
-if( lexAttr != null ){
- String lexName = lexAttr.getNodeValue();
- argTypes = new Class[3];
- argTypes[0] = Class.forName( className[0].trim() );
- argTypes[1] = PrintWriter.class;
- argTypes[2] = boolean.class;
- parmValues = new Object[3];
- parmValues[0] = ch;
- parmValues[1] = Xtpipes.logWriter;
- parmValues[2] = (Object) Xtpipes.trace;
- errMsg = "Class.forName( " + lexName.trim() + ") " ;
- cls = Class.forName( lexName.trim() );
- errMsg = "get-constructor " +
- lexName.trim() +
- "( " + className[0].trim() + " ) " ;
- c = cls.getConstructor( argTypes );
- errMsg = "get-object " +
- lexName.trim() + "( ... ) " ;
- Object xh = (Object) c.newInstance( parmValues );
- errMsg = "set lexical handler " + lexName.trim() + " ";
- saxReader.setProperty(
- "http://xml.org/sax/properties/lexical-handler",
- (org.xml.sax.ext.LexicalHandler) xh
- );
-}
-
- saxReader.setEntityResolver(new org.xml.sax.EntityResolver() {
- public InputSource resolveEntity(
- String publicId, String systemId) {
- if( (new File(systemId)).exists() ){
- return new org.xml.sax.InputSource( systemId );
- }
- StringReader strReader = new StringReader("");
- return new org.xml.sax.InputSource(strReader);
- }
-});
-
- if( inputSource==null ){
- errMsg = "While parsing file " + xml + ": ";
-InputStream inputStream = null;
-if( Xtpipes.ml2xml == null ){
- if( Xtpipes.trace ){
- Xtpipes.logWriter.println(
- "No request for ml2xml configuration (command line option -x)" );
- }
- try{
- inputStream = (InputStream) (new File(xml).toURI().toURL().openStream());
-} catch ( java.io.FileNotFoundException ioe ){
- try{
- URL url = null;
- try {
- url = new URL(xml);
- } catch ( java.net.MalformedURLException fnf ){
- url = new File(xml).toURI().toURL();
- }
- inputStream = (InputStream) (url.openStream());
- } catch ( java.io.FileNotFoundException fnf ){
- inputStream = (InputStream)
- (
- new File( new File(xml).toURI().toURL().toString() )
- . toURI().toURL()
- . openStream()
- );
-} }
-
-} else {
- try{
- ml2xmlClassObj = Class.forName( "ml2xml.Ml2xml" );
-} catch (java.lang.ClassNotFoundException cnf ){
- instructionErr( null, "Class not found: ml2xml.Ml2xml", 25 );
-}
-Class<?> [] argTyp = { String.class, String[].class };
-Constructor<?> con = ml2xmlClassObj.getConstructor( argTyp );
-try{
- if( Xtpipes.trace ){
- String s = "Calling: ml2xml.Ml2xml(inputStream,"
- + "new String[]{" ;
- for(int i=0; i < Xtpipes.ml2xml.length; i++){
- s += ((i==0)? "\"" : ", \"") + Xtpipes.ml2xml[i] + "\"";
- }
- s += "})";
- Xtpipes.logWriter.println( s );
-}
-
- inputStream = (InputStream) con.newInstance(
- new Object[]{xml, ml2xml}
- );
-} catch(java.lang.reflect.InvocationTargetException ite){
- String s = "Problem at: ml2xml.Ml2xml(" + xml + ","
- + "new String[]{" ;
- for(int i=0; i < Xtpipes.ml2xml.length; i++){
- s += ((i==0)? "\"" : ", \"") + Xtpipes.ml2xml[i] + "\"";
- }
- s += "})";
- instructionErr( null, s + "; " + ite.getCause(), 38);
-}
-
-}
-saxReader.parse( new InputSource(inputStream) );
-if( Xtpipes.ml2xml != null ){
- Class<?> [] argTyp = {};
- Method m = ml2xmlClassObj . getMethod( "closeFiles", argTyp );
- m.invoke( null, new Object[0] );
-}
-
-
- } else {
- errMsg = "xtpipes sax parsing error";
- saxReader.parse( inputSource );
- }
- if( nameNode != null ){
- String name = nameNode.getNodeValue();
- char [] chars = caos.toCharArray() ;
- map.put( name, (Object) new String(chars) );
-}
-
- saxReaderStack.push( reader );
-} catch ( java.io.FileNotFoundException e ){
- instructionErr( node, errMsg
- + "could not find file: " + e.getMessage(), 19 );
-} catch ( ClassNotFoundException e ){
- instructionErr( node, errMsg
- + " class not found: "
- + e.getMessage() + "\n classpath = "
- + System.getProperty("java.class.path")
- + " ---", 22 );
-} catch ( java.lang.reflect.InvocationTargetException e ){
- instructionErr( node, errMsg + ": " + e.getCause(), 23 );
-} catch ( Exception e ){
- Xtpipes.logWriter.flush();
- e.printStackTrace();
- instructionErr( node, errMsg + ": " + e.toString(), 29 );
-}
-
- } else {
- instructionErr( node, "Improper instruction: " + instruction, 11 );
- } }
- node = node.getNextSibling();
-} }
-
- public static String execute( Node node, String xml )
- throws Exception {
- String name = ".";
- String old = (String) map.get(name);
- map.put( name, (Object) xml );
- execute( node.getFirstChild() );
- String s = (String) map.get(name);
- if( old != null ){ map.put( name, (Object) old ); }
- return s;
-}
-
- private static void instructionErr( Node node, String e, int num )
- throws Exception {
- String err = "--- xtpipes error " + num + " --- ";
- if( node != null ){
- err += "At <" + node.getNodeName();
- NamedNodeMap attr = node.getAttributes();
- for(int i=0; i<attr.getLength(); i++){
- Node nd = attr.item(i);
- err += " " +
- nd.getNodeName() + "=\"" +
- nd.getNodeValue() + "\"" ;
- }
- err += " > : " ;
- }
- err += e;
- if( ml2xmlClassObj != null ){
- Class<?> [] argTypes = { };
- Method m = ml2xmlClassObj.getMethod( "closeFiles", argTypes );
- Object parmValues[] = new Object[0];
- m.invoke( null, parmValues );
-}
-
- Xtpipes.logWriter.flush();
- if( exceptionErrs ) { throw new Exception( err ); }
- else {
- System.err.println( err );
- System.exit(1);
- }
-}
-private static void instructionErr( Node node, String e,
- StackTraceElement[] st, int num )
- throws Exception {
- Xtpipes.logWriter.println(
- "--- xtpipes error " + num + " --- " + e
- );
- for(int i=st.length-1; i>=0; i-- ){
- Xtpipes.logWriter.println( st[i].toString() );
- }
- instructionErr( node, e, num );
-}
-
- static String serialize( Node root ){
- if( root.getNodeType() == Node.TEXT_NODE) {
- return root.getNodeValue();
- }
- if( root.getNodeType() == Node.ELEMENT_NODE) {
- String ser = "";
- String tagName = root.getNodeName();
- ser += "<" + tagName;
- NamedNodeMap attributes = root.getAttributes();
-for(int i = 0; i < attributes.getLength(); i++) {
- Attr attribute = (Attr) attributes.item(i);
- ser += "\n" + attribute.getName() + "=\""
- + attribute.getValue() + "\" ";
-}
-
- ser += "\n>";
- NodeList children = root.getChildNodes();
-if(children.getLength() > 0) {
- for(int i = 0; i < children.getLength(); i++) {
- ser += serialize(children.item(i));
-} }
-
- ser += "</" + tagName + ">";
- return ser;
- }
- if( root.getNodeType() == Node.DOCUMENT_NODE) {
- String ser = "";
- NodeList children = root.getChildNodes();
-if(children.getLength() > 0) {
- for(int i = 0; i < children.getLength(); i++) {
- ser += serialize(children.item(i));
-} }
-
- return ser;
- }
- if( root == null ){ return "null"; }
- return "";
-}
-
- static ArrayList<String> nsName, nsValue;
-static void cleanXmlns( Node root ){
- if( root.getNodeType() == Node.ELEMENT_NODE) {
- int top = nsName.size();
- ArrayList<Attr> remove = new ArrayList<Attr>();
-NamedNodeMap attributes = root.getAttributes();
-for(int i = 0; i < attributes.getLength(); i++) {
- Attr attribute = (Attr) attributes.item(i);
- String name = attribute.getName();
- if( name.startsWith("xmlns") ){
- if( (name.length() == 5) || (name.charAt(5) == ':') ){
- String value = attribute.getValue();
- boolean bool = false;
-for(int k=nsName.size(); k>0; ){
- k--;
- if( ((String) nsName.get(k)) . equals(name) ){
- bool = ((String) nsValue.get(k)) . equals(value);
- break;
-} }
-
- if( bool ){ remove.add(attribute);
- } else { nsName.add(name); nsValue.add(value); }
-} } }
-for(int i=remove.size(); i>0; ){
- i--;
- ((Element) root).removeAttributeNode( (Attr) remove.get(i) );
-}
-remove = null;
-
- NodeList children = root.getChildNodes();
-if(children.getLength() > 0) {
- for(int i = 0; i < children.getLength(); i++) {
- cleanXmlns(children.item(i));
-} }
-
- for(int i=nsName.size(); i>top; ){
- i--;
- nsName.remove(i);
- nsValue.remove(i);
- }
- } else if( root.getNodeType() == Node.DOCUMENT_NODE) {
- nsName = new ArrayList<String>();
- nsValue = new ArrayList<String>();
- NodeList children = root.getChildNodes();
-if(children.getLength() > 0) {
- for(int i = 0; i < children.getLength(); i++) {
- cleanXmlns(children.item(i));
-} }
-
- nsName = null;
- nsValue = null;
-} }
-
-}
-class XtpipesEntityResolver implements org.xml.sax.EntityResolver {
- public InputSource resolveEntity(String publicID, String systemID)
- throws SAXException {
- if( Xtpipes.trace ){
- Xtpipes.logWriter.println( "Resolving: publicID = \" " + publicID
- + "\" systemID = \"" + systemID + "\"" );
- }
- String file = FileInfo.searchFile( systemID );
- if( file != null ){
- try{
- file = new File(file).toURI().toURL().toString();
- return new InputSource( file );
- } catch( java.net.MalformedURLException mfe){
- throw new SAXException(
- "--- xtpipes error 30 --- improper file name: " + file );
- } }
- return null;
-}
-
-}
-
-
diff --git a/Build/source/texk/tex4htk/java/xtpipes/XtpipesPrintWriter.java b/Build/source/texk/tex4htk/java/xtpipes/XtpipesPrintWriter.java
deleted file mode 100644
index 28eff6c12b3..00000000000
--- a/Build/source/texk/tex4htk/java/xtpipes/XtpipesPrintWriter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package xtpipes;
-/*
-XtpipesPrintWriter.java (2009-01-27-22:19)
-*/
-import java.io.*;
-public class XtpipesPrintWriter extends PrintWriter {
- public XtpipesPrintWriter() {
- super(System.out, true);
- }
- public XtpipesPrintWriter (PrintStream ps, boolean b){
- super(ps, b);
- }
- public XtpipesPrintWriter (OutputStream ps, boolean b){
- super(ps, b);
- }
- public XtpipesPrintWriter (FileWriter fw){
- super(fw);
- }
- public XtpipesPrintWriter (Writer wr){
- super(wr);
- }
- public void print(String str) {
- super.print( XtpipesUni.toUni(str, "") );
- }
- public void println(String str) {
- super.println( XtpipesUni.toUni(str, "") );
-} }
-
diff --git a/Build/source/texk/tex4htk/java/xtpipes/XtpipesUni.java b/Build/source/texk/tex4htk/java/xtpipes/XtpipesUni.java
deleted file mode 100644
index c11bbf9255f..00000000000
--- a/Build/source/texk/tex4htk/java/xtpipes/XtpipesUni.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// 2009-01-27-22:19
-package xtpipes;
-public class XtpipesUni{
- private static int D800 = Integer.parseInt("D800", 16);
-private static int DFFF = Integer.parseInt("DFFF", 16);
-private static int DC00 = Integer.parseInt("DC00", 16);
-private static int X400 = Integer.parseInt("400",16);
-private static int X10000 = Integer.parseInt("10000",16);
-
-
-public static String toUni( char[] ch, int start, int length,
- String filter ){
- StringBuffer buf = new StringBuffer(length);
- for (int i = 0; i < length; i++) {
- int chr = ch[ start + i ];
- boolean ascii = (chr == '\n')
- || (chr > 31) && (chr < 127) ;
- if( filter.indexOf(chr) > -1 ){ ascii = false; }
-
- if( (chr >= D800) && (chr<= DFFF) ){
- chr = ((ch[i] - D800) * X400 + (ch[++i] - DC00)) + X10000;
- }
-
-
- buf.append(
- ascii ? Character.toString((char) chr)
- : ("&#x"
- + Integer.toHexString(chr).toUpperCase()
- + ";" ) );
- }
- return new String(buf);
-}
-
- public static String toUni( String s, String filter ){
- char [] ch = s.toCharArray();
- int length = ch.length;
- return toUni(ch, 0, length, filter);
-}
-
-}
-
diff --git a/Build/source/texk/tex4htk/java/xtpipes/util/ScriptsManager.java b/Build/source/texk/tex4htk/java/xtpipes/util/ScriptsManager.java
deleted file mode 100644
index dff6f3184e0..00000000000
--- a/Build/source/texk/tex4htk/java/xtpipes/util/ScriptsManager.java
+++ /dev/null
@@ -1,197 +0,0 @@
-// 2009-01-27-22:19
-package xtpipes.util;
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.*;
-import java.io.*;
-import java.lang.reflect.*;
-import java.util.HashMap;
-import java.util.Stack;
-import java.util.ArrayList;
-import java.util.HashSet;
-import xtpipes.XtpipesUni;
-
-public class ScriptsManager extends DefaultHandler {
- boolean inBody = false;
-ArrayList<String> nsName = new ArrayList<String>(),
- nsValue = new ArrayList<String>();
-Stack<Integer> nsStack = new Stack<Integer>();
-
- PrintWriter out = null, log = null;
- HashMap<String,Object> scripts = null;
- Method method = null;
- boolean savemode=false;
- String code="", match = null;
- Stack<Object[]> stack = new Stack<Object[]>();
- public ScriptsManager( PrintWriter out,
- HashMap<String,Object> scripts,
- Method method,
- PrintWriter log, boolean trace ){
- this.out = out;
- this.log = (log==null)? new PrintWriter( System.err ) : log;
- this.scripts = scripts;
- this.method = method;
- }
- public void characters(char[] ch, int start, int length){
- add( XtpipesUni.toUni(ch, start, length, "<>&") );
- }
- public void startElement(String ns, String sName,
- String qName, Attributes atts) {
- int top = nsName.size();
-nsStack.push( new Integer(top) );
-
- String key = (atts==null)?
- null
- : (qName + "::" + atts.getValue("class"));
-boolean flag = (key != null) && scripts.containsKey(key);
-
-if( !flag ){
- key = qName;
- flag = scripts.containsKey(key);
-}
-
- inBody = true;
- String s = "<" + qName + "\n";
- for(int i=0; i<atts.getLength(); i++ ){
- String name = atts.getQName(i),
- value = atts.getValue(i);
- if( name.startsWith("xmlns") ){
- if( (name.length() == 5) || (name.charAt(5) == ':') ){
- boolean bool = false;
-for(int k=nsName.size(); k>0; ){
- k--;
- if( ((String) nsName.get(k)) . equals(name) ){
- bool = ((String) nsValue.get(k)) . equals(value);
- break;
-} }
-
- if( !bool ){
- nsName.add(name); nsValue.add(value);
-} } }
-
- s += " " + name + "=\"" +
- XtpipesUni.toUni(value, "<>&\"") + "\"";
- }
- if( flag ){ HashSet<String> registry = new HashSet<String>();
-for(int i=nsName.size(); i>top; ){
- i--;
- registry.add( (String) nsName.get(i) );
-}
-for(int i=top; i>0; ){
- i--;
- String nm = (String) nsName.get(i);
- if( ! registry.contains(nm) ){
- registry.add( nm );
- s += " " + nm + "=\"" +
- XtpipesUni.toUni( (String) nsValue.get(i), "<>&\"") + "\"";
-} }
- }
- s += ">" ;
- if( flag ){
- Object [] state = { new Boolean(savemode), code, match };
- stack.push( state );
- savemode=true; code=""; match= key;
-} else {
- Object [] state = { new Boolean(savemode), null, null };
- stack.push( state );
-}
-add( s );
-
-}
-
- public void endElement(String ns, String sName, String qName){
- String s = "</" + qName + ">";
- add( s );
- Object [] state = (Object []) stack.pop();
- if( (String) state[1] != null ){
- Object parmValues[] = new Object[2];
-parmValues[0] = scripts.get( match );
-parmValues[1] = code;
-try {
- s = (String) method.invoke( null, parmValues );
-} catch(java.lang.reflect.InvocationTargetException e){
- log.println("--- ScriptsManager Error 1 --- " + e.getCause() );
- log.flush();
-} catch (Exception e){
- log.println("--- ScriptsManager Error 2 --- " + e );
- log.flush();
-}
-
- savemode = ((Boolean) state[0]).booleanValue();
-code = (String) state[1];
-match = (String) state[2];
-
- int top = ((Integer) nsStack.pop()) . intValue();
-for(int i=nsName.size(); i>top; ){
- i--;
- nsName.remove(i);
- nsValue.remove(i);
-}
-
- if( !s.equals("") ){
- int m = s.indexOf('>');
-char [] attrs = s.substring(0,m).toCharArray();
-int result = qName.length()+1,
- mark = result,
- from=-1,
- control = 12
-;
-char delimiter = ' ';
-String name="";
-for(int i=result; i<m; i++ ){
- attrs[result++] = attrs[i];
- switch( control ){
- case 12
-: { if( attrs[i] == '=' ){
- name = (new String(attrs,mark,result-mark-1)).trim();
- control = 13
-;
-}
- break; }
- case 13
-: { if( (attrs[i] == '"') || (attrs[i] == '\'') ){
- delimiter = attrs[i];
- control = 14
-;
- from = result;
-}
- break; }
- case 14
-: { if( attrs[i] == delimiter ){
- if( name.startsWith("xmlns")
- && ((name.length() == 5) || (name.charAt(5) == ':')) ){
- String value = (new String(attrs,from,result-from-1)).trim();
- boolean bool = false;
-for(int k=nsName.size(); k>0; ){
- k--;
- if( ((String) nsName.get(k)) . equals(name) ){
- bool = ((String) nsValue.get(k)) . equals(value);
- break;
-} }
-
- if( bool ){ result = mark; }
- }
- mark = result;
- control = 12
-;
-}
- break; }
-} }
-s = (new String(attrs,0, Math.min(result,attrs.length)))
- + s.substring(m);
-
- add( s );
- }
- } else { int top = ((Integer) nsStack.pop()) . intValue();
-for(int i=nsName.size(); i>top; ){
- i--;
- nsName.remove(i);
- nsValue.remove(i);
-}
- }
-}
-
- protected void add(String s){
- if( savemode ){ code+=s; }
- else { out.print(s); }
-} }
-
diff --git a/Build/source/texk/tex4htk/java/xtpipes/util/ScriptsManagerLH.java b/Build/source/texk/tex4htk/java/xtpipes/util/ScriptsManagerLH.java
deleted file mode 100644
index 17726d441c3..00000000000
--- a/Build/source/texk/tex4htk/java/xtpipes/util/ScriptsManagerLH.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// 2009-01-27-22:19
-package xtpipes.util;
-import org.xml.sax.ext.LexicalHandler;
-// import org.xml.sax.ContentHandler;
-import java.io.PrintWriter;
-public class ScriptsManagerLH implements LexicalHandler {
- ScriptsManager contentHandler;
- PrintWriter log;
- public ScriptsManagerLH( ScriptsManager contentHandler,
- PrintWriter log, boolean trace ){
- this.contentHandler = contentHandler;
- this.log = (log==null)? new PrintWriter( System.err ) : log;
- }
- public void comment(char[] ch, int start, int length){
- if( contentHandler.inBody ){
- String s = new String(ch, start, length);
- contentHandler.add( "<!--" + s + "\n-->");
- } }
- public void startEntity(String x){}
- public void endEntity(String x){}
- public void startCDATA(){}
- public void endCDATA(){}
- public void startDTD(String x, String y, String z){}
- public void endDTD(){}
-}
-