From 1735ba22cb1b3691d6a4a25d80058805d24902aa Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 12 Apr 2017 15:34:50 +0200 Subject: [PATCH] ShadowingClassLoader can be constructed without default excludes Issue: SPR-15439 --- .../classloading/ShadowingClassLoader.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/instrument/classloading/ShadowingClassLoader.java b/spring-context/src/main/java/org/springframework/instrument/classloading/ShadowingClassLoader.java index 4c63c25d462..413d737d0c7 100644 --- a/spring-context/src/main/java/org/springframework/instrument/classloading/ShadowingClassLoader.java +++ b/spring-context/src/main/java/org/springframework/instrument/classloading/ShadowingClassLoader.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -60,14 +60,28 @@ public class ShadowingClassLoader extends DecoratingClassLoader { /** - * Create a new ShadowingClassLoader, decorating the given ClassLoader. + * Create a new ShadowingClassLoader, decorating the given ClassLoader, + * applying {@link #DEFAULT_EXCLUDED_PACKAGES}. * @param enclosingClassLoader the ClassLoader to decorate + * @see #ShadowingClassLoader(ClassLoader, boolean) */ public ShadowingClassLoader(ClassLoader enclosingClassLoader) { + this(enclosingClassLoader, true); + } + + /** + * Create a new ShadowingClassLoader, decorating the given ClassLoader. + * @param enclosingClassLoader the ClassLoader to decorate + * @param defaultExcludes whether to apply {@link #DEFAULT_EXCLUDED_PACKAGES} + * @since 4.3.8 + */ + public ShadowingClassLoader(ClassLoader enclosingClassLoader, boolean defaultExcludes) { Assert.notNull(enclosingClassLoader, "Enclosing ClassLoader must not be null"); this.enclosingClassLoader = enclosingClassLoader; - for (String excludedPackage : DEFAULT_EXCLUDED_PACKAGES) { - excludePackage(excludedPackage); + if (defaultExcludes) { + for (String excludedPackage : DEFAULT_EXCLUDED_PACKAGES) { + excludePackage(excludedPackage); + } } }