[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