Author: shawkins
Date: 2012-08-01 12:57:08 -0400 (Wed, 01 Aug 2012)
New Revision: 4285
Modified:
trunk/connectors/translator-file/src/main/java/org/teiid/translator/file/FileExecutionFactory.java
trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorWorkItem.java
trunk/engine/src/main/java/org/teiid/query/QueryPlugin.java
trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/FakeConnector.java
trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/TestConnectorWorkItem.java
trunk/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestExecutionReuse.java
trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestLocalConnections.java
Log:
TEIID-2127 correcting the file translator and the isSourceRequired logic
Modified:
trunk/connectors/translator-file/src/main/java/org/teiid/translator/file/FileExecutionFactory.java
===================================================================
---
trunk/connectors/translator-file/src/main/java/org/teiid/translator/file/FileExecutionFactory.java 2012-08-01
15:46:51 UTC (rev 4284)
+++
trunk/connectors/translator-file/src/main/java/org/teiid/translator/file/FileExecutionFactory.java 2012-08-01
16:57:08 UTC (rev 4285)
@@ -148,7 +148,7 @@
private boolean exceptionIfFileNotFound;
public FileExecutionFactory() {
- setSourceRequired(false);
+ setSourceRequiredForMetadata(false);
}
@TranslatorProperty(display="File Encoding",advanced=true)
Modified:
trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorWorkItem.java
===================================================================
---
trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorWorkItem.java 2012-08-01
15:46:51 UTC (rev 4284)
+++
trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorWorkItem.java 2012-08-01
16:57:08 UTC (rev 4285)
@@ -159,7 +159,7 @@
} catch (Throwable e) {
LogManager.logError(LogConstants.CTX_CONNECTOR, e, e.getMessage());
} finally {
- if (this.connector.isSourceRequired() && this.connection != null) {
+ if (this.connection != null) {
try {
this.connector.closeConnection(connection, connectionFactory);
} catch (Throwable e) {
@@ -204,10 +204,19 @@
LogManager.logDetail(LogConstants.CTX_CONNECTOR, new Object[]
{this.requestMsg.getAtomicRequestID(), "Processing NEW request:",
this.requestMsg.getCommand()}); //$NON-NLS-1$
try {
- if (this.connector.isSourceRequired()) {
- this.connectionFactory = this.manager.getConnectionFactory();
- this.connection = this.connector.getConnection(this.connectionFactory,
securityContext);
+ try {
+ this.connectionFactory = this.manager.getConnectionFactory();
+ } catch (TranslatorException e) {
+ if (this.connector.isSourceRequired()) {
+ throw e;
+ }
}
+ if (this.connectionFactory != null) {
+ this.connection = this.connector.getConnection(this.connectionFactory,
securityContext);
+ }
+ if (this.connection == null && this.connector.isSourceRequired()) {
+ throw new TranslatorException(QueryPlugin.Event.TEIID31108,
QueryPlugin.Util.getString("datasource_not_found",
this.manager.getConnectionName())); //$NON-NLS-1$);
+ }
Object unwrapped = null;
if (connection instanceof WrappedConnection) {
Modified: trunk/engine/src/main/java/org/teiid/query/QueryPlugin.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/QueryPlugin.java 2012-08-01 15:46:51 UTC
(rev 4284)
+++ trunk/engine/src/main/java/org/teiid/query/QueryPlugin.java 2012-08-01 16:57:08 UTC
(rev 4285)
@@ -527,5 +527,6 @@
TEIID31105, //warning
TEIID31106, //duplicate param name
TEIID31107, //too many result params
+ TEIID31108, //datasource not available
}
}
Modified: trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/FakeConnector.java
===================================================================
---
trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/FakeConnector.java 2012-08-01
15:46:51 UTC (rev 4284)
+++
trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/FakeConnector.java 2012-08-01
16:57:08 UTC (rev 4285)
@@ -40,6 +40,7 @@
private int connectionCount;
private int executionCount;
+ private int closeCount;
public int getConnectionCount() {
return connectionCount;
@@ -63,8 +64,13 @@
@Override
public void closeConnection(Object connection, Object factory) {
+ closeCount++;
}
+ public int getCloseCount() {
+ return closeCount;
+ }
+
public final class FakeExecution implements ResultSetExecution, UpdateExecution {
private int rowCount;
ExecutionContext ec;
Modified:
trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/TestConnectorWorkItem.java
===================================================================
---
trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/TestConnectorWorkItem.java 2012-08-01
15:46:51 UTC (rev 4284)
+++
trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/TestConnectorWorkItem.java 2012-08-01
16:57:08 UTC (rev 4285)
@@ -124,6 +124,20 @@
AtomicResultsMessage results = helpExecuteUpdate();
assertEquals(1, results.getWarnings().size());
}
+
+ @Test public void testSourceNotRequired() throws Exception {
+ Command command = helpGetCommand("update bqt1.smalla set stringkey = 1 where
stringkey = 2", EXAMPLE_BQT); //$NON-NLS-1$
+ AtomicRequestMessage arm = createNewAtomicRequestMessage(1, 1);
+ arm.setCommand(command);
+ ConnectorManager cm = TestConnectorManager.getConnectorManager();
+ cm.getExecutionFactory().setSourceRequired(false);
+ ConnectorWorkItem synchConnectorWorkItem = (ConnectorWorkItem)
cm.registerRequest(arm);
+ synchConnectorWorkItem.execute();
+ synchConnectorWorkItem.close();
+ FakeConnector fc = (FakeConnector)cm.getExecutionFactory();
+ assertEquals(1, fc.getConnectionCount());
+ assertEquals(1, fc.getCloseCount());
+ }
@Ignore
@Test public void testIsImmutablePropertySucceeds() throws Exception {
Modified:
trunk/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestExecutionReuse.java
===================================================================
---
trunk/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestExecutionReuse.java 2012-08-01
15:46:51 UTC (rev 4284)
+++
trunk/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestExecutionReuse.java 2012-08-01
16:57:08 UTC (rev 4285)
@@ -135,6 +135,10 @@
ec = executionContext;
return execution;
};
+
+ public boolean isSourceRequired() {
+ return false;
+ };
};
@Override
public ExecutionFactory<Object, Object> getExecutionFactory() {
@@ -146,6 +150,7 @@
throws TranslatorException {
return null;
}
+
};
@Override
public ConnectorManager getConnectorManager(String connectorName) {
Modified:
trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestLocalConnections.java
===================================================================
---
trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestLocalConnections.java 2012-08-01
15:46:51 UTC (rev 4284)
+++
trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestLocalConnections.java 2012-08-01
16:57:08 UTC (rev 4285)
@@ -107,7 +107,13 @@
@Override
public ExecutionFactory<Object, Object> getExecutionFactory() {
return new ExecutionFactory<Object, Object>() {
+
@Override
+ public boolean isSourceRequired() {
+ return false;
+ }
+
+ @Override
public Execution createExecution(Command command,
ExecutionContext executionContext,
RuntimeMetadata metadata, Object connection)