| @@ -295,6 +295,7 @@ | |||||
| <selector id="needs.xz"> | <selector id="needs.xz"> | ||||
| <or> | <or> | ||||
| <filename name="${optional.package}/xz/"/> | <filename name="${optional.package}/xz/"/> | ||||
| <filename name="${type.package}/optional/xz/"/> | |||||
| </or> | </or> | ||||
| </selector> | </selector> | ||||
| @@ -57,6 +57,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/ma | |||||
| <configuration> | <configuration> | ||||
| <includes> | <includes> | ||||
| <include>org/apache/tools/ant/taskdefs/optional/xz/*</include> | <include>org/apache/tools/ant/taskdefs/optional/xz/*</include> | ||||
| <include>org/apache/tools/ant/types/optional/xz/*</include> | |||||
| </includes> | </includes> | ||||
| </configuration> | </configuration> | ||||
| </plugin> | </plugin> | ||||
| @@ -98,6 +98,7 @@ | |||||
| <configuration> | <configuration> | ||||
| <excludes> | <excludes> | ||||
| <exclude>org/apache/tools/ant/filters/util/JavaClassHelper*</exclude> | <exclude>org/apache/tools/ant/filters/util/JavaClassHelper*</exclude> | ||||
| <exclude>org/apache/tools/ant/types/optional/xz/*</exclude> | |||||
| <exclude>org/apache/tools/ant/types/resolver/**</exclude> | <exclude>org/apache/tools/ant/types/resolver/**</exclude> | ||||
| <exclude>org/apache/tools/ant/listener/Log4jListener*</exclude> | <exclude>org/apache/tools/ant/listener/Log4jListener*</exclude> | ||||
| <exclude>org/apache/tools/ant/listener/CommonsLoggingListener*</exclude> | <exclude>org/apache/tools/ant/listener/CommonsLoggingListener*</exclude> | ||||
| @@ -94,6 +94,7 @@ bzip2resource=org.apache.tools.ant.types.resources.BZip2Resource | |||||
| javaresource=org.apache.tools.ant.types.resources.JavaResource | javaresource=org.apache.tools.ant.types.resources.JavaResource | ||||
| multirootfileset=org.apache.tools.ant.types.resources.MultiRootFileSet | multirootfileset=org.apache.tools.ant.types.resources.MultiRootFileSet | ||||
| javaconstant=org.apache.tools.ant.types.resources.JavaConstantResource | javaconstant=org.apache.tools.ant.types.resources.JavaConstantResource | ||||
| xzresource=org.apache.tools.ant.types.optional.xz.XzResource | |||||
| #tokenizer implementations | #tokenizer implementations | ||||
| linetokenizer=org.apache.tools.ant.util.LineTokenizer | linetokenizer=org.apache.tools.ant.util.LineTokenizer | ||||
| @@ -0,0 +1,77 @@ | |||||
| /* | |||||
| * 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.types.optional.xz; | |||||
| import java.io.IOException; | |||||
| import java.io.InputStream; | |||||
| import java.io.OutputStream; | |||||
| import org.apache.tools.ant.types.resources.CompressedResource; | |||||
| import org.tukaani.xz.LZMA2Options; | |||||
| import org.tukaani.xz.XZInputStream; | |||||
| import org.tukaani.xz.XZOutputStream; | |||||
| /** | |||||
| * A XZ compressed resource. | |||||
| * | |||||
| * <p>Wraps around another resource, delegates all queries to that | |||||
| * other resource but uncompresses/compresses streams on the fly.</p> | |||||
| * | |||||
| * @since Ant 1.10.1 | |||||
| */ | |||||
| public class XzResource extends CompressedResource { | |||||
| /** A no-arg constructor */ | |||||
| public XzResource() { | |||||
| } | |||||
| /** | |||||
| * Constructor with another resource to wrap. | |||||
| * @param other the resource to wrap. | |||||
| */ | |||||
| public XzResource(org.apache.tools.ant.types.ResourceCollection other) { | |||||
| super(other); | |||||
| } | |||||
| /** | |||||
| * Decompress on the fly using java.util.zip.XZInputStream. | |||||
| * @param in the stream to wrap. | |||||
| * @return the wrapped stream. | |||||
| * @throws IOException if there is a problem. | |||||
| */ | |||||
| protected InputStream wrapStream(InputStream in) throws IOException { | |||||
| return new XZInputStream(in); | |||||
| } | |||||
| /** | |||||
| * Compress on the fly using java.util.zip.XZOutStream. | |||||
| * @param out the stream to wrap. | |||||
| * @return the wrapped stream. | |||||
| * @throws IOException if there is a problem. | |||||
| */ | |||||
| protected OutputStream wrapStream(OutputStream out) throws IOException { | |||||
| return new XZOutputStream(out, new LZMA2Options()); | |||||
| } | |||||
| /** | |||||
| * Get the name of the compression method. | |||||
| * @return the string "XZ". | |||||
| */ | |||||
| protected String getCompressionName() { | |||||
| return "XZ"; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,37 @@ | |||||
| <?xml version="1.0"?> | |||||
| <!-- | |||||
| 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. | |||||
| --> | |||||
| <project xmlns:au="antlib:org.apache.ant.antunit" default="antunit"> | |||||
| <import file="../../../antunit-base.xml" /> | |||||
| <target name="setup"> | |||||
| <mkdir dir="${output}"/> | |||||
| <available property="xz.present" classname="org.tukaani.xz.XZOutputStream"/> | |||||
| </target> | |||||
| <target name="testDocumentationClaimsOnCopy"> | |||||
| <copy todir="${output}"> | |||||
| <xzresource> | |||||
| <file file="../../../../../etc/testcases/taskdefs/expected/asf-logo.gif.xz"/> | |||||
| </xzresource> | |||||
| <mapper type="glob" from="*.xz" to="*"/> | |||||
| </copy> | |||||
| <au:assertFilesMatch expected="../../../../../etc/testcases/asf-logo.gif" | |||||
| actual="${output}/asf-logo.gif"/> | |||||
| </target> | |||||
| </project> | |||||