minor logging clean up with slf4j, added root-level javadoc pom config
git-svn-id: https://svn.apache.org/repos/asf/incubator/jsecurity/trunk@766391 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/ki/authc/AbstractAuthenticator.java b/core/src/main/java/org/apache/ki/authc/AbstractAuthenticator.java
index 099e869..dac3965 100644
--- a/core/src/main/java/org/apache/ki/authc/AbstractAuthenticator.java
+++ b/core/src/main/java/org/apache/ki/authc/AbstractAuthenticator.java
@@ -30,12 +30,12 @@
/**
* Superclass for almost all {@link Authenticator} implementations that performs the common work around authentication
* attempts.
- *
+ * <p/>
* <p>This class delegates the actual authentication attempt to subclasses but supports notification for
* successful and failed logins as well as logouts. Notification is sent to one or more registered
* {@link AuthenticationListener AuthenticationListener}s to allow for custom processing logic
* when these conditions occur.
- *
+ * <p/>
* <p>In most cases, the only thing a subclass needs to do (via its {@link #doAuthenticate} implementation)
* is perform the actual principal/credential verification process for the submitted <tt>AuthenticationToken</tt>.
*
@@ -96,8 +96,9 @@
* <code>info</code>. This implementation merely iterates over the internal <code>listeners</code> collection and
* calls {@link AuthenticationListener#onSuccess(AuthenticationToken, AuthenticationInfo) onSuccess}
* for each.
+ *
* @param token the submitted <code>AuthenticationToken</code> that resulted in a successful authentication.
- * @param info the returned <code>AuthenticationInfo</code> resulting from the successful authentication.
+ * @param info the returned <code>AuthenticationInfo</code> resulting from the successful authentication.
*/
protected void notifySuccess(AuthenticationToken token, AuthenticationInfo info) {
for (AuthenticationListener listener : this.listeners) {
@@ -112,8 +113,9 @@
* iterates over the internal <code>listeners</code> collection and calls
* {@link AuthenticationListener#onFailure(AuthenticationToken, AuthenticationException) onFailure}
* for each.
+ *
* @param token the submitted <code>AuthenticationToken</code> that resulted in a failed authentication.
- * @param ae the resulting <code>AuthenticationException<code> that caused the authentication to fail.
+ * @param ae the resulting <code>AuthenticationException<code> that caused the authentication to fail.
*/
protected void notifyFailure(AuthenticationToken token, AuthenticationException ae) {
for (AuthenticationListener listener : this.listeners) {
@@ -127,6 +129,7 @@
* iterates over the internal <code>listeners</code> collection and calls
* {@link AuthenticationListener#onLogout(org.apache.ki.subject.PrincipalCollection) onLogout}
* for each.
+ *
* @param principals the identifying principals of the <code>Subject</code>/account logging out.
*/
protected void notifyLogout(PrincipalCollection principals) {
@@ -139,6 +142,7 @@
* This implementation merely calls
* {@link #notifyLogout(org.apache.ki.subject.PrincipalCollection) notifyLogout} to allow any registered listeners
* to react to the logout.
+ *
* @param principals the identifying principals of the <code>Subject</code>/account logging out.
*/
public void onLogout(PrincipalCollection principals) {
@@ -147,7 +151,7 @@
/**
* Implementation of the {@link Authenticator} interface that functions in the following manner:
- *
+ * <p/>
* <ol>
* <li>Calls template {@link #doAuthenticate doAuthenticate} method for subclass execution of the actual
* authentication behavior.</li>
@@ -173,9 +177,7 @@
throw new IllegalArgumentException("Method argumet (authentication token) cannot be null.");
}
- if (log.isTraceEnabled()) {
- log.trace("Authentication attempt received for token [" + token + "]");
- }
+ log.trace("Authentication attempt received for token [{}]", token);
AuthenticationInfo info;
try {
@@ -196,17 +198,14 @@
String msg = "Authentication failed for token submission [" + token + "]. Possible unexpected " +
"error? (Typical or expected login exceptions should extend from AuthenticationException).";
ae = new AuthenticationException(msg, t);
- if (log.isWarnEnabled()) {
- log.warn(msg, t);
- }
}
try {
notifyFailure(token, ae);
} catch (Throwable t2) {
- String msg = "Unable to send notification for failed authentication attempt - listener error?. " +
- "Please check your AuthenticationListener implementation(s). Logging sending exception and " +
- "propagating original AuthenticationException instead...";
if (log.isWarnEnabled()) {
+ String msg = "Unable to send notification for failed authentication attempt - listener error?. " +
+ "Please check your AuthenticationListener implementation(s). Logging sending exception " +
+ "and propagating original AuthenticationException instead...";
log.warn(msg, t2);
}
}
@@ -214,10 +213,8 @@
throw ae;
}
-
- if (log.isDebugEnabled()) {
- log.debug("Authentication successful for token [" + token + "]. Returned account: [" + info + "]");
- }
+
+ log.debug("Authentication successful for token [{}]. Returned account [{}]", token, info );
notifySuccess(token, info);
@@ -226,10 +223,10 @@
/**
* Template design pattern hook for subclasses to implement specific authentication behavior.
- *
+ * <p/>
* <p>Common behavior for most authentication attempts is encapsulated in the
* {@link #authenticate} method and that method invokes this one for custom behavior.
- *
+ * <p/>
* <p><b>N.B.</b> Subclasses <em>should</em> throw some kind of
* <tt>AuthenticationException</tt> if there is a problem during
* authentication instead of returning <tt>null</tt>. A <tt>null</tt> return value indicates
diff --git a/core/src/main/java/org/apache/ki/authc/pam/AllSuccessfulStrategy.java b/core/src/main/java/org/apache/ki/authc/pam/AllSuccessfulStrategy.java
index e5f4543..46e302d 100644
--- a/core/src/main/java/org/apache/ki/authc/pam/AllSuccessfulStrategy.java
+++ b/core/src/main/java/org/apache/ki/authc/pam/AllSuccessfulStrategy.java
@@ -31,7 +31,7 @@
/**
* <tt>AuthenticationStrategy</tt> implementation that requires <em>all</em> configured realms to
* <b>successfully</b> process the submitted <tt>AuthenticationToken</tt> during the log-in attempt.
- *
+ * <p/>
* <p>If one or more realms do not support the submitted token, or one or more are unable to acquire
* <tt>AuthenticationInfo</tt> for the token, this implementation will immediately fail the log-in attempt for the
* associated subject (user).
@@ -94,12 +94,10 @@
throw new UnknownAccountException(msg);
}
+ log.debug("Account successfully authenticated using realm [{}]", realm);
+
// If non-null account is returned, then the realm was able to authenticate the
// user - so merge the account with any accumulated before:
- if (log.isDebugEnabled()) {
- log.debug("Account successfully authenticated using realm of type [" + realm.getClass().getName() + "]");
- }
-
merge(info, aggregate);
return aggregate;
diff --git a/core/src/main/java/org/apache/ki/authc/pam/AuthenticationStrategy.java b/core/src/main/java/org/apache/ki/authc/pam/AuthenticationStrategy.java
index 152b671..10fc5c9 100644
--- a/core/src/main/java/org/apache/ki/authc/pam/AuthenticationStrategy.java
+++ b/core/src/main/java/org/apache/ki/authc/pam/AuthenticationStrategy.java
@@ -47,8 +47,8 @@
* specified <tt>token</tt> - called before any <tt>Realm</tt> is actually invoked.
*
* <p>The <code>AuthenticationInfo</code> object returned from this method is essentially an empty place holder for
- * aggregating account data across multiple realms. It should be populated by the realms over the course of the
- * authentication attempt across the multiple realms. It will be passed into the
+ * aggregating account data across multiple realms. It should be populated by the strategy implementation over the
+ * course of authentication attempts across the multiple realms. It will be passed into the
* {@link #beforeAttempt} calls, allowing inspection of the aggregated account data up to that point in the
* multi-realm authentication, allowing any logic to be executed accordingly.
*
diff --git a/core/src/main/java/org/apache/ki/authc/pam/ModularRealmAuthenticator.java b/core/src/main/java/org/apache/ki/authc/pam/ModularRealmAuthenticator.java
index b1e1ce5..0aa5409 100644
--- a/core/src/main/java/org/apache/ki/authc/pam/ModularRealmAuthenticator.java
+++ b/core/src/main/java/org/apache/ki/authc/pam/ModularRealmAuthenticator.java
@@ -244,17 +244,14 @@
AuthenticationInfo aggregate = strategy.beforeAllAttempts(realms, token);
if (log.isDebugEnabled()) {
- log.debug("Iterating through [" + realms.size() + "] realms for PAM authentication");
+ log.debug("Iterating through {} realms for PAM authentication", realms.size());
}
for (Realm realm : realms) {
if (realm.supports(token)) {
- if (log.isDebugEnabled()) {
- log.debug("Attempting to authenticate token [" + token + "] " +
- "using realm of type [" + realm + "]");
- }
+ log.debug("Attempting to authenticate token [{}] using realm [{}]", token, realm);
AuthenticationInfo info = null;
Throwable t = null;
@@ -271,10 +268,7 @@
aggregate = strategy.afterAttempt(realm, token, info, aggregate, t);
} else {
- if (log.isDebugEnabled()) {
- log.debug("Realm of type [" + realm + "] does not support token " +
- "[" + token + "]. Skipping realm.");
- }
+ log.debug("Realm [{}] does not support token {}. Skipping realm.", realm, token);
}
}
diff --git a/core/src/main/java/org/apache/ki/config/IniConfiguration.java b/core/src/main/java/org/apache/ki/config/IniConfiguration.java
index fbc288e..94a6886 100644
--- a/core/src/main/java/org/apache/ki/config/IniConfiguration.java
+++ b/core/src/main/java/org/apache/ki/config/IniConfiguration.java
@@ -95,10 +95,7 @@
load(configUrl);
} else {
if (ignoreResourceNotFound) {
- if (log.isDebugEnabled()) {
- log.debug("Ki resource [" + configUrl + "] not found. Ignoring since " +
- "'ignoreResourceNotFound' is set to true.");
- }
+ log.debug("Ki resource [{}] not found. Ignoring since 'ignoreResourceNotFound' is true.", configUrl);
} else {
throw new ConfigurationException("Ki resource [" + configUrl + "] specified as a 'configUrl' " +
"cannot be found. If you want to fall back on default configuration specified " +
diff --git a/core/src/main/java/org/apache/ki/config/ReflectionBuilder.java b/core/src/main/java/org/apache/ki/config/ReflectionBuilder.java
index f8bb81f..8022e25 100644
--- a/core/src/main/java/org/apache/ki/config/ReflectionBuilder.java
+++ b/core/src/main/java/org/apache/ki/config/ReflectionBuilder.java
@@ -104,8 +104,8 @@
Object currentInstance = objects.get(name);
if (currentInstance != null) {
- log.info("An instance with name [" + name + "] already exists. " +
- "Redefining this object as a new instance of type [" + value + "].");
+ log.info("An instance with name '{}' already exists. " +
+ "Redefining this object as a new instance of type []", name, value);
}
Object instance;//name with no property, assume right hand side of equals sign is the class name:
@@ -209,10 +209,7 @@
if (isReference(stringValue)) {
String id = getId(stringValue);
- if (log.isDebugEnabled()) {
- log.debug("Encountered object reference [" + stringValue + "]. Looking up object " +
- "with id [" + id + "]");
- }
+ log.debug("Encountered object reference '{}'. Looking up object with id '{}'", stringValue, id);
value = getReferencedObject(id);
} else {
value = unescapeIfNecessary(stringValue);
@@ -220,7 +217,8 @@
try {
if (log.isTraceEnabled()) {
- log.trace("Applying property [" + propertyName + "] value [" + value + "] on object of type [" + object.getClass().getName() + "]");
+ log.trace("Applying property [{}] value [{}] on object of type [{}]",
+ new Object[]{propertyName, value, object.getClass().getName()});
}
BeanUtils.setProperty(object, propertyName, value);
} catch (Exception e) {
diff --git a/core/src/main/java/org/apache/ki/config/TextConfiguration.java b/core/src/main/java/org/apache/ki/config/TextConfiguration.java
index 22f5be8..a7eabc0 100644
--- a/core/src/main/java/org/apache/ki/config/TextConfiguration.java
+++ b/core/src/main/java/org/apache/ki/config/TextConfiguration.java
@@ -33,6 +33,7 @@
/**
* //TODO - complete JavaDoc
+ *
* @author Les Hazlewood
* @since 0.9
*/
@@ -78,9 +79,7 @@
if (securityManager == null) {
String config = getConfig();
if (config != null) {
- if (log.isInfoEnabled()) {
- log.info("Attempting to load Configuration based on 'config' property.");
- }
+ log.info("Attempting to load Configuration based on 'config' property.");
loadTextConfig(config);
}
}
diff --git a/core/src/main/java/org/apache/ki/io/ResourceUtils.java b/core/src/main/java/org/apache/ki/io/ResourceUtils.java
index 941887a..289fca8 100644
--- a/core/src/main/java/org/apache/ki/io/ResourceUtils.java
+++ b/core/src/main/java/org/apache/ki/io/ResourceUtils.java
@@ -148,20 +148,13 @@
}
private static InputStream loadFromUrl(String urlPath) throws IOException {
-
- if (log.isDebugEnabled()) {
- log.debug("Opening url [" + urlPath + "]...");
- }
-
+ log.debug("Opening url {}", urlPath);
URL url = new URL(urlPath);
return url.openStream();
}
private static InputStream loadFromClassPath(String path) {
- if (log.isDebugEnabled()) {
- log.debug("Opening resource from class path [" + path + "]...");
- }
-
+ log.debug("Opening resource from class path [{}]", path);
return ClassUtils.getResourceAsStream(path);
}
diff --git a/core/src/main/java/org/apache/ki/io/TextResource.java b/core/src/main/java/org/apache/ki/io/TextResource.java
index 5355bbf..3f5f36f 100644
--- a/core/src/main/java/org/apache/ki/io/TextResource.java
+++ b/core/src/main/java/org/apache/ki/io/TextResource.java
@@ -107,10 +107,7 @@
try {
br.close();
} catch (IOException e) {
- if (log.isWarnEnabled()) {
- log.warn("Unable to cleanly close BufferedReader [" + br + "] after " +
- "the doLoad(Reader) call.");
- }
+ log.warn("Unable to cleanly close BufferedReader [{}] after doLoad(Reader) call.", br);
}
}
}
diff --git a/core/src/main/java/org/apache/ki/jndi/JndiLocator.java b/core/src/main/java/org/apache/ki/jndi/JndiLocator.java
index 8636607..48bf6ce 100644
--- a/core/src/main/java/org/apache/ki/jndi/JndiLocator.java
+++ b/core/src/main/java/org/apache/ki/jndi/JndiLocator.java
@@ -155,9 +155,7 @@
throw ex;
}
}
- if (log.isDebugEnabled()) {
- log.debug("Located object with JNDI name [" + convertedName + "]");
- }
+ log.debug("Located object with JNDI name '{}'", convertedName);
return jndiObject;
}
diff --git a/core/src/main/java/org/apache/ki/jndi/JndiTemplate.java b/core/src/main/java/org/apache/ki/jndi/JndiTemplate.java
index a9298e4..3f262d1 100644
--- a/core/src/main/java/org/apache/ki/jndi/JndiTemplate.java
+++ b/core/src/main/java/org/apache/ki/jndi/JndiTemplate.java
@@ -33,7 +33,7 @@
* Helper class that simplifies JNDI operations. It provides methods to lookup and
* bind objects, and allows implementations of the {@link JndiCallback} interface
* to perform any operation they like with a JNDI naming context provided.
- *
+ * <p/>
* <p>Note that this implementation is an almost exact copy of the Spring Framework's identically named class from
* their 2.5.4 distribution - we didn't want to re-invent the wheel, but not require a full dependency on the
* Spring framework, nor does Spring make available only its JNDI classes in a small jar, or we would have used that.
@@ -50,9 +50,7 @@
private Properties environment;
- /**
- * Create a new JndiTemplate instance.
- */
+ /** Create a new JndiTemplate instance. */
public JndiTemplate() {
}
@@ -99,8 +97,7 @@
finally {
try {
ctx.close();
- }
- catch (NamingException ex) {
+ } catch (NamingException ex) {
log.debug("Could not close JNDI InitialContext", ex);
}
}
@@ -138,9 +135,7 @@
* name bound to JNDI
*/
public Object lookup(final String name) throws NamingException {
- if (log.isDebugEnabled()) {
- log.debug("Looking up JNDI object with name [" + name + "]");
- }
+ log.debug("Looking up JNDI object with name '{}'", name);
return execute(new JndiCallback() {
public Object doInContext(Context ctx) throws NamingException {
Object located = ctx.lookup(name);
@@ -185,9 +180,7 @@
* @throws NamingException thrown by JNDI, mostly name already bound
*/
public void bind(final String name, final Object object) throws NamingException {
- if (log.isDebugEnabled()) {
- log.debug("Binding JNDI object with name [" + name + "]");
- }
+ log.debug("Binding JNDI object with name '{}'", name);
execute(new JndiCallback() {
public Object doInContext(Context ctx) throws NamingException {
ctx.bind(name, object);
@@ -205,9 +198,7 @@
* @throws NamingException thrown by JNDI
*/
public void rebind(final String name, final Object object) throws NamingException {
- if (log.isDebugEnabled()) {
- log.debug("Rebinding JNDI object with name [" + name + "]");
- }
+ log.debug("Rebinding JNDI object with name '{}'", name);
execute(new JndiCallback() {
public Object doInContext(Context ctx) throws NamingException {
ctx.rebind(name, object);
@@ -223,9 +214,7 @@
* @throws NamingException thrown by JNDI, mostly name not found
*/
public void unbind(final String name) throws NamingException {
- if (log.isDebugEnabled()) {
- log.debug("Unbinding JNDI object with name [" + name + "]");
- }
+ log.debug("Unbinding JNDI object with name '{}'", name);
execute(new JndiCallback() {
public Object doInContext(Context ctx) throws NamingException {
ctx.unbind(name);
diff --git a/core/src/main/java/org/apache/ki/session/ProxiedSession.java b/core/src/main/java/org/apache/ki/session/ProxiedSession.java
index b6edced..d6b5ca5 100644
--- a/core/src/main/java/org/apache/ki/session/ProxiedSession.java
+++ b/core/src/main/java/org/apache/ki/session/ProxiedSession.java
@@ -38,11 +38,11 @@
/**
* The proxied instance
*/
- protected final Session proxy;
+ protected final Session delegate;
/**
* Constructs an instance that proxies the specified <code>target</code>. Subclasses may access this
- * target via the <code>protected final 'proxy'</code> attribute, i.e. <code>this.proxy</code>.
+ * target via the <code>protected final 'delegate'</code> attribute, i.e. <code>this.delegate</code>.
*
* @param target the specified target <code>Session</code> to proxy.
*/
@@ -50,91 +50,91 @@
if (target == null) {
throw new IllegalArgumentException("Target session to proxy cannot be null.");
}
- proxy = target;
+ delegate = target;
}
/**
* Immediately delegates to the underlying proxied session.
*/
public Serializable getId() {
- return proxy.getId();
+ return delegate.getId();
}
/**
* Immediately delegates to the underlying proxied session.
*/
public Date getStartTimestamp() {
- return proxy.getStartTimestamp();
+ return delegate.getStartTimestamp();
}
/**
* Immediately delegates to the underlying proxied session.
*/
public Date getLastAccessTime() {
- return proxy.getLastAccessTime();
+ return delegate.getLastAccessTime();
}
/**
* Immediately delegates to the underlying proxied session.
*/
public long getTimeout() throws InvalidSessionException {
- return proxy.getTimeout();
+ return delegate.getTimeout();
}
/**
* Immediately delegates to the underlying proxied session.
*/
public void setTimeout(long maxIdleTimeInMillis) throws InvalidSessionException {
- proxy.setTimeout(maxIdleTimeInMillis);
+ delegate.setTimeout(maxIdleTimeInMillis);
}
/**
* Immediately delegates to the underlying proxied session.
*/
public InetAddress getHostAddress() {
- return proxy.getHostAddress();
+ return delegate.getHostAddress();
}
/**
* Immediately delegates to the underlying proxied session.
*/
public void touch() throws InvalidSessionException {
- proxy.touch();
+ delegate.touch();
}
/**
* Immediately delegates to the underlying proxied session.
*/
public void stop() throws InvalidSessionException {
- proxy.stop();
+ delegate.stop();
}
/**
* Immediately delegates to the underlying proxied session.
*/
public Collection<Object> getAttributeKeys() throws InvalidSessionException {
- return proxy.getAttributeKeys();
+ return delegate.getAttributeKeys();
}
/**
* Immediately delegates to the underlying proxied session.
*/
public Object getAttribute(Object key) throws InvalidSessionException {
- return proxy.getAttribute(key);
+ return delegate.getAttribute(key);
}
/**
* Immediately delegates to the underlying proxied session.
*/
public void setAttribute(Object key, Object value) throws InvalidSessionException {
- proxy.setAttribute(key, value);
+ delegate.setAttribute(key, value);
}
/**
* Immediately delegates to the underlying proxied session.
*/
public Object removeAttribute(Object key) throws InvalidSessionException {
- return proxy.removeAttribute(key);
+ return delegate.removeAttribute(key);
}
}
diff --git a/core/src/main/java/org/apache/ki/subject/DelegatingSubject.java b/core/src/main/java/org/apache/ki/subject/DelegatingSubject.java
index eed3533..8eeb307 100644
--- a/core/src/main/java/org/apache/ki/subject/DelegatingSubject.java
+++ b/core/src/main/java/org/apache/ki/subject/DelegatingSubject.java
@@ -79,14 +79,6 @@
protected SecurityManager securityManager;
- protected static InetAddress getLocalHost() {
- try {
- return InetAddress.getLocalHost();
- } catch (UnknownHostException e) {
- return null;
- }
- }
-
public DelegatingSubject(SecurityManager securityManager) {
this(null, false, getLocalHost(), null, securityManager);
}
@@ -111,6 +103,14 @@
}
}
+ protected static InetAddress getLocalHost() {
+ try {
+ return InetAddress.getLocalHost();
+ } catch (UnknownHostException e) {
+ return null;
+ }
+ }
+
protected Session decorate(Session session) {
if (session == null) {
throw new IllegalArgumentException("session cannot be null");
@@ -213,14 +213,12 @@
securityManager.checkPermission(getPrincipals(), permission);
}
- public void checkPermissions(String... permissions)
- throws AuthorizationException {
+ public void checkPermissions(String... permissions) throws AuthorizationException {
assertAuthzCheckPossible();
securityManager.checkPermissions(getPrincipals(), permissions);
}
- public void checkPermissions(Collection<Permission> permissions)
- throws AuthorizationException {
+ public void checkPermissions(Collection<Permission> permissions) throws AuthorizationException {
assertAuthzCheckPossible();
securityManager.checkPermissions(getPrincipals(), permissions);
}
diff --git a/pom.xml b/pom.xml
index e1158d9..c228ea9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -346,4 +346,27 @@
</dependencies>
</dependencyManagement>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <aggregate>true</aggregate>
+ <source>${jdk.version}</source>
+ <encoding>UTF-8</encoding>
+ <linksource>true</linksource>
+ <links>
+ <link>http://java.sun.com/javase/6/docs/api/</link>
+ <link>http://java.sun.com/javaee/5/docs/api/</link>
+ <link>http://www.slf4j.org/api/</link>
+ <link>http://static.springframework.org/spring/docs/2.5.x/api/</link>
+ <link>http://junit.org/junit/javadoc/4.4/</link>
+ <link>http://easymock.org/api/easymock/2.4/</link>
+ </links>
+ </configuration>
+ </plugin>
+ </plugins>
+ </reporting>
+
</project>
diff --git a/support/spring/src/main/java/org/apache/ki/spring/remoting/SecureRemoteInvocationFactory.java b/support/spring/src/main/java/org/apache/ki/spring/remoting/SecureRemoteInvocationFactory.java
index 5576ca7..468c9fd 100644
--- a/support/spring/src/main/java/org/apache/ki/spring/remoting/SecureRemoteInvocationFactory.java
+++ b/support/spring/src/main/java/org/apache/ki/spring/remoting/SecureRemoteInvocationFactory.java
@@ -70,7 +70,7 @@
InetAddress inet = null;
boolean sessionManagerMethodInvocation = false;
- //If the calling MI is for a remoting SessionManager proxy, we need to acquire the session ID from the method
+ //If the calling MI is for a remoting SessionManager delegate, we need to acquire the session ID from the method
//argument and NOT interact with SecurityUtils/subject.getSession to avoid a stack overflow
if (SessionManager.class.equals(mi.getMethod().getDeclaringClass())) {
sessionManagerMethodInvocation = true;
@@ -82,7 +82,7 @@
}
}
- //tried the proxy. If sessionId is still null, only then try the Subject:
+ //tried the delegate. If sessionId is still null, only then try the Subject:
if (sessionId == null && !sessionManagerMethodInvocation) {
Subject subject = SecurityUtils.getSubject();
Session session = subject.getSession(false);