diff options
Diffstat (limited to 'Build/source/texk/tex4htk/java/xtpipes')
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(){} -} - |