Преглед изворни кода

Add default strategy constructor

Closes gh-11059
Josh Cummings пре 3 година
родитељ
комит
61c0a25bcd

+ 27 - 1
core/src/main/java/org/springframework/security/core/context/ListeningSecurityContextHolderStrategy.java

@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2021 the original author or authors.
+ * Copyright 2002-2022 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.
@@ -62,6 +62,32 @@ public final class ListeningSecurityContextHolderStrategy implements SecurityCon
 
 	private final SecurityContextHolderStrategy delegate;
 
+	/**
+	 * Construct a {@link ListeningSecurityContextHolderStrategy} based on
+	 * {@link ThreadLocalSecurityContextHolderStrategy}
+	 * @param listeners the listeners that should be notified when the
+	 * {@link SecurityContext} is {@link #setContext(SecurityContext) set} or
+	 * {@link #clearContext() cleared}
+	 *
+	 * @since 5.7
+	 */
+	public ListeningSecurityContextHolderStrategy(Collection<SecurityContextChangedListener> listeners) {
+		this(new ThreadLocalSecurityContextHolderStrategy(), listeners);
+	}
+
+	/**
+	 * Construct a {@link ListeningSecurityContextHolderStrategy} based on
+	 * {@link ThreadLocalSecurityContextHolderStrategy}
+	 * @param listeners the listeners that should be notified when the
+	 * {@link SecurityContext} is {@link #setContext(SecurityContext) set} or
+	 * {@link #clearContext() cleared}
+	 *
+	 * @since 5.7
+	 */
+	public ListeningSecurityContextHolderStrategy(SecurityContextChangedListener... listeners) {
+		this(new ThreadLocalSecurityContextHolderStrategy(), listeners);
+	}
+
 	/**
 	 * Construct a {@link ListeningSecurityContextHolderStrategy}
 	 * @param listeners the listeners that should be notified when the

+ 2 - 2
core/src/test/java/org/springframework/security/core/context/ListeningSecurityContextHolderStrategyTests.java

@@ -55,8 +55,8 @@ public class ListeningSecurityContextHolderStrategyTests {
 
 	@Test
 	public void constructorWhenNullDelegateThenIllegalArgument() {
-		assertThatExceptionOfType(IllegalArgumentException.class)
-				.isThrownBy(() -> new ListeningSecurityContextHolderStrategy(null, (event) -> {
+		assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(
+				() -> new ListeningSecurityContextHolderStrategy((SecurityContextHolderStrategy) null, (event) -> {
 				}));
 	}