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