From 42c8f61fecd89d63af3f91d06bd5702a7f8791b3 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Wed, 7 Sep 2022 12:41:12 +0100 Subject: [PATCH] HADOOP-18441. Remove hadoop custom ServicesResourceTransformer (#4850). Contributed by PJ Fanning. Signed-off-by: Ayush Saxena --- .../hadoop-client-api/pom.xml | 10 +- .../hadoop-client-minicluster/pom.xml | 10 +- .../hadoop-client-runtime/pom.xml | 10 +- hadoop-maven-plugins/pom.xml | 50 ------ .../resource/ServicesResourceTransformer.java | 166 ------------------ .../plugin/shade/resource/package-info.java | 23 --- 6 files changed, 3 insertions(+), 266 deletions(-) delete mode 100644 hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/shade/resource/ServicesResourceTransformer.java delete mode 100644 hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/shade/resource/package-info.java diff --git a/hadoop-client-modules/hadoop-client-api/pom.xml b/hadoop-client-modules/hadoop-client-api/pom.xml index 82f2f8a7780..b4b81011eb5 100644 --- a/hadoop-client-modules/hadoop-client-api/pom.xml +++ b/hadoop-client-modules/hadoop-client-api/pom.xml @@ -98,13 +98,6 @@ true true - - - org.apache.hadoop - hadoop-maven-plugins - ${project.version} - - package @@ -254,8 +247,7 @@ - - + NOTICE.txt diff --git a/hadoop-client-modules/hadoop-client-minicluster/pom.xml b/hadoop-client-modules/hadoop-client-minicluster/pom.xml index b8cb525669b..208345d5f5a 100644 --- a/hadoop-client-modules/hadoop-client-minicluster/pom.xml +++ b/hadoop-client-modules/hadoop-client-minicluster/pom.xml @@ -671,13 +671,6 @@ org.apache.maven.plugins maven-shade-plugin - - - org.apache.hadoop - hadoop-maven-plugins - ${project.version} - - package @@ -1052,8 +1045,7 @@ - - + diff --git a/hadoop-client-modules/hadoop-client-runtime/pom.xml b/hadoop-client-modules/hadoop-client-runtime/pom.xml index 35eeb98034f..b2bd7a4fc43 100644 --- a/hadoop-client-modules/hadoop-client-runtime/pom.xml +++ b/hadoop-client-modules/hadoop-client-runtime/pom.xml @@ -128,13 +128,6 @@ org.apache.maven.plugins maven-shade-plugin - - - org.apache.hadoop - hadoop-maven-plugins - ${project.version} - - package @@ -397,8 +390,7 @@ --> - - + diff --git a/hadoop-maven-plugins/pom.xml b/hadoop-maven-plugins/pom.xml index 37daeb82cd5..522c5a94687 100644 --- a/hadoop-maven-plugins/pom.xml +++ b/hadoop-maven-plugins/pom.xml @@ -68,56 +68,6 @@ com.fasterxml.jackson.core jackson-databind - - org.apache.maven.plugins - maven-shade-plugin - ${maven-shade-plugin.version} - provided - - - - org.apache.maven - maven-artifact - - - org.apache.maven - maven-compat - - - org.apache.maven - maven-core - - - org.apache.maven - maven-model - - - org.apache.maven - maven-plugin-api - - - org.vafer - jdependency - - - org.sonatype.sisu - sisu-inject-plexus - - - org.apache.maven.plugin-tools - maven-plugin-annotations - - - org.sonatype.aether - aether-api - - - org.sonatype.aether - aether-util - - - org.apache.hadoop.thirdparty hadoop-shaded-guava diff --git a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/shade/resource/ServicesResourceTransformer.java b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/shade/resource/ServicesResourceTransformer.java deleted file mode 100644 index 2d5de7abf17..00000000000 --- a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/shade/resource/ServicesResourceTransformer.java +++ /dev/null @@ -1,166 +0,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. - * - */ - -package org.apache.hadoop.maven.plugin.shade.resource; - -import java.io.BufferedReader; -import org.apache.maven.plugins.shade.relocation.Relocator; -import org.apache.maven.plugins.shade.resource.ResourceTransformer; -import org.codehaus.plexus.util.IOUtil; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.nio.charset.StandardCharsets; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.jar.JarEntry; -import java.util.jar.JarOutputStream; - -/** - * Resources transformer that appends entries in META-INF/services resources - * into a single resource. For example, if there are several - * META-INF/services/org.apache.maven.project.ProjectBuilder resources spread - * across many JARs the individual entries will all be concatenated into a - * single META-INF/services/org.apache.maven.project.ProjectBuilder resource - * packaged into the resultant JAR produced by the shading process. - * - * From following sources, only needed until MSHADE-182 gets released - * * https://s.apache.org/vwjl (source in maven-shade-plugin repo) - * * https://issues.apache.org/jira/secure/attachment/12718938/MSHADE-182.patch - * - * Has been reformatted according to Hadoop checkstyle rules and modified - * to meet Hadoop's threshold for Findbugs problems. - */ -public class ServicesResourceTransformer - implements ResourceTransformer { - - private static final String SERVICES_PATH = "META-INF/services"; - - private Map serviceEntries = new HashMap<>(); - - private List relocators; - - public boolean canTransformResource(String resource) { - if (resource.startsWith(SERVICES_PATH)) { - return true; - } - - return false; - } - - public void processResource(String resource, InputStream is, - List relocatorz) throws IOException { - ServiceStream out = serviceEntries.get(resource); - if (out == null) { - out = new ServiceStream(); - serviceEntries.put(resource, out); - } - - out.append(is); - is.close(); - - if (this.relocators == null) { - this.relocators = relocatorz; - } - } - - public boolean hasTransformedResource() { - return serviceEntries.size() > 0; - } - - public void modifyOutputStream(JarOutputStream jos) - throws IOException { - for (Map.Entry entry : serviceEntries.entrySet()) { - String key = entry.getKey(); - ServiceStream data = entry.getValue(); - - if (relocators != null) { - key = key.substring(SERVICES_PATH.length() + 1); - for (Relocator relocator : relocators) { - if (relocator.canRelocateClass(key)) { - key = relocator.relocateClass(key); - break; - } - } - - key = SERVICES_PATH + '/' + key; - } - - jos.putNextEntry(new JarEntry(key)); - - //read the content of service file for candidate classes for relocation - //presume everything is UTF8, because Findbugs barfs on default - //charset and this seems no worse a choice ¯\_(ツ)_/¯ - PrintWriter writer = new PrintWriter(new OutputStreamWriter(jos, - StandardCharsets.UTF_8)); - InputStreamReader streamReader = - new InputStreamReader(data.toInputStream(), StandardCharsets.UTF_8); - BufferedReader reader = new BufferedReader(streamReader); - String className; - - while ((className = reader.readLine()) != null) { - - if (relocators != null) { - for (Relocator relocator : relocators) { - //if the class can be relocated then relocate it - if (relocator.canRelocateClass(className)) { - className = relocator.applyToSourceContent(className); - break; - } - } - } - - writer.println(className); - writer.flush(); - } - - reader.close(); - data.reset(); - } - } - - static class ServiceStream extends ByteArrayOutputStream { - - public ServiceStream() { - super(1024); - } - - public void append(InputStream is) - throws IOException { - if (count > 0 && buf[count - 1] != '\n' && buf[count - 1] != '\r') { - write('\n'); - } - - IOUtil.copy(is, this); - } - - public InputStream toInputStream() { - return new ByteArrayInputStream(buf, 0, count); - } - - } - -} diff --git a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/shade/resource/package-info.java b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/shade/resource/package-info.java deleted file mode 100644 index 571491c0354..00000000000 --- a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/shade/resource/package-info.java +++ /dev/null @@ -1,23 +0,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. - */ - -/** - * Resource handling plugins used internal to the Hadoop build. - * IA.Private (build structure encourages not using the actual annotations) - */ -package org.apache.hadoop.maven.plugin.shade.resource;