sboag       00/10/05 10:03:58

  Modified:    java/src/org/apache/xalan/extensions
                        ExtensionFunctionHandler.java
               java/src/org/apache/xalan/lib Redirect.java
               java/src/org/apache/xml/serialize/transition Encodings.java
                        XMLSerializer.java
               java/src/org/apache/xpath DOM2Helper.java
  Log:
  Fixed extension handling for redirect.  Also, added encodings.
  
  Revision  Changes    Path
  1.12      +24 -1     
xml-xalan/java/src/org/apache/xalan/extensions/ExtensionFunctionHandler.java
  
  Index: ExtensionFunctionHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/extensions/ExtensionFunctionHandler.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ExtensionFunctionHandler.java     2000/10/04 20:46:38     1.11
  +++ ExtensionFunctionHandler.java     2000/10/05 17:03:39     1.12
  @@ -387,7 +387,29 @@
           Method m = MethodResolver.getMethod(cl, method,
                                               methodArgs, 
                                               convertedArgs, exprContext);
  -        Object returnObj = m.invoke (object, convertedArgs[0]);
  +        Object returnObj = null;
  +        try
  +        {
  +          returnObj = m.invoke (object, convertedArgs[0]);
  +        }
  +        catch (java.lang.reflect.InvocationTargetException ive)
  +        {
  +          // Geez, if the object is a class, try to create the object and 
invoke.
  +          if(object == cl)
  +          {
  +            object = cl.newInstance();
  +            returnObj = m.invoke (object, convertedArgs[0]);
  +          }
  +        }
  +        catch (java.lang.IllegalArgumentException iae) // jview
  +        {
  +          // Geez, if the object is a class, try to create the object and 
invoke.
  +          if(object == cl)
  +          {
  +            object = cl.newInstance();
  +            returnObj = m.invoke (object, convertedArgs[0]);
  +          }
  +        }
           if(!isNew)
           {
             if(null == m_cachedMethods)
  @@ -407,6 +429,7 @@
       {
         // e.printStackTrace();
         throw new SAXException(e);
  +      // return null;
       }
       // should not get here
       // return null;
  
  
  
  1.5       +30 -1     xml-xalan/java/src/org/apache/xalan/lib/Redirect.java
  
  Index: Redirect.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/lib/Redirect.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Redirect.java     2000/10/02 02:43:06     1.4
  +++ Redirect.java     2000/10/05 17:03:44     1.5
  @@ -289,6 +289,35 @@
       }
       return fileName;
     }
  +  
  +  // yuck.
  +  private String urlToFileName(String base)
  +  {
  +    if(null != base)
  +    {
  +      if(base.startsWith("file:////"))
  +      {
  +        base = base.substring(7);
  +      }
  +      else if(base.startsWith("file:///"))
  +      {
  +        base = base.substring(6);
  +      }
  +      else if(base.startsWith("file://"))
  +      {
  +        base = base.substring(5); // absolute?
  +      }
  +      else if(base.startsWith("file:/"))
  +      {
  +        base = base.substring(5);
  +      }
  +      else if(base.startsWith("file:"))
  +      {
  +        base = base.substring(4);
  +      }
  +    }
  +    return base;
  +  }
   
     /**
      * Create a new ContentHandler, based on attributes of the current 
ContentHandler.
  @@ -308,7 +337,7 @@
   
       if(!file.isAbsolute())
       {
  -      String base = elem.getStylesheet().getSystemId();
  +      String base = urlToFileName(elem.getStylesheet().getSystemId());
         if(null != base)
         {
           File baseFile = new File(base);
  
  
  
  1.2       +69 -17    
xml-xalan/java/src/org/apache/xml/serialize/transition/Encodings.java
  
  Index: Encodings.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xml/serialize/transition/Encodings.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Encodings.java    2000/10/02 02:43:12     1.1
  +++ Encodings.java    2000/10/05 17:03:47     1.2
  @@ -71,7 +71,7 @@
    * to override encoding names and provide the last printable character
    * for each encoding.
    *
  - * @version $Revision: 1.1 $ $Date: 2000/10/02 02:43:12 $
  + * @version $Revision: 1.2 $ $Date: 2000/10/05 17:03:47 $
    * @author <a href="mailto:[EMAIL PROTECTED]">Assaf Arkin</a>
    */
   class Encodings
  @@ -97,9 +97,19 @@
       static Writer getWriter( OutputStream output, String encoding )
           throws UnsupportedEncodingException
       {
  -        for ( int i = 0 ; i < _encodings.length ; ++i ) {
  -            if ( _encodings[ i ].name.equals( encoding ) )
  -                return new OutputStreamWriter( output, _encodings[ i 
].javaName );
  +        for ( int i = 0 ; i < _encodings.length ; ++i ) 
  +        {
  +          if ( _encodings[ i ].name.equals( encoding ) )
  +          {
  +            try
  +            {
  +              return new OutputStreamWriter( output, _encodings[ i 
].javaName );
  +            }
  +            catch(UnsupportedEncodingException usee)
  +            {
  +              // keep trying
  +            }
  +          }
           }
           return new OutputStreamWriter( output, encoding );
       }
  @@ -167,19 +177,61 @@
        * Constructs a list of all the supported encodings.
        */
       private static final EncodingInfo[] _encodings = new EncodingInfo[] {
  -        new EncodingInfo( "ASCII", "ASCII", 0x7F ),
  -        new EncodingInfo( "ISO-Latin-1", "ASCII", 0xFF ),
  -        new EncodingInfo( "ISO-8859-1", "ISO8859_1", 0xFF ),
  -        new EncodingInfo( "ISO-8859-2", "ISO8859_2", 0xFF ),
  -        new EncodingInfo( "ISO-8859-3", "ISO8859_3", 0xFF ),
  -        new EncodingInfo( "ISO-8859-4", "ISO8859_4", 0xFF ),
  -        new EncodingInfo( "ISO-8859-5", "ISO8859_5", 0xFF ),
  -        new EncodingInfo( "ISO-8859-6", "ISO8859_6", 0xFF ),
  -        new EncodingInfo( "ISO-8859-7", "ISO8859_7", 0xFF ),
  -        new EncodingInfo( "ISO-8859-8", "ISO8859_8", 0xFF ),
  -        new EncodingInfo( "ISO-8859-9", "ISO8859_9", 0xFF ),
  -        new EncodingInfo( "UTF-8", "UTF8", 0xFFFF ),
  -        new EncodingInfo( "UNICODE", "Unicode", 0xFFFF )
  +      //    <preferred MIME name>, <Java encoding name>
  +      // new EncodingInfo( "ISO 8859-1", "CP1252"); // Close enough, I guess
  +      new EncodingInfo( "WINDOWS-1250", "Cp1250", 0x00FF), // Peter Smolik
  +      new EncodingInfo( "UTF-8", "UTF8", 0xFFFF),
  +      new EncodingInfo( "US-ASCII",        "ISO8859_1", 0x7F),
  +      new EncodingInfo( "ISO-8859-1",      "ISO8859_1", 0x00FF),
  +      new EncodingInfo( "ISO-8859-2",      "ISO8859_2", 0x00FF),
  +      new EncodingInfo( "ISO-8859-3",      "ISO8859_3", 0x00FF),
  +      new EncodingInfo( "ISO-8859-4",      "ISO8859_4", 0x00FF),
  +      new EncodingInfo( "ISO-8859-5",      "ISO8859_5", 0x00FF),
  +      new EncodingInfo( "ISO-8859-6",      "ISO8859_6", 0x00FF),
  +      new EncodingInfo( "ISO-8859-7",      "ISO8859_7", 0x00FF),
  +      new EncodingInfo( "ISO-8859-8",      "ISO8859_8", 0x00FF),
  +      new EncodingInfo( "ISO-8859-9",      "ISO8859_9", 0x00FF),
  +      new EncodingInfo( "US-ASCII",        "8859_1", 0x00FF),    // ?
  +      new EncodingInfo( "ISO-8859-1",      "8859_1", 0x00FF),
  +      new EncodingInfo( "ISO-8859-2",      "8859_2", 0x00FF),
  +      new EncodingInfo( "ISO-8859-3",      "8859_3", 0x00FF),
  +      new EncodingInfo( "ISO-8859-4",      "8859_4", 0x00FF),
  +      new EncodingInfo( "ISO-8859-5",      "8859_5", 0x00FF),
  +      new EncodingInfo( "ISO-8859-6",      "8859_6", 0x00FF),
  +      new EncodingInfo( "ISO-8859-7",      "8859_7", 0x00FF),
  +      new EncodingInfo( "ISO-8859-8",      "8859_8", 0x00FF),
  +      new EncodingInfo( "ISO-8859-9",      "8859_9", 0x00FF),
  +      new EncodingInfo( "ISO-2022-JP",     "JIS", 0xFFFF),
  +      new EncodingInfo( "SHIFT_JIS",       "SJIS", 0xFFFF),
  +      new EncodingInfo( "EUC-JP",          "EUCJIS", 0xFFFF),
  +      new EncodingInfo( "GB2312",          "GB2312", 0xFFFF),
  +      new EncodingInfo( "BIG5",            "Big5", 0xFFFF),
  +      new EncodingInfo( "EUC-KR",          "KSC5601", 0xFFFF),
  +      new EncodingInfo( "ISO-2022-KR",     "ISO2022KR", 0xFFFF),
  +      new EncodingInfo( "KOI8-R",          "KOI8_R", 0xFFFF),
  +      new EncodingInfo( "EBCDIC-CP-US",    "Cp037", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-CA",    "Cp037", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-NL",    "Cp037", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-DK",    "Cp277", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-NO",    "Cp277", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-FI",    "Cp278", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-SE",    "Cp278", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-IT",    "Cp280", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-ES",    "Cp284", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-GB",    "Cp285", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-FR",    "Cp297", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-AR1",   "Cp420", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-HE",    "Cp424", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-CH",    "Cp500", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-ROECE", "Cp870", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-YU",    "Cp870", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-IS",    "Cp871", 0x00FF),
  +      new EncodingInfo( "EBCDIC-CP-AR2",   "Cp918", 0x00FF),
  +      new EncodingInfo( "ASCII", "ASCII", 0x7F ),
  +      new EncodingInfo( "ISO-Latin-1", "ASCII", 0xFF ),
  +      new EncodingInfo( "UTF-8", "UTF8", 0xFFFF ),
  +      new EncodingInfo( "UNICODE", "Unicode", 0xFFFF ),
  +      new EncodingInfo( "UTF-16", "Unicode", 0xFFFF )
       };
   
   
  
  
  
  1.2       +2 -2      
xml-xalan/java/src/org/apache/xml/serialize/transition/XMLSerializer.java
  
  Index: XMLSerializer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xml/serialize/transition/XMLSerializer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XMLSerializer.java        2000/10/02 02:43:13     1.1
  +++ XMLSerializer.java        2000/10/05 17:03:48     1.2
  @@ -106,7 +106,7 @@
    * spaces at beginning of line will be stripped.
    *
    *
  - * @version $Revision: 1.1 $ $Date: 2000/10/02 02:43:13 $
  + * @version $Revision: 1.2 $ $Date: 2000/10/05 17:03:48 $
    * @author <a href="mailto:[EMAIL PROTECTED]">Assaf Arkin</a>
    * @see Serializer
    */
  @@ -541,7 +541,7 @@
                   String encoding = _format.getEncoding();
                   if ( encoding != null ) {
                       buffer.append( " encoding=\"" );
  -                    buffer.append( encoding.toUpperCase() );
  +                    buffer.append( encoding );
                       buffer.append( '"' );
                   }
                   if ( _format.getStandalone() && _docTypeSystemId == null &&
  
  
  
  1.5       +2 -0      xml-xalan/java/src/org/apache/xpath/DOM2Helper.java
  
  Index: DOM2Helper.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/DOM2Helper.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DOM2Helper.java   2000/10/05 01:38:38     1.4
  +++ DOM2Helper.java   2000/10/05 17:03:56     1.5
  @@ -250,6 +250,8 @@
      */
     public String getLocalNameOfNode(Node n)
     {
  +    if(null == n.getLocalName())
  +      System.out.println("N name is null: "+n.getLocalName());
       return n.getLocalName();
     }
   
  
  
  

Reply via email to