| @@ -1,129 +1,129 @@ | |||
| package org.apache.tools.ant.taskdefs.optional; | |||
| import static org.junit.Assert.assertTrue; | |||
| import java.io.ByteArrayInputStream; | |||
| import java.io.File; | |||
| import java.io.InputStream; | |||
| import java.security.Permission; | |||
| import junit.framework.AssertionFailedError; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.taskdefs.XSLTLiaison; | |||
| import org.apache.tools.ant.taskdefs.XSLTLogger; | |||
| import org.apache.tools.ant.util.JAXPUtils; | |||
| import org.junit.After; | |||
| import org.junit.Assume; | |||
| import org.junit.Test; | |||
| /* | |||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||
| * contributor license agreements. See the NOTICE file distributed with | |||
| * this work for additional information regarding copyright ownership. | |||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||
| * (the "License"); you may not use this file except in compliance with | |||
| * the License. You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| * | |||
| */ | |||
| /** | |||
| * TraX XSLTLiaison testcase | |||
| */ | |||
| public class TraXLiaisonTest extends AbstractXSLTLiaisonTest | |||
| implements XSLTLogger { | |||
| @After | |||
| public void tearDown() { | |||
| File f = new File("xalan2-redirect-out.tmp"); | |||
| if (f.exists()) { | |||
| f.delete(); | |||
| } | |||
| } | |||
| public XSLTLiaison createLiaison() throws Exception { | |||
| TraXLiaison l = new TraXLiaison(); | |||
| l.setLogger(this); | |||
| return l; | |||
| } | |||
| @Test | |||
| public void testXalan2Redirect() throws Exception { | |||
| try { | |||
| getClass().getClassLoader().loadClass("org.apache.xalan.lib.Redirect"); | |||
| } catch (Exception exc) { | |||
| Assume.assumeNoException("xalan redirect is not on the classpath", exc); | |||
| } | |||
| File xsl = getFile("/taskdefs/optional/xalan-redirect-in.xsl"); | |||
| liaison.setStylesheet(xsl); | |||
| File out = new File("xalan2-redirect-out-dummy.tmp"); | |||
| File in = getFile("/taskdefs/optional/xsltliaison-in.xsl"); | |||
| ClassLoader orig = Thread.currentThread().getContextClassLoader(); | |||
| try { | |||
| liaison.addParam("xalan-version", "2"); | |||
| // Use the JRE's Xerces, not lib/optional/xerces.jar: | |||
| Thread.currentThread().setContextClassLoader(new ClassLoader(ClassLoader.getSystemClassLoader().getParent()) { | |||
| public InputStream getResourceAsStream(String name) { | |||
| if (name.startsWith("META-INF/services/")) { | |||
| // work around JAXP #6723276 in JDK 6 | |||
| return new ByteArrayInputStream(new byte[0]); | |||
| } | |||
| return super.getResourceAsStream(name); | |||
| } | |||
| }); | |||
| // Tickle #52382: | |||
| System.setSecurityManager(new SecurityManager() {public void checkPermission(Permission perm) {}}); | |||
| liaison.transform(in, out); | |||
| } finally { | |||
| out.delete(); | |||
| Thread.currentThread().setContextClassLoader(orig); | |||
| System.setSecurityManager(null); | |||
| } | |||
| } | |||
| @Test | |||
| public void testMultipleTransform() throws Exception { | |||
| File xsl = getFile("/taskdefs/optional/xsltliaison-in.xsl"); | |||
| liaison.setStylesheet(xsl); | |||
| liaison.addParam("param", "value"); | |||
| File in = getFile("/taskdefs/optional/xsltliaison-in.xml"); | |||
| // test for 10 consecutives transform | |||
| for (int i = 0; i < 50; i++){ | |||
| File out = new File("xsltliaison" + i + ".tmp"); | |||
| try { | |||
| liaison.transform(in, out); | |||
| } catch (Exception e){ | |||
| throw new BuildException("failed in transform " + i, e); | |||
| } finally { | |||
| out.delete(); | |||
| } | |||
| } | |||
| } | |||
| @Test | |||
| public void testSystemId(){ | |||
| File file = null; | |||
| if ( File.separatorChar == '\\' ){ | |||
| file = new File("d:\\jdk"); | |||
| } else { | |||
| file = new File("/user/local/bin"); | |||
| } | |||
| String systemid = JAXPUtils.getSystemId(file); | |||
| assertTrue("SystemIDs should start by file:/", systemid.startsWith("file:/")); | |||
| assertTrue("SystemIDs should not start with file:////", !systemid.startsWith("file:////")); | |||
| } | |||
| public void log(String message) { | |||
| throw new AssertionFailedError("Liaison sent message: "+message); | |||
| } | |||
| } | |||
| /* | |||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||
| * contributor license agreements. See the NOTICE file distributed with | |||
| * this work for additional information regarding copyright ownership. | |||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||
| * (the "License"); you may not use this file except in compliance with | |||
| * the License. You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| * | |||
| */ | |||
| package org.apache.tools.ant.taskdefs.optional; | |||
| import static org.junit.Assert.assertTrue; | |||
| import java.io.ByteArrayInputStream; | |||
| import java.io.File; | |||
| import java.io.InputStream; | |||
| import java.security.Permission; | |||
| import junit.framework.AssertionFailedError; | |||
| import org.apache.tools.ant.BuildException; | |||
| import org.apache.tools.ant.taskdefs.XSLTLiaison; | |||
| import org.apache.tools.ant.taskdefs.XSLTLogger; | |||
| import org.apache.tools.ant.util.JAXPUtils; | |||
| import org.junit.After; | |||
| import org.junit.Assume; | |||
| import org.junit.Test; | |||
| /** | |||
| * TraX XSLTLiaison testcase | |||
| */ | |||
| public class TraXLiaisonTest extends AbstractXSLTLiaisonTest | |||
| implements XSLTLogger { | |||
| @After | |||
| public void tearDown() { | |||
| File f = new File("xalan2-redirect-out.tmp"); | |||
| if (f.exists()) { | |||
| f.delete(); | |||
| } | |||
| } | |||
| public XSLTLiaison createLiaison() throws Exception { | |||
| TraXLiaison l = new TraXLiaison(); | |||
| l.setLogger(this); | |||
| return l; | |||
| } | |||
| @Test | |||
| public void testXalan2Redirect() throws Exception { | |||
| try { | |||
| getClass().getClassLoader().loadClass("org.apache.xalan.lib.Redirect"); | |||
| } catch (Exception exc) { | |||
| Assume.assumeNoException("xalan redirect is not on the classpath", exc); | |||
| } | |||
| File xsl = getFile("/taskdefs/optional/xalan-redirect-in.xsl"); | |||
| liaison.setStylesheet(xsl); | |||
| File out = new File("xalan2-redirect-out-dummy.tmp"); | |||
| File in = getFile("/taskdefs/optional/xsltliaison-in.xsl"); | |||
| ClassLoader orig = Thread.currentThread().getContextClassLoader(); | |||
| try { | |||
| liaison.addParam("xalan-version", "2"); | |||
| // Use the JRE's Xerces, not lib/optional/xerces.jar: | |||
| Thread.currentThread().setContextClassLoader(new ClassLoader(ClassLoader.getSystemClassLoader().getParent()) { | |||
| public InputStream getResourceAsStream(String name) { | |||
| if (name.startsWith("META-INF/services/")) { | |||
| // work around JAXP #6723276 in JDK 6 | |||
| return new ByteArrayInputStream(new byte[0]); | |||
| } | |||
| return super.getResourceAsStream(name); | |||
| } | |||
| }); | |||
| // Tickle #52382: | |||
| System.setSecurityManager(new SecurityManager() {public void checkPermission(Permission perm) {}}); | |||
| liaison.transform(in, out); | |||
| } finally { | |||
| out.delete(); | |||
| Thread.currentThread().setContextClassLoader(orig); | |||
| System.setSecurityManager(null); | |||
| } | |||
| } | |||
| @Test | |||
| public void testMultipleTransform() throws Exception { | |||
| File xsl = getFile("/taskdefs/optional/xsltliaison-in.xsl"); | |||
| liaison.setStylesheet(xsl); | |||
| liaison.addParam("param", "value"); | |||
| File in = getFile("/taskdefs/optional/xsltliaison-in.xml"); | |||
| // test for 10 consecutives transform | |||
| for (int i = 0; i < 50; i++){ | |||
| File out = new File("xsltliaison" + i + ".tmp"); | |||
| try { | |||
| liaison.transform(in, out); | |||
| } catch (Exception e){ | |||
| throw new BuildException("failed in transform " + i, e); | |||
| } finally { | |||
| out.delete(); | |||
| } | |||
| } | |||
| } | |||
| @Test | |||
| public void testSystemId(){ | |||
| File file = null; | |||
| if ( File.separatorChar == '\\' ){ | |||
| file = new File("d:\\jdk"); | |||
| } else { | |||
| file = new File("/user/local/bin"); | |||
| } | |||
| String systemid = JAXPUtils.getSystemId(file); | |||
| assertTrue("SystemIDs should start by file:/", systemid.startsWith("file:/")); | |||
| assertTrue("SystemIDs should not start with file:////", !systemid.startsWith("file:////")); | |||
| } | |||
| public void log(String message) { | |||
| throw new AssertionFailedError("Liaison sent message: "+message); | |||
| } | |||
| } | |||