Author: markt
Date: Thu Jan 21 18:02:10 2016
New Revision: 1726041

URL: http://svn.apache.org/viewvc?rev=1726041&view=rev
Log:
Use try-with-resources to simplify code
Some exception logging removed since it is duplicated in [start|stop]Internal

Modified:
    tomcat/tc8.0.x/trunk/java/org/apache/catalina/session/StandardManager.java

Modified: 
tomcat/tc8.0.x/trunk/java/org/apache/catalina/session/StandardManager.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/session/StandardManager.java?rev=1726041&r1=1726040&r2=1726041&view=diff
==============================================================================
--- tomcat/tc8.0.x/trunk/java/org/apache/catalina/session/StandardManager.java 
(original)
+++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/session/StandardManager.java 
Thu Jan 21 18:02:10 2016
@@ -201,14 +201,10 @@ public class StandardManager extends Man
         if (log.isDebugEnabled()) {
             log.debug(sm.getString("standardManager.loading", pathname));
         }
-        FileInputStream fis = null;
-        BufferedInputStream bis = null;
-        ObjectInputStream ois = null;
         Loader loader = null;
         ClassLoader classLoader = null;
-        try {
-            fis = new FileInputStream(file.getAbsolutePath());
-            bis = new BufferedInputStream(fis);
+        try (FileInputStream fis = new FileInputStream(file.getAbsolutePath());
+                BufferedInputStream bis = new BufferedInputStream(fis);) {
             Context c = getContext();
             if (c != null) {
                 loader = c.getLoader();
@@ -219,71 +215,40 @@ public class StandardManager extends Man
             if (classLoader == null) {
                 classLoader = getClass().getClassLoader();
             }
-            ois = new CustomObjectInputStream(bis, classLoader);
+
+            // Load the previously unloaded active sessions
+            synchronized (sessions) {
+                try (ObjectInputStream ois = new CustomObjectInputStream(bis, 
classLoader)) {
+                    Integer count = (Integer) ois.readObject();
+                    int n = count.intValue();
+                    if (log.isDebugEnabled())
+                        log.debug("Loading " + n + " persisted sessions");
+                    for (int i = 0; i < n; i++) {
+                        StandardSession session = getNewSession();
+                        session.readObjectData(ois);
+                        session.setManager(this);
+                        sessions.put(session.getIdInternal(), session);
+                        session.activate();
+                        if (!session.isValidInternal()) {
+                            // If session is already invalid,
+                            // expire session to prevent memory leak.
+                            session.setValid(true);
+                            session.expire();
+                        }
+                        sessionCounter++;
+                    }
+                } finally {
+                    // Delete the persistent storage file
+                    if (file.exists()) {
+                        file.delete();
+                    }
+                }
+            }
         } catch (FileNotFoundException e) {
             if (log.isDebugEnabled()) {
                 log.debug("No persisted data file found");
             }
             return;
-        } catch (IOException e) {
-            log.error(sm.getString("standardManager.loading.ioe", e), e);
-            if (fis != null) {
-                try {
-                    fis.close();
-                } catch (IOException f) {
-                    // Ignore
-                }
-            }
-            if (bis != null) {
-                try {
-                    bis.close();
-                } catch (IOException f) {
-                    // Ignore
-                }
-            }
-            throw e;
-        }
-
-        // Load the previously unloaded active sessions
-        synchronized (sessions) {
-            try {
-                Integer count = (Integer) ois.readObject();
-                int n = count.intValue();
-                if (log.isDebugEnabled())
-                    log.debug("Loading " + n + " persisted sessions");
-                for (int i = 0; i < n; i++) {
-                    StandardSession session = getNewSession();
-                    session.readObjectData(ois);
-                    session.setManager(this);
-                    sessions.put(session.getIdInternal(), session);
-                    session.activate();
-                    if (!session.isValidInternal()) {
-                        // If session is already invalid,
-                        // expire session to prevent memory leak.
-                        session.setValid(true);
-                        session.expire();
-                    }
-                    sessionCounter++;
-                }
-            } catch (ClassNotFoundException e) {
-                log.error(sm.getString("standardManager.loading.cnfe", e), e);
-                throw e;
-            } catch (IOException e) {
-                log.error(sm.getString("standardManager.loading.ioe", e), e);
-                throw e;
-            } finally {
-                // Close the input stream
-                try {
-                    ois.close();
-                } catch (IOException f) {
-                    // ignored
-                }
-
-                // Delete the persistent storage file
-                if (file.exists()) {
-                    file.delete();
-                }
-            }
         }
 
         if (log.isDebugEnabled()) {
@@ -326,7 +291,6 @@ public class StandardManager extends Man
      *
      * @exception IOException if an input/output error occurs
      */
-    @SuppressWarnings("null")
     protected void doUnload() throws IOException {
 
         if (log.isDebugEnabled())
@@ -345,52 +309,19 @@ public class StandardManager extends Man
         if (log.isDebugEnabled()) {
             log.debug(sm.getString("standardManager.unloading", pathname));
         }
-        FileOutputStream fos = null;
-        BufferedOutputStream bos = null;
-        ObjectOutputStream oos = null;
-        boolean error = false;
-        try {
-            fos = new FileOutputStream(file.getAbsolutePath());
-            bos = new BufferedOutputStream(fos);
-            oos = new ObjectOutputStream(bos);
-        } catch (IOException e) {
-            error = true;
-            log.error(sm.getString("standardManager.unloading.ioe", e), e);
-            throw e;
-        } finally {
-            if (error) {
-                if (oos != null) {
-                    try {
-                        oos.close();
-                    } catch (IOException ioe) {
-                        // Ignore
-                    }
-                }
-                if (bos != null) {
-                    try {
-                        bos.close();
-                    } catch (IOException ioe) {
-                        // Ignore
-                    }
-                }
-                if (fos != null) {
-                    try {
-                        fos.close();
-                    } catch (IOException ioe) {
-                        // Ignore
-                    }
-                }
-            }
-        }
 
-        // Write the number of active sessions, followed by the details
+        // Keep a note of sessions that are expired
         ArrayList<StandardSession> list = new ArrayList<>();
-        synchronized (sessions) {
-            if (log.isDebugEnabled()) {
-                log.debug("Unloading " + sessions.size() + " sessions");
-            }
-            try {
-                // oos can't be null here
+
+        try (FileOutputStream fos = new 
FileOutputStream(file.getAbsolutePath());
+                BufferedOutputStream bos = new BufferedOutputStream(fos);
+                ObjectOutputStream oos = new ObjectOutputStream(bos)) {
+
+            synchronized (sessions) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Unloading " + sessions.size() + " sessions");
+                }
+                // Write the number of active sessions, followed by the details
                 oos.writeObject(Integer.valueOf(sessions.size()));
                 Iterator<Session> elements = sessions.values().iterator();
                 while (elements.hasNext()) {
@@ -400,25 +331,6 @@ public class StandardManager extends Man
                     session.passivate();
                     session.writeObjectData(oos);
                 }
-            } catch (IOException e) {
-                log.error(sm.getString("standardManager.unloading.ioe", e), e);
-                try {
-                    oos.close();
-                } catch (IOException f) {
-                    // Ignore
-                }
-                throw e;
-            }
-        }
-
-        // Flush and close the output stream
-        try {
-            oos.flush();
-        } finally {
-            try {
-                oos.close();
-            } catch (IOException f) {
-                // Ignore
             }
         }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to