You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ka...@apache.org on 2013/04/10 17:00:28 UTC
svn commit: r1466503 - in
/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc:
EncryptedLOBFile.java LOBStreamControl.java
Author: kahatlen
Date: Wed Apr 10 15:00:28 2013
New Revision: 1466503
URL: http://svn.apache.org/r1466503
Log:
DERBY-6161: Simplify code that handles LOB files
- remove EncryptedLOBFile.close() and let it inherit from super class
- move code that doesn't need privileges out of privileged block in
LOBStreamControl.init()
- remove unnecessary exception handling in privileged block in
LOBStreamControl.deleteFile()
- fix typos and misformatted @throws clauses in javadoc comments
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EncryptedLOBFile.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStreamControl.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EncryptedLOBFile.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EncryptedLOBFile.java?rev=1466503&r1=1466502&r2=1466503&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EncryptedLOBFile.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EncryptedLOBFile.java Wed Apr 10 15:00:28 2013
@@ -130,7 +130,7 @@ class EncryptedLOBFile extends LOBFile {
* Writes one byte into the file.
* @param b byte value
* @throws IOException if disk operation fails
- * @throws StandardException if error occured during encryption/decryption
+ * @throws StandardException if error occurred during encryption/decryption
*/
void write (int b) throws IOException, StandardException {
long length = super.length();
@@ -174,7 +174,7 @@ class EncryptedLOBFile extends LOBFile {
* data should be written to the file
* @param len number of bytes to be written
* @throws IOException if disk operation fails
- * @throws StandardException if error occured during encryption/decryption
+ * @throws StandardException if error occurred during encryption/decryption
*/
void write(byte[] b, int off, int len)
throws IOException, StandardException {
@@ -248,25 +248,17 @@ class EncryptedLOBFile extends LOBFile {
* the file if the total length exceeds the file size.
* @param b byte array to be written
* @throws IOException if disk operation fails
- * @throws StandardException if error occured during encryption/decryption
+ * @throws StandardException if error occurred during encryption/decryption
*/
void write(byte[] b) throws IOException, StandardException {
write (b, 0, b.length);
}
/**
- * closes the file.
- * @throws IOException
- */
- void close() throws IOException {
- super.close();
- }
-
- /**
* Reads one byte from file.
* @return byte
* @throws IOException if disk operation fails
- * @throws StandardException if error occured during encryption/decryption
+ * @throws StandardException if error occurred during decryption
*/
int readByte() throws IOException, StandardException {
long fileLength = super.length();
@@ -289,7 +281,7 @@ class EncryptedLOBFile extends LOBFile {
* @param len number of bytes to be read
* @return number of bytes read
* @throws IOException if disk operation fails
- * @throws StandardException if error occured during encryption/decryption
+ * @throws StandardException if error occurred during decryption
*/
int read(byte[] buff, int off, int len)
throws IOException, StandardException {
@@ -337,7 +329,7 @@ class EncryptedLOBFile extends LOBFile {
*
* @param size new file size. Must be lower than file length.
* @throws IOException if file i/o fails
- * @throws StandardException if error occured during encryption/decryption
+ * @throws StandardException if error occurred during decryption
*/
void setLength(long size) throws IOException, StandardException {
long fileLength = super.length();
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStreamControl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStreamControl.java?rev=1466503&r1=1466502&r2=1466503&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStreamControl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/LOBStreamControl.java Wed Apr 10 15:00:28 2013
@@ -28,6 +28,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.io.UTFDataFormatException;
import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import org.apache.derby.iapi.error.StandardException;
@@ -55,7 +56,7 @@ import org.apache.derby.shared.common.re
* blob data irrespective of if its in memory or in file.
*/
-class LOBStreamControl {
+final class LOBStreamControl {
private LOBFile tmpFile;
private byte [] dataBytes = new byte [0];
private boolean isBytes = true;
@@ -92,34 +93,30 @@ class LOBStreamControl {
private void init(byte [] b, long len)
throws IOException, StandardException {
+ Object monitor = Monitor.findService(
+ Property.DATABASE_MODULE, conn.getDBName());
+ final DataFactory df = (DataFactory) Monitor.findServiceModule(
+ monitor, DataFactory.MODULE);
try {
AccessController.doPrivileged (new PrivilegedExceptionAction() {
- public Object run() throws IOException, StandardException {
- Object monitor = Monitor.findService(
- Property.DATABASE_MODULE, conn.getDBName());
- DataFactory df = (DataFactory) Monitor.findServiceModule(
- monitor, DataFactory.MODULE);
+ public Object run() throws IOException {
//create a temporary file
StorageFile lobFile =
df.getStorageFactory().createTemporaryFile("lob", null);
if (df.databaseEncrypted()) {
tmpFile = new EncryptedLOBFile (lobFile, df);
- }
- else
+ } else {
tmpFile = new LOBFile (lobFile);
- conn.addLobFile(tmpFile);
+ }
return null;
}
});
}
catch (PrivilegedActionException pae) {
- Exception e = pae.getException();
- if (e instanceof StandardException)
- throw (StandardException)e;
- if (e instanceof IOException)
- throw (IOException) e;
- throw Util.newIOException(e);
+ throw (IOException) pae.getCause();
}
+
+ conn.addLobFile(tmpFile);
isBytes = false;
//now this call will write into the file
if (len != 0)
@@ -196,8 +193,9 @@ class LOBStreamControl {
* Writes one byte.
* @param b byte
* @param pos
- * @return new postion
- * @throws IOException, StandardException
+ * @return new position
+ * @throws IOException if writing to the LOB file fails
+ * @throws StandardException if encrypting/decrypting the LOB file fails
*/
synchronized long write(int b, long pos)
throws IOException, StandardException {
@@ -257,9 +255,10 @@ class LOBStreamControl {
/**
* Reads one byte.
- * @param pos postion from where to read
+ * @param pos position from where to read
* @return byte
- * @throws IOException, StandardException
+ * @throws IOException if reading the LOB file fails
+ * @throws StandardException if decrypting an encrypted LOB file fails
*/
synchronized int read(long pos)
throws IOException, StandardException {
@@ -294,9 +293,10 @@ class LOBStreamControl {
* @param buff array into the bytes will be copied
* @param off offset from where the array has to be populated
* @param len number of bytes to read
- * @param pos initial postion before reading
- * @return number new postion
- * @throws IOException, StandardException
+ * @param pos initial position before reading
+ * @return number new position
+ * @throws IOException if reading the LOB file fails
+ * @throws StandardException if decrypting an encrypted LOB file fails
*/
synchronized int read(byte[] buff, int off, int len, long pos)
throws IOException, StandardException {
@@ -340,7 +340,7 @@ class LOBStreamControl {
/**
* Resets the size.
- * @param size new size should be smaller than exisiting size
+ * @param size new size should be smaller than existing size
* @throws IOException
*/
synchronized void truncate(long size)
@@ -373,7 +373,8 @@ class LOBStreamControl {
* @param inStream the stream to copy from
* @param length number of bytes to be copied, or {@code Long.MAX_VALUE} to
* copy everything until EOF is reached
- * @throws IOException, StandardException
+ * @throws IOException if reading or writing a LOB file fails
+ * @throws StandardException if encrypting or decrypting a LOB file fails
*/
synchronized void copyData(InputStream inStream, long length)
throws IOException, StandardException {
@@ -492,27 +493,18 @@ class LOBStreamControl {
free();
}
- private void deleteFile (StorageFile file) throws IOException {
- try {
- final StorageFile sf = file;
- AccessController.doPrivileged(new PrivilegedExceptionAction() {
- public Object run() throws IOException {
- sf.delete();
- return null;
- }
- });
- } catch (PrivilegedActionException pae) {
- Exception e = pae.getException();
- if (e instanceof IOException)
- throw (IOException) e;
- if (e instanceof RuntimeException)
- throw (RuntimeException) e;
- throw Util.newIOException(e);
- }
+ private void deleteFile(final StorageFile file) {
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ file.delete();
+ return null;
+ }
+ });
}
+
/**
* Invalidates all the variables and closes file handle if open.
- * @throws IOexception
+ * @throws IOException if closing the file fails
*/
void free() throws IOException {
dataBytes = null;
@@ -561,7 +553,7 @@ class LOBStreamControl {
* @param stPos inclusive starting position of current block
* @param endPos exclusive end position of current block
* @return Current position after write.
- * @throws IOExcepton if writing to temporary file fails
+ * @throws IOException if writing to the temporary file fails
* @throws StandardException
*/
synchronized long replaceBytes (byte [] buf, long stPos, long endPos)
@@ -623,7 +615,7 @@ class LOBStreamControl {
}
/**
- * Returns the running secquence number to check if the lob is updated since
+ * Returns the running sequence number to check if the lob is updated since
* last access.
*
* @return The current update sequence number.