This is an automated email from the ASF dual-hosted git repository. rfscholte pushed a commit to branch MSHADE-291 in repository https://gitbox.apache.org/repos/asf/maven-shade-plugin.git
commit ad61743ba0df12999a6ccfccdddca09205267c99 Author: Andrey Turbanov <turban...@gmail.com> AuthorDate: Tue Oct 23 01:59:38 2018 +0300 Use diamond operator from java 7 --- .../apache/maven/plugins/shade/DefaultShader.java | 10 +- .../maven/plugins/shade/filter/MinijarFilter.java | 2 +- .../maven/plugins/shade/filter/SimpleFilter.java | 4 +- .../maven/plugins/shade/mojo/ArtifactSelector.java | 2 +- .../maven/plugins/shade/mojo/RelativizePath.java | 2 +- .../apache/maven/plugins/shade/mojo/ShadeMojo.java | 22 +- .../maven/plugins/shade/pom/MavenJDOMWriter.java | 2 +- .../plugins/shade/relocation/SimpleRelocator.java | 2 +- .../resource/ApacheNoticeResourceTransformer.java | 6 +- .../resource/ComponentsXmlResourceTransformer.java | 2 +- .../shade/resource/GroovyResourceTransformer.java | 4 +- .../resource/PluginXmlResourceTransformer.java | 468 ++++++++++----------- .../ResourceBundleAppendingTransformer.java | 194 ++++----- .../resource/ServicesResourceTransformer.java | 2 +- .../maven/plugins/shade/DefaultShaderTest.java | 24 +- .../plugins/shade/filter/MinijarFilterTest.java | 2 +- .../maven/plugins/shade/mojo/ShadeMojoTest.java | 16 +- 17 files changed, 382 insertions(+), 382 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java b/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java index 825ed68..e990440 100644 --- a/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java +++ b/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java @@ -73,11 +73,11 @@ public class DefaultShader public void shade( ShadeRequest shadeRequest ) throws IOException, MojoExecutionException { - Set<String> resources = new HashSet<String>(); + Set<String> resources = new HashSet<>(); ResourceTransformer manifestTransformer = null; List<ResourceTransformer> transformers = - new ArrayList<ResourceTransformer>( shadeRequest.getResourceTransformers() ); + new ArrayList<>( shadeRequest.getResourceTransformers() ); for ( Iterator<ResourceTransformer> it = transformers.iterator(); it.hasNext(); ) { ResourceTransformer transformer = it.next(); @@ -332,14 +332,14 @@ public class DefaultShader { for ( Collection<File> jarz : overlapping.keySet() ) { - List<String> jarzS = new LinkedList<String>(); + List<String> jarzS = new LinkedList<>(); for ( File jjar : jarz ) { jarzS.add( jjar.getName() ); } - List<String> classes = new LinkedList<String>(); + List<String> classes = new LinkedList<>(); for ( String clazz : overlapping.get( jarz ) ) { @@ -383,7 +383,7 @@ public class DefaultShader private List<Filter> getFilters( File jar, List<Filter> filters ) { - List<Filter> list = new ArrayList<Filter>(); + List<Filter> list = new ArrayList<>(); for ( Filter filter : filters ) { diff --git a/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java b/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java index f4469c1..031f92b 100644 --- a/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java +++ b/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java @@ -151,7 +151,7 @@ public class MinijarFilter private void removePackages( ClazzpathUnit artifactUnit ) { - Set<String> packageNames = new HashSet<String>(); + Set<String> packageNames = new HashSet<>(); removePackages( artifactUnit.getClazzes(), packageNames ); removePackages( artifactUnit.getTransitiveDependencies(), packageNames ); } diff --git a/src/main/java/org/apache/maven/plugins/shade/filter/SimpleFilter.java b/src/main/java/org/apache/maven/plugins/shade/filter/SimpleFilter.java index 29c0b5b..28d8386 100644 --- a/src/main/java/org/apache/maven/plugins/shade/filter/SimpleFilter.java +++ b/src/main/java/org/apache/maven/plugins/shade/filter/SimpleFilter.java @@ -49,7 +49,7 @@ public class SimpleFilter */ public SimpleFilter( Set<File> jars, Set<String> includes, Set<String> excludes ) { - this.jars = ( jars != null ) ? new HashSet<File>( jars ) : new HashSet<File>(); + this.jars = ( jars != null ) ? new HashSet<>( jars ) : new HashSet<File>(); this.includes = normalizePatterns( includes ); this.excludes = normalizePatterns( excludes ); } @@ -125,7 +125,7 @@ public class SimpleFilter private Set<String> normalizePatterns( Set<String> patterns ) { - Set<String> result = new HashSet<String>(); + Set<String> result = new HashSet<>(); if ( patterns != null ) { diff --git a/src/main/java/org/apache/maven/plugins/shade/mojo/ArtifactSelector.java b/src/main/java/org/apache/maven/plugins/shade/mojo/ArtifactSelector.java index fc3a6eb..0ce080d 100644 --- a/src/main/java/org/apache/maven/plugins/shade/mojo/ArtifactSelector.java +++ b/src/main/java/org/apache/maven/plugins/shade/mojo/ArtifactSelector.java @@ -58,7 +58,7 @@ class ArtifactSelector private static Collection<ArtifactId> toIds( Collection<String> patterns ) { - Collection<ArtifactId> result = new HashSet<ArtifactId>(); + Collection<ArtifactId> result = new HashSet<>(); if ( patterns != null ) { diff --git a/src/main/java/org/apache/maven/plugins/shade/mojo/RelativizePath.java b/src/main/java/org/apache/maven/plugins/shade/mojo/RelativizePath.java index 01bd273..d065325 100644 --- a/src/main/java/org/apache/maven/plugins/shade/mojo/RelativizePath.java +++ b/src/main/java/org/apache/maven/plugins/shade/mojo/RelativizePath.java @@ -96,7 +96,7 @@ public final class RelativizePath static List<String> parentDirs( File of ) { - List<String> results = new ArrayList<String>(); + List<String> results = new ArrayList<>(); for ( File p = of.getParentFile() ; p != null ; p = p.getParentFile() ) { if ( !"".equals( p.getName() ) ) diff --git a/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java b/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java index 6b8d24a..4a5c021 100644 --- a/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java +++ b/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java @@ -384,10 +384,10 @@ public class ShadeMojo setupHintedShader(); - Set<File> artifacts = new LinkedHashSet<File>(); - Set<String> artifactIds = new LinkedHashSet<String>(); - Set<File> sourceArtifacts = new LinkedHashSet<File>(); - Set<File> testArtifacts = new LinkedHashSet<File>(); + Set<File> artifacts = new LinkedHashSet<>(); + Set<String> artifactIds = new LinkedHashSet<>(); + Set<File> sourceArtifacts = new LinkedHashSet<>(); + Set<File> testArtifacts = new LinkedHashSet<>(); ArtifactSelector artifactSelector = new ArtifactSelector( project.getArtifact(), artifactSet, shadedGroupFilter ); @@ -744,7 +744,7 @@ public class ShadeMojo private List<Relocator> getRelocators() { - List<Relocator> relocators = new ArrayList<Relocator>(); + List<Relocator> relocators = new ArrayList<>(); if ( relocations == null ) { @@ -773,12 +773,12 @@ public class ShadeMojo private List<Filter> getFilters() throws MojoExecutionException { - List<Filter> filters = new ArrayList<Filter>(); - List<SimpleFilter> simpleFilters = new ArrayList<SimpleFilter>(); + List<Filter> filters = new ArrayList<>(); + List<SimpleFilter> simpleFilters = new ArrayList<>(); if ( this.filters != null && this.filters.length > 0 ) { - Map<Artifact, ArtifactId> artifacts = new HashMap<Artifact, ArtifactId>(); + Map<Artifact, ArtifactId> artifacts = new HashMap<>(); artifacts.put( project.getArtifact(), new ArtifactId( project.getArtifact() ) ); @@ -791,7 +791,7 @@ public class ShadeMojo { ArtifactId pattern = new ArtifactId( filter.getArtifact() ); - Set<File> jars = new HashSet<File>(); + Set<File> jars = new HashSet<>(); for ( Map.Entry<Artifact, ArtifactId> entry : artifacts.entrySet() ) { @@ -909,11 +909,11 @@ public class ShadeMojo private void createDependencyReducedPom( Set<String> artifactsToRemove ) throws IOException, DependencyGraphBuilderException, ProjectBuildingException { - List<Dependency> dependencies = new ArrayList<Dependency>(); + List<Dependency> dependencies = new ArrayList<>(); boolean modified = false; - List<Dependency> transitiveDeps = new ArrayList<Dependency>(); + List<Dependency> transitiveDeps = new ArrayList<>(); // NOTE: By using the getArtifacts() we get the completely evaluated artifacts // including the system scoped artifacts with expanded values of properties used. diff --git a/src/main/java/org/apache/maven/plugins/shade/pom/MavenJDOMWriter.java b/src/main/java/org/apache/maven/plugins/shade/pom/MavenJDOMWriter.java index 7420ea5..80772e4 100644 --- a/src/main/java/org/apache/maven/plugins/shade/pom/MavenJDOMWriter.java +++ b/src/main/java/org/apache/maven/plugins/shade/pom/MavenJDOMWriter.java @@ -1085,7 +1085,7 @@ public class MavenJDOMWriter if ( parentDom.getChildCount() > 0 ) { Xpp3Dom[] childs = parentDom.getChildren(); - Collection<Xpp3Dom> domChilds = new ArrayList<Xpp3Dom>(); + Collection<Xpp3Dom> domChilds = new ArrayList<>(); Collections.addAll( domChilds, childs ); // int domIndex = 0; for ( Object o : parent.getChildren() ) diff --git a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java index 5606269..48be8f8 100644 --- a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java +++ b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java @@ -113,7 +113,7 @@ public class SimpleRelocator if ( patterns != null && !patterns.isEmpty() ) { - normalized = new LinkedHashSet<String>(); + normalized = new LinkedHashSet<>(); for ( String pattern : patterns ) { diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java index e8a88da..12e5fb8 100644 --- a/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java +++ b/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java @@ -46,9 +46,9 @@ import java.util.jar.JarOutputStream; public class ApacheNoticeResourceTransformer implements ResourceTransformer { - Set<String> entries = new LinkedHashSet<String>(); + Set<String> entries = new LinkedHashSet<>(); - Map<String, Set<String>> organizationEntries = new LinkedHashMap<String, Set<String>>(); + Map<String, Set<String>> organizationEntries = new LinkedHashMap<>(); String projectName = ""; // MSHADE-101 :: NullPointerException when projectName is missing @@ -142,7 +142,7 @@ public class ApacheNoticeResourceTransformer currentOrg = organizationEntries.get( sb.toString().trim() ); if ( currentOrg == null ) { - currentOrg = new TreeSet<String>(); + currentOrg = new TreeSet<>(); organizationEntries.put( sb.toString().trim(), currentOrg ); } sb = new StringBuilder(); diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java index b8ef15e..08b1b9f 100644 --- a/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java +++ b/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java @@ -45,7 +45,7 @@ import java.util.jar.JarOutputStream; public class ComponentsXmlResourceTransformer implements ResourceTransformer { - private Map<String, Xpp3Dom> components = new LinkedHashMap<String, Xpp3Dom>(); + private Map<String, Xpp3Dom> components = new LinkedHashMap<>(); public static final String COMPONENTS_XML_PATH = "META-INF/plexus/components.xml"; diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java index 0eac450..ced9c71 100644 --- a/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java +++ b/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java @@ -41,9 +41,9 @@ public class GroovyResourceTransformer static final String EXT_MODULE_NAME = "META-INF/services/org.codehaus.groovy.runtime.ExtensionModule"; - private List<String> extensionClassesList = new ArrayList<String>(); + private List<String> extensionClassesList = new ArrayList<>(); - private List<String> staticExtensionClassesList = new ArrayList<String>(); + private List<String> staticExtensionClassesList = new ArrayList<>(); private String extModuleName = "no-module-name"; diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java index ad3c116..98e18e6 100644 --- a/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java +++ b/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java @@ -1,234 +1,234 @@ -package org.apache.maven.plugins.shade.resource; - -/* - * 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. - */ - -import java.io.BufferedInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.Reader; -import java.io.Writer; -import java.util.LinkedList; -import java.util.List; -import java.util.jar.JarEntry; -import java.util.jar.JarOutputStream; - -import org.apache.maven.plugins.shade.relocation.Relocator; -import org.codehaus.plexus.util.IOUtil; -import org.codehaus.plexus.util.ReaderFactory; -import org.codehaus.plexus.util.WriterFactory; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.codehaus.plexus.util.xml.Xpp3DomBuilder; -import org.codehaus.plexus.util.xml.Xpp3DomWriter; - -/** - * A resource processor that aggregates Maven <code>plugin.xml</code> files. - * - * @author Robert Scholte - * @since 3.0 - */ -public class PluginXmlResourceTransformer - implements ResourceTransformer -{ - private List<Xpp3Dom> mojos = new LinkedList<Xpp3Dom>(); - - public static final String PLUGIN_XML_PATH = "META-INF/maven/plugin.xml"; - - public boolean canTransformResource( String resource ) - { - return PLUGIN_XML_PATH.equals( resource ); - } - - public void processResource( String resource, InputStream is, List<Relocator> relocators ) - throws IOException - { - Xpp3Dom newDom; - - try - { - BufferedInputStream bis = new BufferedInputStream( is ) - { - public void close() - throws IOException - { - // leave ZIP open - } - }; - - Reader reader = ReaderFactory.newXmlReader( bis ); - - newDom = Xpp3DomBuilder.build( reader ); - } - catch ( Exception e ) - { - throw (IOException) new IOException( "Error parsing plugin.xml in " + is ).initCause( e ); - } - - // Only try to merge in mojos if there are some elements in the plugin - if ( newDom.getChild( "mojos" ) == null ) - { - return; - } - - for ( Xpp3Dom mojo : newDom.getChild( "mojos" ).getChildren( "mojo" ) ) - { - - String impl = getValue( mojo, "implementation" ); - impl = getRelocatedClass( impl, relocators ); - setValue( mojo, "implementation", impl ); - - Xpp3Dom parameters = mojo.getChild( "parameters" ); - if ( parameters != null ) - { - for ( Xpp3Dom parameter : parameters.getChildren() ) - { - String type = getValue( parameter, "type" ); - type = getRelocatedClass( type, relocators ); - setValue( parameter, "type", type ); - } - } - - Xpp3Dom configuration = mojo.getChild( "configuration" ); - if ( configuration != null ) - { - for ( Xpp3Dom configurationEntry : configuration.getChildren() ) - { - String implementation = getAttribute( configurationEntry, "implementation" ); - implementation = getRelocatedClass( implementation, relocators ); - setAttribute( configurationEntry, "implementation", implementation ); - } - } - - Xpp3Dom requirements = mojo.getChild( "requirements" ); - if ( requirements != null && requirements.getChildCount() > 0 ) - { - for ( Xpp3Dom requirement : requirements.getChildren() ) - { - String requiredRole = getValue( requirement, "role" ); - requiredRole = getRelocatedClass( requiredRole, relocators ); - setValue( requirement, "role", requiredRole ); - } - } - mojos.add( mojo ); - } - } - - public void modifyOutputStream( JarOutputStream jos ) - throws IOException - { - byte[] data = getTransformedResource(); - - jos.putNextEntry( new JarEntry( PLUGIN_XML_PATH ) ); - - IOUtil.copy( data, jos ); - - mojos.clear(); - } - - public boolean hasTransformedResource() - { - return !mojos.isEmpty(); - } - - byte[] getTransformedResource() - throws IOException - { - ByteArrayOutputStream baos = new ByteArrayOutputStream( 1024 * 4 ); - - Writer writer = WriterFactory.newXmlWriter( baos ); - try - { - Xpp3Dom dom = new Xpp3Dom( "plugin" ); - - Xpp3Dom componentDom = new Xpp3Dom( "mojos" ); - - dom.addChild( componentDom ); - - for ( Xpp3Dom mojo : mojos ) - { - componentDom.addChild( mojo ); - } - - Xpp3DomWriter.write( writer, dom ); - - writer.close(); - writer = null; - } - finally - { - IOUtil.close( writer ); - } - - return baos.toByteArray(); - } - - private String getRelocatedClass( String className, List<Relocator> relocators ) - { - if ( className != null && className.length() > 0 && relocators != null ) - { - for ( Relocator relocator : relocators ) - { - if ( relocator.canRelocateClass( className ) ) - { - return relocator.relocateClass( className ); - } - } - } - - return className; - } - - private static String getValue( Xpp3Dom dom, String element ) - { - Xpp3Dom child = dom.getChild( element ); - - return ( child != null && child.getValue() != null ) ? child.getValue() : ""; - } - - private static void setValue( Xpp3Dom dom, String element, String value ) - { - Xpp3Dom child = dom.getChild( element ); - - if ( child == null || value == null || value.length() <= 0 ) - { - return; - } - - child.setValue( value ); - } - - private static String getAttribute( Xpp3Dom dom, String attribute ) - { - return ( dom.getAttribute( attribute ) != null ) ? dom.getAttribute( attribute ) : ""; - } - - private static void setAttribute( Xpp3Dom dom, String attribute, String value ) - { - String attr = dom.getAttribute( attribute ); - - if ( attr == null || value == null || value.length() <= 0 ) - { - return; - } - - dom.setAttribute( attribute, value ); - } - -} +package org.apache.maven.plugins.shade.resource; + +/* + * 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. + */ + +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.io.Writer; +import java.util.LinkedList; +import java.util.List; +import java.util.jar.JarEntry; +import java.util.jar.JarOutputStream; + +import org.apache.maven.plugins.shade.relocation.Relocator; +import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.ReaderFactory; +import org.codehaus.plexus.util.WriterFactory; +import org.codehaus.plexus.util.xml.Xpp3Dom; +import org.codehaus.plexus.util.xml.Xpp3DomBuilder; +import org.codehaus.plexus.util.xml.Xpp3DomWriter; + +/** + * A resource processor that aggregates Maven <code>plugin.xml</code> files. + * + * @author Robert Scholte + * @since 3.0 + */ +public class PluginXmlResourceTransformer + implements ResourceTransformer +{ + private List<Xpp3Dom> mojos = new LinkedList<>(); + + public static final String PLUGIN_XML_PATH = "META-INF/maven/plugin.xml"; + + public boolean canTransformResource( String resource ) + { + return PLUGIN_XML_PATH.equals( resource ); + } + + public void processResource( String resource, InputStream is, List<Relocator> relocators ) + throws IOException + { + Xpp3Dom newDom; + + try + { + BufferedInputStream bis = new BufferedInputStream( is ) + { + public void close() + throws IOException + { + // leave ZIP open + } + }; + + Reader reader = ReaderFactory.newXmlReader( bis ); + + newDom = Xpp3DomBuilder.build( reader ); + } + catch ( Exception e ) + { + throw (IOException) new IOException( "Error parsing plugin.xml in " + is ).initCause( e ); + } + + // Only try to merge in mojos if there are some elements in the plugin + if ( newDom.getChild( "mojos" ) == null ) + { + return; + } + + for ( Xpp3Dom mojo : newDom.getChild( "mojos" ).getChildren( "mojo" ) ) + { + + String impl = getValue( mojo, "implementation" ); + impl = getRelocatedClass( impl, relocators ); + setValue( mojo, "implementation", impl ); + + Xpp3Dom parameters = mojo.getChild( "parameters" ); + if ( parameters != null ) + { + for ( Xpp3Dom parameter : parameters.getChildren() ) + { + String type = getValue( parameter, "type" ); + type = getRelocatedClass( type, relocators ); + setValue( parameter, "type", type ); + } + } + + Xpp3Dom configuration = mojo.getChild( "configuration" ); + if ( configuration != null ) + { + for ( Xpp3Dom configurationEntry : configuration.getChildren() ) + { + String implementation = getAttribute( configurationEntry, "implementation" ); + implementation = getRelocatedClass( implementation, relocators ); + setAttribute( configurationEntry, "implementation", implementation ); + } + } + + Xpp3Dom requirements = mojo.getChild( "requirements" ); + if ( requirements != null && requirements.getChildCount() > 0 ) + { + for ( Xpp3Dom requirement : requirements.getChildren() ) + { + String requiredRole = getValue( requirement, "role" ); + requiredRole = getRelocatedClass( requiredRole, relocators ); + setValue( requirement, "role", requiredRole ); + } + } + mojos.add( mojo ); + } + } + + public void modifyOutputStream( JarOutputStream jos ) + throws IOException + { + byte[] data = getTransformedResource(); + + jos.putNextEntry( new JarEntry( PLUGIN_XML_PATH ) ); + + IOUtil.copy( data, jos ); + + mojos.clear(); + } + + public boolean hasTransformedResource() + { + return !mojos.isEmpty(); + } + + byte[] getTransformedResource() + throws IOException + { + ByteArrayOutputStream baos = new ByteArrayOutputStream( 1024 * 4 ); + + Writer writer = WriterFactory.newXmlWriter( baos ); + try + { + Xpp3Dom dom = new Xpp3Dom( "plugin" ); + + Xpp3Dom componentDom = new Xpp3Dom( "mojos" ); + + dom.addChild( componentDom ); + + for ( Xpp3Dom mojo : mojos ) + { + componentDom.addChild( mojo ); + } + + Xpp3DomWriter.write( writer, dom ); + + writer.close(); + writer = null; + } + finally + { + IOUtil.close( writer ); + } + + return baos.toByteArray(); + } + + private String getRelocatedClass( String className, List<Relocator> relocators ) + { + if ( className != null && className.length() > 0 && relocators != null ) + { + for ( Relocator relocator : relocators ) + { + if ( relocator.canRelocateClass( className ) ) + { + return relocator.relocateClass( className ); + } + } + } + + return className; + } + + private static String getValue( Xpp3Dom dom, String element ) + { + Xpp3Dom child = dom.getChild( element ); + + return ( child != null && child.getValue() != null ) ? child.getValue() : ""; + } + + private static void setValue( Xpp3Dom dom, String element, String value ) + { + Xpp3Dom child = dom.getChild( element ); + + if ( child == null || value == null || value.length() <= 0 ) + { + return; + } + + child.setValue( value ); + } + + private static String getAttribute( Xpp3Dom dom, String attribute ) + { + return ( dom.getAttribute( attribute ) != null ) ? dom.getAttribute( attribute ) : ""; + } + + private static void setAttribute( Xpp3Dom dom, String attribute, String value ) + { + String attr = dom.getAttribute( attribute ); + + if ( attr == null || value == null || value.length() <= 0 ) + { + return; + } + + dom.setAttribute( attribute, value ); + } + +} diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java index 7d5e232..7d73ed8 100644 --- a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java +++ b/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java @@ -1,97 +1,97 @@ -package org.apache.maven.plugins.shade.resource; - -/* - * 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. - */ - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.jar.JarEntry; -import java.util.jar.JarOutputStream; -import java.util.regex.Pattern; - -import org.apache.maven.plugins.shade.relocation.Relocator; -import org.codehaus.plexus.util.IOUtil; - -/** - * An appending transformer for resource bundles - * - * @author Robert Scholte - * @since 3.0.0 - */ -public class ResourceBundleAppendingTransformer implements ResourceTransformer -{ - private Map<String, ByteArrayOutputStream> dataMap = new HashMap<String, ByteArrayOutputStream>(); - - private Pattern resourceBundlePattern; - - /** - * the base name of the resource bundle, a fully qualified class name - */ - public void setBasename( String basename ) - { - resourceBundlePattern = Pattern.compile( basename + "(_[a-zA-Z]+){0,3}\\.properties" ); - } - - public boolean canTransformResource( String r ) - { - if ( resourceBundlePattern != null && resourceBundlePattern.matcher( r ).matches() ) - { - return true; - } - - return false; - } - - public void processResource( String resource, InputStream is, List<Relocator> relocators ) - throws IOException - { - ByteArrayOutputStream data = dataMap.get( resource ); - if ( data == null ) - { - data = new ByteArrayOutputStream(); - dataMap.put( resource, data ); - } - - IOUtil.copy( is, data ); - data.write( '\n' ); - } - - public boolean hasTransformedResource() - { - return !dataMap.isEmpty(); - } - - public void modifyOutputStream( JarOutputStream jos ) - throws IOException - { - for ( Map.Entry<String, ByteArrayOutputStream> dataEntry : dataMap.entrySet() ) - { - jos.putNextEntry( new JarEntry( dataEntry.getKey() ) ); - - IOUtil.copy( new ByteArrayInputStream( dataEntry.getValue().toByteArray() ), jos ); - dataEntry.getValue().reset(); - } - } - -} +package org.apache.maven.plugins.shade.resource; + +/* + * 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. + */ + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.jar.JarEntry; +import java.util.jar.JarOutputStream; +import java.util.regex.Pattern; + +import org.apache.maven.plugins.shade.relocation.Relocator; +import org.codehaus.plexus.util.IOUtil; + +/** + * An appending transformer for resource bundles + * + * @author Robert Scholte + * @since 3.0.0 + */ +public class ResourceBundleAppendingTransformer implements ResourceTransformer +{ + private Map<String, ByteArrayOutputStream> dataMap = new HashMap<>(); + + private Pattern resourceBundlePattern; + + /** + * the base name of the resource bundle, a fully qualified class name + */ + public void setBasename( String basename ) + { + resourceBundlePattern = Pattern.compile( basename + "(_[a-zA-Z]+){0,3}\\.properties" ); + } + + public boolean canTransformResource( String r ) + { + if ( resourceBundlePattern != null && resourceBundlePattern.matcher( r ).matches() ) + { + return true; + } + + return false; + } + + public void processResource( String resource, InputStream is, List<Relocator> relocators ) + throws IOException + { + ByteArrayOutputStream data = dataMap.get( resource ); + if ( data == null ) + { + data = new ByteArrayOutputStream(); + dataMap.put( resource, data ); + } + + IOUtil.copy( is, data ); + data.write( '\n' ); + } + + public boolean hasTransformedResource() + { + return !dataMap.isEmpty(); + } + + public void modifyOutputStream( JarOutputStream jos ) + throws IOException + { + for ( Map.Entry<String, ByteArrayOutputStream> dataEntry : dataMap.entrySet() ) + { + jos.putNextEntry( new JarEntry( dataEntry.getKey() ) ); + + IOUtil.copy( new ByteArrayInputStream( dataEntry.getValue().toByteArray() ), jos ); + dataEntry.getValue().reset(); + } + } + +} diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java index f1cb9d6..ea5b784 100644 --- a/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java +++ b/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java @@ -51,7 +51,7 @@ public class ServicesResourceTransformer private static final String SERVICES_PATH = "META-INF/services"; - private Map<String, ServiceStream> serviceEntries = new HashMap<String, ServiceStream>(); + private Map<String, ServiceStream> serviceEntries = new HashMap<>(); private List<Relocator> relocators; diff --git a/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java b/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java index e45e642..08eedea 100644 --- a/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java +++ b/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java @@ -62,17 +62,17 @@ public class DefaultShaderTest { Shader s = newShader(); - Set<File> set = new LinkedHashSet<File>(); + Set<File> set = new LinkedHashSet<>(); set.add( new File( "src/test/jars/test-artifact-1.0-SNAPSHOT.jar" ) ); - List<Relocator> relocators = new ArrayList<Relocator>(); + List<Relocator> relocators = new ArrayList<>(); relocators.add( new SimpleRelocator( "org.apache.maven.plugins.shade", null, null, null ) ); - List<ResourceTransformer> resourceTransformers = new ArrayList<ResourceTransformer>(); + List<ResourceTransformer> resourceTransformers = new ArrayList<>(); - List<Filter> filters = new ArrayList<Filter>(); + List<Filter> filters = new ArrayList<>(); File file = new File( "target/testShaderWithStaticInitializedClass.jar" ); @@ -111,22 +111,22 @@ public class DefaultShaderTest { DefaultShader s = newShader(); - Set<File> set = new LinkedHashSet<File>(); + Set<File> set = new LinkedHashSet<>(); set.add( new File( "src/test/jars/test-project-1.0-SNAPSHOT.jar" ) ); set.add( new File( "src/test/jars/plexus-utils-1.4.1.jar" ) ); - List<Relocator> relocators = new ArrayList<Relocator>(); + List<Relocator> relocators = new ArrayList<>(); relocators.add( new SimpleRelocator( "org/codehaus/plexus/util/", "_plexus/util/__", null, Arrays.<String> asList() ) ); - List<ResourceTransformer> resourceTransformers = new ArrayList<ResourceTransformer>(); + List<ResourceTransformer> resourceTransformers = new ArrayList<>(); resourceTransformers.add( new ComponentsXmlResourceTransformer() ); - List<Filter> filters = new ArrayList<Filter>(); + List<Filter> filters = new ArrayList<>(); File file = new File( "target/foo-relocate-class.jar" ); @@ -165,21 +165,21 @@ public class DefaultShaderTest { DefaultShader s = newShader(); - Set<File> set = new LinkedHashSet<File>(); + Set<File> set = new LinkedHashSet<>(); set.add( new File( "src/test/jars/test-project-1.0-SNAPSHOT.jar" ) ); set.add( new File( "src/test/jars/plexus-utils-1.4.1.jar" ) ); - List<Relocator> relocators = new ArrayList<Relocator>(); + List<Relocator> relocators = new ArrayList<>(); relocators.add( new SimpleRelocator( "org/codehaus/plexus/util", shadedPattern, null, Arrays.asList( excludes ) ) ); - List<ResourceTransformer> resourceTransformers = new ArrayList<ResourceTransformer>(); + List<ResourceTransformer> resourceTransformers = new ArrayList<>(); resourceTransformers.add( new ComponentsXmlResourceTransformer() ); - List<Filter> filters = new ArrayList<Filter>(); + List<Filter> filters = new ArrayList<>(); ShadeRequest shadeRequest = new ShadeRequest(); shadeRequest.setJars( set ); diff --git a/src/test/java/org/apache/maven/plugins/shade/filter/MinijarFilterTest.java b/src/test/java/org/apache/maven/plugins/shade/filter/MinijarFilterTest.java index b13e47c..bd32ef2 100644 --- a/src/test/java/org/apache/maven/plugins/shade/filter/MinijarFilterTest.java +++ b/src/test/java/org/apache/maven/plugins/shade/filter/MinijarFilterTest.java @@ -124,7 +124,7 @@ public class MinijarFilterTest new DefaultArtifact( "dep.com", "dep.aid", "1.0", "compile", "jar", "classifier2", null ); dependencyArtifact.setFile( file ); - Set<Artifact> artifacts = new TreeSet<Artifact>(); + Set<Artifact> artifacts = new TreeSet<>(); artifacts.add( dependencyArtifact ); when( mavenProject.getArtifacts() ).thenReturn( artifacts ); diff --git a/src/test/java/org/apache/maven/plugins/shade/mojo/ShadeMojoTest.java b/src/test/java/org/apache/maven/plugins/shade/mojo/ShadeMojoTest.java index fa869c8..5bc8ee6 100644 --- a/src/test/java/org/apache/maven/plugins/shade/mojo/ShadeMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/shade/mojo/ShadeMojoTest.java @@ -79,16 +79,16 @@ public class ShadeMojoTest Shader s = (Shader) lookup( Shader.ROLE, "default" ); - Set<File> set = new LinkedHashSet<File>(); + Set<File> set = new LinkedHashSet<>(); set.add( new File( getBasedir(), "src/test/jars/test-artifact-1.0-SNAPSHOT.jar" ) ); - List<Relocator> relocators = new ArrayList<Relocator>(); + List<Relocator> relocators = new ArrayList<>(); relocators.add( new SimpleRelocator( "org.codehaus.plexus.util", "hidden", null, Arrays.asList( "org.codehaus.plexus.util.xml.Xpp3Dom", "org.codehaus.plexus.util.xml.pull.*") ) ); - List<ResourceTransformer> resourceTransformers = new ArrayList<ResourceTransformer>(); + List<ResourceTransformer> resourceTransformers = new ArrayList<>(); - List<Filter> filters = new ArrayList<Filter>(); + List<Filter> filters = new ArrayList<>(); ShadeRequest shadeRequest = new ShadeRequest(); shadeRequest.setJars( set ); @@ -220,22 +220,22 @@ public class ShadeMojoTest { Shader s = (Shader) lookup( Shader.ROLE ); - Set<File> set = new LinkedHashSet<File>(); + Set<File> set = new LinkedHashSet<>(); set.add( new File( getBasedir(), "src/test/jars/test-project-1.0-SNAPSHOT.jar" ) ); set.add( new File( getBasedir(), "src/test/jars/plexus-utils-1.4.1.jar" ) ); - List<Relocator> relocators = new ArrayList<Relocator>(); + List<Relocator> relocators = new ArrayList<>(); relocators.add( new SimpleRelocator( "org/codehaus/plexus/util", shadedPattern, null, Arrays.asList( "org/codehaus/plexus/util/xml/Xpp3Dom", "org/codehaus/plexus/util/xml/pull.*") ) ); - List<ResourceTransformer> resourceTransformers = new ArrayList<ResourceTransformer>(); + List<ResourceTransformer> resourceTransformers = new ArrayList<>(); resourceTransformers.add( new ComponentsXmlResourceTransformer() ); - List<Filter> filters = new ArrayList<Filter>(); + List<Filter> filters = new ArrayList<>(); ShadeRequest shadeRequest = new ShadeRequest(); shadeRequest.setJars( set );