morten      01/10/30 06:57:54

  Modified:    java/src/org/apache/xalan/xsltc/cmdline Compile.java
                        Transform.java
               java/src/org/apache/xalan/xsltc/compiler/util ErrorMsg.java
                        SlotAllocator.java
               java/src/org/apache/xalan/xsltc/dom LoadDocument.java
                        NodeSortRecordFactory.java
               java/src/org/apache/xalan/xsltc/runtime
                        AbstractTranslet.java BasisLibrary.java
                        SAXAdapter.java TextOutput.java
               java/src/org/apache/xalan/xsltc/trax TemplatesImpl.java
                        TransformerFactoryImpl.java
                        TransformerHandlerImpl.java TransformerImpl.java
                        XSLTCSource.java
  Added:       java/src/org/apache/xalan/xsltc/compiler/util
                        ErrorMessages.java ErrorMessages_en.java
                        ErrorMessages_no.java
  Log:
  A first stab at i18n'ing XSLTC. Error and warning messages from the compiler
  and TrAX are handled by the compiler/util/ErrorMsg class, while messages
  from the DOM and runtime/translet are handled by the Basis Library class.
  Only the ErrorMsg class has so far been updated to dynamically read its
  messages from a ResourceBundle. Bundles for British English and Norwegian
  are implemented.
  PR:           n/a
  Obtained from:        n/a
  Submitted by: [EMAIL PROTECTED]
  Reviewed by:  [EMAIL PROTECTED]
  
  Revision  Changes    Path
  1.8       +4 -19     
xml-xalan/java/src/org/apache/xalan/xsltc/cmdline/Compile.java
  
  Index: Compile.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/cmdline/Compile.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Compile.java      2001/10/19 09:34:36     1.7
  +++ Compile.java      2001/10/30 14:57:53     1.8
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Compile.java,v 1.7 2001/10/19 09:34:36 morten Exp $
  + * @(#)$Id: Compile.java,v 1.8 2001/10/30 14:57:53 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -75,6 +75,7 @@
   
   import org.apache.xalan.xsltc.compiler.XSLTC;
   import org.apache.xalan.xsltc.compiler.util.Util;
  +import org.apache.xalan.xsltc.compiler.util.ErrorMsg;
   import org.apache.xalan.xsltc.cmdline.getopt.*;
   
   public final class Compile {
  @@ -85,24 +86,8 @@
       // this class being used in other ways as well.
       private static boolean _allowExit = true;
   
  -    private final static String USAGE_STRING =
  -     "Usage:\n" + 
  -     "   xsltc [-o <output>] [-d <directory>] [-j <jarfile>]\n"+
  -     "         [-p <package name>] [-x] [-s] [-u] <stylesheet>|-i\n\n"+
  -     "   Where <output> is the name to give the the generated translet.\n"+
  -     "         <stylesheet> is one or more stylesheet file names, or if,\n"+
  -     "         the -u options is specified, one or more stylesheet URLs.\n"+
  -     "         <directory> is the output directory.\n"+
  -     "         <jarfile> is the name of a JAR-file to put all generated 
classes in.\n"+
  -     "         <package-name> is a package name to prefix all class names 
with.\n\n"+
  -     "   Notes:\n"+
  -     "         The -i options forces the compiler to read the stylsheet from 
stdin\n"+
  -     "         The -o option is ignored when multiple stylesheets are 
specified.\n"+
  -     "         The -x option switched on debug messages.\n"+
  -     "         The -s option disables calling System.exit.";
  -    
       public static void printUsage() {
  -     System.err.println(USAGE_STRING);
  +     System.err.println(new ErrorMsg(ErrorMsg.COMPILE_USAGE_STR));
        if (_allowExit) System.exit(-1);
       }
   
  @@ -164,7 +149,7 @@
   
            if (useStdIn) {
                if (!classNameSet) {
  -                 System.err.println("The -i option must be used with the -o 
option.");
  +                 System.err.println(new 
ErrorMsg(ErrorMsg.COMPILE_STDIN_ERR));
                    if (_allowExit) System.exit(-1);
                }
                compileOK = xsltc.compile(System.in, xsltc.getClassName());
  
  
  
  1.12      +28 -29    
xml-xalan/java/src/org/apache/xalan/xsltc/cmdline/Transform.java
  
  Index: Transform.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/cmdline/Transform.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Transform.java    2001/10/16 10:44:54     1.11
  +++ Transform.java    2001/10/30 14:57:53     1.12
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Transform.java,v 1.11 2001/10/16 10:44:54 morten Exp $
  + * @(#)$Id: Transform.java,v 1.12 2001/10/30 14:57:53 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -90,6 +90,7 @@
   import org.apache.xalan.xsltc.dom.DOMBuilder;
   import org.apache.xalan.xsltc.dom.Axis;
   import org.apache.xalan.xsltc.dom.DTDMonitor;
  +import org.apache.xalan.xsltc.compiler.util.ErrorMsg;
   
   final public class Transform {
   
  @@ -210,69 +211,67 @@
        }
        catch (TransletException e) {
            if (_debug) e.printStackTrace();
  -         System.err.println("\nTranslet Error: " + e.getMessage());
  +         System.err.println(ErrorMsg.getTransletErrorMessage()+
  +                            e.getMessage());
            if (_allowExit) System.exit(-1);        
        }
        catch (RuntimeException e) {
            if (_debug) e.printStackTrace();
  -         System.err.println("\nRuntime Error: " + e.getMessage());
  +         System.err.println(ErrorMsg.getTransletErrorMessage()+
  +                            e.getMessage());
            if (_allowExit) System.exit(-1);
        }
        catch (FileNotFoundException e) {
            if (_debug) e.printStackTrace();
  -         System.err.println("Error: File or URI '"+_fileName+"' not found.");
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.FILE_NOT_FOUND_ERR, _fileName);
  +         System.err.println(ErrorMsg.getTransletErrorMessage()+
  +                            err.toString());
            if (_allowExit) System.exit(-1);
        }
        catch (MalformedURLException e) {
            if (_debug) e.printStackTrace();
  -         System.err.println("Error: Invalid URI '"+_fileName+"'.");
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.INVALID_URI_ERR, _fileName);
  +         System.err.println(ErrorMsg.getTransletErrorMessage()+
  +                            err.toString());
            if (_allowExit) System.exit(-1);
        }
        catch (ClassNotFoundException e) {
            if (_debug) e.printStackTrace();
  -         System.err.println("Error: Cannot find class '"+_className+"'.");
  +         ErrorMsg err= new ErrorMsg(ErrorMsg.CLASS_NOT_FOUND_ERR,_className);
  +         System.err.println(ErrorMsg.getTransletErrorMessage()+
  +                            err.toString());
            if (_allowExit) System.exit(-1);
        }
           catch (UnknownHostException e) {
            if (_debug) e.printStackTrace();
  -         System.err.println("Error: Can't resolve URI specification '"+ 
  -                            _fileName+"'.");
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.INVALID_URI_ERR, _fileName);
  +         System.err.println(ErrorMsg.getTransletErrorMessage()+
  +                            err.toString());
            if (_allowExit) System.exit(-1);
           }
        catch (SAXException e) {
  -         Exception i = e.getException();
  +         Exception ex = e.getException();
            if (_debug) {
  -             if (i != null)
  -                 i.printStackTrace();
  -             else
  -                 e.printStackTrace();
  +             if (ex != null) ex.printStackTrace();
  +             e.printStackTrace();
            }
  -         if (i != null)
  -             System.err.println("Error: "+i.getMessage());
  +         System.err.print(ErrorMsg.getTransletErrorMessage());
  +         if (ex != null)
  +             System.err.println(ex.getMessage());
            else
  -             System.err.println("Error: "+e.getMessage());
  +             System.err.println(e.getMessage());
            if (_allowExit) System.exit(-1);
        }
        catch (Exception e) {
            if (_debug) e.printStackTrace();
  -         System.err.println("Error: "+e.getMessage());
  +         System.err.println(ErrorMsg.getTransletErrorMessage()+
  +                            e.getMessage());
            if (_allowExit) System.exit(-1);
        }
       }
   
  -    private final static String USAGE_STRING =
  -     "Usage: \n" +
  -     "     xslt [-j <jarfile>] {-u <document_url> | <document>} <class>\n"+
  -     "          [<name1>=<value1> ...]\n\n" +
  -     "           <document> is the xml document to be transformed, or\n" +
  -     "           <document_url> is a url for the xml document,\n" +
  -     "           <class> is the translet class which is either in\n" +
  -     "           user's CLASSPATH or in the <jarfile> specified \n" +
  -     "           with the -j option.\n" +
  -     "          also: [-x] (debug), [-s] (don't allow System.exit)"; 
  -
       public static void printUsage() {
  -     System.err.println(USAGE_STRING);
  +     System.err.println(new ErrorMsg(ErrorMsg.TRANSFORM_USAGE_STR));
        if (_allowExit) System.exit(-1);
       }
   
  
  
  
  1.8       +61 -122   
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ErrorMsg.java
  
  Index: ErrorMsg.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ErrorMsg.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ErrorMsg.java     2001/10/30 08:42:56     1.7
  +++ ErrorMsg.java     2001/10/30 14:57:53     1.8
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: ErrorMsg.java,v 1.7 2001/10/30 08:42:56 morten Exp $
  + * @(#)$Id: ErrorMsg.java,v 1.8 2001/10/30 14:57:53 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -60,6 +60,7 @@
    * @author Santiago Pericas-Geertsen
    * @author G. Todd Miller
    * @author Erwin Bolwidt <[EMAIL PROTECTED]>
  + * @author Morten Jorgensen
    *
    */
   
  @@ -69,6 +70,8 @@
   import org.apache.xalan.xsltc.compiler.SyntaxTreeNode;
   
   import java.net.URL;
  +import java.util.Locale;
  +import java.util.ResourceBundle;
   import java.text.MessageFormat;
   
   public final class ErrorMsg {
  @@ -78,7 +81,8 @@
       private String _message = null;
       private String _url = null;
       Object[] _params = null;
  -     
  +
  +    // Compiler error messages
       public static final int MULTIPLE_STYLESHEET_ERR = 0;
       public static final int TEMPLATE_REDEF_ERR      = 1;
       public static final int TEMPLATE_UNDEF_ERR      = 2;
  @@ -133,121 +137,52 @@
       public static final int ATTRIBSET_UNDEF_ERR     = 51;
       public static final int ATTR_VAL_TEMPLATE_ERR   = 52;
       public static final int UNKNOWN_SIG_TYPE_ERR    = 53;
  -
   
  -    // These message should be read from a locale-specific resource bundle
  -    static final String messages_d[] = { 
  -     // MULTIPLE_STYLESHEET_ERR
  -     "More than one stylesheet defined in the same file.",
  -     // TEMPLATE_REDEF_ERR   
  -     "Template ''{0}'' already defined in this stylesheet.",
  -     // TEMPLATE_UNDEF_ERR
  -     "Template ''{0}'' not defined in this stylesheet.",
  -     // VARIABLE_REDEF_ERR   
  -     "Variable ''{0}'' is multiply defined in the same scope.",
  -     // VARIABLE_UNDEF_ERR
  -     "Variable or parameter ''{0}'' is undefined.",
  -     // CLASS_NOT_FOUND_ERR
  -     "Cannot find class ''{0}''.",
  -     // METHOD_NOT_FOUND_ERR
  -     "Cannot find external method ''{0}'' (must be static and public).",
  -     // ARGUMENT_CONVERSION_ERR
  -     "Cannot convert argument/return type in call to method ''{1}''",
  -     // FILE_NOT_FOUND_ERR
  -     "File or URI ''{0}'' not found.",
  -     // INVALID_URI_ERR
  -     "Invalid URI ''{0}''.",
  -     // FILE_ACCESS_ERR
  -     "Cannot open file ''{0}''.",
  -     // MISSING_ROOT_ERR
  -     "<xsl:stylesheet> or <xsl:transform> element expected.",
  -     // NAMESPACE_UNDEF_ERR
  -     "Namespace prefix ''{0}'' is undeclared.",
  -     // FUNCTION_RESOLVE_ERR
  -     "Unable to resolve call to function ''{0}''.",
  -     // NEED_LITERAL_ERR
  -     "Argument to ''{0}'' must be a literal string.",
  -     // XPATH_PARSER_ERR
  -     "Error parsing XPath expression ''{0}''.",
  -     // REQUIRED_ATTR_ERR
  -     "Required attribute ''{0}'' is missing.",
  -     // ILLEGAL_CHAR_ERR
  -     "Illegal character ''{0}'' in XPath expression.",
  -     // ILLEGAL_PI_ERR
  -     "Illegal name ''{0}'' for processing instruction.",
  -     // STRAY_ATTRIBUTE_ERR
  -     "Attribute ''{0}'' outside of element.",
  -     // ILLEGAL_ATTRIBUTE_ERR
  -     "Illegal attribute ''{0}''.",
  -     // CIRCULAR_INCLUDE_ERR
  -     "Circular import/include. Stylesheet ''{0}'' already loaded.",
  -     // RESULT_TREE_SORT_ERR
  -     "Result-tree fragments cannot be supports (<xsl:sort> elements are "+
  -     "ignored). You must sort the nodes when creating the result tree.",
  -     // SYMBOLS_REDEF_ERR
  -     "Decimal formatting ''{0}'' is already defined.",
  -     // XSL_VERSION_ERR
  -     "XSL version ''{0}'' is not supported by XSLTC.",
  -     // CIRCULAR_VARIABLE_ERR
  -     "Circular variable/parameter references: ''{0}''.",
  -     // ILLEGAL_BINARY_OP_ERR
  -     "Unknown operator for binary expression.",
  -     // ILLEGAL_ARG_ERR
  -     "Illegal argument(s) for function call.",
  -     // DOCUMENT_ARG_ERR
  -     "Second argument to document() function must be a node-set.",
  -     // MISSING_WHEN_ERR
  -     "At least one <xsl:when> element required in <xsl:choose>.",
  -     // MULTIPLE_OTHERWISE_ERR
  -     "Only one <xsl:otherwise> element allowed in <xsl:choose>.",
  -     // STRAY_OTHERWISE_ERR
  -     "<xsl:otherwise> can only be used within <xsl:choose>.",
  -     // STRAY_WHEN_ERR
  -     "<xsl:when> can only be used within <xsl:choose>.",
  -     // WHEN_ELEMENT_ERR     
  -     "Only <xsl:when> and <xsl:otherwise> elements allowed in <xsl:choose>.",
  -     // UNNAMED_ATTRIBSET_ERR
  -     "<xsl:attribute-set> is missing the 'name' attribute.",
  -     // ILLEGAL_CHILD_ERR
  -     "Illegal child element.",
  -     // ILLEGAL_ELEM_NAME_ERR
  -     "You cannot call an element ''{0}''",
  -     // ILLEGAL_ATTR_NAME_ERR
  -     "You cannot call an attribute ''{0}''",
  -     // ILLEGAL_TEXT_NODE_ERR
  -     "Text data outside of top-level <xsl:stylesheet> element.",
  -     // SAX_PARSER_CONFIG_ERR
  -     "JAXP parser not configured correctly",
  -     // INTERNAL_ERR
  -     "Unrecoverable XSLTC compilation error: ''{0}''",
  -     // UNSUPPORTED_XSL_ERR
  -     "Unsupported XSL element ''{0}''.",
  -     // UNSUPPORTED_EXT_ERR
  -     "Unrecognised XSLTC extension ''{0}''.",
  -     // MISSING_XSLT_URI_ERR
  -     "The input document is not a stylesheet "+
  -     "(the XSL namespace is not declared in the root element).",
  -     // MISSING_XSLT_TARGET_ERR
  -     "Could not find stylesheet target ''{0}''.",
  -     // NOT_IMPLEMENTED_ERR
  -     "Not implemented: ''{0}''.",
  -     // NOT_STYLESHEET_ERR
  -     "The input document does not contain an XSL stylesheet.",
  -     // ELEMENT_PARSE_ERR
  -     "Could not parse element ''{0}''",
  -     // KEY_USE_ATTR_ERR
  -     "The use-attribute of <key> must be node, node-set, string or number.",
  -     // OUTPUT_VERSION_ERR
  -     "Output XML document version should be 1.0",
  -     // ILLEGAL_RELAT_OP_ERR
  -     "Unknown operator for relational expression",
  -     // ATTRIBSET_UNDEF_ERR
  -     "Attempting to use non-existing attribute set ''{0}''.",
  -     // ATTR_VAL_TEMPLATE_ERR
  -     "Cannot parse attribute value template ''{0}''.",
  -     // UNKNOWN_SIG_TYPE_ERR
  -     "Unknown data-type in signature for class ''{0}''."
  -    };
  +    // JAXP/TrAX error messages
  +    public static final int NO_TRANSLET_CLASS_ERR   = 54;
  +    public static final int NO_MAIN_TRANSLET_ERR    = 55;
  +    public static final int TRANSLET_CLASS_ERR      = 56;
  +    public static final int TRANSLET_OBJECT_ERR     = 57;
  +    public static final int ERROR_LISTENER_NULL_ERR = 58;
  +    public static final int JAXP_UNKNOWN_SOURCE_ERR = 59;
  +    public static final int JAXP_NO_SOURCE_ERR      = 60;
  +    public static final int JAXP_COMPILE_ERR        = 61;
  +    public static final int JAXP_INVALID_ATTR_ERR   = 62;
  +    public static final int JAXP_SET_RESULT_ERR     = 63;
  +    public static final int JAXP_NO_TRANSLET_ERR    = 64;
  +    public static final int JAXP_NO_HANDLER_ERR     = 65;
  +    public static final int JAXP_NO_RESULT_ERR      = 66;
  +    public static final int JAXP_UNKNOWN_PROP_ERR   = 67;
  +    public static final int SAX2DOM_ADAPTER_ERR     = 68;
  +    public static final int XSLTC_SOURCE_ERR        = 69;
  +
  +    // Command-line error messages
  +    public static final int COMPILE_STDIN_ERR       = 70;
  +    public static final int COMPILE_USAGE_STR       = 71;
  +    public static final int TRANSFORM_USAGE_STR     = 72;
  +
  +
  +    // All error messages are localized and are stored in resource bundles.
  +    // This array and the following 4 strings are read from that bundle.
  +    private static String[] _errorMessages;
  +    private static String   _compileError;
  +    private static String   _compileWarning;
  +    private static String   _runtimeError;
  +    
  +    public final static String ERROR_MESSAGES_KEY   = "error-messages";
  +    public final static String COMPILER_ERROR_KEY   = "compile-error";
  +    public final static String COMPILER_WARNING_KEY = "compile-warning";
  +    public final static String RUNTIME_ERROR_KEY    = "runtime-error";
  +
  +    static {
  +     Locale locale = Locale.getDefault();
  +     //Locale locale = new Locale("no","NO");
  +     ResourceBundle bundle = 
ResourceBundle.getBundle("org.apache.xalan.xsltc.compiler.util.ErrorMessages", 
locale);
  +     _errorMessages  = bundle.getStringArray(ERROR_MESSAGES_KEY);
  +     _compileError   = bundle.getString(COMPILER_ERROR_KEY);
  +     _compileWarning = bundle.getString(COMPILER_WARNING_KEY);
  +     _runtimeError   = bundle.getString(RUNTIME_ERROR_KEY);
  +    }
   
       public ErrorMsg(int code) {
        _code = code;
  @@ -310,11 +245,15 @@
       }
   
       public static String getCompileErrorMessage() {
  -     return "Compiler error(s):";
  +     return _compileError;
       }
   
       public static String getCompileWarningMessage() {
  -     return "Compiler warning(s):";
  +     return _compileWarning;
  +    }
  +
  +    public static String getTransletErrorMessage() {
  +     return _runtimeError;
       }
   
       private String getFileName(SyntaxTreeNode node) {
  @@ -346,15 +285,15 @@
        */
       public String toString() {
        String suffix = (_params == null) ? 
  -         (_code >= 0 ? new String(messages_d[_code]) : _message)
  -         : MessageFormat.format(messages_d[_code], _params);
  +         (_code >= 0 ? new String(_errorMessages[_code]) : _message)
  +         : MessageFormat.format(_errorMessages[_code], _params);
        return formatLine() + suffix;
       }
        
       public String toString(Object obj) {
        Object params[] = new Object[1];
        params[0] = obj.toString();
  -     String suffix = MessageFormat.format(messages_d[_code], params);
  +     String suffix = MessageFormat.format(_errorMessages[_code], params);
        return formatLine() + suffix;
       }
        
  @@ -362,7 +301,7 @@
        Object params[] = new Object[2];
        params[0] = obj0.toString();
        params[1] = obj1.toString();
  -     String suffix = MessageFormat.format(messages_d[_code], params);
  +     String suffix = MessageFormat.format(_errorMessages[_code], params);
        return formatLine() + suffix;
       }
   }
  
  
  
  1.2       +14 -45    
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/SlotAllocator.java
  
  Index: SlotAllocator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/SlotAllocator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SlotAllocator.java        2001/04/17 18:52:20     1.1
  +++ SlotAllocator.java        2001/10/30 14:57:53     1.2
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: SlotAllocator.java,v 1.1 2001/04/17 18:52:20 sboag Exp $
  + * @(#)$Id: SlotAllocator.java,v 1.2 2001/10/30 14:57:53 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -66,41 +66,22 @@
   import de.fub.bytecode.generic.*;
   
   final class SlotAllocator {
  +
       private int   _firstAvailableSlot;
       private int   _size = 8;
       private int   _free = 0;
       private int[] _slotsTaken = new int[_size];
  -
  -    /*
  -    private static int Serial = 0;
  -    private final int _serial = Serial++;
       
  -
  -    private void printState(String msg) {
  -     System.out.println("=========== " + _serial + " =========== " + msg);
  -     System.out.println("firstAvailableSlot = " + _firstAvailableSlot);
  -     
  -     for (int i = 0; i < _free; i++) {
  -         System.out.println("\tslotsTaken = " + _slotsTaken[i]);
  -     }
  -     
  -     System.out.println("========================");
  -    }
  -    */
  -    
       public void initialize(LocalVariableGen[] vars) {
        final int length = vars.length;
  -     //System.out.println(_serial + " initialize " + length);
  -     int slot = 0;
  +     int slot = 0, size, index;
  +
        for (int i = 0; i < length; i++) {
  -         //System.out.println("index " + vars[i].getIndex());
  -         //System.out.println("all " + allocateSlot(vars[i].getType()));
  -         //allocateSlot(vars[i].getType());
  -         slot = Math.max(slot,
  -                         vars[i].getIndex() + vars[i].getType().getSize());
  +         size  = vars[i].getType().getSize();
  +         index = vars[i].getIndex();
  +         slot  = Math.max(slot, index + size);
        }
        _firstAvailableSlot = slot;
  -     //System.out.println("firstAvailableSlot = " + _firstAvailableSlot);
       }
   
       public int allocateSlot(Type type) {
  @@ -108,22 +89,18 @@
        final int limit = _free;
        int slot = _firstAvailableSlot, where = 0;
   
  -     //printState("allocating");
  -
        if (_free + size > _size) {
            final int[] array = new int[_size *= 2];
  -         for (int j = 0; j < limit; j++) {
  +         for (int j = 0; j < limit; j++)
                array[j] = _slotsTaken[j];
  -         }
            _slotsTaken = array;
        }
   
        while (where < limit) {
            if (slot + size <= _slotsTaken[where]) {
                // insert
  -             for (int j = limit - 1; j >= where; j--) {
  +             for (int j = limit - 1; j >= where; j--)
                    _slotsTaken[j + size] = _slotsTaken[j];
  -             }
                break;
            }
            else {
  @@ -131,13 +108,10 @@
            }
        }
        
  -     for (int j = 0; j < size; j++) {
  +     for (int j = 0; j < size; j++)
            _slotsTaken[where + j] = slot + j;
  -     }
        
        _free += size;
  -     //System.out.println("allocated slot " + slot);
  -     //printState("done");
        return slot;
       }
   
  @@ -146,7 +120,6 @@
        final int slot = lvg.getIndex();
        final int limit = _free;
        
  -     //printState("releasing " + slot);
        for (int i = 0; i < limit; i++) {
            if (_slotsTaken[i] == slot) {
                int j = i + size;
  @@ -154,16 +127,12 @@
                    _slotsTaken[i++] = _slotsTaken[j++];
                }
                _free -= size;
  -             //System.out.println("released slot " + slot);
  -             
  -             //printState("done");
                return;
            }
        }
  -     System.err.println("size = " + size);
  -     System.err.println("slot = " + slot);
  -     System.err.println("limit = " + limit);
  -     //printState("error");
  -     throw new Error("releaseSlot");
  +     String state = "Variable slot allocation error"+
  +                    "(size="+size+", slot="+slot+", limit="+limit+")";
  +     ErrorMsg err = new ErrorMsg(ErrorMsg.INTERNAL_ERR, state);
  +     throw new Error(err.toString());
       }
   }
  
  
  
  1.1                  
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ErrorMessages.java
  
  Index: ErrorMessages.java
  ===================================================================
  /*
   * @(#)$Id: ErrorMessages.java,v 1.1 2001/10/30 14:57:53 morten Exp $
   *
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 2001, Sun
   * Microsystems., http://www.sun.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * @author Morten Jorgensen
   *
   */
  
  package org.apache.xalan.xsltc.compiler.util;
  
  import java.util.Vector;
  import java.util.Enumeration;
  import java.util.ResourceBundle;
  
  public class ErrorMessages extends ResourceBundle {
  
      // These message should be read from a locale-specific resource bundle
      private static final String errorMessages[] = { 
        // MULTIPLE_STYLESHEET_ERR
        "More than one stylesheet defined in the same file.",
        // TEMPLATE_REDEF_ERR   
        "Template ''{0}'' already defined in this stylesheet.",
        // TEMPLATE_UNDEF_ERR
        "Template ''{0}'' not defined in this stylesheet.",
        // VARIABLE_REDEF_ERR   
        "Variable ''{0}'' is multiply defined in the same scope.",
        // VARIABLE_UNDEF_ERR
        "Variable or parameter ''{0}'' is undefined.",
        // CLASS_NOT_FOUND_ERR
        "Cannot find class ''{0}''.",
        // METHOD_NOT_FOUND_ERR
        "Cannot find external method ''{0}'' (must be static and public).",
        // ARGUMENT_CONVERSION_ERR
        "Cannot convert argument/return type in call to method ''{0}''",
        // FILE_NOT_FOUND_ERR
        "File or URI ''{0}'' not found.",
        // INVALID_URI_ERR
        "Invalid URI ''{0}''.",
        // FILE_ACCESS_ERR
        "Cannot open file or URI ''{0}''.",
        // MISSING_ROOT_ERR
        "<xsl:stylesheet> or <xsl:transform> element expected.",
        // NAMESPACE_UNDEF_ERR
        "Namespace prefix ''{0}'' is undeclared.",
        // FUNCTION_RESOLVE_ERR
        "Unable to resolve call to function ''{0}''.",
        // NEED_LITERAL_ERR
        "Argument to ''{0}'' must be a literal string.",
        // XPATH_PARSER_ERR
        "Error parsing XPath expression ''{0}''.",
        // REQUIRED_ATTR_ERR
        "Required attribute ''{0}'' is missing.",
        // ILLEGAL_CHAR_ERR
        "Illegal character ''{0}'' in XPath expression.",
        // ILLEGAL_PI_ERR
        "Illegal name ''{0}'' for processing instruction.",
        // STRAY_ATTRIBUTE_ERR
        "Attribute ''{0}'' outside of element.",
        // ILLEGAL_ATTRIBUTE_ERR
        "Illegal attribute ''{0}''.",
        // CIRCULAR_INCLUDE_ERR
        "Circular import/include. Stylesheet ''{0}'' already loaded.",
        // RESULT_TREE_SORT_ERR
        "Result-tree fragments cannot be sorted (<xsl:sort> elements are "+
        "ignored). You must sort the nodes when creating the result tree.",
        // SYMBOLS_REDEF_ERR
        "Decimal formatting ''{0}'' is already defined.",
        // XSL_VERSION_ERR
        "XSL version ''{0}'' is not supported by XSLTC.",
        // CIRCULAR_VARIABLE_ERR
        "Circular variable/parameter reference in ''{0}''.",
        // ILLEGAL_BINARY_OP_ERR
        "Unknown operator for binary expression.",
        // ILLEGAL_ARG_ERR
        "Illegal argument(s) for function call.",
        // DOCUMENT_ARG_ERR
        "Second argument to document() function must be a node-set.",
        // MISSING_WHEN_ERR
        "At least one <xsl:when> element required in <xsl:choose>.",
        // MULTIPLE_OTHERWISE_ERR
        "Only one <xsl:otherwise> element allowed in <xsl:choose>.",
        // STRAY_OTHERWISE_ERR
        "<xsl:otherwise> can only be used within <xsl:choose>.",
        // STRAY_WHEN_ERR
        "<xsl:when> can only be used within <xsl:choose>.",
        // WHEN_ELEMENT_ERR     
        "Only <xsl:when> and <xsl:otherwise> elements allowed in <xsl:choose>.",
        // UNNAMED_ATTRIBSET_ERR
        "<xsl:attribute-set> is missing the 'name' attribute.",
        // ILLEGAL_CHILD_ERR
        "Illegal child element.",
        // ILLEGAL_ELEM_NAME_ERR
        "You cannot call an element ''{0}''",
        // ILLEGAL_ATTR_NAME_ERR
        "You cannot call an attribute ''{0}''",
        // ILLEGAL_TEXT_NODE_ERR
        "Text data outside of top-level <xsl:stylesheet> element.",
        // SAX_PARSER_CONFIG_ERR
        "JAXP parser not configured correctly",
        // INTERNAL_ERR
        "Unrecoverable XSLTC-internal error: ''{0}''",
        // UNSUPPORTED_XSL_ERR
        "Unsupported XSL element ''{0}''.",
        // UNSUPPORTED_EXT_ERR
        "Unrecognised XSLTC extension ''{0}''.",
        // MISSING_XSLT_URI_ERR
        "The input document is not a stylesheet "+
        "(the XSL namespace is not declared in the root element).",
        // MISSING_XSLT_TARGET_ERR
        "Could not find stylesheet target ''{0}''.",
        // NOT_IMPLEMENTED_ERR
        "Not implemented: ''{0}''.",
        // NOT_STYLESHEET_ERR
        "The input document does not contain an XSL stylesheet.",
        // ELEMENT_PARSE_ERR
        "Could not parse element ''{0}''",
        // KEY_USE_ATTR_ERR
        "The use-attribute of <key> must be node, node-set, string or number.",
        // OUTPUT_VERSION_ERR
        "Output XML document version should be 1.0",
        // ILLEGAL_RELAT_OP_ERR
        "Unknown operator for relational expression",
        // ATTRIBSET_UNDEF_ERR
        "Attempting to use non-existing attribute set ''{0}''.",
        // ATTR_VAL_TEMPLATE_ERR
        "Cannot parse attribute value template ''{0}''.",
        // UNKNOWN_SIG_TYPE_ERR
        "Unknown data-type in signature for class ''{0}''.",
  
        // NO_TRANSLET_CLASS_ERR
        "This Templates does not contain a valid translet class definition.",
        // NO_MAIN_TRANSLET_ERR
        "This Templates does not contain a class with the name ''{0}''.",
        // TRANSLET_CLASS_ERR
        "Could not load the translet class ''{0}''.",
        // TRANSLET_OBJECT_ERR
        "Translet class loaded, but unable to create translet instance.",
        // ERROR_LISTENER_NULL_ERR
        "Attempting to set ErrorListener for ''{0}'' to null",
        // JAXP_UNKNOWN_SOURCE_ERR
        "Only StreamSource, SAXSource and DOMSOurce are supported by XSLTC",
        // JAXP_NO_SOURCE_ERR
        "Source object passed to ''{0}'' has no contents.",
        // JAXP_COMPILE_ERR
        "Could not compile stylesheet",
        // JAXP_INVALID_ATTR_ERR
        "TransformerFactory does not recognise attribute ''{0}''.",
        // JAXP_SET_RESULT_ERROR
        "setResult() must be called prior to startDocument().",
        // JAXP_NO_TRANSLET_ERR
        "The transformer has no encapsulated translet object.",
        // JAXP_NO_HANDLER_ERR
        "No defined output handler for transformation result.",
        // JAXP_NO_RESULT_ERR
        "Result object passed to ''{0}'' is invalid.",
        // JAXP_UNKNOWN_PROP_ERR
        "Attempting to access invalid Transformer property ''{0}''.",
        // SAX2DOM_ADAPTER_ERR
        "Could not crate SAX2DOM adapter: ''{0}''.",
        // XSLTC_SOURCE_ERR
        "XSLTCSource.build() called without systemId being set.",
  
        // COMPILE_STDIN_ERR
        "The -i option must be used with the -o option.",
        // COMPILE_USAGE_STR
        "Usage:\n" + 
        "   xsltc [-o <output>] [-d <directory>] [-j <jarfile>]\n"+
        "         [-p <package name>] [-x] [-s] [-u] <stylesheet>|-i\n\n"+
        "   Where <output> is the name to give the the generated translet.\n"+
        "         <stylesheet> is one or more stylesheet file names, or if\n"+
        "         the -u options is specified, one or more stylesheet URLs.\n"+
        "         <directory> is the output directory.\n"+
        "         <jarfile> is the name of a JAR-file to put all classes in.\n"+
        "         <package-name> is used to prefix all class names.\n\n"+
        "   Notes:\n"+
        "         The -i options forces the compiler to read from stdin\n"+
        "         The -o option is ignored if compiling multiple stylesheets\n"+
        "         The -x option switched on debug messages.\n"+
        "         The -s option disables calling System.exit.",
        // TRANSFORM_USAGE_STR
        "Usage: \n" +
        "   xslt  [-j <jarfile>] {-u <document_url> | <document>} <class>\n"+
        "         [<name1>=<value1> ...]\n\n" +
        "   Where <document> is the xml document to be transformed, or\n" +
        "         <document_url> is a url for the xml document,\n" +
        "         <class> is the translet class which is either in\n" +
        "         user's CLASSPATH or in the <jarfile> specified \n" +
        "         with the -j option.\n" +
        "   Notes:\n"+
        "         The -x option switched on debug messages.\n"+
        "         The -s option disables calling System.exit."
      };
  
      private static Vector _keys;
  
      static {
        _keys = new Vector();
        _keys.addElement(ErrorMsg.ERROR_MESSAGES_KEY);
        _keys.addElement(ErrorMsg.COMPILER_ERROR_KEY);
        _keys.addElement(ErrorMsg.COMPILER_WARNING_KEY);
        _keys.addElement(ErrorMsg.RUNTIME_ERROR_KEY);
      }
  
      public Enumeration getKeys() {
        return _keys.elements();
      }
  
      public Object handleGetObject(String key) {
        if (key == null) return null;
        if (key.equals(ErrorMsg.ERROR_MESSAGES_KEY))
            return errorMessages;
        else if (key.equals(ErrorMsg.COMPILER_ERROR_KEY))
            return "Compiler error(s): ";
        else if (key.equals(ErrorMsg.COMPILER_WARNING_KEY))
            return "Compiler warning(s): ";         
        else if (key.equals(ErrorMsg.RUNTIME_ERROR_KEY))
            return "Translet error(s): ";
        return(null);
      }
  
  }
  
  
  
  1.1                  
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ErrorMessages_en.java
  
  Index: ErrorMessages_en.java
  ===================================================================
  /*
   * @(#)$Id: ErrorMessages_en.java,v 1.1 2001/10/30 14:57:53 morten Exp $
   *
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 2001, Sun
   * Microsystems., http://www.sun.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * @author Morten Jorgensen
   *
   */
  
  package org.apache.xalan.xsltc.compiler.util;
  
  import java.util.ResourceBundle;
  
  public final class ErrorMessages_en extends ErrorMessages {
      
  }
  
  
  
  1.1                  
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ErrorMessages_no.java
  
  Index: ErrorMessages_no.java
  ===================================================================
  /*
   * @(#)$Id: ErrorMessages_no.java,v 1.1 2001/10/30 14:57:53 morten Exp $
   *
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xalan" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 2001, Sun
   * Microsystems., http://www.sun.com.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * @author Morten Jorgensen
   *
   */
  
  package org.apache.xalan.xsltc.compiler.util;
  
  import java.util.Vector;
  import java.util.Enumeration;
  import java.util.ResourceBundle;
  
  public final class ErrorMessages_no extends ErrorMessages {
      
      // These message should be read from a locale-specific resource bundle
      private static final String errorMessages[] = { 
        // MULTIPLE_STYLESHEET_ERR
        "En fil kan bare innehold ett stilark.",
        // TEMPLATE_REDEF_ERR   
        "<xsl:template> ''{0}'' er allerede definert i dette stilarket.",
        // TEMPLATE_UNDEF_ERR
        "<xsl:template> ''{0}'' er ikke definert i dette stilarket.",
        // VARIABLE_REDEF_ERR   
        "Variabel ''{0}'' er allerede definert.",
        // VARIABLE_UNDEF_ERR
        "Variabel eller parameter ''{0}'' er ikke definert.",
        // CLASS_NOT_FOUND_ERR
        "Finner ikke klassen ''{0}''.",
        // METHOD_NOT_FOUND_ERR
        "Finner ikke ekstern funksjon ''{0}'' (m\u00e5 v\00e6re deklarert 
b\u00e5de 'static' og 'public').",
        // ARGUMENT_CONVERSION_ERR
        "Kan ikke konvertere argument/retur type i kall til funksjon ''{0}''",
        // FILE_NOT_FOUND_ERR
        "Finner ikke fil eller URI ''{0}''.",
        // INVALID_URI_ERR
        "Ugyldig URI ''{0}''.",
        // FILE_ACCESS_ERR
        "Kan ikke \u00e5pne fil eller URI ''{0}''.",
        // MISSING_ROOT_ERR
        "Forvented <xsl:stylesheet> eller <xsl:transform> element.",
        // NAMESPACE_UNDEF_ERR
        "Prefiks ''{0}'' er ikke deklarert.",
        // FUNCTION_RESOLVE_ERR
        "Kunne ikke resolvere kall til funksjon ''{0}''.",
        // NEED_LITERAL_ERR
        "Argument til ''{0}'' m\u00e5 v\00e6re ordrett tekst.",
        // XPATH_PARSER_ERR
        "Kunne ikke tolke XPath uttrykk ''{0}''.",
        // REQUIRED_ATTR_ERR
        "N\u00f8dvendig attributt ''{0}'' er ikke deklarert.",
        // ILLEGAL_CHAR_ERR
        "Ugyldig bokstav/tegn ''{0}'' i XPath uttrykk.",
        // ILLEGAL_PI_ERR
        "Ugyldig navn ''{0}'' for prosesserings-instruksjon.",
        // STRAY_ATTRIBUTE_ERR
        "Attributt ''{0}'' utenfor element.",
        // ILLEGAL_ATTRIBUTE_ERR
        "Ugyldig attributt ''{0}''.",
        // CIRCULAR_INCLUDE_ERR
        "Sirkul \00e6 import/include; stilark ''{0}'' er alt lest.",
        // RESULT_TREE_SORT_ERR
        "Result-tre fragmenter kan ikke sorteres (<xsl:sort> elementer vil "+
        "bli ignorert). Du m\u00e5 sortere nodene mens du bygger treet.",
        // SYMBOLS_REDEF_ERR
        "Formatterings-symboler ''{0}'' er alt definert.",
        // XSL_VERSION_ERR
        "XSL versjon ''{0}'' er ikke st\u00f8ttet av XSLTC.",
        // CIRCULAR_VARIABLE_ERR
        "Sirkul\00e6r variabel/parameter referanse i ''{0}''.",
        // ILLEGAL_BINARY_OP_ERR
        "Ugyldig operator for bin\00e6rt uttrykk.",
        // ILLEGAL_ARG_ERR
        "Ugyldig parameter i funksjons-kall.",
        // DOCUMENT_ARG_ERR
        "Andre argument til document() m\u00e5 v\00e6re et node-sett.",
        // MISSING_WHEN_ERR
        "Du m\u00e5 deklarere minst ett <xsl:when> element innenfor 
<xsl:choose>.",
        // MULTIPLE_OTHERWISE_ERR
        "Kun ett <xsl:otherwise> element kan deklareres innenfor <xsl:choose>.",
        // STRAY_OTHERWISE_ERR
        "<xsl:otherwise> kan kun benyttes innenfor <xsl:choose>.",
        // STRAY_WHEN_ERR
        "<xsl:when> kan kun benyttes innenfor <xsl:choose>.",
        // WHEN_ELEMENT_ERR     
        "Kun <xsl:when> og <xsl:otherwise> kan benyttes innenfor <xsl:choose>.",
        // UNNAMED_ATTRIBSET_ERR
        "<xsl:attribute-set> element manger 'name' attributt.",
        // ILLEGAL_CHILD_ERR
        "Ugyldig element.",
        // ILLEGAL_ELEM_NAME_ERR
        "''{0}'' er ikke et gyldig navn for et element.",
        // ILLEGAL_ATTR_NAME_ERR
        "''{0}'' er ikke et gyldig navn for et attributt.",
        // ILLEGAL_TEXT_NODE_ERR
        "Du kan ikke plassere tekst utenfor et <xsl:stylesheet> element.",
        // SAX_PARSER_CONFIG_ERR
        "JAXP parser er ikke korrekt konfigurert.",
        // INTERNAL_ERR
        "XSLTC-intern feil: ''{0}''",
        // UNSUPPORTED_XSL_ERR
        "St\u00f8tter ikke XSL element ''{0}''.",
        // UNSUPPORTED_EXT_ERR
        "XSLTC st\u00f8tter ikke utvidet funksjon ''{0}''.",
        // MISSING_XSLT_URI_ERR
        "Dette dokumentet er ikke et XSL stilark "+
        "(xmlns:xsl='http://www.w3.org/1999/XSL/Transform' er ikke deklarert).",
        // MISSING_XSLT_TARGET_ERR
        "Kan ikke finne stilark ved navn ''{0}'' i dette dokumentet.",
        // NOT_IMPLEMENTED_ERR
        "Ikke implementert/gjenkjent: ''{0}''.",
        // NOT_STYLESHEET_ERR
        "Dokumentet inneholder ikke et XSL stilark",
        // ELEMENT_PARSE_ERR
        "Kan ikke tolke element ''{0}''",
        // KEY_USE_ATTR_ERR
        "'use'-attributtet i <xsl:key> m\u00e5 v\00e6re node, node-sett, tekst 
eller nummer.",
        // OUTPUT_VERSION_ERR
        "Det genererte XML dokumentet m\u00e5 gis versjon 1.0",
        // ILLEGAL_RELAT_OP_ERR
        "Ugyldig operator for relasjons-uttrykk.",
        // ATTRIBSET_UNDEF_ERR
        "Finner ikke <xsl:attribute-set> element med navn ''{0}''.",
        // ATTR_VAL_TEMPLATE_ERR
        "Kan ikke tolke attributt ''{0}''.",
        // UNKNOWN_SIG_TYPE_ERR
        "Ukjent data-type i signatur for klassen ''{0}''.",
  
        // NO_TRANSLET_CLASS_ERR
        "Dette Templates objected inneholder ingen translet klasse definisjon.",
        // NO_MAIN_TRANSLET_ERR
        "Dette Templates objected inneholder ingen klasse ved navn ''{0}''.",
        // TRANSLET_CLASS_ERR
        "Kan ikke laste translet-klasse ''{0}''.",
        // TRANSLET_OBJECT_ERR
        "Translet klassen er lastet man kan instansieres.",
        // ERROR_LISTENER_NULL_ERR
        "ErrorListener for ''{0}'' fors\u00f8kt satt til 'null'.",
        // JAXP_UNKNOWN_SOURCE_ERR
        "Kun StreamSource, SAXSource og DOMSOurce er st\u00f8ttet av XSLTC",
        // JAXP_NO_SOURCE_ERR
        "Source objekt sendt til ''{0}'' har intet innhold.",
        // JAXP_COMPILE_ERR
        "Kan ikke kompilere stilark.",
        // JAXP_INVALID_ATTR_ERR
        "TransformerFactory gjenkjenner ikke attributtet ''{0}''.",
        // JAXP_SET_RESULT_ERROR
        "setResult() m\u00e5 kalles f\u00f8r startDocument().",
        // JAXP_NO_TRANSLET_ERR
        "Transformer objektet inneholder ikken noen translet instans.",
        // JAXP_NO_HANDLER_ERR
        "Ingen 'handler' er satt for \u00e5 ta imot generert dokument.",
        // JAXP_NO_RESULT_ERR
        "Result objektet sendt til ''{0}'' er ikke gyldig.",
        // JAXP_UNKNOWN_PROP_ERR
        "Fors\u00f8ker \u00e5 lese ugyldig attributt ''{0}'' fra Transformer.",
        // SAX2DOM_ADAPTER_ERR
        "Kan ikke instansiere SAX2DOM adapter: ''{0}''.",
        // XSLTC_SOURCE_ERR
        "XSLTCSource.build() kalt uten at 'systemId' er definert.",
  
        // COMPILE_STDIN_ERR
        "Du kan ikke bruke -i uten \u00e5 ogs\u00e5 angi klasse-navn med -o.",
        // COMPILE_USAGE_STR
        "Bruk:\n" + 
        "   xsltc [-o <klasse>] [-d <katalog>] [-j <arkiv>]\n"+
        "         [-p <pakke>] [-x] [-s] [-u] <stilark>|-i\n\n"+
        "   Der:  <klasse> er navnet du vil gi den kompilerte java klassen.\n"+
        "         <stilark> er ett eller flere XSL stilark, eller dersom -u\n"+
        "         er benyttet, en eller flere URL'er til stilark.\n"+
        "         <katalog> katalog der klasse filer vil plasseres.\n"+
        "         <arkiv> er en JAR-fil der klassene vil plasseres\n"+
        "         <pakke> er an Java 'package' klassene vil legges i.\n\n"+
        "   Annet:\n"+
        "         -i tvinger kompilatoren til \u00e5 lese fra stdin.\n"+
        "         -o ignoreres dersom flere enn ett silark kompileres.\n"+
        "         -x sl\u00e5r p\u00e5 debug meldinger.\n"+
        "         -s blokkerer alle kall til System.exit().",
        // TRANSFORM_USAGE_STR
        "Bruk: \n" +
        "   xslt  [-j <arkiv>] {-u <url> | <dokument>} <klasse>\n"+
        "         [<param>=<verdi> ...]\n\n" +
        "   Der:  <dokument> er XML dokumentet som skal behandles.\n" +
        "         <url> er en URL til XML dokumentet som skal behandles.\n" +
        "         <klasse> er Java klassen som skal benyttes.\n" +
        "         <arkiv> er en JAR-fil som klassen leses fra.\n"+
        "   Annet:\n"+
        "         -x sl\u00e5r p\u00e5 debug meldinger.\n"+
        "         -s blokkerer alle kall til System.exit()."
      };
  
      private static Vector _keys;
  
      static {
        _keys = new Vector();
        _keys.addElement(ErrorMsg.ERROR_MESSAGES_KEY);
        _keys.addElement(ErrorMsg.COMPILER_ERROR_KEY);
        _keys.addElement(ErrorMsg.COMPILER_WARNING_KEY);
        _keys.addElement(ErrorMsg.RUNTIME_ERROR_KEY);
      }
  
      public Enumeration getKeys() {
        return _keys.elements();
      }
  
      public Object handleGetObject(String key) {
        if (key == null) return null;
        if (key.equals(ErrorMsg.ERROR_MESSAGES_KEY))
            return errorMessages;
        else if (key.equals(ErrorMsg.COMPILER_ERROR_KEY))
            return "Compiler error(s): ";
        else if (key.equals(ErrorMsg.COMPILER_WARNING_KEY))
            return "Compiler warning(s): ";         
        else if (key.equals(ErrorMsg.RUNTIME_ERROR_KEY))
            return "Translet error(s): ";
        return(null);
      }
  
  }
  
  
  
  1.10      +3 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/dom/LoadDocument.java
  
  Index: LoadDocument.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/LoadDocument.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- LoadDocument.java 2001/10/25 10:23:32     1.9
  +++ LoadDocument.java 2001/10/30 14:57:54     1.10
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: LoadDocument.java,v 1.9 2001/10/25 10:23:32 morten Exp $
  + * @(#)$Id: LoadDocument.java,v 1.10 2001/10/30 14:57:54 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -240,7 +240,8 @@
                return(union);
            }
            else {
  -             throw new IllegalArgumentException("Illegal argument to 
document() function");
  +             final String err = "document("+arg.toString()+")";
  +             throw new IllegalArgumentException(err);
            }
        }
        catch (Exception e) {
  
  
  
  1.5       +2 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/dom/NodeSortRecordFactory.java
  
  Index: NodeSortRecordFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/NodeSortRecordFactory.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- NodeSortRecordFactory.java        2001/09/28 14:39:14     1.4
  +++ NodeSortRecordFactory.java        2001/10/30 14:57:54     1.5
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: NodeSortRecordFactory.java,v 1.4 2001/09/28 14:39:14 morten Exp $
  + * @(#)$Id: NodeSortRecordFactory.java,v 1.5 2001/10/30 14:57:54 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -93,7 +93,7 @@
            _translet = (AbstractTranslet)translet;
        }
        catch (ClassNotFoundException e) {
  -         throw new TransletException("Could not find class " + className);
  +         throw new TransletException(e);
        }
       }
   
  
  
  
  1.28      +4 -6      
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java
  
  Index: AbstractTranslet.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- AbstractTranslet.java     2001/10/15 09:13:23     1.27
  +++ AbstractTranslet.java     2001/10/30 14:57:54     1.28
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: AbstractTranslet.java,v 1.27 2001/10/15 09:13:23 morten Exp $
  + * @(#)$Id: AbstractTranslet.java,v 1.28 2001/10/30 14:57:54 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -110,12 +110,10 @@
        */
       public final DOMAdapter makeDOMAdapter(DOM dom)
        throws TransletException {
  -     if (dom instanceof DOMImpl) {
  +     if (dom instanceof DOMImpl)
            return new DOMAdapter((DOMImpl)dom, namesArray, namespaceArray);
  -     }
  -     else {
  -         throw new TransletException("wrong type of source DOM");
  -     }
  +     BasisLibrary.runTimeError(BasisLibrary.DOM_ADAPTER_INIT_ERR);
  +     return null;
       }
   
       /************************************************************************
  
  
  
  1.24      +79 -32    
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java
  
  Index: BasisLibrary.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- BasisLibrary.java 2001/10/22 07:40:39     1.23
  +++ BasisLibrary.java 2001/10/30 14:57:54     1.24
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: BasisLibrary.java,v 1.23 2001/10/22 07:40:39 morten Exp $
  + * @(#)$Id: BasisLibrary.java,v 1.24 2001/10/30 14:57:54 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -66,10 +66,10 @@
   
   package org.apache.xalan.xsltc.runtime;
   
  -//import java.util.Hashtable;
  +import java.text.MessageFormat;
  +import java.text.FieldPosition;
   import java.text.DecimalFormat;
   import java.text.DecimalFormatSymbols;
  -import java.text.FieldPosition;
   
   import org.xml.sax.AttributeList;
   
  @@ -204,7 +204,8 @@
            return stringToReal(((DOM) obj).getStringValue());
        }
        else {
  -         runTimeError("Invalid argument type in call to number().");
  +         final String className = obj.getClass().getName();
  +         runTimeError(INVALID_ARGUMENT_ERR, className, "number()");
            return 0.0;
        }
       }
  @@ -238,7 +239,8 @@
            return !temp.equals(EMPTYSTRING);
        }
        else {
  -         runTimeError("Invalid argument type in call to number().");
  +         final String className = obj.getClass().getName();
  +         runTimeError(INVALID_ARGUMENT_ERR, className, "number()");
        }
        return false;
       }
  @@ -259,7 +261,7 @@
            return value.substring(istart);
        }
        catch (IndexOutOfBoundsException e) {
  -         runTimeInternalError();
  +         runTimeError(RUN_TIME_INTERNAL_ERR, "substring()");
            return null;
        }
       }
  @@ -287,7 +289,7 @@
                return value.substring(istart, isum);
        }
        catch (IndexOutOfBoundsException e) {
  -         runTimeInternalError();
  +         runTimeError(RUN_TIME_INTERNAL_ERR, "substring()");
            return null;
        }
       }
  @@ -403,7 +405,7 @@
        * an unresolved external function.
        */
       public static void unresolved_externalF(String name) {
  -     runTimeError("External function '"+name+"' not supported by XSLTC.");
  +     runTimeError(EXTERNAL_FUNC_ERR, name);
       }
   
       /**
  @@ -424,8 +426,7 @@
        if (name.equals("xsl:vendor-url"))
            return("http://xml.apache.org/xalan-j";);
        
  -     runTimeError("Invalid argument type '"+name+
  -                  "' in call to system-property().");
  +     runTimeError(INVALID_ARGUMENT_ERR, name, "system-property()");
        return(EMPTYSTRING);
       }
   
  @@ -469,7 +470,7 @@
            return numberF(lstring, dom) <= numberF(rstring, dom);
   
        default:
  -         runTimeInternalError();
  +         runTimeError(RUN_TIME_INTERNAL_ERR, "compare()");
            return false;
        }
       }
  @@ -608,7 +609,7 @@
            break;
   
        default:
  -         runTimeInternalError();
  +         runTimeError(RUN_TIME_INTERNAL_ERR, "compare()");
        }
   
        return false;
  @@ -673,7 +674,7 @@
                    return numberF(left, dom) <= numberF(right, dom);
                    
                default:
  -                 runTimeInternalError();
  +                 runTimeError(RUN_TIME_INTERNAL_ERR, "compare()");
                }
            }
            // falls through
  @@ -761,7 +762,8 @@
                return(false);
            }
            else {
  -             runTimeError("Unknown argument type in call to equal.");
  +             final String className = right.getClass().getName();
  +             runTimeError(INVALID_ARGUMENT_ERR, className, "compare()");
            }
        }
        return result;
  @@ -860,8 +862,7 @@
            return(result.toString());
        }
        catch (IllegalArgumentException e) {
  -         runTimeError("Attempting to format number '"+ number +
  -                      "' using pattern '" + pattern + "'.");
  +         runTimeError(FORMAT_NUMBER_ERR, Double.toString(number), pattern);
            return(EMPTYSTRING);
        }
       }
  @@ -886,12 +887,13 @@
                return(dom.getIterator());
            }
            else {
  -             runTimeTypeError("reference", obj.getClass().getName());
  +             final String className = obj.getClass().getName();
  +             runTimeError(DATA_CONVERSION_ERR, "reference", className);
                return null;
            }
        }
        catch (ClassCastException e) {
  -         runTimeTypeError("reference", "node-set");
  +         runTimeError(DATA_CONVERSION_ERR, "reference", "node-set");
            return null;
        }
       }
  @@ -935,29 +937,74 @@
            }
        }
        catch (TransletException e) {
  -         runTimeError("TransletException raised in copy().");
  +         runTimeError(RUN_TIME_COPY_ERR);
        }
       }
   
  -    /**
  -     * Print a run-time type error message.
  -     */
  -    public static void runTimeTypeError(String from, String to) {
  -     runTimeError("Invalid conversion from '" + from + "' to '" + to + "'.");
  -    }
  +    public static final int RUN_TIME_INTERNAL_ERR   = 0;
  +    public static final int RUN_TIME_COPY_ERR       = 1;
  +    public static final int DATA_CONVERSION_ERR     = 2;
  +    public static final int EXTERNAL_FUNC_ERR       = 3;
  +    public static final int EQUALITY_EXPR_ERR       = 4;
  +    public static final int INVALID_ARGUMENT_ERR    = 5;
  +    public static final int FORMAT_NUMBER_ERR       = 6;
  +    public static final int ITERATOR_CLONE_ERR      = 7;
  +    public static final int AXIS_SUPPORT_ERR        = 8;
  +    public static final int TYPED_AXIS_SUPPORT_ERR  = 9;
  +    public static final int STRAY_ATTRIBUTE_ERR     = 10; 
  +    public static final int STRAY_NAMESPACE_ERR     = 11;
  +    public static final int NAMESPACE_PREFIX_ERR    = 12;
  +    public static final int DOM_ADAPTER_INIT_ERR    = 13;
  +
  +    private final static String[] errorMessages = {
  +     // RUN_TIME_INTERNAL_ERR
  +     "Run-time internal error in ''{0}''",
  +     // RUN_TIME_COPY_ERR
  +     "Run-time error when executing <xsl:copy>.",
  +     // DATA_CONVERSION_ERR
  +     "Invalid conversion from ''{0}'' to ''{1}''.",
  +     // EXTERNAL_FUNC_ERR
  +     "External function ''{0}'' not supported by XSLTC.",
  +     // EQUALITY_EXPR_ERR
  +     "Unknown argument type in equality expression.",
  +     // INVALID_ARGUMENT_ERR
  +     "Invalid argument type ''{0}'' in call to ''{1}''",
  +     // FORMAT_NUMBER_ERR
  +     "Attempting to format number ''{0}'' using pattern ''{1}''.",
  +     // ITERATOR_CLONE_ERR
  +     "Cannot clone iterator ''{0}''.",
  +     // AXIS_SUPPORT_ERR
  +     "Iterator for axis ''{0}'' not supported.",
  +     // TYPED_AXIS_SUPPORT_ERR
  +     "Iterator for typed axis ''{0}'' not supported.",
  +     // STRAY_ATTRIBUTE_ERR
  +     "Attribute ''{0}'' outside of element.",
  +     // STRAY_NAMESPACE_ERR
  +     "Namespace declaration ''{0}''=''{1}'' outside of element.",
  +     // NAMESPACE_PREFIX_ERR
  +     "Namespace for prefix ''{0}'' has not been declared.",
  +     // DOM_ADAPTER_INIT_ERR
  +     "DOMAdapter created using wrong type of source DOM."
  +    };
   
       /**
  -     * Print a run-time internal error message.
  +     * Print a run-time error message.
        */
  -    public static void runTimeInternalError() {
  -     runTimeError("Internal error.");
  +    public static void runTimeError(int code) {
  +     throw new RuntimeException(errorMessages[code]);
       }
   
  -    /**
  -     * Print a run-time error message.
  -     */
  -    public static void runTimeError(String message) {
  +    public static void runTimeError(int code, Object[] args) {
  +     final String message = MessageFormat.format(errorMessages[code],args);
        throw new RuntimeException(message);
  +    }
  +
  +    public static void runTimeError(int code, Object arg0) {
  +     runTimeError(code, new Object[]{ arg0 } );
  +    }
  +
  +    public static void runTimeError(int code, Object arg0, Object arg1) {
  +     runTimeError(code, new Object[]{ arg0, arg1 } );
       }
   
       public static void consoleOutput(String msg) {
  
  
  
  1.8       +5 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/SAXAdapter.java
  
  Index: SAXAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/SAXAdapter.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SAXAdapter.java   2001/08/30 12:36:07     1.7
  +++ SAXAdapter.java   2001/10/30 14:57:54     1.8
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: SAXAdapter.java,v 1.7 2001/08/30 12:36:07 amiro Exp $
  + * @(#)$Id: SAXAdapter.java,v 1.8 2001/10/30 14:57:54 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -135,13 +135,13 @@
        }
       }
       
  -    public void attribute(String attributeName, String attributeValue)
  +    public void attribute(String name, String value)
        throws TransletException {
        if (_openElementName != null) {
  -         _attributes.add(attributeName, attributeValue);
  +         _attributes.add(name, value);
        }
        else {
  -         throw new TransletException("attribute outside of start tag");
  +         BasisLibrary.runTimeError(BasisLibrary.STRAY_ATTRIBUTE_ERR, name);
        }
       }
       
  @@ -177,7 +177,7 @@
       public void omitHeader(boolean value) {}
       public void setCdataElements(Hashtable elements) { }
       public void close() {}
  -    public boolean setEscaping(boolean escape)  throws TransletException {
  +    public boolean setEscaping(boolean escape) throws TransletException {
           return(true);
       }
       public String getPrefix(String uri) { return(""); }
  
  
  
  1.40      +11 -40    
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TextOutput.java
  
  Index: TextOutput.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TextOutput.java,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- TextOutput.java   2001/10/25 15:48:12     1.39
  +++ TextOutput.java   2001/10/30 14:57:54     1.40
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: TextOutput.java,v 1.39 2001/10/25 15:48:12 morten Exp $
  + * @(#)$Id: TextOutput.java,v 1.40 2001/10/30 14:57:54 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -268,11 +268,9 @@
                final String prefix = _elementName.substring(0,col);
                final String localname = _elementName.substring(col+1);
                final String uri = lookupNamespace(prefix);
  -             if (uri == null) {
  -                 throw new TransletException("Namespace for prefix "+
  -                                             prefix+" has not been "+
  -                                             "declared.");
  -             }
  +             if (uri == null)
  +                 BasisLibrary.runTimeError(BasisLibrary.NAMESPACE_PREFIX_ERR,
  +                                           prefix);
                if (uri.equals(EMPTYSTRING)) _elementName = localname;
                _saxHandler.startElement(uri, localname,
                                         _elementName, _attributes);
  @@ -666,11 +664,9 @@
            final String localname = qname.substring(endcol+1);
            final String prefix = qname.substring(0,startcol);
            final String uri = lookupNamespace(prefix);
  -         if (uri == null) {
  -             throw new TransletException("Namespace for prefix "+
  -                                         prefix+" has not been "+
  -                                         "declared.");
  -         }
  +         if (uri == null)
  +             BasisLibrary.runTimeError(BasisLibrary.NAMESPACE_PREFIX_ERR,
  +                                       prefix);
            // Omit prefix (use default) if the namespace URI is null
            if (uri.equals(EMPTYSTRING))
                return(localname);
  @@ -694,8 +690,7 @@
            return;
        case XML:
            if (!_startTagOpen)
  -             throw new TransletException("attribute '"+name+
  -                                         "' outside of element");
  +             
BasisLibrary.runTimeError(BasisLibrary.STRAY_ATTRIBUTE_ERR,name);
            // Attributes whose names start with XML need special handling
            if (name.startsWith("xml")) {
                // Output as namespace declaration
  @@ -716,9 +711,7 @@
            return;
        case HTML:
            if (!_startTagOpen)
  -             throw new TransletException("attribute '"+name+
  -                                         "' outside of element");
  -
  +             
BasisLibrary.runTimeError(BasisLibrary.STRAY_ATTRIBUTE_ERR,name);
            // The following is an attempt to escape an URL stored in a href
            // attribute of HTML output. Normally URLs should be encoded at
            // the time they are created, since escaping or unescaping a
  @@ -912,36 +905,14 @@
                pushNamespace(prefix, uri);
            else {
                if ((prefix == EMPTYSTRING) && (uri == EMPTYSTRING)) return;
  -             throw new TransletException("namespace declaration '"+prefix+
  -                                         "'='"+uri+"' outside of element");
  +             BasisLibrary.runTimeError(BasisLibrary.STRAY_NAMESPACE_ERR,
  +                                       prefix, uri);
            }
        }
        catch (SAXException e) {
            throw new TransletException(e);
        }
       }
  -
  -    /** 
  -     * Takes a qname as a string on the format prefix:local-name and
  -     * returns a strig with the expanded QName on the format uri:local-name.
  -     */
  -    /*
  -    private String expandQName(String withPrefix) {
  -     int col = withPrefix.lastIndexOf(':');
  -     if (col == -1) return(withPrefix);
  -
  -     final String prefix = withPrefix.substring(0,col);
  -     final String local =  withPrefix.substring(col+1,withPrefix.length());
  -     final String uri = lookupNamespace(prefix);
  -
  -     if (uri == null)
  -         return(local);
  -     else if (uri == EMPTYSTRING)
  -         return(local);
  -     else
  -         return(uri+":"+local);
  -    }
  -    */
   
       /************************************************************************
        * The following are all methods for configuring the output settings
  
  
  
  1.8       +36 -41    
xml-xalan/java/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java
  
  Index: TemplatesImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- TemplatesImpl.java        2001/10/02 11:16:52     1.7
  +++ TemplatesImpl.java        2001/10/30 14:57:54     1.8
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: TemplatesImpl.java,v 1.7 2001/10/02 11:16:52 morten Exp $
  + * @(#)$Id: TemplatesImpl.java,v 1.8 2001/10/30 14:57:54 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -76,31 +76,24 @@
   import org.apache.xalan.xsltc.Translet;
   import org.apache.xalan.xsltc.compiler.*;
   import org.apache.xalan.xsltc.runtime.*;
  +import org.apache.xalan.xsltc.compiler.util.ErrorMsg;
   
  -
   public final class TemplatesImpl implements Templates, Serializable {
   
       // Contains the name of the main translet class
  -    private String   _transletName = null;
  +    private String   _name = null;
   
       // Contains the actual class definition for the translet class and
       // any auxiliary classes (representing node sort records, predicates, 
etc.)
       private byte[][] _bytecodes = null;
   
  -    private Class[]    _class = null;
  +    // Contains the translet class definition(s). These are created when this
  +    // Templates is first instanciated or read back from disk (see 
readObject())
  +    private Class[]  _class = null;
   
  +    // This tells us which index the main translet class has in the _class
  +    // and _bytecodes arrays (above).
       private int _transletIndex = -1;
  -
  -    // This error could occur when a compilation inside the 
TransformerFactory
  -    // failed and when a template has been loaded from stable storage.
  -    private final static String NO_TRANSLET_CODE =
  -     "This template does not contain a valid translet class definition.";
  -    private final static String NO_MAIN_TRANSLET =
  -     "This template does not contain a class with the name ";
  -    private final static String TRANSLET_CLASS_ERR =
  -     "Could not load the translet class ";
  -    private final static String TRANSLET_OBJECT_ERR =
  -     "Translet class loaded, but unable to create translet instance.";
       
       // Our own private class loader - builds Class definitions from bytecodes
       private class TransletClassLoader extends ClassLoader {
  @@ -110,19 +103,18 @@
       }
   
       public void writeExternal(ObjectOutput out) throws IOException {
  -     out.writeObject(_transletName);
  +     out.writeObject(_name);
        out.writeObject(_bytecodes);
        out.flush();
       }
   
       public void readExternal(ObjectInput in)
        throws IOException, ClassNotFoundException {
  -     _transletName = (String)in.readObject();
  -     _bytecodes    = (byte[][])in.readObject();
  -     _class        = null;
  +     _name      = (String)in.readObject();
  +     _bytecodes = (byte[][])in.readObject();
  +     _class     = null; // must be created again...
       }
   
  -
       /**
        * The only way to create an XSLTC emplate object
        * The bytecodes for the translet and auxiliary classes, plus the name of
  @@ -130,7 +122,7 @@
        */
       protected TemplatesImpl(byte[][] bytecodes, String transletName) {
        _bytecodes = bytecodes;
  -     _transletName = transletName;
  +     _name      = transletName;
       }
   
       /**
  @@ -152,14 +144,14 @@
        * The TransformerFactory should call this method to set the translet 
name
        */
       protected void setTransletName(String name) {
  -     _transletName = name;
  +     _name = name;
       }
   
       /**
        * Returns the name of the main translet class stored in this template
        */
       protected String getTransletName() {
  -     return _transletName;
  +     return _name;
       }
   
       /**
  @@ -169,8 +161,10 @@
       private void defineTransletClasses()
        throws TransformerConfigurationException {
   
  -     if (_bytecodes == null)
  -         throw new TransformerConfigurationException(NO_TRANSLET_CODE);
  +     if (_bytecodes == null) {
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.NO_TRANSLET_CLASS_ERR);
  +         throw new TransformerConfigurationException(err.toString());
  +     }
   
        TransletClassLoader loader = 
            (TransletClassLoader) AccessController.doPrivileged(
  @@ -187,22 +181,23 @@
   
            for (int i = 0; i < classCount; i++) {
                _class[i] = loader.defineClass(_bytecodes[i]);
  -             if (_class[i].getName().equals(_transletName))
  +             if (_class[i].getName().equals(_name))
                    _transletIndex = i;
            }
   
  -         if (_transletIndex < 0)
  -             throw new TransformerConfigurationException(NO_MAIN_TRANSLET+
  -                                                         _transletName);
  +         if (_transletIndex < 0) {
  +             ErrorMsg err= new ErrorMsg(ErrorMsg.NO_MAIN_TRANSLET_ERR,_name);
  +             throw new TransformerConfigurationException(err.toString());
  +         }
        }
   
  -     catch (ClassFormatError e)       {
  -         throw new TransformerConfigurationException(TRANSLET_CLASS_ERR+
  -                                                     _transletName);
  -     }
  -     catch (LinkageError e)           {
  -         throw new TransformerConfigurationException(TRANSLET_OBJECT_ERR+
  -                                                     _transletName);
  +     catch (ClassFormatError e) {
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.TRANSLET_CLASS_ERR+_name);
  +         throw new TransformerConfigurationException(err.toString());
  +     }
  +     catch (LinkageError e) {
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.TRANSLET_OBJECT_ERR+_name);
  +         throw new TransformerConfigurationException(err.toString());
        }
       }
   
  @@ -214,7 +209,7 @@
       private Translet getTransletInstance()
        throws TransformerConfigurationException {
        try {
  -         if (_transletName == null) return null;
  +         if (_name == null) return null;
   
            if (_class == null) defineTransletClasses();
   
  @@ -232,12 +227,12 @@
            return translet;
        }
        catch (InstantiationException e) {
  -         throw new TransformerConfigurationException(TRANSLET_OBJECT_ERR+
  -                                                     _transletName);
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.TRANSLET_OBJECT_ERR+_name);
  +         throw new TransformerConfigurationException(err.toString());
        }
        catch (IllegalAccessException e) {
  -         throw new TransformerConfigurationException(TRANSLET_OBJECT_ERR+
  -                                                     _transletName);
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.TRANSLET_OBJECT_ERR+_name);
  +         throw new TransformerConfigurationException(err.toString());
        }
       }
   
  
  
  
  1.27      +30 -28    
xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java
  
  Index: TransformerFactoryImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- TransformerFactoryImpl.java       2001/10/22 10:53:56     1.26
  +++ TransformerFactoryImpl.java       2001/10/30 14:57:54     1.27
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: TransformerFactoryImpl.java,v 1.26 2001/10/22 10:53:56 tmiller 
Exp $
  + * @(#)$Id: TransformerFactoryImpl.java,v 1.27 2001/10/30 14:57:54 morten 
Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -83,11 +83,13 @@
   import org.xml.sax.InputSource;
   
   import org.apache.xalan.xsltc.Translet;
  +import org.apache.xalan.xsltc.runtime.AbstractTranslet;
  +
   import org.apache.xalan.xsltc.compiler.XSLTC;
   import org.apache.xalan.xsltc.compiler.SourceLoader;
   import org.apache.xalan.xsltc.compiler.CompilerException;
   import org.apache.xalan.xsltc.compiler.util.Util;
  -import org.apache.xalan.xsltc.runtime.AbstractTranslet;
  +import org.apache.xalan.xsltc.compiler.util.ErrorMsg;
   
   /**
    * Implementation of a JAXP1.1 TransformerFactory for Translets.
  @@ -113,20 +115,6 @@
        "<xsl:template match=\"/\"><xsl:copy-of select=\".\"/></xsl:template>"+
        "</xsl:stylesheet>";
   
  -    // All used error messages should be listed here
  -    private static final String ERROR_LISTENER_NULL =
  -     "Attempting to set ErrorListener for TransformerFactory to null";
  -    private static final String UNKNOWN_SOURCE_ERR =
  -     "Only StreamSource and SAXSource are supported by XSLTC";
  -    private static final String NO_SOURCE_ERR =
  -     "Source object passed to newTemplates() has no contents";
  -    private static final String NO_ACCESS_ERR =
  -     "Cannot access file or URL ";
  -    private static final String COMPILE_ERR =
  -     "Could not compile stylesheet";
  -    private static final String INVALID_ATTRIBUTE =
  -     "TransformerFactory does not recognise attribute: ";
  -
       // This Hashtable is used to store parameters for locating
       // <?xml-stylesheet ...?> processing instructions in XML documents.
       private Hashtable _piParams = null;
  @@ -164,8 +152,11 @@
        */
       public void setErrorListener(ErrorListener listener) 
        throws IllegalArgumentException {
  -     if (listener == null)
  -            throw new IllegalArgumentException(ERROR_LISTENER_NULL);
  +     if (listener == null) {
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.ERROR_LISTENER_NULL_ERR,
  +                                     "TransformerFactory");
  +            throw new IllegalArgumentException(err.toString());
  +     }
        _errorListener = listener;
       }
   
  @@ -189,9 +180,11 @@
        */
       public Object getAttribute(String name) 
        throws IllegalArgumentException { 
  -     if (name.equals("translet-name"))
  -         return(_defaultTransletName);
  -     throw new IllegalArgumentException(INVALID_ATTRIBUTE+name);
  +     // Return value for attribute 'translet-name'
  +     if (name.equals("translet-name")) return(_defaultTransletName);
  +     // Throw an exception for all other attributes
  +     ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_INVALID_ATTR_ERR, name);
  +     throw new IllegalArgumentException(err.toString());
       }
   
       /**
  @@ -208,7 +201,9 @@
        // for translets that cannot be given a name from their system-id.
        if ((name.equals("translet-name")) && (value instanceof String))
            _defaultTransletName = (String)value;
  -     throw new IllegalArgumentException(INVALID_ATTRIBUTE+name);
  +     // Throw an exception for all other attributes
  +     ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_INVALID_ATTR_ERR, name);
  +     throw new IllegalArgumentException(err.toString());
       }
   
       /**
  @@ -319,7 +314,8 @@
   
        // Check that the transformation went well before returning
        if (bytecodes == null) {
  -         throw new TransformerConfigurationException(COMPILE_ERR);
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR);
  +         throw new TransformerConfigurationException(err.toString());
        }
   
        // Create a Transformer object and store for other calls
  @@ -435,18 +431,23 @@
                }
            }
            else {
  -             throw new TransformerConfigurationException(UNKNOWN_SOURCE_ERR);
  +             ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_UNKNOWN_SOURCE_ERR);
  +             throw new TransformerConfigurationException(err.toString());
            }
            input.setSystemId(systemId);
        }
        catch (NullPointerException e) {
  -         throw new TransformerConfigurationException(NO_SOURCE_ERR);
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_NO_SOURCE_ERR,
  +                                     "TransformerFactory.newTemplates()");
  +         throw new TransformerConfigurationException(err.toString());
        }
        catch (SecurityException e) {
  -         throw new TransformerConfigurationException(NO_ACCESS_ERR+systemId);
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.FILE_ACCESS_ERR, systemId);
  +         throw new TransformerConfigurationException(err.toString());
        }
        catch (MalformedURLException e){
  -         throw new TransformerConfigurationException(NO_ACCESS_ERR+systemId);
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.FILE_ACCESS_ERR, systemId);
  +         throw new TransformerConfigurationException(err.toString());
        }
        finally {
            return(input);
  @@ -500,7 +501,8 @@
                passErrorsToListener(xsltc.getErrors());
            else
                xsltc.printErrors();
  -         throw new TransformerConfigurationException(COMPILE_ERR);
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR);
  +         throw new TransformerConfigurationException(err.toString());
        }
        return(new TemplatesImpl(bytecodes, transletName));
       }
  
  
  
  1.6       +7 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerHandlerImpl.java
  
  Index: TransformerHandlerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerHandlerImpl.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TransformerHandlerImpl.java       2001/10/25 12:34:07     1.5
  +++ TransformerHandlerImpl.java       2001/10/30 14:57:54     1.6
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: TransformerHandlerImpl.java,v 1.5 2001/10/25 12:34:07 morten Exp 
$
  + * @(#)$Id: TransformerHandlerImpl.java,v 1.6 2001/10/30 14:57:54 morten Exp 
$
    *
    * The Apache Software License, Version 1.1
    *
  @@ -71,6 +71,7 @@
   import org.apache.xalan.xsltc.dom.DOMImpl;
   import org.apache.xalan.xsltc.dom.DTDMonitor;
   import org.apache.xalan.xsltc.runtime.AbstractTranslet;
  +import org.apache.xalan.xsltc.compiler.util.ErrorMsg;
   
   /**
    * Implementation of a JAXP1.1 TransformerHandler
  @@ -87,9 +88,6 @@
   
       private boolean          _done = false; // Set in endDocument()
   
  -    private final static String NULL_RESULT_ERROR =
  -     "setResult() must be called prior to startDocument().";
  -
       /**
        * Cosntructor - pass in reference to a TransformerImpl object
        */
  @@ -168,13 +166,17 @@
        * Receive notification of the beginning of a document.
        */
       public void startDocument() throws SAXException {
  +     // Make sure setResult() was called before the first SAX event
        if (_result == null) {
  -         throw new SAXException(NULL_RESULT_ERROR);
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_SET_RESULT_ERR);
  +         throw new SAXException(err.toString());
        }
  +
        // Create an internal DOM (not W3C) and get SAX2 input handler
        _dom = new DOMImpl();
        _handler = _dom.getBuilder();
   
  +     // Proxy call
        _handler.startDocument();
       }
   
  
  
  
  1.31      +37 -46    
xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerImpl.java
  
  Index: TransformerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerImpl.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- TransformerImpl.java      2001/10/25 13:48:16     1.30
  +++ TransformerImpl.java      2001/10/30 14:57:54     1.31
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: TransformerImpl.java,v 1.30 2001/10/25 13:48:16 morten Exp $
  + * @(#)$Id: TransformerImpl.java,v 1.31 2001/10/30 14:57:54 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -105,6 +105,7 @@
   import org.apache.xalan.xsltc.dom.*;
   import org.apache.xalan.xsltc.runtime.*;
   import org.apache.xalan.xsltc.compiler.*;
  +import org.apache.xalan.xsltc.compiler.util.ErrorMsg;
   
   import java.util.Properties;
   
  @@ -127,26 +128,12 @@
   
       // Pre-set DOMImpl to use as input (used only with 
TransformerHandlerImpl)
       private DOMImpl _dom = null;
  -    
  -    // List all error messages here
  -    private final static String TRANSLET_ERR_MSG = 
  -     "The transformer has no encapsulated translet object.";
  -    private final static String HANDLER_ERR_MSG = 
  -     "No defined output handler for transformation result.";
  -    private static final String ERROR_LISTENER_NULL =
  -     "Attempting to set ErrorListener for Transformer to null";
  -    private static final String INPUT_SOURCE_EMPTY =
  -     "The Source object passed to transform() has no contents.";
  -    private static final String OUTPUT_RESULT_EMPTY =
  -     "The Result object passed to transform() is invalid.";
  -    private static final String NO_SUCH_PROPERTY =
  -     "Attempting to access invalid Transformer property: ";
   
       private final static String LEXICAL_HANDLER_PROPERTY =
        "http://xml.org/sax/properties/lexical-handler";;
       private static final String NAMESPACE_FEATURE =
        "http://xml.org/sax/features/namespaces";;
  -
  +    
       /**
        * Implements JAXP's Transformer constructor
        * Our Transformer objects always need a translet to do the actual work
  @@ -174,12 +161,14 @@
        throws TransformerException {
   
        if (_translet == null) {
  -         throw new TransformerException(TRANSLET_ERR_MSG);
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_NO_TRANSLET_ERR);
  +         throw new TransformerException(err.toString());
        }
   
        _handler = getOutputHandler(result);
  -     if (_handler == null) { 
  -         throw new TransformerException(HANDLER_ERR_MSG);
  +     if (_handler == null) {
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_NO_HANDLER_ERR);
  +         throw new TransformerException(err.toString());
        }
   
        if (_uriResolver != null) {
  @@ -246,15 +235,15 @@
            // Common, final handling of all input sources, only used if the
            // other contents of the Result object could not be used
            if (systemId != null) {
  -             if ((new File(systemId)).exists())
  -                 systemId = "file:"+systemId;
  +             if ((new File(systemId)).exists()) systemId = "file:"+systemId;
                final URL url = new URL(systemId);
                final URLConnection connection = url.openConnection();
                final OutputStream ostream = connection.getOutputStream();
                return(new DefaultSAXOutputHandler(ostream, _encoding));
            }
            else {
  -             throw new TransformerException(OUTPUT_RESULT_EMPTY);
  +             ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_NO_RESULT_ERR);
  +             throw new TransformerException(err.toString());
            }
        }
        // If we cannot write to the location specified by the SystemId
  @@ -263,8 +252,8 @@
        }
        // If we cannot create a SAX2DOM adapter
        catch (ParserConfigurationException e) {
  -         throw new TransformerException(
  -             "SAX2DOM adapter could not be created, " + e.getMessage());
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.SAX2DOM_ADAPTER_ERR);
  +         throw new TransformerException(err.toString());
        }
        // If we cannot create the file specified by the SystemId
        catch (IOException e) {
  @@ -388,8 +377,10 @@
                    input = new InputSource(streamReader);
                else if (systemId != null)
                    input = new InputSource(systemId);
  -             else
  -                 throw new TransformerException(INPUT_SOURCE_EMPTY);
  +             else {
  +                 ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_NO_SOURCE_ERR);
  +                 throw new TransformerException(err.toString());
  +             }
   
                // Parse the input and build the internal DOM
                reader.parse(input);
  @@ -414,23 +405,19 @@
            return dom;
        }
        catch (FileNotFoundException e) {
  -         if (_errorListener != null)
  -             postErrorToListener("File not found: " + e.getMessage());
  +         if (_errorListener != null) postErrorToListener(e.getMessage());
            throw new TransformerException(e);
        }
        catch (MalformedURLException e) {
  -         if (_errorListener != null)
  -             postErrorToListener("Malformed URL: " + e.getMessage());
  +         if (_errorListener != null) postErrorToListener(e.getMessage());
            throw new TransformerException(e);
        }
        catch (UnknownHostException e) {
  -         if (_errorListener != null)
  -             postErrorToListener("Cannot resolve URI: " + e.getMessage());
  +         if (_errorListener != null) postErrorToListener(e.getMessage());
            throw new TransformerException(e);
        }
        catch (Exception e) {
  -         if (_errorListener != null)
  -             postErrorToListener("Internal error: " + e.getMessage()); 
  +         if (_errorListener != null) postErrorToListener(e.getMessage());
            throw new TransformerException(e);
        }
       }
  @@ -458,18 +445,15 @@
            _translet.transform(dom, handler);
        }
        catch (TransletException e) {
  -         if (_errorListener != null)
  -             postErrorToListener(e.getMessage());
  +         if (_errorListener != null) postErrorToListener(e.getMessage());
            throw new TransformerException(e);
        }
        catch (RuntimeException e) {
  -         if (_errorListener != null)
  -             postErrorToListener("Runtime Error: " + e.getMessage());
  +         if (_errorListener != null) postErrorToListener(e.getMessage());
            throw new TransformerException(e);
        }
        catch (Exception e) {
  -         if (_errorListener != null)
  -             postErrorToListener("Internal error: " + e.getMessage()); 
  +         if (_errorListener != null) postErrorToListener(e.getMessage());
            throw new TransformerException(e);
        }
       }
  @@ -493,8 +477,11 @@
        */
       public void setErrorListener(ErrorListener listener)
        throws IllegalArgumentException {
  -        if (listener == null)
  -            throw new IllegalArgumentException(ERROR_LISTENER_NULL);
  +        if (listener == null) {
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.ERROR_LISTENER_NULL_ERR,
  +                                     "Transformer");
  +            throw new IllegalArgumentException(err.toString());
  +     }
           _errorListener = listener;
       }
   
  @@ -573,8 +560,10 @@
        */
       public String getOutputProperty(String name)
        throws IllegalArgumentException {
  -     if (!validOutputProperty(name))
  -         throw new IllegalArgumentException(NO_SUCH_PROPERTY+name);
  +     if (!validOutputProperty(name)) {
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_UNKNOWN_PROP_ERR, name);
  +         throw new IllegalArgumentException(err.toString());
  +     }
        return(_properties.getProperty(name));
       }
   
  @@ -604,8 +593,10 @@
        */
       public void setOutputProperty(String name, String value)
        throws IllegalArgumentException {
  -     if (!validOutputProperty(name))
  -         throw new IllegalArgumentException(NO_SUCH_PROPERTY+name);
  +     if (!validOutputProperty(name)) {
  +         ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_UNKNOWN_PROP_ERR, name);
  +         throw new IllegalArgumentException(err.toString());
  +     }
        _properties.setProperty(name, value);
       }
   
  
  
  
  1.3       +7 -5      
xml-xalan/java/src/org/apache/xalan/xsltc/trax/XSLTCSource.java
  
  Index: XSLTCSource.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/XSLTCSource.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XSLTCSource.java  2001/10/03 11:03:09     1.2
  +++ XSLTCSource.java  2001/10/30 14:57:54     1.3
  @@ -1,6 +1,6 @@
   
   /*
  - * @(#)$Id: XSLTCSource.java,v 1.2 2001/10/03 11:03:09 morten Exp $
  + * @(#)$Id: XSLTCSource.java,v 1.3 2001/10/30 14:57:54 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -82,6 +82,7 @@
   import org.apache.xalan.xsltc.dom.DOMImpl;
   import org.apache.xalan.xsltc.dom.DOMBuilder;
   import org.apache.xalan.xsltc.dom.DTDMonitor;
  +import org.apache.xalan.xsltc.compiler.util.ErrorMsg;
   
   public final class XSLTCSource implements Source {
   
  @@ -92,9 +93,6 @@
       private final static String LEXICAL_HANDLER_PROPERTY =
        "http://xml.org/sax/properties/lexical-handler";;
   
  -    private final static String NO_SYSTEM_ID_ERR =
  -     "build() called before setSystemId(String systemId)";
  -
       /**
        * Create a new XSLTC-specific DOM source
        * @param size The estimated node-count for this DOM. A good guess here
  @@ -148,9 +146,13 @@
       public void build(XMLReader reader, String systemId) throws SAXException 
{
        try {
            // Make sure that the system id is set before proceding
  -         if (systemId == null) throw new SAXException(NO_SYSTEM_ID_ERR);
  +         if ((systemId == null) && (_systemId == null)) {
  +             ErrorMsg err = new ErrorMsg(ErrorMsg.XSLTC_SOURCE_ERR);
  +             throw new SAXException(err.toString());
  +         }
   
            // Use this method in case we need to prepend 'file:' to url
  +         if (systemId == null) systemId = _systemId;
            setSystemId(systemId);
   
            // Create an input source for the parser first, just in case the
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to