[Mulgara-svn] r2059 - in trunk/src/jar: query/java/org/mulgara/query/operation querylang/java/org/mulgara/protocol/http querylang/java/org/mulgara/store/jxunit resolver/java/org/mulgara/resolver server/java/org/mulgara/server server-http/java/org/mulgara/server/http util/java/org/mulgara/util

pag at mulgara.org pag at mulgara.org
Wed Sep 28 23:44:55 UTC 2011


Author: pag
Date: 2011-09-28 23:44:55 +0000 (Wed, 28 Sep 2011)
New Revision: 2059

Modified:
   trunk/src/jar/query/java/org/mulgara/query/operation/DataInputTx.java
   trunk/src/jar/querylang/java/org/mulgara/protocol/http/ProtocolServlet.java
   trunk/src/jar/querylang/java/org/mulgara/store/jxunit/CopyJX.java
   trunk/src/jar/resolver/java/org/mulgara/resolver/JenaFactoryImpl.java
   trunk/src/jar/server-http/java/org/mulgara/server/http/HttpSessionFactory.java
   trunk/src/jar/server/java/org/mulgara/server/AbstractServer.java
   trunk/src/jar/server/java/org/mulgara/server/HttpServices.java
   trunk/src/jar/util/java/org/mulgara/util/FileUtil.java
Log:
Cleaned up resource closures

Modified: trunk/src/jar/query/java/org/mulgara/query/operation/DataInputTx.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/operation/DataInputTx.java	2011-09-28 23:44:31 UTC (rev 2058)
+++ trunk/src/jar/query/java/org/mulgara/query/operation/DataInputTx.java	2011-09-28 23:44:55 UTC (rev 2059)
@@ -124,7 +124,13 @@
     InputStream inputStream = getLocalInputStream(compressable);
 
     // If the connection is local, then no need to wrap
-    if (!conn.isRemote()) return doTx(conn, inputStream);
+    if (!conn.isRemote()) {
+      try {
+        return doTx(conn, inputStream);
+      } finally {
+        inputStream.close();
+      }
+    }
 
     RemoteInputStreamSrvImpl srv = null;
     RemoteInputStream remoteInputStream = null;

Modified: trunk/src/jar/querylang/java/org/mulgara/protocol/http/ProtocolServlet.java
===================================================================
--- trunk/src/jar/querylang/java/org/mulgara/protocol/http/ProtocolServlet.java	2011-09-28 23:44:31 UTC (rev 2058)
+++ trunk/src/jar/querylang/java/org/mulgara/protocol/http/ProtocolServlet.java	2011-09-28 23:44:55 UTC (rev 2059)
@@ -17,6 +17,7 @@
 package org.mulgara.protocol.http;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
@@ -688,14 +689,18 @@
    */
   protected long loadData(URI graph, BodyPart data, Connection cxt) throws IOException, ServletException, QueryException {
     String contentType = "";
+    InputStream dataStream = null;
     try {
       contentType = data.getContentType();
-      Load loadCmd = new Load(graph, data.getInputStream(), new MimeType(contentType), data.getFileName());
+      dataStream = data.getInputStream();
+      Load loadCmd = new Load(graph, dataStream, new MimeType(contentType), data.getFileName());
       return (Long)loadCmd.execute(cxt);
     } catch (MessagingException e) {
       throw new BadRequestException("Unable to process data for loading: " + e.getMessage());
     } catch (MimeTypeParseException e) {
       throw new BadRequestException("Bad Content Type in request: " + contentType + " (" + e.getMessage() + ")");
+    } finally {
+      if (dataStream != null) dataStream.close();
     }
   }
 

Modified: trunk/src/jar/querylang/java/org/mulgara/store/jxunit/CopyJX.java
===================================================================
--- trunk/src/jar/querylang/java/org/mulgara/store/jxunit/CopyJX.java	2011-09-28 23:44:31 UTC (rev 2058)
+++ trunk/src/jar/querylang/java/org/mulgara/store/jxunit/CopyJX.java	2011-09-28 23:44:55 UTC (rev 2059)
@@ -86,17 +86,19 @@
     OutputStream out =
       new FileOutputStream(new File(destinationURI.toURL().getFile()));
 
-    // Copy from source to destination in 1K chunks
-    byte buffer[] = new byte[1024];
-    int length;
-    while ((length = in.read(buffer, 0, buffer.length)) != -1) {
-      out.write(buffer, 0, length);
+    try {
+      // Copy from source to destination in 1K chunks
+      byte buffer[] = new byte[1024];
+      int length;
+      while ((length = in.read(buffer, 0, buffer.length)) != -1) {
+        out.write(buffer, 0, length);
+      }
+      assert length == -1;
+    } finally {
+      out.close();
+      in.close();
     }
-    assert length == -1;
 
-    out.close();
-    in.close();
-
     // clear out the parameters for subsequent copies
     props.remove(SOURCE);
     props.remove(DESTINATION);

Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/JenaFactoryImpl.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/JenaFactoryImpl.java	2011-09-28 23:44:31 UTC (rev 2058)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/JenaFactoryImpl.java	2011-09-28 23:44:55 UTC (rev 2059)
@@ -27,9 +27,6 @@
 
 package org.mulgara.resolver;
 
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.util.*;
 
 // Third party packages
@@ -74,6 +71,7 @@
   /**
    * Logger. This is named after the class.
    */
+  @SuppressWarnings("unused")
   private final static Logger logger =
       Logger.getLogger(JenaFactoryImpl.class.getName());
 

Modified: trunk/src/jar/server/java/org/mulgara/server/AbstractServer.java
===================================================================
--- trunk/src/jar/server/java/org/mulgara/server/AbstractServer.java	2011-09-28 23:44:31 UTC (rev 2058)
+++ trunk/src/jar/server/java/org/mulgara/server/AbstractServer.java	2011-09-28 23:44:55 UTC (rev 2059)
@@ -42,6 +42,7 @@
 import org.mulgara.config.MulgaraConfig;
 import org.mulgara.query.*;
 import org.mulgara.server.SessionFactory;
+import org.mulgara.util.TempDir;
 
 /**
  * JMX manageable {@link SessionFactory} and transport wrapper. Concrete
@@ -255,10 +256,17 @@
     if (providerClassName == null) throw new IllegalStateException("Must set \"providerClassName\" property");
 
     // Create the directory if necessary
-    if (!dir.exists()) dir.mkdir();
+    if (!dir.exists() && !dir.mkdir()) {
+      logger.fatal("Unable to create database directory: " + dir);
+      throw new Error("Fatal: Unable to create database directory: " + dir);
+    }
 
     // create the temporary directory
-    tempdir.mkdirs();
+    if (!tempdir.mkdirs()) {
+      File newTmp = TempDir.getTempDir();
+      logger.error("Unable to create temporary directory: '" + tempdir + "', using: " + newTmp);
+      tempdir = newTmp;
+    }
 
     // Log provider class name
     if (logger.isInfoEnabled()) logger.info("Provider class is " + providerClassName);

Modified: trunk/src/jar/server/java/org/mulgara/server/HttpServices.java
===================================================================
--- trunk/src/jar/server/java/org/mulgara/server/HttpServices.java	2011-09-28 23:44:31 UTC (rev 2058)
+++ trunk/src/jar/server/java/org/mulgara/server/HttpServices.java	2011-09-28 23:44:55 UTC (rev 2059)
@@ -513,17 +513,23 @@
     if (resourceUrl == null) return null;
 
     // open the resource and the file where it will be copied to
-    InputStream in = resourceUrl.openStream();
     File outFile = new File(TempDir.getTempDir(), new File(resourceName).getName());
     logger.info("Extracting: " + resourceUrl + " to " + outFile);
-    OutputStream out = new FileOutputStream(outFile);
 
-    // loop to copy from the resource to the output file
-    byte[] buffer = new byte[10240];
-    int len;
-    while ((len = in.read(buffer)) >= 0) out.write(buffer, 0, len);
-    in.close();
-    out.close();
+    InputStream in = null;
+    OutputStream out = null;
+    try {
+      in = resourceUrl.openStream();
+      out = new FileOutputStream(outFile);
+  
+      // loop to copy from the resource to the output file
+      byte[] buffer = new byte[10240];
+      int len;
+      while ((len = in.read(buffer)) >= 0) out.write(buffer, 0, len);
+    } finally {
+      if (in != null) in.close();
+      if (out != null) out.close();
+    }
 
     // return the file that the resource was extracted to
     return outFile.getAbsolutePath();

Modified: trunk/src/jar/server-http/java/org/mulgara/server/http/HttpSessionFactory.java
===================================================================
--- trunk/src/jar/server-http/java/org/mulgara/server/http/HttpSessionFactory.java	2011-09-28 23:44:31 UTC (rev 2058)
+++ trunk/src/jar/server-http/java/org/mulgara/server/http/HttpSessionFactory.java	2011-09-28 23:44:55 UTC (rev 2059)
@@ -223,23 +223,16 @@
 
         // Check for failure.
         if (urlConnection.getResponseCode() != HttpURLConnection.HTTP_OK) {
-
           throw new QueryException(urlConnection.getResponseMessage());
         }
 
-        if (logger.isDebugEnabled()) {
+        if (logger.isDebugEnabled()) logger.debug("Connected to URL: " + serverURL);
 
-          logger.debug("Connected to URL: " + serverURL);
-        }
-
         // Hopefully this will follow redirects.
         serverURL = urlConnection.getURL();
 
-        if (logger.isDebugEnabled()) {
+        if (logger.isDebugEnabled()) logger.debug("URL is now: " + serverURL);
 
-          logger.debug("URL is now: " + serverURL);
-        }
-
         // Send the request.
         oos = new ObjectOutputStream(urlConnection.getOutputStream());
         oos.writeObject(methodName);
@@ -255,64 +248,32 @@
         boolean exceptionOccurred = ois.readBoolean();
 
         if (exceptionOccurred) {
-
           // Exception thrown.  Get the exception.
           Object exception = ois.readObject();
-
-          if (! (exception instanceof Throwable)) {
-
-            throw new RuntimeException(exception.toString());
-          }
-
-          throw (Throwable) exception;
+          if (!(exception instanceof Throwable)) throw new RuntimeException(exception.toString());
+          throw (Throwable)exception;
         }
 
-        if (method.getReturnType() == Void.TYPE) {
+        if (method.getReturnType() == Void.TYPE) return null;
 
-          return null;
-        }
-
         return ois.readObject();
-      }
-      catch (QueryException ex) {
 
-        throw ex;
-
-        // rethrow
-      }
-      catch (RuntimeException ex) {
-
-        throw ex;
-
-        // rethrow
-      }
-      catch (Throwable ex) {
-
+      } catch (QueryException ex) {
+        throw ex; // rethrow
+      } catch (RuntimeException ex) {
+        throw ex; // rethrow
+      } catch (Throwable ex) {
         throw new QueryException(ex.toString());
-      }
-      finally {
-
-        if (oos != null) {
-
+      } finally {
+        try {
+          if (oos != null) oos.close();
+        } catch (IOException ex) {
+          logger.error("Exception while trying to close ObjectOutputStream.");
+          logger.error(ex);
+        } finally {
           try {
-
-            oos.close();
-          }
-          catch (IOException ex) {
-
-            logger.error("Exception while trying to close ObjectOutputStream.");
-            logger.error(ex);
-          }
-        }
-
-        if (ois != null) {
-
-          try {
-
-            ois.close();
-          }
-          catch (IOException ex) {
-
+            if (ois != null) ois.close();
+          } catch (IOException ex) {
             logger.error("Exception while trying to close ObjectInputStream.");
             logger.error(ex);
           }

Modified: trunk/src/jar/util/java/org/mulgara/util/FileUtil.java
===================================================================
--- trunk/src/jar/util/java/org/mulgara/util/FileUtil.java	2011-09-28 23:44:31 UTC (rev 2058)
+++ trunk/src/jar/util/java/org/mulgara/util/FileUtil.java	2011-09-28 23:44:55 UTC (rev 2059)
@@ -122,15 +122,20 @@
    */
   public static String copyFile(File src, File dest) throws IOException {
     if (dest.isDirectory()) dest = new File(dest, src.getName());
-    InputStream in = new FileInputStream(src);
-    OutputStream out = new FileOutputStream(dest);
-    byte[] buffer = new byte[BUFFER_SIZE];
-    int len;
-    while ((len = in.read(buffer)) >= 0) {
-      if (len != 0) out.write(buffer, 0, len);
+    InputStream in = null;
+    OutputStream out = null;
+    try {
+      in = new FileInputStream(src);
+      out = new FileOutputStream(dest);
+      byte[] buffer = new byte[BUFFER_SIZE];
+      int len;
+      while ((len = in.read(buffer)) >= 0) {
+        if (len != 0) out.write(buffer, 0, len);
+      }
+    } finally {
+      if (in != null) in.close();
+      if (out != null) out.close();
     }
-    in.close();
-    out.close();
     return dest.getPath();
   }
 



More information about the Mulgara-svn mailing list