[teiid-commits] teiid SVN: r3860 - in branches/7.7.x: common-core/src/main/java/org/teiid/core/types/basic and 3 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Thu Feb 9 10:14:58 EST 2012


Author: shawkins
Date: 2012-02-09 10:14:57 -0500 (Thu, 09 Feb 2012)
New Revision: 3860

Modified:
   branches/7.7.x/common-core/src/main/java/org/teiid/core/types/ClobImpl.java
   branches/7.7.x/common-core/src/main/java/org/teiid/core/types/ClobType.java
   branches/7.7.x/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java
   branches/7.7.x/common-core/src/main/java/org/teiid/core/types/basic/StringToClobTransform.java
   branches/7.7.x/common-core/src/test/java/org/teiid/core/types/basic/TestTransforms.java
   branches/7.7.x/connectors/translator-ws/src/main/java/org/teiid/translator/ws/BinaryWSProcedureExecution.java
   branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java
Log:
TEIID-1933 removing usage of serialclob

Modified: branches/7.7.x/common-core/src/main/java/org/teiid/core/types/ClobImpl.java
===================================================================
--- branches/7.7.x/common-core/src/main/java/org/teiid/core/types/ClobImpl.java	2012-02-09 03:08:42 UTC (rev 3859)
+++ branches/7.7.x/common-core/src/main/java/org/teiid/core/types/ClobImpl.java	2012-02-09 15:14:57 UTC (rev 3860)
@@ -23,17 +23,17 @@
 package org.teiid.core.types;
 
 import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.Reader;
+import java.io.StringReader;
 import java.io.Writer;
 import java.nio.charset.Charset;
 import java.sql.Clob;
 import java.sql.SQLException;
 
-import javax.sql.rowset.serial.SerialClob;
-
 import org.teiid.core.CorePlugin;
 import org.teiid.core.util.ObjectConverterUtil;
 import org.teiid.core.util.ReaderInputStream;
@@ -83,7 +83,30 @@
 		super(streamFactory);
 		this.len = length;
 	}
+    
+    public ClobImpl(final char[] chars) {
+    	this(new InputStreamFactory() {
+    		
+    		String str = new String(chars);
 
+			@Override
+			public InputStream getInputStream() throws IOException {
+				return new ByteArrayInputStream(str.getBytes());
+			}
+			
+			@Override
+			public Reader getCharacterStream() throws IOException {
+				return new StringReader(str);
+			}
+			
+			@Override
+			public StorageMode getStorageMode() {
+				return StorageMode.MEMORY;
+			}
+    		
+    	}, chars.length);
+    }
+
 	/**
      * Gets the <code>CLOB</code> value designated by this <code>Clob</code>
      * object as a stream of Ascii bytes.
@@ -202,7 +225,7 @@
     	if (searchstr == null) {
             return -1;
         }
-    	return position(new SerialClob(searchstr.toCharArray()), start);
+    	return position(new ClobImpl(searchstr.toCharArray()), start);
     }
     	    
 	public Reader getCharacterStream(long arg0, long arg1) throws SQLException {
@@ -230,4 +253,8 @@
 		throw SqlUtil.createFeatureNotSupportedException();
 	}
 
+	public static Clob createClob(char[] chars) {
+		return new ClobImpl(chars);
+	}
+
 }

Modified: branches/7.7.x/common-core/src/main/java/org/teiid/core/types/ClobType.java
===================================================================
--- branches/7.7.x/common-core/src/main/java/org/teiid/core/types/ClobType.java	2012-02-09 03:08:42 UTC (rev 3859)
+++ branches/7.7.x/common-core/src/main/java/org/teiid/core/types/ClobType.java	2012-02-09 15:14:57 UTC (rev 3860)
@@ -204,6 +204,14 @@
 		return this.reference.getCharacterStream(pos, len);
 	}
 	
+	/**
+	 * 
+	 * @param chars
+	 * @return
+	 * @deprecated
+	 * @see use {@link ClobImpl#createClob(char[])} instead
+	 */
+	@Deprecated
 	public static SerialClob createClob(char[] chars) {
 		try {
 			return new SerialClob(chars);
@@ -218,11 +226,7 @@
 		for (int i = 0; i < chars.length; i++) {
 			chars[i] = in.readChar();
 		}
-		try {
-			this.reference = new SerialClob(chars);
-		} catch (SQLException e) {
-			throw new IOException(e);
-		}
+		this.reference = ClobImpl.createClob(chars);
 	}
 	
 	/**

Modified: branches/7.7.x/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java
===================================================================
--- branches/7.7.x/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java	2012-02-09 03:08:42 UTC (rev 3859)
+++ branches/7.7.x/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java	2012-02-09 15:14:57 UTC (rev 3860)
@@ -780,7 +780,7 @@
 		sourceConverters.put(char[].class, new SourceTransform<char[], ClobType>() {
 			@Override
 			public ClobType transform(char[] value) {
-				return new ClobType(ClobType.createClob(value));
+				return new ClobType(ClobImpl.createClob(value));
 			}
 		});
 		sourceConverters.put(Blob.class, new SourceTransform<Blob, BlobType>() {

Modified: branches/7.7.x/common-core/src/main/java/org/teiid/core/types/basic/StringToClobTransform.java
===================================================================
--- branches/7.7.x/common-core/src/main/java/org/teiid/core/types/basic/StringToClobTransform.java	2012-02-09 03:08:42 UTC (rev 3859)
+++ branches/7.7.x/common-core/src/main/java/org/teiid/core/types/basic/StringToClobTransform.java	2012-02-09 15:14:57 UTC (rev 3860)
@@ -22,6 +22,7 @@
 
 package org.teiid.core.types.basic;
 
+import org.teiid.core.types.ClobImpl;
 import org.teiid.core.types.ClobType;
 import org.teiid.core.types.Transform;
 import org.teiid.core.types.TransformationException;
@@ -37,8 +38,9 @@
 	 * the transformation fails
 	 */
 	public Object transformDirect(Object value) throws TransformationException {
-        String contents = (String)value;                
-		return new ClobType(ClobType.createClob(contents.toCharArray()));
+        String contents = (String)value;
+        //TODO: if the value is too large, we should store in a file buffer
+		return new ClobType(ClobImpl.createClob(contents.toCharArray()));
 	}
 
 	/**

Modified: branches/7.7.x/common-core/src/test/java/org/teiid/core/types/basic/TestTransforms.java
===================================================================
--- branches/7.7.x/common-core/src/test/java/org/teiid/core/types/basic/TestTransforms.java	2012-02-09 03:08:42 UTC (rev 3859)
+++ branches/7.7.x/common-core/src/test/java/org/teiid/core/types/basic/TestTransforms.java	2012-02-09 15:14:57 UTC (rev 3860)
@@ -31,6 +31,7 @@
 import java.sql.Timestamp;
 
 import org.junit.Test;
+import org.teiid.core.types.ClobImpl;
 import org.teiid.core.types.ClobType;
 import org.teiid.core.types.DataTypeManager;
 import org.teiid.core.types.SQLXMLImpl;
@@ -146,7 +147,7 @@
         /*timestamp-13*/{new Timestamp(System.currentTimeMillis()), new Timestamp(System.currentTimeMillis()), new Timestamp(System.currentTimeMillis())},
         /*object-14*/  {null, null, null},  
         /*blob-15*/    {null, null, null},
-        /*clob-16*/    {new ClobType(ClobType.createClob("ClobData".toCharArray())), new ClobType(ClobType.createClob("0".toCharArray())), new ClobType(ClobType.createClob("123".toCharArray()))}, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
+        /*clob-16*/    {new ClobType(ClobImpl.createClob("ClobData".toCharArray())), new ClobType(ClobImpl.createClob("0".toCharArray())), new ClobType(ClobImpl.createClob("123".toCharArray()))}, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
         /*xml-17*/     {new XMLType(new SQLXMLImpl("<foo>bar</foo>")), new XMLType(new SQLXMLImpl("<foo>bar</foo>")), new XMLType(new SQLXMLImpl("<foo>bar</foo>"))}, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
      }; 
     

Modified: branches/7.7.x/connectors/translator-ws/src/main/java/org/teiid/translator/ws/BinaryWSProcedureExecution.java
===================================================================
--- branches/7.7.x/connectors/translator-ws/src/main/java/org/teiid/translator/ws/BinaryWSProcedureExecution.java	2012-02-09 03:08:42 UTC (rev 3859)
+++ branches/7.7.x/connectors/translator-ws/src/main/java/org/teiid/translator/ws/BinaryWSProcedureExecution.java	2012-02-09 15:14:57 UTC (rev 3860)
@@ -24,19 +24,18 @@
 
 import java.sql.Blob;
 import java.sql.Clob;
-import java.sql.SQLException;
 import java.sql.SQLXML;
 import java.util.Arrays;
 import java.util.List;
 
 import javax.activation.DataSource;
-import javax.sql.rowset.serial.SerialClob;
 import javax.xml.ws.Dispatch;
 import javax.xml.ws.WebServiceException;
 import javax.xml.ws.Service.Mode;
 import javax.xml.ws.handler.MessageContext;
 import javax.xml.ws.http.HTTPBinding;
 
+import org.teiid.core.types.ClobImpl;
 import org.teiid.core.types.InputStreamFactory;
 import org.teiid.language.Argument;
 import org.teiid.language.Call;
@@ -90,7 +89,7 @@
 
 			DataSource ds = null;
 			if (payload instanceof String) {
-				ds = new InputStreamFactory.ClobInputStreamFactory(new SerialClob(((String)payload).toCharArray()));
+				ds = new InputStreamFactory.ClobInputStreamFactory(ClobImpl.createClob(((String)payload).toCharArray()));
 			} else if (payload instanceof SQLXML) {
 				ds = new InputStreamFactory.SQLXMLInputStreamFactory((SQLXML)payload);
 			} else if (payload instanceof Clob) {
@@ -100,8 +99,6 @@
 			}
 			
 			returnValue = dispatch.invoke(ds);
-		} catch (SQLException e) {
-			throw new TranslatorException(e);
 		} catch (WebServiceException e) {
 			throw new TranslatorException(e);
 		} 

Modified: branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java	2012-02-09 03:08:42 UTC (rev 3859)
+++ branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java	2012-02-09 15:14:57 UTC (rev 3860)
@@ -35,8 +35,6 @@
 import java.util.Map;
 import java.util.TreeMap;
 
-import javax.sql.rowset.serial.SerialClob;
-
 import org.teiid.adminapi.impl.ModelMetaData;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.api.exception.query.QueryMetadataException;
@@ -48,6 +46,7 @@
 import org.teiid.core.TeiidComponentException;
 import org.teiid.core.TeiidProcessingException;
 import org.teiid.core.types.BlobType;
+import org.teiid.core.types.ClobImpl;
 import org.teiid.core.types.ClobType;
 import org.teiid.core.types.SQLXMLImpl;
 import org.teiid.core.types.XMLType;
@@ -63,18 +62,7 @@
 import org.teiid.events.EventDistributor;
 import org.teiid.logging.LogManager;
 import org.teiid.logging.MessageLevel;
-import org.teiid.metadata.AbstractMetadataRecord;
-import org.teiid.metadata.Column;
-import org.teiid.metadata.ColumnStats;
-import org.teiid.metadata.Datatype;
-import org.teiid.metadata.ForeignKey;
-import org.teiid.metadata.KeyRecord;
-import org.teiid.metadata.MetadataRepository;
-import org.teiid.metadata.Procedure;
-import org.teiid.metadata.ProcedureParameter;
-import org.teiid.metadata.Schema;
-import org.teiid.metadata.Table;
-import org.teiid.metadata.TableStats;
+import org.teiid.metadata.*;
 import org.teiid.query.QueryPlugin;
 import org.teiid.query.metadata.CompositeMetadataStore;
 import org.teiid.query.metadata.TempMetadataID;
@@ -328,11 +316,7 @@
 						String value = entry.getValue();
 						Clob clobValue = null;
 						if (value != null) {
-							try {
-								clobValue = new ClobType(new SerialClob(value.toCharArray()));
-							} catch (SQLException e) {
-								throw new TeiidProcessingException(e);
-							}
+							clobValue = new ClobType(ClobImpl.createClob(value.toCharArray()));
 						}
 						rows.add(Arrays.asList(entry.getKey(), entry.getValue(), record.getUUID(), oid++, clobValue));
 					}
@@ -440,7 +424,7 @@
 							if (result == null) {
 								rows.add(Arrays.asList((Clob)null));
 							} else {
-								rows.add(Arrays.asList(new ClobType(new SerialClob(result.toCharArray()))));
+								rows.add(Arrays.asList(new ClobType(ClobImpl.createClob(result.toCharArray()))));
 							}
 						}
 						return new CollectionTupleSource(rows.iterator());



More information about the teiid-commits mailing list