changeset 51608:fb46a7d38d6b

8206164: forgot to "throw" TransformerConfigurationException Reviewed-by: lancea
author joehw
date Fri, 06 Jul 2018 09:26:01 -0700
parents be2d74d91351
children ec3221b8a109
files src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java test/jaxp/javax/xml/jaxp/unittest/transform/SAXTFactoryTest.java
diffstat 2 files changed, 81 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java	Fri Jul 06 09:10:07 2018 -0400
+++ b/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerFactoryImpl.java	Fri Jul 06 09:26:01 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
  */
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -84,7 +84,7 @@
  * @author G. Todd Miller
  * @author Morten Jorgensen
  * @author Santiago Pericas-Geertsen
- * @LastModified: Nov 2017
+ * @LastModified: July 2018
  */
 public class TransformerFactoryImpl
     extends SAXTransformerFactory implements SourceLoader, ErrorListener
@@ -1211,7 +1211,7 @@
                     return null;
                 }
                 catch (TransformerException e2) {
-                    new TransformerConfigurationException(e2);
+                    throw new TransformerConfigurationException(e2);
                 }
             }
             throw e1;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jaxp/javax/xml/jaxp/unittest/transform/SAXTFactoryTest.java	Fri Jul 06 09:26:01 2018 -0700
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package transform;
+
+import java.util.Properties;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import org.xml.sax.XMLFilter;
+
+/*
+ * @test
+ * @bug 8206164
+ * @modules java.xml
+ * @run testng transform.SAXTFactoryTest
+ * @summary Tests SAXTransformerFactory.
+ */
+public class SAXTFactoryTest {
+
+    /*
+     * Verifies that the default ErrorListener throws a TransformerException
+     * when a fatal error is encountered. It is then wrapped and thrown again in
+     * a TransformerConfigurationException.
+    */
+    @Test
+    public void testErrorListener() throws Exception {
+        try {
+            SAXTransformerFactory saxTFactory =
+                    (SAXTransformerFactory)TransformerFactory.newInstance();
+            XMLFilter filter = saxTFactory.newXMLFilter(new ATemplatesImpl());
+        } catch (TransformerConfigurationException tce) {
+            Throwable cause = tce.getCause();
+            Assert.assertTrue((cause != null && cause instanceof TransformerException),
+                    "The TransformerFactoryImpl terminates upon a fatal error "
+                            + "by throwing a TransformerException.");
+        }
+
+    }
+
+    class ATemplatesImpl implements Templates {
+
+        @Override
+        public Transformer newTransformer() throws TransformerConfigurationException {
+            throw new TransformerConfigurationException("TCE from ATemplatesImpl");
+        }
+
+        @Override
+        public Properties getOutputProperties() {
+            throw new UnsupportedOperationException("Not supported yet.");
+        }
+
+    }
+}