You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2024/01/10 12:53:48 UTC
(maven) branch master updated: [MNG-8001] Expose CoreRealm internally (#1369)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new 2c06637fb4 [MNG-8001] Expose CoreRealm internally (#1369)
2c06637fb4 is described below
commit 2c06637fb4de806abc03bcf1a15718b53210ec74
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Wed Jan 10 13:53:42 2024 +0100
[MNG-8001] Expose CoreRealm internally (#1369)
Expose internally (not for plugin API) CoreRealm.
---
https://issues.apache.org/jira/browse/MNG-8001
---
.../maven/classrealm/DefaultClassRealmManager.java | 9 ++--
.../extension/internal/CoreExportsProvider.java | 6 +--
.../CoreRealm.java} | 54 +++++++++++-----------
.../impl/internal/DefaultCoreRealm.java} | 27 ++++-------
.../classrealm/DefaultClassRealmManagerTest.java | 3 +-
5 files changed, 46 insertions(+), 53 deletions(-)
diff --git a/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java b/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java
index 512e7cae8f..14bec0c1c0 100644
--- a/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java
+++ b/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java
@@ -36,10 +36,9 @@ import java.util.TreeMap;
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.classrealm.ClassRealmRequest.RealmType;
import org.apache.maven.extension.internal.CoreExports;
+import org.apache.maven.internal.CoreRealm;
import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
-import org.codehaus.plexus.MutablePlexusContainer;
-import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.classworlds.ClassWorld;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.codehaus.plexus.classworlds.realm.DuplicateRealmException;
@@ -87,9 +86,9 @@ public class DefaultClassRealmManager implements ClassRealmManager {
@Inject
public DefaultClassRealmManager(
- PlexusContainer container, List<ClassRealmManagerDelegate> delegates, CoreExports exports) {
- this.world = ((MutablePlexusContainer) container).getClassWorld();
- this.containerRealm = container.getContainerRealm();
+ CoreRealm coreRealm, List<ClassRealmManagerDelegate> delegates, CoreExports exports) {
+ this.world = coreRealm.getClassWorld();
+ this.containerRealm = coreRealm.getRealm();
this.delegates = delegates;
Map<String, ClassLoader> foreignImports = exports.getExportedPackages();
diff --git a/maven-core/src/main/java/org/apache/maven/extension/internal/CoreExportsProvider.java b/maven-core/src/main/java/org/apache/maven/extension/internal/CoreExportsProvider.java
index 9c9d647289..0f0b510482 100644
--- a/maven-core/src/main/java/org/apache/maven/extension/internal/CoreExportsProvider.java
+++ b/maven-core/src/main/java/org/apache/maven/extension/internal/CoreExportsProvider.java
@@ -25,7 +25,7 @@ import javax.inject.Singleton;
import java.util.Objects;
-import org.codehaus.plexus.PlexusContainer;
+import org.apache.maven.internal.CoreRealm;
/**
* CoreExportsProvider
@@ -37,8 +37,8 @@ public class CoreExportsProvider implements Provider<CoreExports> {
private final CoreExports exports;
@Inject
- public CoreExportsProvider(PlexusContainer container) {
- this(new CoreExports(CoreExtensionEntry.discoverFrom(container.getContainerRealm())));
+ public CoreExportsProvider(CoreRealm coreRealm) {
+ this(new CoreExports(CoreExtensionEntry.discoverFrom(coreRealm.getRealm())));
}
public CoreExportsProvider(CoreExports exports) {
diff --git a/maven-core/src/main/java/org/apache/maven/extension/internal/CoreExportsProvider.java b/maven-core/src/main/java/org/apache/maven/internal/CoreRealm.java
similarity index 52%
copy from maven-core/src/main/java/org/apache/maven/extension/internal/CoreExportsProvider.java
copy to maven-core/src/main/java/org/apache/maven/internal/CoreRealm.java
index 9c9d647289..b27cec352f 100644
--- a/maven-core/src/main/java/org/apache/maven/extension/internal/CoreExportsProvider.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/CoreRealm.java
@@ -16,36 +16,36 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.maven.extension.internal;
+package org.apache.maven.internal;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Provider;
-import javax.inject.Singleton;
-
-import java.util.Objects;
-
-import org.codehaus.plexus.PlexusContainer;
+import org.apache.maven.api.annotations.Experimental;
+import org.apache.maven.api.annotations.Nonnull;
+import org.codehaus.plexus.classworlds.ClassWorld;
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
/**
- * CoreExportsProvider
+ * Access to core {@link ClassRealm}.
+ *
+ * @since 4.0.0
*/
-@Named
-@Singleton
-public class CoreExportsProvider implements Provider<CoreExports> {
-
- private final CoreExports exports;
-
- @Inject
- public CoreExportsProvider(PlexusContainer container) {
- this(new CoreExports(CoreExtensionEntry.discoverFrom(container.getContainerRealm())));
- }
-
- public CoreExportsProvider(CoreExports exports) {
- this.exports = Objects.requireNonNull(exports);
- }
-
- public CoreExports get() {
- return exports;
+@Experimental
+public interface CoreRealm {
+
+ /**
+ * Obtain the {@link ClassRealm} used for Maven Core.
+ *
+ * @return the class realm of core.
+ */
+ @Nonnull
+ ClassRealm getRealm();
+
+ /**
+ * Shorthand method to obtain the {@link ClassWorld} used for Maven Core.
+ *
+ * @return the class world in use.
+ */
+ @Nonnull
+ default ClassWorld getClassWorld() {
+ return getRealm().getWorld();
}
}
diff --git a/maven-core/src/main/java/org/apache/maven/extension/internal/CoreExportsProvider.java b/maven-core/src/main/java/org/apache/maven/internal/impl/internal/DefaultCoreRealm.java
similarity index 63%
copy from maven-core/src/main/java/org/apache/maven/extension/internal/CoreExportsProvider.java
copy to maven-core/src/main/java/org/apache/maven/internal/impl/internal/DefaultCoreRealm.java
index 9c9d647289..5d85bab5b6 100644
--- a/maven-core/src/main/java/org/apache/maven/extension/internal/CoreExportsProvider.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/internal/DefaultCoreRealm.java
@@ -16,36 +16,29 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.maven.extension.internal;
+package org.apache.maven.internal.impl.internal;
import javax.inject.Inject;
import javax.inject.Named;
-import javax.inject.Provider;
import javax.inject.Singleton;
-import java.util.Objects;
-
+import org.apache.maven.internal.CoreRealm;
import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
-/**
- * CoreExportsProvider
- */
@Named
@Singleton
-public class CoreExportsProvider implements Provider<CoreExports> {
+public class DefaultCoreRealm implements CoreRealm {
- private final CoreExports exports;
+ private final PlexusContainer container;
@Inject
- public CoreExportsProvider(PlexusContainer container) {
- this(new CoreExports(CoreExtensionEntry.discoverFrom(container.getContainerRealm())));
- }
-
- public CoreExportsProvider(CoreExports exports) {
- this.exports = Objects.requireNonNull(exports);
+ public DefaultCoreRealm(PlexusContainer container) {
+ this.container = container;
}
- public CoreExports get() {
- return exports;
+ @Override
+ public ClassRealm getRealm() {
+ return container.getContainerRealm();
}
}
diff --git a/maven-core/src/test/java/org/apache/maven/classrealm/DefaultClassRealmManagerTest.java b/maven-core/src/test/java/org/apache/maven/classrealm/DefaultClassRealmManagerTest.java
index f1908adb42..c90e75bece 100644
--- a/maven-core/src/test/java/org/apache/maven/classrealm/DefaultClassRealmManagerTest.java
+++ b/maven-core/src/test/java/org/apache/maven/classrealm/DefaultClassRealmManagerTest.java
@@ -24,6 +24,7 @@ import java.util.HashSet;
import java.util.List;
import org.apache.maven.extension.internal.CoreExports;
+import org.apache.maven.internal.impl.internal.DefaultCoreRealm;
import org.apache.maven.model.Model;
import org.codehaus.plexus.DefaultPlexusContainer;
import org.codehaus.plexus.PlexusContainer;
@@ -56,7 +57,7 @@ class DefaultClassRealmManagerTest {
exportedPackages.add("group1:artifact1");
return new DefaultClassRealmManager(
- container,
+ new DefaultCoreRealm(container),
new ArrayList<ClassRealmManagerDelegate>(),
new CoreExports(new ClassRealm(null, "test", null), new HashSet<String>(), exportedPackages));
}