You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2002/10/03 21:49:34 UTC

DO NOT REPLY [Bug 13257] New: - ClassCastException when calling SAXTransformerFactory.newTransformerHandler() with an identity Templates object

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13257>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13257

ClassCastException when calling SAXTransformerFactory.newTransformerHandler() with an identity Templates object

           Summary: ClassCastException when calling
                    SAXTransformerFactory.newTransformerHandler() with an
                    identity Templates object
           Product: XalanJ2
           Version: CurrentCVS
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: org.apache.xalan.processor
        AssignedTo: xalan-dev@xml.apache.org
        ReportedBy: apache-bugzilla@netspade.com


java.lang.ClassCastException
        at
org.apache.xalan.processor.TransformerFactoryImpl.newTransformerHandler(TransformerFactoryImpl.java:670)

This occurs when this code sample is used:

TransformerFactory factory = TransformerFactory.newInstance();
final Transformer transformer = factory.newTransformer();
Templates templates = new Templates()
{
  public Transformer newTransformer() throws TransformerConfigurationException
    {
      return transformer;
    }

  public Properties getOutputProperties()
  {
    return transformer.getOutputProperties();
  }
};
SAXTransformerFactory saxFactory = (SAXTransformerFactory)factory;
TransformerHandler handler = saxFactory.newTransformerHandler(templates);

This occurs because the identity Transformer from factory.newTransformer() is an
instance of TransformerIdentityImpl but not of TransformerImpl.

The offending line in TransformerFactoryImpl.java is:

      TransformerImpl transformer =
        (TransformerImpl) templates.newTransformer();

There's no reason why I shouldn't be able to use an identity transform on a
TransformerHandler.

Thank you,
--Jase