You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2018/04/29 17:36:50 UTC
commons-compress git commit: COMPRESS-118 add projection operation
Repository: commons-compress
Updated Branches:
refs/heads/master 82f9bfcb9 -> 30a595d0d
COMPRESS-118 add projection operation
Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/30a595d0
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/30a595d0
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/30a595d0
Branch: refs/heads/master
Commit: 30a595d0d7b97a60e9703cb73214248b643c60ba
Parents: 82f9bfc
Author: Stefan Bodewig <bo...@apache.org>
Authored: Sun Apr 29 19:36:26 2018 +0200
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Sun Apr 29 19:36:26 2018 +0200
----------------------------------------------------------------------
.../compress/archivers/examples/Archive.java | 8 ++++
.../archivers/examples/Transformer.java | 41 ++++++++++++++++++++
2 files changed, 49 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/30a595d0/src/main/java/org/apache/commons/compress/archivers/examples/Archive.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/archivers/examples/Archive.java b/src/main/java/org/apache/commons/compress/archivers/examples/Archive.java
index c451170..d360314 100644
--- a/src/main/java/org/apache/commons/compress/archivers/examples/Archive.java
+++ b/src/main/java/org/apache/commons/compress/archivers/examples/Archive.java
@@ -50,6 +50,10 @@ public class Archive {
*/
ChainBuilder skipNonFiles();
/**
+ * Adds a transformer to the chain.
+ */
+ ChainBuilder map(Transformer transformer);
+ /**
* Actually consumes all the files supplied.
*/
void to(Sink<File> sink) throws IOException, ArchiveException;
@@ -100,6 +104,10 @@ public class Archive {
}
});
}
+ public ChainBuilder map(Transformer transformer) {
+ chainDef.add(transformer);
+ return this;
+ }
public void to(Sink<File> sink) throws IOException, ArchiveException {
chainDef.add(sink);
chainDef.freeze();
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/30a595d0/src/main/java/org/apache/commons/compress/archivers/examples/Transformer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/archivers/examples/Transformer.java b/src/main/java/org/apache/commons/compress/archivers/examples/Transformer.java
new file mode 100644
index 0000000..b091678
--- /dev/null
+++ b/src/main/java/org/apache/commons/compress/archivers/examples/Transformer.java
@@ -0,0 +1,41 @@
+/*
+ * 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.commons.compress.archivers.examples;
+
+import java.io.IOException;
+import org.apache.commons.compress.archivers.ArchiveException;
+
+/**
+ * Transforming stage of a {@link Expand} or {@link Archive} chain.
+ * @since 1.17
+ */
+public abstract class Transformer<T> implements ChainStep<T> {
+ /**
+ * Transforms an entry.
+ *
+ * @param entry the entry
+ * @return the transformed entry
+ */
+ public abstract ChainPayload<T> transform(ChainPayload<T> entry);
+
+ @Override
+ public void process(ChainPayload<T> payload, Chain<T> chain) throws IOException, ArchiveException {
+ chain.next(transform(payload));
+ }
+}