@@ -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> |