You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2009/08/31 21:11:54 UTC
svn commit: r809694 -
/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/MemoryMapProvider.java
Author: mturk
Date: Mon Aug 31 19:11:54 2009
New Revision: 809694
URL: http://svn.apache.org/viewvc?rev=809694&view=rev
Log:
Implement common exception throw mechanism - Always clean up, but remember exceptions on the way
Modified:
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/MemoryMapProvider.java
Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/MemoryMapProvider.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/MemoryMapProvider.java?rev=809694&r1=809693&r2=809694&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/MemoryMapProvider.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/MemoryMapProvider.java Mon Aug 31 19:11:54 2009
@@ -98,6 +98,7 @@
public void close()
throws IOException
{
+ Throwable ce = null;
for (Enumeration<Pointer> e = mappedRegions.elements(); e.hasMoreElements();) {
try {
Pointer ptr = e.nextElement();
@@ -109,12 +110,21 @@
if (!ptr.isNull()) {
ptr.free();
}
- } catch (Throwable t) {
- // TODO: Collect and rethrow at the end.
- //
+ } catch (Throwable te) {
+ if (ce == null)
+ ce = te;
}
}
mappedRegions.clear();
- map.close();
+ if (map.valid())
+ map.close();
+ else
+ throw new ClosedDescriptorException();
+ if (ce != null) {
+ /* One of the pointers has thrown an Exception.
+ * Rethrow as IOException
+ */
+ throw new IOException(ce.getMessage());
+ }
}
}