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;
     }