| package org.apache.maven.extension.internal; |
| |
| /* |
| * 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.util.Collections; |
| import java.util.HashSet; |
| import java.util.Map; |
| import java.util.Set; |
| |
| import org.codehaus.plexus.classworlds.realm.ClassRealm; |
| |
| import static java.util.function.Function.identity; |
| import static java.util.stream.Collectors.collectingAndThen; |
| import static java.util.stream.Collectors.toMap; |
| |
| /** |
| * Provides information about artifacts (identified by groupId:artifactId string key) and classpath elements exported by |
| * Maven core itself and loaded Maven core extensions. |
| * |
| * @since 3.3.0 |
| */ |
| public class CoreExports |
| { |
| private final Set<String> artifacts; |
| |
| private final Map<String, ClassLoader> packages; |
| |
| public CoreExports( CoreExtensionEntry entry ) |
| { |
| this( entry.getClassRealm(), entry.getExportedArtifacts(), entry.getExportedPackages() ); |
| } |
| |
| public CoreExports( ClassRealm realm, Set<String> exportedArtifacts, Set<String> exportedPackages ) |
| { |
| this.artifacts = Collections.unmodifiableSet( new HashSet<>( exportedArtifacts ) ); |
| this.packages = exportedPackages.stream().collect( |
| collectingAndThen( toMap( identity(), v -> realm ), Collections::unmodifiableMap ) ); |
| } |
| |
| /** |
| * Returns artifacts exported by Maven core and core extensions. Artifacts are identified by their |
| * groupId:artifactId string key. |
| */ |
| public Set<String> getExportedArtifacts() |
| { |
| return artifacts; |
| } |
| |
| /** |
| * Returns packages exported by Maven core and core extensions. |
| */ |
| public Map<String, ClassLoader> getExportedPackages() |
| { |
| return packages; |
| } |
| } |