/* * 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.module.artifact.classloader.exception; import static java.lang.String.format; import org.mule.runtime.module.artifact.classloader.RegionClassLoader; /** * Extends {@link ClassNotFoundException} providing additional troubleshooting information from the context of the * {@link RegionClassLoader}. */ public class ClassNotFoundInRegionException extends ClassNotFoundException { private static final long serialVersionUID = -2800293812538208279L; private String className; private String regionName; private String artifactName; /** * Builds the exception. * * @param className the name of the class that was trying to be loaded. * @param regionName the name of the region the class was being loaded from. */ public ClassNotFoundInRegionException(String className, String regionName) { super(format("Class '%s' has no package mapping for region '%s'.", className, regionName)); this.className = className; this.regionName = regionName; } /** * Builds the exception. * * @param className the name of the class that was trying to be loaded. * @param regionName the name of the region the class was being loaded from. * @param artifactName the name of the artifact in the region the class was being loaded from. * @param cause the actual exception that was thrown when loading the class form the artifact classLoader. */ public ClassNotFoundInRegionException(String className, String regionName, String artifactName, ClassNotFoundException cause) { super(format("Class '%s' not found in classloader for artifact '%s' in region '%s'.", className, artifactName, regionName), cause); this.className = className; this.regionName = regionName; this.artifactName = artifactName; } /** * @return the name of the class that was trying to be loaded. */ public String getClassName() { return className; } /** * @return the name of the region the class was being loaded from. */ public String getRegionName() { return regionName; } /** * @return the name of the artifact in the region the class was being loaded from. */ public String getArtifactName() { return artifactName; } }