This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-assembly-plugin.git
commit e9d50ed23e2d71feee2fb45523291d1d3dc3a208 Author: Olivier Lamy <ol...@apache.org> AuthorDate: Tue Aug 26 07:09:50 2025 +1000 fix lookup Signed-off-by: Olivier Lamy <ol...@apache.org> --- .../assembly/archive/DefaultAssemblyArchiver.java | 54 ++++------------------ .../archive/DefaultAssemblyArchiverTest.java | 6 ++- 2 files changed, 13 insertions(+), 47 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java index f4ea3038..9a39f997 100644 --- a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java +++ b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java @@ -24,8 +24,6 @@ import javax.inject.Named; import java.io.File; import java.io.IOException; import java.io.StringReader; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.nio.file.attribute.FileTime; import java.util.ArrayList; import java.util.List; @@ -59,13 +57,12 @@ import org.codehaus.plexus.archiver.tar.TarArchiver; import org.codehaus.plexus.archiver.tar.TarLongFileMode; import org.codehaus.plexus.archiver.war.WarArchiver; import org.codehaus.plexus.archiver.zip.AbstractZipArchiver; +import org.codehaus.plexus.component.configurator.BasicComponentConfigurator; import org.codehaus.plexus.component.configurator.ComponentConfigurationException; -import org.codehaus.plexus.component.configurator.ComponentConfigurator; import org.codehaus.plexus.component.configurator.ConfigurationListener; import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.components.io.fileselectors.FileSelector; -import org.codehaus.plexus.configuration.PlexusConfiguration; import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.xml.Xpp3Dom; @@ -98,16 +95,20 @@ public class DefaultAssemblyArchiver implements AssemblyArchiver { private final PlexusContainer container; + private final BasicComponentConfigurator configurator; + @Inject public DefaultAssemblyArchiver( ArchiverManager archiverManager, List<AssemblyArchiverPhase> assemblyPhases, Map<String, ContainerDescriptorHandler> containerDescriptorHandlers, - PlexusContainer container) { + PlexusContainer container, + BasicComponentConfigurator configurator) { this.archiverManager = requireNonNull(archiverManager); this.assemblyPhases = requireNonNull(assemblyPhases); this.containerDescriptorHandlers = requireNonNull(containerDescriptorHandlers); this.container = requireNonNull(container); + this.configurator = requireNonNull(configurator); } private List<AssemblyArchiverPhase> sortedPhases() { @@ -398,7 +399,6 @@ public class DefaultAssemblyArchiver implements AssemblyArchiver { private void configureComponent( final Object component, final Xpp3Dom config, final AssemblerConfigurationSource configSource) throws ComponentLookupException, ComponentConfigurationException { - final ComponentConfigurator configurator = container.lookup(ComponentConfigurator.class, "basic"); final ConfigurationListener listener = new DebugConfigurationListener(LOGGER); @@ -406,45 +406,7 @@ public class DefaultAssemblyArchiver implements AssemblyArchiver { final XmlPlexusConfiguration configuration = new XmlPlexusConfiguration(config); - final Object[] containerRealm = getContainerRealm(); - - /* - * NOTE: The signature of configureComponent() has changed in Maven 3.x, the reflection prevents a linkage error - * and makes the code work with both Maven 2 and 3. - */ - try { - final Method configureComponent = ComponentConfigurator.class.getMethod( - "configureComponent", - Object.class, - PlexusConfiguration.class, - ExpressionEvaluator.class, - (Class<?>) containerRealm[1], - ConfigurationListener.class); - - configureComponent.invoke( - configurator, component, configuration, expressionEvaluator, containerRealm[0], listener); - } catch (final NoSuchMethodException | IllegalAccessException e) { - throw new RuntimeException(e); - } catch (final InvocationTargetException e) { - if (e.getCause() instanceof ComponentConfigurationException) { - throw (ComponentConfigurationException) e.getCause(); - } - throw new RuntimeException(e.getCause()); - } - } - - private Object[] getContainerRealm() { - /* - * NOTE: The return type of getContainerRealm() has changed in Maven 3.x, the reflection prevents a linkage - * error and makes the code work with both Maven 2 and 3. - */ - try { - final Method getContainerRealm = container.getClass().getMethod("getContainerRealm"); - return new Object[] {getContainerRealm.invoke(container), getContainerRealm.getReturnType()}; - } catch (final NoSuchMethodException | IllegalAccessException e) { - throw new RuntimeException(e); - } catch (final InvocationTargetException e) { - throw new RuntimeException(e.getCause()); - } + configurator.configureComponent( + component, configuration, expressionEvaluator, container.getContainerRealm(), listener); } } diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java index 5c6b8b2a..e893a1d0 100644 --- a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java +++ b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java @@ -44,6 +44,7 @@ import org.codehaus.plexus.archiver.tar.TarArchiver; import org.codehaus.plexus.archiver.tar.TarLongFileMode; import org.codehaus.plexus.archiver.war.WarArchiver; import org.codehaus.plexus.archiver.zip.ZipArchiver; +import org.codehaus.plexus.component.configurator.BasicComponentConfigurator; import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator; import org.junit.Before; import org.junit.Rule; @@ -74,6 +75,8 @@ public class DefaultAssemblyArchiverTest { private PlexusContainer container; + private BasicComponentConfigurator configurator; + public static void setupInterpolators(AssemblerConfigurationSource configSource) { when(configSource.getRepositoryInterpolator()).thenReturn(FixedStringSearchInterpolator.create()); when(configSource.getCommandLinePropsInterpolator()).thenReturn(FixedStringSearchInterpolator.create()); @@ -91,6 +94,7 @@ public class DefaultAssemblyArchiverTest { public void setup() throws PlexusContainerException { this.archiverManager = mock(ArchiverManager.class); this.container = new DefaultPlexusContainer(); + this.configurator = new BasicComponentConfigurator(); } @Test(expected = InvalidAssemblerConfigurationException.class) @@ -343,7 +347,7 @@ public class DefaultAssemblyArchiverTest { } private DefaultAssemblyArchiver createSubject(final List<AssemblyArchiverPhase> phases) { - return new DefaultAssemblyArchiver(archiverManager, phases, Collections.emptyMap(), container); + return new DefaultAssemblyArchiver(archiverManager, phases, Collections.emptyMap(), container, configurator); } private static final class TestTarArchiver extends TarArchiver {