[teiid-commits] teiid SVN: r4415 - in branches/7.7.x/engine/src: test/java/org/teiid/common/buffer and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon Sep 10 09:58:25 EDT 2012


Author: jolee
Date: 2012-09-10 09:58:25 -0400 (Mon, 10 Sep 2012)
New Revision: 4415

Modified:
   branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java
   branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java
   branches/7.7.x/engine/src/test/java/org/teiid/common/buffer/TestLobManager.java
Log:
TEIID-2147 fixing the reported storage mode for the filestore lobs

Modified: branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java	2012-09-10 13:31:50 UTC (rev 4414)
+++ branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java	2012-09-10 13:58:25 UTC (rev 4415)
@@ -42,6 +42,7 @@
 		private int count;
 		private boolean bytesWritten;
 		private boolean closed;
+		private byte[] singleByte = new byte[1];
 		
 		public FileStoreOutputStream(int size) {
 			this.buffer = new byte[size];
@@ -49,7 +50,8 @@
 		
 		@Override
 		public void write(int b) throws IOException {
-			write(new byte[b], 0, 1);
+			singleByte[0] = (byte)b;
+			write(singleByte, 0, 1);
 		}
 
 		@Override

Modified: branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java	2012-09-10 13:31:50 UTC (rev 4414)
+++ branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java	2012-09-10 13:58:25 UTC (rev 4415)
@@ -90,12 +90,13 @@
 
 	@Override
 	public void free() throws IOException {
+		fsos = null;
 		lobBuffer.remove();
 	}
 	
 	@Override
 	public StorageMode getStorageMode() {
-		if (fsos == null) {
+		if (fsos == null || fsos.bytesWritten()) {
 			return StorageMode.PERSISTENT;
 		}
 		return StorageMode.MEMORY;

Modified: branches/7.7.x/engine/src/test/java/org/teiid/common/buffer/TestLobManager.java
===================================================================
--- branches/7.7.x/engine/src/test/java/org/teiid/common/buffer/TestLobManager.java	2012-09-10 13:31:50 UTC (rev 4414)
+++ branches/7.7.x/engine/src/test/java/org/teiid/common/buffer/TestLobManager.java	2012-09-10 13:58:25 UTC (rev 4415)
@@ -31,12 +31,14 @@
 import java.util.List;
 
 import org.junit.Test;
+import org.teiid.common.buffer.FileStore.FileStoreOutputStream;
 import org.teiid.common.buffer.LobManager.ReferenceMode;
 import org.teiid.common.buffer.impl.BufferManagerImpl;
 import org.teiid.core.types.BlobImpl;
 import org.teiid.core.types.BlobType;
 import org.teiid.core.types.ClobImpl;
 import org.teiid.core.types.ClobType;
+import org.teiid.core.types.DataTypeManager;
 import org.teiid.core.types.InputStreamFactory;
 import org.teiid.core.types.Streamable;
 import org.teiid.core.util.ObjectConverterUtil;
@@ -65,12 +67,25 @@
 				return new ReaderInputStream(new StringReader("Blob contents Two"),  Charset.forName(Streamable.ENCODING));
 			}
 			
-		}));		
+		}));
 		
-		LobManager lobManager = new LobManager(new int[] {0, 1}, fs);
+		FileStore fs1 = buffMgr.createFileStore("blob");
+		FileStoreInputStreamFactory fsisf = new FileStoreInputStreamFactory(fs1, Streamable.ENCODING);
+		FileStoreOutputStream fsos = fsisf.getOuputStream();
+		byte[] b = new byte[DataTypeManager.MAX_LOB_MEMORY_BYTES + 1];
+		fsos.write(b);
+		fsos.close();
+		BlobType blob1 = new BlobType(new BlobImpl(fsisf));		
+		
+		assertNotNull(blob1.getReferenceStreamId());
+		
+		LobManager lobManager = new LobManager(new int[] {0, 1, 2}, fs);
 		lobManager.setMaxMemoryBytes(4);
-		List<?> tuple = Arrays.asList(clob, blob);
+		List<?> tuple = Arrays.asList(clob, blob, blob1);
 		lobManager.updateReferences(tuple, ReferenceMode.CREATE);
+		
+		assertNotNull(blob1.getReferenceStreamId());
+		
 		lobManager.persist();
 		
 		Streamable<?>lob = lobManager.getLobReference(clob.getReferenceStreamId());



More information about the teiid-commits mailing list