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 {

Reply via email to