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();
}