You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by mg...@apache.org on 2015/04/10 10:17:48 UTC
isis git commit: ISIS-1134 Minor optimizations for iterations in
IsisContextThreadLocal
Repository: isis
Updated Branches:
refs/heads/ISIS-1134-leaking-queryresults [created] f57d3a000
ISIS-1134 Minor optimizations for iterations in IsisContextThreadLocal
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/f57d3a00
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/f57d3a00
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/f57d3a00
Branch: refs/heads/ISIS-1134-leaking-queryresults
Commit: f57d3a000729eb903292ef9d98a34a1f1d34153c
Parents: c3740b1
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Fri Apr 10 11:16:25 2015 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Fri Apr 10 11:16:25 2015 +0300
----------------------------------------------------------------------
.../system/context/IsisContextThreadLocal.java | 30 ++++++++++++--------
1 file changed, 18 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/f57d3a00/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContextThreadLocal.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContextThreadLocal.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContextThreadLocal.java
index 7a01877..ff8b175 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContextThreadLocal.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContextThreadLocal.java
@@ -43,6 +43,7 @@ public class IsisContextThreadLocal extends IsisContext {
return new IsisContextThreadLocal(sessionFactory);
}
+ // TODO Review. Use IdentityHashMap to make it clear that Thread as a key is compared by identity
private final Map<Thread, IsisSession> sessionsByThread = Maps.newHashMap();
@@ -71,9 +72,9 @@ public class IsisContextThreadLocal extends IsisContext {
protected void shutdownAllThreads() {
synchronized (sessionsByThread) {
int i = 0;
- for (final Thread thread : sessionsByThread.keySet()) {
- LOG.info("Shutting down thread: " + i++);
- final IsisSession data = sessionsByThread.get(thread);
+ for (final Map.Entry<Thread, IsisSession> entry : sessionsByThread.entrySet()) {
+ LOG.info("Shutting down thread: {}", i++); // TODO this 'i' is meaningless. Use entry.getKey().getName() instead ?
+ final IsisSession data = entry.getValue();
data.closeAll();
}
}
@@ -92,8 +93,7 @@ public class IsisContextThreadLocal extends IsisContext {
public String[] allSessionIds() {
final String[] ids = new String[sessionsByThread.size()];
int i = 0;
- for (final Thread thread : sessionsByThread.keySet()) {
- final IsisSession data = sessionsByThread.get(thread);
+ for (final IsisSession data : sessionsByThread.values()) {
ids[i++] = data.getId();
}
return ids;
@@ -112,16 +112,16 @@ public class IsisContextThreadLocal extends IsisContext {
public void debugData(final DebugBuilder debug) {
super.debugData(debug);
debug.appendTitle("Threads based Contexts");
- for (final Thread thread : sessionsByThread.keySet()) {
- final IsisSession data = sessionsByThread.get(thread);
+ for (final Map.Entry<Thread, IsisSession> entry : sessionsByThread.entrySet()) {
+ final Thread thread = entry.getKey();
+ final IsisSession data = entry.getValue();
debug.appendln(thread.toString(), data);
}
}
@Override
protected IsisSession getSessionInstance(final String executionContextId) {
- for (final Thread thread : sessionsByThread.keySet()) {
- final IsisSession data = sessionsByThread.get(thread);
+ for (final IsisSession data : sessionsByThread.values()) {
if (data.getId().equals(executionContextId)) {
return data;
}
@@ -147,7 +147,9 @@ public class IsisContextThreadLocal extends IsisContext {
synchronized (sessionsByThread) {
applySessionClosePolicy();
final IsisSession session = getSessionFactoryInstance().openSession(authenticationSession);
- LOG.debug(" opening session " + session + " (count " + sessionsByThread.size() + ") for " + authenticationSession.getUserName());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(" opening session " + session + " (count " + sessionsByThread.size() + ") for " + authenticationSession.getUserName());
+ }
saveSession(thread, session);
session.open();
return session;
@@ -157,7 +159,9 @@ public class IsisContextThreadLocal extends IsisContext {
protected IsisSession createAndOpenSession(final Thread thread, final AuthenticationSession authenticationSession) {
final IsisSession session = getSessionFactoryInstance().openSession(authenticationSession);
session.open();
- LOG.info(" opening session " + session + " (count " + sessionsByThread.size() + ") for " + authenticationSession.getUserName());
+ if (LOG.isInfoEnabled()) {
+ LOG.info(" opening session " + session + " (count " + sessionsByThread.size() + ") for " + authenticationSession.getUserName());
+ }
return session;
}
@@ -165,7 +169,9 @@ public class IsisContextThreadLocal extends IsisContext {
synchronized (sessionsByThread) {
sessionsByThread.put(thread, session);
}
- LOG.debug(" saving session " + session + "; now have " + sessionsByThread.size() + " sessions");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(" saving session " + session + "; now have " + sessionsByThread.size() + " sessions");
+ }
return session;
}