/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.deployment.model.internal.plugin; import java.util.List; import java.util.Map; /** * Thrown to indicate that more than one artifact is exporting a given package. */ public class DuplicateExportedPackageException extends PluginResolutionError { /** * {@inheritDoc} * * @param pluginsPerPackage a map containing a list of artifact names exporting a given Java package */ public DuplicateExportedPackageException(Map<String, List<String>> pluginsPerPackage) { super(buildPackageDuplicationErrorMessage(pluginsPerPackage)); } private static String buildPackageDuplicationErrorMessage(Map<String, List<String>> exportedPackages) { StringBuilder errorMessageBuilder = new StringBuilder("There are multiple artifacts exporting the same package:"); for (String packageName : exportedPackages.keySet()) { final List<String> exportedOn = exportedPackages.get((packageName)); if (exportedOn.size() > 1) { errorMessageBuilder.append("\nPackage ").append(packageName).append(" is exported on artifacts: "); boolean firstPlugin = true; for (String plugin : exportedOn) { if (firstPlugin) { firstPlugin = false; } else { errorMessageBuilder.append(", "); } errorMessageBuilder.append(plugin); } } } return errorMessageBuilder.toString(); } }