From fe327c78c4aa6a279bf1a04fb5890c7e2f7e6ebf Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Wed, 11 Jan 2017 21:51:03 +0100 Subject: [PATCH] xzresource task - PR 60350 --- build.xml | 1 + src/etc/poms/ant-xz/pom.xml | 1 + src/etc/poms/ant/pom.xml | 1 + .../tools/ant/types/defaults.properties | 1 + .../ant/types/optional/xz/XzResource.java | 77 +++++++++++++++++++ .../types/optional/xz/xzresource-test.xml | 37 +++++++++ 6 files changed, 118 insertions(+) create mode 100644 src/main/org/apache/tools/ant/types/optional/xz/XzResource.java create mode 100644 src/tests/antunit/types/optional/xz/xzresource-test.xml diff --git a/build.xml b/build.xml index fcfe50f38..61737c511 100644 --- a/build.xml +++ b/build.xml @@ -295,6 +295,7 @@ + diff --git a/src/etc/poms/ant-xz/pom.xml b/src/etc/poms/ant-xz/pom.xml index 4aedaa5f9..f7b1c2f15 100644 --- a/src/etc/poms/ant-xz/pom.xml +++ b/src/etc/poms/ant-xz/pom.xml @@ -57,6 +57,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/ma org/apache/tools/ant/taskdefs/optional/xz/* + org/apache/tools/ant/types/optional/xz/* diff --git a/src/etc/poms/ant/pom.xml b/src/etc/poms/ant/pom.xml index de566c461..20abc59d3 100644 --- a/src/etc/poms/ant/pom.xml +++ b/src/etc/poms/ant/pom.xml @@ -98,6 +98,7 @@ org/apache/tools/ant/filters/util/JavaClassHelper* + org/apache/tools/ant/types/optional/xz/* org/apache/tools/ant/types/resolver/** org/apache/tools/ant/listener/Log4jListener* org/apache/tools/ant/listener/CommonsLoggingListener* diff --git a/src/main/org/apache/tools/ant/types/defaults.properties b/src/main/org/apache/tools/ant/types/defaults.properties index 29771dbb9..160c7a7fb 100644 --- a/src/main/org/apache/tools/ant/types/defaults.properties +++ b/src/main/org/apache/tools/ant/types/defaults.properties @@ -94,6 +94,7 @@ bzip2resource=org.apache.tools.ant.types.resources.BZip2Resource javaresource=org.apache.tools.ant.types.resources.JavaResource multirootfileset=org.apache.tools.ant.types.resources.MultiRootFileSet javaconstant=org.apache.tools.ant.types.resources.JavaConstantResource +xzresource=org.apache.tools.ant.types.optional.xz.XzResource #tokenizer implementations linetokenizer=org.apache.tools.ant.util.LineTokenizer diff --git a/src/main/org/apache/tools/ant/types/optional/xz/XzResource.java b/src/main/org/apache/tools/ant/types/optional/xz/XzResource.java new file mode 100644 index 000000000..dfd02e723 --- /dev/null +++ b/src/main/org/apache/tools/ant/types/optional/xz/XzResource.java @@ -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. + * + *

Wraps around another resource, delegates all queries to that + * other resource but uncompresses/compresses streams on the fly.

+ * + * @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"; + } +} diff --git a/src/tests/antunit/types/optional/xz/xzresource-test.xml b/src/tests/antunit/types/optional/xz/xzresource-test.xml new file mode 100644 index 000000000..20855d617 --- /dev/null +++ b/src/tests/antunit/types/optional/xz/xzresource-test.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + +