[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