Author: shawkins
Date: 2010-12-23 21:09:29 -0500 (Thu, 23 Dec 2010)
New Revision: 2802
Added:
trunk/build/kits/jboss-container/teiid-examples/jca/odbc-ds.xml
Removed:
trunk/runtime/src/main/java/org/teiid/logging/CommonsLogManagerAdapter.java
trunk/runtime/src/main/resources/commons-logging.properties
Modified:
trunk/client/src/main/java/org/teiid/jdbc/PreparedStatementImpl.java
trunk/client/src/main/java/org/teiid/net/socket/SocketServerConnectionFactory.java
trunk/client/src/main/java/org/teiid/netty/handler/codec/serialization/CompactObjectOutputStream.java
trunk/client/src/test/java/org/teiid/jdbc/TestPreparedStatement.java
trunk/client/src/test/java/org/teiid/netty/handler/codec/serialization/TestObjectDecoderInputStream.java
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Util.java
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java
trunk/documentation/reference/src/main/docbook/en-US/content/system_schema.xml
trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
trunk/engine/src/main/java/org/teiid/dqp/internal/process/TransactionServerImpl.java
trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java
trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java
trunk/runtime/src/main/java/org/teiid/logging/Log4jListener.java
trunk/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java
trunk/runtime/src/main/java/org/teiid/transport/ClientServiceRegistry.java
trunk/runtime/src/main/java/org/teiid/transport/ClientServiceRegistryImpl.java
trunk/runtime/src/main/java/org/teiid/transport/ODBCSocketListener.java
trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties
Log:
forward merge of 7.1.1
Copied: trunk/build/kits/jboss-container/teiid-examples/jca/odbc-ds.xml (from rev 2799,
branches/7.1.x/build/kits/jboss-container/teiid-examples/jca/odbc-ds.xml)
===================================================================
--- trunk/build/kits/jboss-container/teiid-examples/jca/odbc-ds.xml
(rev 0)
+++ trunk/build/kits/jboss-container/teiid-examples/jca/odbc-ds.xml 2010-12-24 02:09:29
UTC (rev 2802)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<datasources>
+ <!-- Sample data source using JDBC-ODBC bridge to connect to ODBC source -->
+ <no-tx-datasource>
+ <jndi-name>odbcDS</jndi-name>
+
+ <!-- Create a DSN using ODBC driver manager, and replace {DSN} below with your
DSN name -->
+ <connection-url>jdbc:odbc:{DSN}</connection-url>
+
+ <!-- For DSN less connection URL use the below form to connect to a Excel
Sheet
+ <connection-url>jdbc:odbc:Driver={Microsoft Excel Driver
(*.xls)};Dbq=c:\ODBC\ExcelData.xls</connection-url>
+ -->
+
+ <driver-class>sun.jdbc.odbc.JdbcOdbcDriver</driver-class>
+
+ <transaction-isolation>TRANSACTION_NONE</transaction-isolation>
+ <min-pool-size>1</min-pool-size>
+ <max-pool-size>1</max-pool-size>
+ <idle-timeout-minutes>5</idle-timeout-minutes>
+ </no-tx-datasource>
+
+</datasources>
\ No newline at end of file
Modified: trunk/client/src/main/java/org/teiid/jdbc/PreparedStatementImpl.java
===================================================================
--- trunk/client/src/main/java/org/teiid/jdbc/PreparedStatementImpl.java 2010-12-23
23:45:44 UTC (rev 2801)
+++ trunk/client/src/main/java/org/teiid/jdbc/PreparedStatementImpl.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -695,6 +695,10 @@
public void setBlob(int parameterIndex, final InputStream inputStream)
throws SQLException {
+ if (inputStream == null) {
+ this.setObject(parameterIndex, null);
+ return;
+ }
this.setObject(parameterIndex, new BlobImpl(new InputStreamFactory() {
@Override
public InputStream getInputStream() throws IOException {
@@ -718,6 +722,10 @@
}
public void setClob(int parameterIndex, final Reader reader) throws SQLException {
+ if (reader == null) {
+ this.setObject(parameterIndex, null);
+ return;
+ }
this.setObject(parameterIndex, new ClobImpl(new InputStreamFactory() {
@Override
Modified:
trunk/client/src/main/java/org/teiid/net/socket/SocketServerConnectionFactory.java
===================================================================
---
trunk/client/src/main/java/org/teiid/net/socket/SocketServerConnectionFactory.java 2010-12-23
23:45:44 UTC (rev 2801)
+++
trunk/client/src/main/java/org/teiid/net/socket/SocketServerConnectionFactory.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -210,6 +210,7 @@
try {
logon.assertIdentity(session);
logon.ping();
+ log.log(Level.FINER, "issueing ping for session:", session);
//$NON-NLS-1$
} catch (InvalidSessionException e) {
}
}
@@ -219,6 +220,7 @@
sessionStrings.add(session.getSessionID());
}
logon.ping(sessionStrings);
+ log.log(Level.FINER, "issueing ping for sessions:", sessionStrings);
//$NON-NLS-1$
}
} catch (Exception e) {
log.log(Level.WARNING, "Error performing keep-alive ping", e);
//$NON-NLS-1$
Modified:
trunk/client/src/main/java/org/teiid/netty/handler/codec/serialization/CompactObjectOutputStream.java
===================================================================
---
trunk/client/src/main/java/org/teiid/netty/handler/codec/serialization/CompactObjectOutputStream.java 2010-12-23
23:45:44 UTC (rev 2801)
+++
trunk/client/src/main/java/org/teiid/netty/handler/codec/serialization/CompactObjectOutputStream.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -65,6 +65,7 @@
import org.teiid.core.TeiidProcessingException;
import org.teiid.core.TeiidException;
import org.teiid.core.TeiidRuntimeException;
+import org.teiid.core.types.BaseLob;
import org.teiid.core.types.BlobImpl;
import org.teiid.core.types.BlobType;
import org.teiid.core.types.ClobImpl;
@@ -182,40 +183,63 @@
@Override
protected Object replaceObject(Object obj) throws IOException {
- if (obj instanceof Serializable) {
+ if (obj instanceof BaseLob) {
+ try {
+ if (obj instanceof SQLXMLImpl) {
+ streams.add(((SQLXMLImpl)obj).getBinaryStream());
+ StreamFactoryReference sfr = new SQLXMLImpl();
+ references.add(sfr);
+ return sfr;
+ } else if (obj instanceof ClobImpl) {
+ streams.add(new ReaderInputStream(((ClobImpl)obj).getCharacterStream(),
Charset.forName(Streamable.ENCODING)));
+ StreamFactoryReference sfr = new ClobImpl();
+ references.add(sfr);
+ return sfr;
+ } else if (obj instanceof BlobImpl) {
+ streams.add(((Blob)obj).getBinaryStream());
+ StreamFactoryReference sfr = new BlobImpl();
+ references.add(sfr);
+ return sfr;
+ }
+ } catch (SQLException e) {
+ throw new IOException(e);
+ }
+ }
+ else if (obj instanceof Serializable) {
return obj;
}
- try {
- if (obj instanceof Reader) {
- streams.add(new ReaderInputStream((Reader)obj,
Charset.forName(Streamable.ENCODING)));
- StreamFactoryReference sfr = new SerializableReader();
- references.add(sfr);
- return sfr;
- } else if (obj instanceof InputStream) {
- streams.add((InputStream)obj);
- StreamFactoryReference sfr = new SerializableInputStream();
- references.add(sfr);
- return sfr;
- } else if (obj instanceof SQLXML) {
- streams.add(((SQLXML)obj).getBinaryStream());
- StreamFactoryReference sfr = new SQLXMLImpl();
- references.add(sfr);
- return sfr;
- } else if (obj instanceof Clob) {
- //TODO: see if this is a ClobImpl and grab the underlying stream
- streams.add(new ReaderInputStream(((Clob)obj).getCharacterStream(),
Charset.forName(Streamable.ENCODING)));
- StreamFactoryReference sfr = new ClobImpl();
- references.add(sfr);
- return sfr;
- } else if (obj instanceof Blob) {
- streams.add(((Blob)obj).getBinaryStream());
- StreamFactoryReference sfr = new BlobImpl();
- references.add(sfr);
- return sfr;
- }
- } catch (SQLException e) {
- throw new IOException(e);
- }
+ else {
+ try {
+ if (obj instanceof Reader) {
+ streams.add(new ReaderInputStream((Reader)obj,
Charset.forName(Streamable.ENCODING)));
+ StreamFactoryReference sfr = new SerializableReader();
+ references.add(sfr);
+ return sfr;
+ } else if (obj instanceof InputStream) {
+ streams.add((InputStream)obj);
+ StreamFactoryReference sfr = new SerializableInputStream();
+ references.add(sfr);
+ return sfr;
+ } else if (obj instanceof SQLXML) {
+ streams.add(((SQLXML)obj).getBinaryStream());
+ StreamFactoryReference sfr = new SQLXMLImpl();
+ references.add(sfr);
+ return sfr;
+ } else if (obj instanceof Clob) {
+ streams.add(new ReaderInputStream(((Clob)obj).getCharacterStream(),
Charset.forName(Streamable.ENCODING)));
+ StreamFactoryReference sfr = new ClobImpl();
+ references.add(sfr);
+ return sfr;
+ } else if (obj instanceof Blob) {
+ streams.add(((Blob)obj).getBinaryStream());
+ StreamFactoryReference sfr = new BlobImpl();
+ references.add(sfr);
+ return sfr;
+ }
+ } catch (SQLException e) {
+ throw new IOException(e);
+ }
+ }
return super.replaceObject(obj);
}
Modified: trunk/client/src/test/java/org/teiid/jdbc/TestPreparedStatement.java
===================================================================
--- trunk/client/src/test/java/org/teiid/jdbc/TestPreparedStatement.java 2010-12-23
23:45:44 UTC (rev 2801)
+++ trunk/client/src/test/java/org/teiid/jdbc/TestPreparedStatement.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -24,6 +24,7 @@
import static org.junit.Assert.*;
+import java.sql.Blob;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
@@ -210,6 +211,11 @@
assertEquals("MMPreparedStatement.ParameterValuesList does not match",
expectedParameterValues, statement.getParameterValuesList()); //$NON-NLS-1$
}
+ @Test public void testSetBlob() throws Exception {
+ PreparedStatementImpl stmt = getMMPreparedStatement("delete from table where
col=?"); //$NON-NLS-1$
+ stmt.setBlob(1, (Blob)null);
+ }
+
/**
* Test the <code>addBatch()</code> method of
<code>MMPreparedStatement</code>
* using a batch with an empty parameter value list. The test will verify
Modified:
trunk/client/src/test/java/org/teiid/netty/handler/codec/serialization/TestObjectDecoderInputStream.java
===================================================================
---
trunk/client/src/test/java/org/teiid/netty/handler/codec/serialization/TestObjectDecoderInputStream.java 2010-12-23
23:45:44 UTC (rev 2801)
+++
trunk/client/src/test/java/org/teiid/netty/handler/codec/serialization/TestObjectDecoderInputStream.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -28,11 +28,17 @@
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.StringReader;
import java.net.SocketTimeoutException;
+import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
+import org.teiid.core.types.ClobImpl;
+import org.teiid.core.types.InputStreamFactory;
+import org.teiid.core.types.Streamable;
+import org.teiid.core.util.ReaderInputStream;
import static org.junit.Assert.*;
@@ -76,4 +82,23 @@
assertEquals(testValue, ObjectDecoderInputStream.getIntFromBytes(baos.toByteArray()));
}
+
+ @Test public void testReplaceObject() throws Exception {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectEncoderOutputStream out = new ObjectEncoderOutputStream(new
DataOutputStream(baos), 512);
+
+ ClobImpl clob = new ClobImpl(new InputStreamFactory() {
+ @Override
+ public InputStream getInputStream() throws IOException {
+ return new ReaderInputStream(new StringReader("Clob contents"),
Charset.forName(Streamable.ENCODING)); //$NON-NLS-1$
+ }
+
+ }, -1);
+
+ out.writeObject(clob);
+
+ ObjectDecoderInputStream in = new ObjectDecoderInputStream(new DataInputStream(new
ByteArrayInputStream(baos.toByteArray())), Thread.currentThread().getContextClassLoader(),
1024);
+ Object result = in.readObject();
+ assertTrue(result instanceof ClobImpl);
+ }
}
Modified:
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java
===================================================================
---
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java 2010-12-23
23:45:44 UTC (rev 2801)
+++
trunk/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -80,7 +80,7 @@
try {
return sfSoap.getUserInfo(sh).getUserName();
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getMessage());
+ throw new ResourceException(e);
}
}
@@ -108,11 +108,11 @@
((BindingProvider)sfSoap).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
url.toExternalForm());
loginResult = sfSoap.login(username, password);
} catch (LoginFault e) {
- throw new ResourceException(e.getCause().getMessage());
+ throw new ResourceException(e);
} catch (InvalidIdFault e) {
- throw new ResourceException(e.getCause().getMessage());
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getCause().getMessage());
+ throw new ResourceException(e);
}
LogManager.logTrace(LogConstants.CTX_CONNECTOR, "Login was successful for
username " + username); //$NON-NLS-1$
@@ -130,7 +130,7 @@
try {
sfSoap.getUserInfo(sh);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getMessage());
+ throw new ResourceException(e);
}
}
}
@@ -171,17 +171,17 @@
qr = sfSoap.query(queryString, sh);
}
} catch (InvalidFieldFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (MalformedQueryFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (InvalidIdFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.InvalidQueryLocatorFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
}
return qr;
}
@@ -192,11 +192,11 @@
try {
return sfSoap.queryMore(queryLocator, sh);
} catch (InvalidFieldFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.InvalidQueryLocatorFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
}
}
@@ -206,7 +206,7 @@
try {
results = sfSoap.delete(Arrays.asList(ids), sh);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
}
boolean allGood = true;
@@ -244,13 +244,13 @@
try {
result = sfSoap.create(objects, sh);
} catch (InvalidFieldFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (InvalidIdFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
}
return analyzeResult(result);
}
@@ -269,13 +269,13 @@
try {
result = sfSoap.update(params, sh);
} catch (InvalidFieldFault e) {
- throw new ResourceException(e.getMessage(),e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
- throw new ResourceException(e.getMessage(),e);
+ throw new ResourceException(e);
} catch (InvalidIdFault e) {
- throw new ResourceException(e.getMessage(),e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getMessage(),e);
+ throw new ResourceException(e);
}
return analyzeResult(result);
}
@@ -294,9 +294,9 @@
try {
updated = sfSoap.getUpdated(objectType, startDate, endDate, sh);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
}
UpdatedResult result = new UpdatedResult();
result.setLatestDateCovered(updated.getLatestDateCovered().toGregorianCalendar());
@@ -310,9 +310,9 @@
try {
deleted = sfSoap.getDeleted(objectName, startCalendar, endCalendar, sh);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
}
DeletedResult result = new DeletedResult();
result.setLatestDateCovered(deleted.getLatestDateCovered().toGregorianCalendar());
@@ -338,17 +338,18 @@
QueryResult result = new QueryResult();
result.getRecords().addAll(objects);
result.setSize(objects.size());
+ result.setDone(true);
return result;
} catch (InvalidFieldFault e) {
- throw new ResourceException(e.getMessage(),e);
+ throw new ResourceException(e);
} catch (MalformedQueryFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (InvalidIdFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getMessage(),e);
+ throw new ResourceException(e);
}
}
@@ -357,9 +358,7 @@
try {
return sfSoap.describeGlobal(sh);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- ResourceException ce = new ResourceException(e.getCause().getMessage());
- ce.initCause(e.getCause());
- throw ce;
+ throw new ResourceException(e);
}
}
@@ -367,9 +366,9 @@
try {
return sfSoap.describeSObject(objectName, sh);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
- throw new ResourceException(e.getMessage(), e);
+ throw new ResourceException(e);
}
}
@@ -382,4 +381,5 @@
public boolean isAlive() {
return isValid();
}
+
}
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Util.java
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Util.java 2010-12-23
23:45:44 UTC (rev 2801)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/Util.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -57,7 +57,7 @@
}
public static SimpleDateFormat getSalesforceDateTimeFormat() {
- return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
//$NON-NLS-1$
+ return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
//$NON-NLS-1$
}
public static SimpleDateFormat getTimeZoneOffsetFormat() {
Modified:
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java
===================================================================
---
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java 2010-12-23
23:45:44 UTC (rev 2801)
+++
trunk/connectors/translator-salesforce/src/main/java/org/teiid/translator/salesforce/execution/visitors/CriteriaVisitor.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -23,6 +23,7 @@
import java.sql.Timestamp;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
@@ -102,6 +103,9 @@
addCompareCriteria(criteriaList, criteria);
boolean isAcceptableID = (Operator.EQ == criteria.getOperator() &&
isIdColumn(criteria.getLeftExpression()));
setHasCriteria(true, isAcceptableID);
+ if (isAcceptableID) {
+ this.idInCriteria = new In(criteria.getLeftExpression(),
Arrays.asList(criteria.getRightExpression()), false);
+ }
} catch (TranslatorException e) {
exceptions.add(e);
}
Modified:
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java
===================================================================
---
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java 2010-12-23
23:45:44 UTC (rev 2801)
+++
trunk/connectors/translator-salesforce/src/test/java/org/teiid/translator/salesforce/execution/visitors/TestVisitors.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -25,8 +25,10 @@
import java.util.Arrays;
import java.util.List;
+import java.util.TimeZone;
import org.junit.Test;
+import org.mockito.Mockito;
import org.teiid.cdk.api.TranslationUtility;
import org.teiid.core.types.DataTypeManager;
import org.teiid.language.Select;
@@ -40,10 +42,12 @@
import org.teiid.query.metadata.TransformationMetadata;
import org.teiid.query.unittest.FakeMetadataFactory;
import org.teiid.query.unittest.RealMetadataFactory;
-import org.teiid.translator.salesforce.execution.visitors.JoinQueryVisitor;
-import org.teiid.translator.salesforce.execution.visitors.SelectVisitor;
+import org.teiid.translator.ExecutionContext;
+import org.teiid.translator.salesforce.Constants;
+import org.teiid.translator.salesforce.SalesforceConnection;
+import org.teiid.translator.salesforce.execution.QueryExecutionImpl;
-
+@SuppressWarnings("nls")
public class TestVisitors {
public static QueryMetadataInterface exampleSalesforce() {
@@ -52,9 +56,10 @@
Schema salesforceModel =
RealMetadataFactory.createPhysicalModel("SalesforceModel", store);
//$NON-NLS-1$
// Create Account group
- Table accounTable = RealMetadataFactory.createPhysicalGroup("Account",
salesforceModel); //$NON-NLS-1$
- accounTable.setNameInSource("Account"); //$NON-NLS-1$
- accounTable.setProperty("Supports Query", Boolean.TRUE.toString());
//$NON-NLS-1$
+ Table accountTable = RealMetadataFactory.createPhysicalGroup("Account",
salesforceModel); //$NON-NLS-1$
+ accountTable.setNameInSource("Account"); //$NON-NLS-1$
+ accountTable.setProperty("Supports Query", Boolean.TRUE.toString());
//$NON-NLS-1$
+ accountTable.setProperty(Constants.SUPPORTS_RETRIEVE, Boolean.TRUE.toString());
// Create Account Columns
String[] acctNames = new String[] {
"ID", "Name", "Stuff", "Industry"
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@@ -63,7 +68,7 @@
DataTypeManager.DefaultDataTypes.STRING,
DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING,
DataTypeManager.DefaultDataTypes.STRING
};
- List<Column> acctCols = RealMetadataFactory.createElements(accounTable,
acctNames, acctTypes);
+ List<Column> acctCols = RealMetadataFactory.createElements(accountTable,
acctNames, acctTypes);
acctCols.get(2).setNativeType("multipicklist"); //$NON-NLS-1$
acctCols.get(2).setSearchType(SearchType.Like_Only);
// Set name in source on each column
@@ -81,16 +86,16 @@
contactTable.setProperty("Supports Query", Boolean.TRUE.toString());
//$NON-NLS-1$
// Create Contact Columns
String[] elemNames = new String[] {
- "ContactID", "Name", "AccountId" //$NON-NLS-1$
//$NON-NLS-2$ //$NON-NLS-3$
+ "ContactID", "Name", "AccountId",
"InitialContact" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
};
String[] elemTypes = new String[] {
- DataTypeManager.DefaultDataTypes.STRING,
DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING
+ DataTypeManager.DefaultDataTypes.STRING,
DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING,
DataTypeManager.DefaultDataTypes.TIMESTAMP
};
List<Column> contactCols = RealMetadataFactory.createElements(contactTable,
elemNames, elemTypes);
// Set name in source on each column
String[] contactNameInSource = new String[] {
- "id", "ContactName", "accountid" //$NON-NLS-1$
//$NON-NLS-2$ //$NON-NLS-3$
+ "id", "ContactName", "accountid",
"InitialContact" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
};
for(int i=0; i<2; i++) {
Column obj = contactCols.get(i);
@@ -170,5 +175,25 @@
visitor.visit(command);
assertEquals("SELECT Contact.ContactName FROM Contact WHERE ContactName
IN('x','y')", visitor.getQuery().toString().trim()); //$NON-NLS-1$
}
+
+ @Test public void testIDCriteria() throws Exception {
+ Select command = (Select)translationUtility.parseCommand("select id, name from
Account where id = 'bar'"); //$NON-NLS-1$
+ SalesforceConnection sfc = Mockito.mock(SalesforceConnection.class);
+ QueryExecutionImpl qei = new QueryExecutionImpl(command, sfc,
translationUtility.createRuntimeMetadata(), Mockito.mock(ExecutionContext.class));
+ qei.execute();
+ Mockito.verify(sfc).retrieve("Account.id, Account.AccountName",
"Account", Arrays.asList("bar"));
+ }
+
+ @Test public void testDateTimeFormating() throws Exception {
+ TimeZone.setDefault(TimeZone.getTimeZone("GMT-06:00"));
+ try {
+ Select command = (Select)translationUtility.parseCommand("select name from
contacts where initialcontact = {ts'2003-03-11 11:42:10.5'}"); //$NON-NLS-1$
+ SelectVisitor visitor = new
SelectVisitor(translationUtility.createRuntimeMetadata());
+ visitor.visit(command);
+ assertEquals("SELECT Contact.ContactName FROM Contact WHERE
Contact.InitialContact = 2003-03-11T11:42:10.500-06:00",
visitor.getQuery().toString().trim()); //$NON-NLS-1$
+ } finally {
+ TimeZone.setDefault(null);
+ }
+ }
}
Modified: trunk/documentation/reference/src/main/docbook/en-US/content/system_schema.xml
===================================================================
---
trunk/documentation/reference/src/main/docbook/en-US/content/system_schema.xml 2010-12-23
23:45:44 UTC (rev 2801)
+++
trunk/documentation/reference/src/main/docbook/en-US/content/system_schema.xml 2010-12-24
02:09:29 UTC (rev 2802)
@@ -176,7 +176,7 @@
<para>integer</para>
</entry>
<entry>
- <para>Unique ID</para>
+ <para>Unique ID (see note below)</para>
</entry>
</row>
<row>
@@ -269,7 +269,7 @@
<para>integer</para>
</entry>
<entry>
- <para>Unique ID</para>
+ <para>Unique ID (see note below)</para>
</entry>
</row>
</tbody>
@@ -397,7 +397,7 @@
<para>integer</para>
</entry>
<entry>
- <para>Unique ID</para>
+ <para>Unique ID (see note below)</para>
</entry>
</row>
<row>
@@ -915,7 +915,7 @@
<para>integer</para>
</entry>
<entry>
- <para>Unique ID</para>
+ <para>Unique ID (see note below)</para>
</entry>
</row>
<row>
@@ -1074,7 +1074,7 @@
<para>integer</para>
</entry>
<entry>
- <para>Unique ID</para>
+ <para>Unique ID (see note below)</para>
</entry>
</row>
</tbody>
@@ -1199,7 +1199,7 @@
<para>integer</para>
</entry>
<entry>
- <para>Unique ID</para>
+ <para>Unique ID (see note below)</para>
</entry>
</row>
<row>
@@ -1317,7 +1317,7 @@
<para>integer</para>
</entry>
<entry>
- <para>Unique ID</para>
+ <para>Unique ID (see note below)</para>
</entry>
</row>
<row>
@@ -1710,7 +1710,7 @@
<para>integer</para>
</entry>
<entry>
- <para>Unique ID</para>
+ <para>Unique ID (see note below)</para>
</entry>
</row>
<row>
@@ -1751,6 +1751,12 @@
</informaltable>
</section>
</section>
+ <warning>
+ <para>OID column is is guranteed to be unique only for given version of the
VDB. If the VDB is updated and a different version of
+ the VDB is deployed, these IDs are not guranteed to be unique across both
versions of VDB. UID is unique across different versions
+ only if the VDB is generated from Designer and metadata from old models are
used(i.e. no re-importing from sources).
+ UID column in a Dynamic VDB behaves same as OID column.</para>
+ </warning>
</section>
<section id="system_procedures">
<title>System Procedures</title>
Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java 2010-12-23
23:45:44 UTC (rev 2801)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -472,7 +472,7 @@
public void terminateSession(String sessionId) {
// sometimes there will not be any atomic requests pending, in that
// situation we still need to clear the master request from our map
- ClientState state = getClientState(sessionId, false);
+ ClientState state = this.clientState.remove(sessionId);
if (state != null) {
for (RequestID reqId : state.getRequests()) {
try {
Modified:
trunk/engine/src/main/java/org/teiid/dqp/internal/process/TransactionServerImpl.java
===================================================================
---
trunk/engine/src/main/java/org/teiid/dqp/internal/process/TransactionServerImpl.java 2010-12-23
23:45:44 UTC (rev 2801)
+++
trunk/engine/src/main/java/org/teiid/dqp/internal/process/TransactionServerImpl.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -490,7 +490,7 @@
}
public void cancelTransactions(String threadId, boolean requestOnly) throws
XATransactionException {
- TransactionContext tc = transactions.getTransactionContext(threadId);
+ TransactionContext tc =
requestOnly?transactions.getTransactionContext(threadId):transactions.removeTransactionContext(threadId);
if (tc == null || tc.getTransactionType() == TransactionContext.Scope.NONE
|| (requestOnly && tc.getTransactionType() !=
TransactionContext.Scope.REQUEST)) {
Modified: trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java 2010-12-23
23:45:44 UTC (rev 2801)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -324,7 +324,6 @@
* allowed to be in ORDER BY
* @param metadata
* QueryMetadataInterface
- * @param isSimpleQuery
*/
public static void resolveOrderBy(OrderBy orderBy, QueryCommand command,
QueryMetadataInterface metadata)
throws QueryResolverException, QueryMetadataException, TeiidComponentException {
@@ -336,7 +335,7 @@
if (command instanceof Query) {
Query query = (Query)command;
- isSimpleQuery = !query.getSelect().isDistinct() && query.getGroupBy() ==
null;
+ isSimpleQuery = !query.getSelect().isDistinct() &&
!query.hasAggregates();
if (query.getFrom() != null) {
fromClauseGroups = query.getFrom().getGroups();
}
Modified: trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java 2010-12-23
23:45:44 UTC (rev 2801)
+++ trunk/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -204,7 +204,10 @@
}
Future<ResultsMessage> message =
core.executeRequest(reqMsg.getExecutionId(), reqMsg);
+ assertNotNull(core.getClientState(String.valueOf(sessionid), false));
ResultsMessage results = message.get(5000, TimeUnit.MILLISECONDS);
+ core.terminateSession(String.valueOf(sessionid));
+ assertNull(core.getClientState(String.valueOf(sessionid), false));
if (results.getException() != null) {
throw results.getException();
}
Modified: trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java 2010-12-23
23:45:44 UTC (rev 2801)
+++ trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -3070,6 +3070,10 @@
assertEquals("A.ret",
resolvedQuery.getProjectedSymbols().get(0).getName());
}
+ @Test public void testOrderByAggregatesError() throws Exception {
+ helpResolveException("select count(*) from pm1.g1 order by e1");
+ }
+
@Test public void testWithDuplidateName() {
helpResolveException("with x as (TABLE pm1.g1), x as (TABLE pm1.g2) SELECT *
from x");
}
Modified:
trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java
===================================================================
---
trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java 2010-12-23
23:45:44 UTC (rev 2801)
+++
trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -161,24 +161,30 @@
}
}
}
- /*
- * having only a single clientserviceregistry means that the admin and jdbc ports
are functionally equivalent.
- * this is an undocuemented feature. Designer integration relies on this to use the
same port
- * for admin and preview logic.
- */
+
this.csr.registerClientService(ILogon.class, logon, LogConstants.CTX_SECURITY);
- this.csr.registerClientService(DQP.class, proxyService(DQP.class, this.dqpCore,
LogConstants.CTX_DQP), LogConstants.CTX_DQP);
- this.csr.registerClientService(Admin.class, proxyService(Admin.class, admin,
LogConstants.CTX_ADMIN_API), LogConstants.CTX_ADMIN_API);
+ DQP dqpProxy = proxyService(DQP.class, this.dqpCore, LogConstants.CTX_DQP);
+ this.csr.registerClientService(DQP.class, dqpProxy, LogConstants.CTX_DQP);
+ Admin adminProxy = proxyService(Admin.class, admin, LogConstants.CTX_ADMIN_API);
+ this.csr.registerClientService(Admin.class, adminProxy,
LogConstants.CTX_ADMIN_API);
+ ClientServiceRegistryImpl jdbcCsr = new ClientServiceRegistryImpl();
+ jdbcCsr.registerClientService(ILogon.class, logon, LogConstants.CTX_SECURITY);
+ jdbcCsr.registerClientService(DQP.class, dqpProxy, LogConstants.CTX_DQP);
+
if (this.jdbcSocketConfiguration.getEnabled()) {
- this.jdbcSocket = new SocketListener(this.jdbcSocketConfiguration, csr,
this.dqpCore.getBufferManager(), offset);
+ this.jdbcSocket = new SocketListener(this.jdbcSocketConfiguration, jdbcCsr,
this.dqpCore.getBufferManager(), offset);
LogManager.logInfo(LogConstants.CTX_RUNTIME,
IntegrationPlugin.Util.getString("socket_enabled","Teiid JDBC =
",(this.jdbcSocketConfiguration.getSSLConfiguration().isSslEnabled()?"mms://":"mm://")+this.jdbcSocketConfiguration.getHostAddress().getHostName()+":"+(this.jdbcSocketConfiguration.getPortNumber()+offset)));
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
} else {
LogManager.logInfo(LogConstants.CTX_RUNTIME,
IntegrationPlugin.Util.getString("socket_not_enabled", "jdbc
connections")); //$NON-NLS-1$ //$NON-NLS-2$
}
+ ClientServiceRegistryImpl adminCsr = new ClientServiceRegistryImpl(Type.Admin);
+ adminCsr.registerClientService(ILogon.class, logon, LogConstants.CTX_SECURITY);
+ adminCsr.registerClientService(Admin.class, adminProxy,
LogConstants.CTX_ADMIN_API);
+
if (this.adminSocketConfiguration.getEnabled()) {
- this.adminSocket = new SocketListener(this.adminSocketConfiguration, csr,
this.dqpCore.getBufferManager(), offset);
+ this.adminSocket = new SocketListener(this.adminSocketConfiguration, adminCsr,
this.dqpCore.getBufferManager(), offset);
LogManager.logInfo(LogConstants.CTX_RUNTIME,
IntegrationPlugin.Util.getString("socket_enabled","Teiid Admin",
(this.adminSocketConfiguration.getSSLConfiguration().isSslEnabled()?"mms://":"mm://")+this.adminSocketConfiguration.getHostAddress().getHostName()+":"+(this.adminSocketConfiguration.getPortNumber()+offset)));
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
} else {
LogManager.logInfo(LogConstants.CTX_RUNTIME,
IntegrationPlugin.Util.getString("socket_not_enabled", "admin
connections")); //$NON-NLS-1$ //$NON-NLS-2$
@@ -186,7 +192,7 @@
if (this.odbcSocketConfiguration.getEnabled()) {
this.vdbRepository.odbcEnabled();
- this.odbcSocket = new ODBCSocketListener(this.odbcSocketConfiguration, csr,
this.dqpCore.getBufferManager(), offset);
+ this.odbcSocket = new ODBCSocketListener(this.odbcSocketConfiguration,
this.dqpCore.getBufferManager(), offset);
LogManager.logInfo(LogConstants.CTX_RUNTIME,
IntegrationPlugin.Util.getString("odbc_enabled","Teiid ODBC - SSL=",
(this.odbcSocketConfiguration.getSSLConfiguration().isSslEnabled()?"ON":"OFF")+"
Host = "+this.odbcSocketConfiguration.getHostAddress().getHostName()+" Port =
"+(this.odbcSocketConfiguration.getPortNumber()+offset))); //$NON-NLS-1$
//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
} else {
LogManager.logInfo(LogConstants.CTX_RUNTIME,
IntegrationPlugin.Util.getString("odbc_not_enabled")); //$NON-NLS-1$
Deleted: trunk/runtime/src/main/java/org/teiid/logging/CommonsLogManagerAdapter.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/logging/CommonsLogManagerAdapter.java 2010-12-23
23:45:44 UTC (rev 2801)
+++ trunk/runtime/src/main/java/org/teiid/logging/CommonsLogManagerAdapter.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -1,128 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership. Some portions may be licensed
- * to Red Hat, Inc. under one or more contributor license agreements.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA.
- */
-
-package org.teiid.logging;
-
-import org.apache.commons.logging.Log;
-
-
-/**
- * This class is bridge for hooking LogManager into systems that use apache commons
logging. In the Teiid
- * JBoss cache/Jboss Transactions use commons logging. This class used in
"commons-logging.properties" file.
- */
-public class CommonsLogManagerAdapter implements Log {
- String context;
-
- public CommonsLogManagerAdapter(String context) {
- this.context = context;
- }
-
- @Override
- public void debug(Object arg0) {
- LogManager.log(MessageLevel.DETAIL, this.context, arg0);
- }
-
- @Override
- public void debug(Object arg0, Throwable arg1) {
- LogManager.log(MessageLevel.DETAIL, this.context, arg1, arg0);
- }
-
- @Override
- public void error(Object arg0) {
- LogManager.log(MessageLevel.ERROR, this.context, arg0);
- }
-
- @Override
- public void error(Object arg0, Throwable arg1) {
- LogManager.log(MessageLevel.ERROR, this.context, arg1, arg0);
- }
-
- @Override
- public void fatal(Object arg0) {
- LogManager.log(MessageLevel.CRITICAL, this.context, arg0);
- }
-
- @Override
- public void fatal(Object arg0, Throwable arg1) {
- LogManager.log(MessageLevel.CRITICAL, this.context, arg1, arg0);
- }
-
- @Override
- public void info(Object arg0) {
- LogManager.log(MessageLevel.INFO, this.context, arg0);
- }
-
- @Override
- public void info(Object arg0, Throwable arg1) {
- LogManager.log(MessageLevel.INFO, this.context, arg1, arg0);
- }
-
- @Override
- public void trace(Object arg0) {
- LogManager.log(MessageLevel.TRACE, this.context, arg0);
- }
-
- @Override
- public void trace(Object arg0, Throwable arg1) {
- LogManager.log(MessageLevel.TRACE, this.context, arg1, arg0);
- }
-
- @Override
- public void warn(Object arg0) {
- LogManager.log(MessageLevel.WARNING, this.context, arg0);
- }
-
- @Override
- public void warn(Object arg0, Throwable arg1) {
- LogManager.log(MessageLevel.WARNING, this.context, arg1, arg0);
- }
-
- @Override
- public boolean isDebugEnabled() {
- return LogManager.isMessageToBeRecorded(this.context, MessageLevel.DETAIL);
- }
-
- @Override
- public boolean isErrorEnabled() {
- return LogManager.isMessageToBeRecorded(this.context, MessageLevel.ERROR);
- }
-
- @Override
- public boolean isFatalEnabled() {
- return LogManager.isMessageToBeRecorded(this.context, MessageLevel.CRITICAL);
- }
-
- @Override
- public boolean isInfoEnabled() {
- return LogManager.isMessageToBeRecorded(this.context, MessageLevel.INFO);
- }
-
- @Override
- public boolean isTraceEnabled() {
- return LogManager.isMessageToBeRecorded(this.context, MessageLevel.TRACE);
- }
-
- @Override
- public boolean isWarnEnabled() {
- return LogManager.isMessageToBeRecorded(this.context, MessageLevel.WARNING);
- }
-}
Modified: trunk/runtime/src/main/java/org/teiid/logging/Log4jListener.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/logging/Log4jListener.java 2010-12-23 23:45:44
UTC (rev 2801)
+++ trunk/runtime/src/main/java/org/teiid/logging/Log4jListener.java 2010-12-24 02:09:29
UTC (rev 2802)
@@ -71,8 +71,9 @@
case MessageLevel.INFO:
return Level.INFO;
case MessageLevel.DETAIL:
+ return Level.DEBUG;
case MessageLevel.TRACE:
- return Level.DEBUG;
+ return Level.TRACE;
case MessageLevel.NONE:
return Level.OFF;
}
Modified: trunk/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java 2010-12-23
23:45:44 UTC (rev 2801)
+++ trunk/runtime/src/main/java/org/teiid/services/SessionServiceImpl.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -103,7 +103,7 @@
closeSession(info.getSessionId());
}
} catch (Exception e) {
- LogManager.logDetail(LogConstants.CTX_SECURITY, e, "error running session
monitor, unable to monitor: " + info.getSessionId()); //$NON-NLS-1$
+ LogManager.logDetail(LogConstants.CTX_SECURITY, e, "error running session
monitor, unable to monitor:", info.getSessionId()); //$NON-NLS-1$
}
}
}
@@ -192,7 +192,7 @@
newSession.setLoginContext(loginContext);
newSession.setSecurityContext(securityContext);
newSession.setVdb(vdb);
- LogManager.logDetail(LogConstants.CTX_SECURITY, new Object[] {"Logon
successful for \"", userName, "\" - created SessionID \"",
"" + newSession.getSessionToken().getSessionID(), "\"" });
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ LogManager.logDetail(LogConstants.CTX_SECURITY, new Object[] {"Logon
successful for \"", userName, "\" - created SessionID \"",
newSession.getSessionToken().getSessionID(), "\"" }); //$NON-NLS-1$
//$NON-NLS-2$ //$NON-NLS-3$
this.sessionCache.put(newSession.getSessionId(), newSession);
return newSession;
}
@@ -279,6 +279,7 @@
SessionMetadata info = getSessionInfo(sessionID);
info.setLastPingTime(System.currentTimeMillis());
this.sessionCache.put(sessionID, info);
+ LogManager.logDetail(LogConstants.CTX_SECURITY, "Keep-alive ping received for
session:", sessionID); //$NON-NLS-1$
}
@Override
Modified: trunk/runtime/src/main/java/org/teiid/transport/ClientServiceRegistry.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/transport/ClientServiceRegistry.java 2010-12-23
23:45:44 UTC (rev 2801)
+++ trunk/runtime/src/main/java/org/teiid/transport/ClientServiceRegistry.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -28,6 +28,10 @@
public interface ClientServiceRegistry {
+ public enum Type {
+ ODBC, JDBC, Admin
+ }
+
<T> T getClientService(Class<T> iface) throws ComponentNotFoundException;
SecurityHelper getSecurityHelper();
Modified: trunk/runtime/src/main/java/org/teiid/transport/ClientServiceRegistryImpl.java
===================================================================
---
trunk/runtime/src/main/java/org/teiid/transport/ClientServiceRegistryImpl.java 2010-12-23
23:45:44 UTC (rev 2801)
+++
trunk/runtime/src/main/java/org/teiid/transport/ClientServiceRegistryImpl.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -31,7 +31,7 @@
public class ClientServiceRegistryImpl implements ClientServiceRegistry {
-
+
public static class ClientService {
private Object instance;
private String loggingContext;
@@ -57,6 +57,15 @@
private HashMap<String, ClientService> clientServices = new HashMap<String,
ClientService>();
private SecurityHelper securityHelper;
+ private Type type = Type.JDBC;
+
+ public ClientServiceRegistryImpl() {
+
+ }
+
+ public ClientServiceRegistryImpl(Type type) {
+ this.type = type;
+ }
public <T> T getClientService(Class<T> iface) throws
ComponentNotFoundException {
ClientService cs = getClientService(iface.getName());
@@ -66,7 +75,7 @@
public ClientService getClientService(String iface) throws ComponentNotFoundException {
ClientService cs = clientServices.get(iface);
if (cs == null) {
- throw new
ComponentNotFoundException(RuntimePlugin.Util.getString("ServerWorkItem.Component_Not_Found",
iface)); //$NON-NLS-1$
+ throw new
ComponentNotFoundException(RuntimePlugin.Util.getString("ServerWorkItem.Component_Not_Found",
type, iface)); //$NON-NLS-1$
}
return cs;
}
Modified: trunk/runtime/src/main/java/org/teiid/transport/ODBCSocketListener.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/transport/ODBCSocketListener.java 2010-12-23
23:45:44 UTC (rev 2801)
+++ trunk/runtime/src/main/java/org/teiid/transport/ODBCSocketListener.java 2010-12-24
02:09:29 UTC (rev 2802)
@@ -33,8 +33,9 @@
public class ODBCSocketListener extends SocketListener {
private ODBCServerRemote.AuthenticationType authType =
ODBCServerRemote.AuthenticationType.CLEARTEXT;
- public ODBCSocketListener(SocketConfiguration config, ClientServiceRegistryImpl csr,
StorageManager storageManager, int portOffset) {
- super(config, csr, storageManager, portOffset);
+ public ODBCSocketListener(SocketConfiguration config, StorageManager storageManager, int
portOffset) {
+ //the clientserviceregistry isn't actually used by ODBC
+ super(config, new ClientServiceRegistryImpl(ClientServiceRegistry.Type.ODBC),
storageManager, portOffset);
}
@Override
Deleted: trunk/runtime/src/main/resources/commons-logging.properties
===================================================================
--- trunk/runtime/src/main/resources/commons-logging.properties 2010-12-23 23:45:44 UTC
(rev 2801)
+++ trunk/runtime/src/main/resources/commons-logging.properties 2010-12-24 02:09:29 UTC
(rev 2802)
@@ -1,2 +0,0 @@
-# overrides the logging in jboss cache and jboss transactions integration code
-org.apache.commons.logging.Log=org.teiid.logging.CommonsLogManagerAdapter
\ No newline at end of file
Modified: trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties
===================================================================
--- trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties 2010-12-23 23:45:44
UTC (rev 2801)
+++ trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties 2010-12-24 02:09:29
UTC (rev 2802)
@@ -42,16 +42,16 @@
ServerWorkItem.Received_exception_processing_request=Unexpected exception for session
{0}
ServerWorkItem.processing_error=Processing exception ''{0}'' for session
{1}. Exception type {2} thrown from {3}. Enable more detailed logging to see the entire
stacktrace.
-ServerWorkItem.Component_Not_Found=Component not found: {0}
+ServerWorkItem.Component_Not_Found=Only {0} connections are allowed on this port.
Component not found: {1}
SocketTransport.1=Bound to address {0} listening on port {1}
-LocalTransportHandler.Transport_shutdown=Tranport has been shutdown.
+LocalTransportHandler.Transport_shutdown=Transport has been shutdown.
SocketClientInstance.invalid_sessionkey=Invalid session key used during handshake
SSLAwareChannelHandler.channel_closed=Channel closed
invlaid_vdb_file=Invalid VDB file deployment failed {0}
redeploying_vdb=Re-deploying VDB {0}
-validity_errors_in_vdb=VDB has validaity errors; failed to deploy - {0}
+validity_errors_in_vdb=VDB has validity errors; failed to deploy - {0}
vdb_save_failed=Failed to save metadata for VDB {0}
vdb_delete_failed=Failed to delete the cached metadata files due to:
vdb_deployed=VDB "{0}" deployed in {1} state.