diff options
Diffstat (limited to 'spring-core/src/main/java/org/springframework/core/DecoratingClassLoader.java')
-rw-r--r-- | spring-core/src/main/java/org/springframework/core/DecoratingClassLoader.java | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/spring-core/src/main/java/org/springframework/core/DecoratingClassLoader.java b/spring-core/src/main/java/org/springframework/core/DecoratingClassLoader.java index 350df5cf..b29ac071 100644 --- a/spring-core/src/main/java/org/springframework/core/DecoratingClassLoader.java +++ b/spring-core/src/main/java/org/springframework/core/DecoratingClassLoader.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 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. @@ -16,8 +16,9 @@ package org.springframework.core; -import java.util.HashSet; +import java.util.Collections; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import org.springframework.lang.UsesJava7; import org.springframework.util.Assert; @@ -49,11 +50,11 @@ public abstract class DecoratingClassLoader extends ClassLoader { } - private final Set<String> excludedPackages = new HashSet<String>(); + private final Set<String> excludedPackages = + Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>(8)); - private final Set<String> excludedClasses = new HashSet<String>(); - - private final Object exclusionMonitor = new Object(); + private final Set<String> excludedClasses = + Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>(8)); /** @@ -79,9 +80,7 @@ public abstract class DecoratingClassLoader extends ClassLoader { */ public void excludePackage(String packageName) { Assert.notNull(packageName, "Package name must not be null"); - synchronized (this.exclusionMonitor) { - this.excludedPackages.add(packageName); - } + this.excludedPackages.add(packageName); } /** @@ -92,9 +91,7 @@ public abstract class DecoratingClassLoader extends ClassLoader { */ public void excludeClass(String className) { Assert.notNull(className, "Class name must not be null"); - synchronized (this.exclusionMonitor) { - this.excludedClasses.add(className); - } + this.excludedClasses.add(className); } /** @@ -107,15 +104,13 @@ public abstract class DecoratingClassLoader extends ClassLoader { * @see #excludeClass */ protected boolean isExcluded(String className) { - synchronized (this.exclusionMonitor) { - if (this.excludedClasses.contains(className)) { + if (this.excludedClasses.contains(className)) { + return true; + } + for (String packageName : this.excludedPackages) { + if (className.startsWith(packageName)) { return true; } - for (String packageName : this.excludedPackages) { - if (className.startsWith(packageName)) { - return true; - } - } } return false; } |