[teiid-commits] teiid SVN: r4285 - in trunk: engine/src/main/java/org/teiid/dqp/internal/datamgr and 4 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed Aug 1 12:57:13 EDT 2012


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)



More information about the teiid-commits mailing list