[teiid-commits] teiid SVN: r4238 - in trunk: admin/src/main/java/org/teiid/adminapi/impl and 7 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Sun Jul 15 07:25:57 EDT 2012


Author: shawkins
Date: 2012-07-15 07:25:56 -0400 (Sun, 15 Jul 2012)
New Revision: 4238

Modified:
   trunk/admin/src/main/java/org/teiid/adminapi/Model.java
   trunk/admin/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java
   trunk/api/src/main/java/org/teiid/translator/ExecutionFactory.java
   trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorManager.java
   trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDeployer.java
   trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBService.java
   trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java
   trunk/runtime/src/main/java/org/teiid/deployers/VDBStatusChecker.java
   trunk/runtime/src/main/java/org/teiid/runtime/RuntimePlugin.java
   trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties
   trunk/test-integration/common/src/test/java/org/teiid/arquillian/IntegrationTestDeployment.java
Log:
TEIID-2104 altering the use of runtime errors to make load problems more evident

Modified: trunk/admin/src/main/java/org/teiid/adminapi/Model.java
===================================================================
--- trunk/admin/src/main/java/org/teiid/adminapi/Model.java	2012-07-13 13:14:44 UTC (rev 4237)
+++ trunk/admin/src/main/java/org/teiid/adminapi/Model.java	2012-07-15 11:25:56 UTC (rev 4238)
@@ -88,4 +88,10 @@
      * @return
      */
     String getSourceTranslatorName(String sourceName);
+    
+    /**
+     * Shows any validity errors present in the model
+     * @return
+     */
+    List<String> getValidityErrors();
 }
\ No newline at end of file

Modified: trunk/admin/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java
===================================================================
--- trunk/admin/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java	2012-07-13 13:14:44 UTC (rev 4237)
+++ trunk/admin/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java	2012-07-15 11:25:56 UTC (rev 4238)
@@ -119,6 +119,10 @@
 		return new ArrayList<SourceMappingMetadata>(this.sources.values());
 	}
 	
+	public LinkedHashMap<String, SourceMappingMetadata> getSources() {
+		return sources;
+	}
+	
 	public SourceMappingMetadata getSourceMapping(String sourceName){
 		return this.sources.get(sourceName);
 	}	
@@ -211,7 +215,11 @@
 	}    
     
     public synchronized ValidationError addRuntimeError(String message) {
-        ValidationError ve = new ValidationError(Severity.ERROR, message);
+    	return addRuntimeError(Severity.ERROR, message);
+    }    
+    
+    public synchronized ValidationError addRuntimeError(Severity severity, String message) {
+        ValidationError ve = new ValidationError(severity, message);
         if (this.runtimeErrors == null) {
             this.runtimeErrors = new LinkedList<ValidationError>();
         }
@@ -220,7 +228,7 @@
         	this.runtimeErrors.remove(0);
         }
         return ve;
-    }    
+    } 
     
     public synchronized ValidationError addError(ValidationError ve) {
         if (this.validationErrors == null) {
@@ -239,7 +247,7 @@
     public static class ValidationError implements Serializable{
 		private static final long serialVersionUID = 2044197069467559527L;
 
-		public enum Severity {ERROR, WARNING};
+		public enum Severity {ERROR, WARNING, INFO};
     	
         protected String value;
         protected Severity severity;
@@ -315,4 +323,18 @@
 		this.schemaText = schemaText;
 	}
 	
+	@Override
+	public List<String> getValidityErrors() {
+		List<String> allErrors = new ArrayList<String>();
+		List<ValidationError> errors = getErrors();
+		if (errors != null && !errors.isEmpty()) {
+			for (ValidationError m:errors) {
+				if (m.getSeverity() == Severity.ERROR) {
+					allErrors.add(m.getValue());
+				}
+			}
+		}
+		return allErrors;
+	}
+	
 }

Modified: trunk/api/src/main/java/org/teiid/translator/ExecutionFactory.java
===================================================================
--- trunk/api/src/main/java/org/teiid/translator/ExecutionFactory.java	2012-07-13 13:14:44 UTC (rev 4237)
+++ trunk/api/src/main/java/org/teiid/translator/ExecutionFactory.java	2012-07-15 11:25:56 UTC (rev 4238)
@@ -836,7 +836,7 @@
      * Implement to provide metadata to the metadata for use by the engine.  This is the 
      * primary method of creating metadata for dynamic VDBs.
      * @param metadataFactory
-     * @param conn
+     * @param conn may be null if there was an error obtaining a connection
      * @throws TranslatorException
      */
     public void getMetadata(MetadataFactory metadataFactory, C conn) throws TranslatorException {

Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorManager.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorManager.java	2012-07-13 13:14:44 UTC (rev 4237)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorManager.java	2012-07-15 11:25:56 UTC (rev 4238)
@@ -33,10 +33,10 @@
 import org.teiid.dqp.message.AtomicRequestID;
 import org.teiid.dqp.message.AtomicRequestMessage;
 import org.teiid.logging.CommandLogMessage;
-import org.teiid.logging.CommandLogMessage.Event;
 import org.teiid.logging.LogConstants;
 import org.teiid.logging.LogManager;
 import org.teiid.logging.MessageLevel;
+import org.teiid.logging.CommandLogMessage.Event;
 import org.teiid.metadata.FunctionMethod;
 import org.teiid.query.QueryPlugin;
 import org.teiid.query.optimizer.capabilities.BasicSourceCapabilities;
@@ -72,7 +72,7 @@
     }
     
     public String getStausMessage() {
-    	StringBuilder sb = new StringBuilder();
+    	String msg = ""; //$NON-NLS-1$
     	ExecutionFactory<Object, Object> ef = getExecutionFactory();
 		
     	if(ef != null) {
@@ -86,14 +86,14 @@
 				}
 				
     			if (conn == null) {
-    				sb.append(QueryPlugin.Util.getString("datasource_not_found", this.connectionName)); //$NON-NLS-1$
+    				msg = QueryPlugin.Util.getString("datasource_not_found", this.connectionName); //$NON-NLS-1$
     			}
     		}
     	}
     	else {
-    		sb.append(QueryPlugin.Util.getString("translator_not_found", this.translatorName)); //$NON-NLS-1$
+    		msg = QueryPlugin.Util.getString("translator_not_found", this.translatorName); //$NON-NLS-1$
     	}
-    	return sb.toString();
+    	return msg;
     }
     
 	public List<FunctionMethod> getPushDownFunctions(){

Modified: trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDeployer.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDeployer.java	2012-07-13 13:14:44 UTC (rev 4237)
+++ trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDeployer.java	2012-07-15 11:25:56 UTC (rev 4238)
@@ -103,22 +103,22 @@
 		
 		// make sure the translator defined exists in configuration; otherwise add as error
 		for (ModelMetaData model:deployment.getModelMetaDatas().values()) {
-			if (model.isSource() && !model.getSourceNames().isEmpty()) {
-				for (String source:model.getSourceNames()) {
-					
-					String translatorName = model.getSourceTranslatorName(source);
-					if (deployment.isOverideTranslator(translatorName)) {
-						VDBTranslatorMetaData parent = deployment.getTranslator(translatorName);
-						translatorName = parent.getType();
-					}
-					
-					Translator translator = this.translatorRepository.getTranslatorMetaData(translatorName);
-					if ( translator == null) {	
-						String msg = IntegrationPlugin.Util.gs(IntegrationPlugin.Event.TEIID50077, translatorName, deployment.getName(), deployment.getVersion());
-						model.addRuntimeError(msg);
-						LogManager.logWarning(LogConstants.CTX_RUNTIME, msg);
-					}	
+			if (!model.isSource() || model.getSourceNames().isEmpty()) {
+				continue;
+			}
+			for (String source:model.getSourceNames()) {
+				
+				String translatorName = model.getSourceTranslatorName(source);
+				if (deployment.isOverideTranslator(translatorName)) {
+					VDBTranslatorMetaData parent = deployment.getTranslator(translatorName);
+					translatorName = parent.getType();
 				}
+				
+				Translator translator = this.translatorRepository.getTranslatorMetaData(translatorName);
+				if ( translator == null) {	
+					String msg = IntegrationPlugin.Util.gs(IntegrationPlugin.Event.TEIID50077, translatorName, deployment.getName(), deployment.getVersion());
+					LogManager.logWarning(LogConstants.CTX_RUNTIME, msg);
+				}	
 			}
 		}
 		
@@ -256,6 +256,9 @@
 
 				// Need to make the data source service as dependency; otherwise dynamic vdbs will not work correctly.
 				String dsName = model.getSourceConnectionJndiName(sourceName);
+				if (dsName == null) {
+					continue;
+				}
 				final ContextNames.BindInfo bindInfo = ContextNames.bindInfoFor(getJndiName(dsName));
 				svcListener.dependentService(dsName, bindInfo.getBinderServiceName());				
 			}

Modified: trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBService.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBService.java	2012-07-13 13:14:44 UTC (rev 4237)
+++ trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBService.java	2012-07-15 11:25:56 UTC (rev 4238)
@@ -24,7 +24,14 @@
 import java.io.File;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.IdentityHashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.ServiceLoader;
+import java.util.Set;
 import java.util.concurrent.Executor;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -34,7 +41,13 @@
 import org.jboss.modules.ModuleIdentifier;
 import org.jboss.modules.ModuleLoadException;
 import org.jboss.modules.ModuleLoader;
-import org.jboss.msc.service.*;
+import org.jboss.msc.service.Service;
+import org.jboss.msc.service.ServiceBuilder;
+import org.jboss.msc.service.ServiceContainer;
+import org.jboss.msc.service.ServiceController;
+import org.jboss.msc.service.StartContext;
+import org.jboss.msc.service.StartException;
+import org.jboss.msc.service.StopContext;
 import org.jboss.msc.value.InjectedValue;
 import org.teiid.adminapi.AdminProcessingException;
 import org.teiid.adminapi.Translator;
@@ -42,13 +55,21 @@
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.adminapi.impl.VDBMetadataParser;
 import org.teiid.adminapi.impl.VDBTranslatorMetaData;
+import org.teiid.adminapi.impl.ModelMetaData.ValidationError.Severity;
 import org.teiid.common.buffer.BufferManager;
 import org.teiid.core.TeiidException;
-import org.teiid.deployers.*;
+import org.teiid.deployers.CompositeVDB;
+import org.teiid.deployers.RuntimeVDB;
+import org.teiid.deployers.TranslatorUtil;
+import org.teiid.deployers.UDFMetaData;
+import org.teiid.deployers.VDBLifeCycleListener;
+import org.teiid.deployers.VDBRepository;
+import org.teiid.deployers.VDBStatusChecker;
+import org.teiid.deployers.VirtualDatabaseException;
 import org.teiid.dqp.internal.datamgr.ConnectorManager;
 import org.teiid.dqp.internal.datamgr.ConnectorManagerRepository;
+import org.teiid.dqp.internal.datamgr.TranslatorRepository;
 import org.teiid.dqp.internal.datamgr.ConnectorManagerRepository.ConnectorManagerException;
-import org.teiid.dqp.internal.datamgr.TranslatorRepository;
 import org.teiid.logging.LogConstants;
 import org.teiid.logging.LogManager;
 import org.teiid.metadata.Datatype;
@@ -312,7 +333,7 @@
     protected void loadMetadata(final VDBMetaData vdb, final ModelMetaData model, final ConnectorManagerRepository cmr, final MetadataRepository metadataRepo, final MetadataStore vdbMetadataStore, final AtomicInteger loadCount) {
 
     	String msg = IntegrationPlugin.Util.gs(IntegrationPlugin.Event.TEIID50029,vdb.getName(), vdb.getVersion(), model.getName(), SimpleDateFormat.getInstance().format(new Date())); 
-		model.addRuntimeError(msg); 
+		model.addRuntimeError(Severity.INFO, msg); 
 		LogManager.logInfo(LogConstants.CTX_RUNTIME, msg);
 
 		Runnable job = new Runnable() {
@@ -321,7 +342,7 @@
 				
 				boolean metadataLoaded = false;
 				boolean cached = false;
-				List<String> errorMessages = new ArrayList<String>();
+				Exception ex = null;
 				
 				final File cachedFile = getSerializer().buildModelFile(vdb, model.getName());
 				MetadataFactory factory = getSerializer().loadSafe(cachedFile, MetadataFactory.class);
@@ -357,34 +378,26 @@
 						metadataRepo.loadMetadata(factory, ef, cf);		
 						metadataLoaded = true;
 						LogManager.logInfo(LogConstants.CTX_RUNTIME, IntegrationPlugin.Util.gs(IntegrationPlugin.Event.TEIID50030,vdb.getName(), vdb.getVersion(), model.getName(), SimpleDateFormat.getInstance().format(new Date())));					
-					} catch (TranslatorException e) {					
-						errorMessages.add(e.getMessage());
-						LogManager.logInfo(LogConstants.CTX_RUNTIME, IntegrationPlugin.Util.gs(IntegrationPlugin.Event.TEIID50036,vdb.getName(), vdb.getVersion(), model.getName(), e.getMessage()));
+					} catch (Exception e) {					
+				    	ex = e;
 					}
 				}
 		    					
 				synchronized (vdb) {
 			    	if (metadataLoaded) {
-			    		
 			    		if (!cached) {
 				    		// cache the schema to disk
 							cacheMetadataStore(model, factory);
 			    		}
 						
 						metadataLoaded(vdb, model, vdbMetadataStore, loadCount, factory);
-			    	} 
-			    	else {
-			    		for (String errorMsg:errorMessages) {
-					    	model.addRuntimeError(errorMsg); 
-					    	LogManager.logWarning(LogConstants.CTX_RUNTIME, errorMsg);
-			    		}			    		
+			    	} else {
+			    		model.addRuntimeError(ex.getMessage()); 
+						LogManager.logWarning(LogConstants.CTX_RUNTIME, IntegrationPlugin.Util.gs(IntegrationPlugin.Event.TEIID50036,vdb.getName(), vdb.getVersion(), model.getName(), ex.getMessage()));
+						//defer the load to the status checker if/when a source is available/redeployed
+						model.addAttchment(Runnable.class, this);
 			    	}
 		    	}
-		    	
-				if (!metadataLoaded) {
-					//defer the load to the status checker if/when a source is available/redeployed
-					model.addAttchment(Runnable.class, this);
-				}	    				
 			}
 		};	    		
 		

Modified: trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java	2012-07-13 13:14:44 UTC (rev 4237)
+++ trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java	2012-07-15 11:25:56 UTC (rev 4238)
@@ -338,8 +338,8 @@
 					if (cm != null) {
 						String msg = cm.getStausMessage();
 						if (msg != null && msg.length() > 0) {
-							model.addRuntimeError(cm.getStausMessage());
-							LogManager.logInfo(LogConstants.CTX_RUNTIME, cm.getStausMessage());
+							model.addRuntimeError(msg);
+							LogManager.logInfo(LogConstants.CTX_RUNTIME, msg);
 						}
 					}					
 				}

Modified: trunk/runtime/src/main/java/org/teiid/deployers/VDBStatusChecker.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/VDBStatusChecker.java	2012-07-13 13:14:44 UTC (rev 4237)
+++ trunk/runtime/src/main/java/org/teiid/deployers/VDBStatusChecker.java	2012-07-15 11:25:56 UTC (rev 4238)
@@ -26,10 +26,12 @@
 import java.util.concurrent.Executor;
 
 import org.teiid.adminapi.AdminProcessingException;
-import org.teiid.adminapi.Model;
+import org.teiid.adminapi.VDB.Status;
 import org.teiid.adminapi.impl.ModelMetaData;
+import org.teiid.adminapi.impl.SourceMappingMetadata;
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.adminapi.impl.VDBTranslatorMetaData;
+import org.teiid.adminapi.impl.ModelMetaData.ValidationError.Severity;
 import org.teiid.core.TeiidException;
 import org.teiid.dqp.internal.datamgr.ConnectorManager;
 import org.teiid.dqp.internal.datamgr.ConnectorManagerRepository;
@@ -44,26 +46,30 @@
 	private static final String JAVA_CONTEXT = "java:/"; //$NON-NLS-1$
 	private TranslatorRepository translatorRepository;
 	
+	/**
+	 * @param translatorName  
+	 */
 	public void translatorAdded(String translatorName) {
-		resourceAdded(translatorName, true);
 	}
 	
+	/**
+	 * @param translatorName  
+	 */
 	public void translatorRemoved(String translatorName) {
-		resourceRemoved(translatorName, true);
 	}
 	
 	public void dataSourceAdded(String dataSourceName) {
 		if (dataSourceName.startsWith(JAVA_CONTEXT)) {
 			dataSourceName = dataSourceName.substring(5);
 		}
-		resourceAdded(dataSourceName, false);
+		resourceAdded(dataSourceName);
 	}
 	
 	public void dataSourceRemoved(String dataSourceName) {
 		if (dataSourceName.startsWith(JAVA_CONTEXT)) {
 			dataSourceName = dataSourceName.substring(5);
 		}
-		resourceRemoved(dataSourceName, false);
+		resourceRemoved(dataSourceName);
 	}	
 
 	public void dataSourceReplaced(String vdbName, int vdbVersion,
@@ -82,7 +88,7 @@
 			ExecutionFactory<Object, Object> ef = cm.getExecutionFactory();
 			
 			boolean dsReplaced = false;
-			if (!cm.getConnectionName().equals(dsName)){
+			if ((dsName != null && !dsName.equals(cm.getConnectionName())) || (dsName == null && cm.getConnectionName() != null)) {
 				LogManager.logInfo(LogConstants.CTX_RUNTIME, RuntimePlugin.Util.gs(RuntimePlugin.Event.TEIID40076, vdb.getName(), vdb.getVersion(), model.getSourceTranslatorName(sourceName), dsName));
 				cm = new ConnectorManager(translatorName, dsName); 
 				cm.setExecutionFactory(ef);
@@ -111,97 +117,104 @@
 			}
 			
 			if (dsReplaced) {
-				resourceAdded(dsName, false);
+				ArrayList<Runnable> runnables = new ArrayList<Runnable>(1);
+				checkStatus(runnables, vdb, model, cm);
+				updateVDB(runnables, vdb);
 			}
 		}
 	}
 
-	public void resourceAdded(String resourceName, boolean translator) {
+	public void resourceAdded(String resourceName) {
 		List<Runnable> runnables = new ArrayList<Runnable>();
 		for (VDBMetaData vdb:getVDBRepository().getVDBs()) {
 			synchronized (vdb) {
 				ConnectorManagerRepository cmr = vdb.getAttachment(ConnectorManagerRepository.class);
-				
+				boolean usesResourse = false;
 				for (ModelMetaData model:vdb.getModelMetaDatas().values()) {
 					if (!model.hasRuntimeErrors()) {
 						continue;
 					}
 	
-					String sourceName = getSourceName(resourceName, model, translator);
+					String sourceName = getSourceName(resourceName, model);
 					if (sourceName == null) {
 						continue;
 					}
 
+					usesResourse = true;
 					ConnectorManager cm = cmr.getConnectorManager(sourceName);
-					String status = cm.getStausMessage();
-					if (status != null && status.length() > 0) {
-						model.addRuntimeError(status);
-						LogManager.logInfo(LogConstants.CTX_RUNTIME, status);
-					} else {
-						//get the pending metadata load
-						Runnable r = model.removeAttachment(Runnable.class);
-						if (r != null) {
-							runnables.add(r);
-						} else {
-							model.clearRuntimeErrors();
-						}
-					}
+					checkStatus(runnables, vdb, model, cm);
 				}
 	
-				boolean valid = !vdb.hasErrors();
-				
-				if (!runnables.isEmpty()) {
-					//the task themselves will set the status on completion/failure
-					for (Runnable runnable : runnables) {						
-						getExecutor().execute(runnable);
-					}
-					runnables.clear();
-				} else if (valid) {
-					LogManager.logInfo(LogConstants.CTX_RUNTIME, RuntimePlugin.Util.gs(RuntimePlugin.Event.TEIID40003,vdb.getName(), vdb.getVersion(), vdb.getStatus()));
+				if (usesResourse) {
+					updateVDB(runnables, vdb);
 				}
 			}
 		}
 	}
+
+	private void updateVDB(List<Runnable> runnables, VDBMetaData vdb) {
+		if (!runnables.isEmpty()) {
+			//the task themselves will set the status on completion/failure
+			for (Runnable runnable : runnables) {						
+				getExecutor().execute(runnable);
+			}
+			runnables.clear();
+		} else if (vdb.hasErrors()) {
+			LogManager.logInfo(LogConstants.CTX_RUNTIME, RuntimePlugin.Util.gs(RuntimePlugin.Event.TEIID40003,vdb.getName(), vdb.getVersion(), vdb.getStatus()));
+		}
+	}
+
+	private void checkStatus(List<Runnable> runnables, VDBMetaData vdb,
+			ModelMetaData model, ConnectorManager cm) {
+		//get the pending metadata load
+		Runnable r = model.removeAttachment(Runnable.class);
+		if (r != null) {
+			runnables.add(r);
+		} else {
+			String status = cm.getStausMessage();
+			if (status != null && status.length() > 0) {
+				Severity severity = vdb.getStatus() == Status.LOADING?Severity.WARNING:Severity.ERROR;
+				model.addRuntimeError(severity, status);
+				LogManager.logInfo(LogConstants.CTX_RUNTIME, status);
+			} else if (vdb.getStatus() != Status.LOADING){
+				model.clearRuntimeErrors();
+			}
+		}
+	}
 	
-	public void resourceRemoved(String resourceName, boolean translator) {
+	public void resourceRemoved(String resourceName) {
 		for (VDBMetaData vdb:getVDBRepository().getVDBs()) {
 			synchronized (vdb) {
-				for (Model m:vdb.getModels()) {
-					ModelMetaData model = (ModelMetaData)m;
-					
-					String sourceName = getSourceName(resourceName, model, translator);
-					if (sourceName != null) {
-						String msg = null;
-						if (translator) {
-							msg = RuntimePlugin.Util.gs(RuntimePlugin.Event.TEIID40005, vdb.getName(), vdb.getVersion(), model.getSourceTranslatorName(sourceName));
-						}
-						else {
-							msg = RuntimePlugin.Util.gs(RuntimePlugin.Event.TEIID40012, vdb.getName(), vdb.getVersion(), resourceName); 
-						}
-						model.addRuntimeError(msg);
-						LogManager.logInfo(LogConstants.CTX_RUNTIME, msg);					
-						LogManager.logInfo(LogConstants.CTX_RUNTIME, RuntimePlugin.Util.gs(RuntimePlugin.Event.TEIID40003,vdb.getName(), vdb.getVersion(), vdb.getStatus()));
+				ConnectorManagerRepository cmr = vdb.getAttachment(ConnectorManagerRepository.class);
+				for (ModelMetaData model:vdb.getModelMetaDatas().values()) {
+					String sourceName = getSourceName(resourceName, model);
+					if (sourceName == null) {
+						continue;
 					}
+					ConnectorManager cm = cmr.getConnectorManager(sourceName);
+					if (cm.getExecutionFactory().isSourceRequired()) {
+						String msg = RuntimePlugin.Util.gs(RuntimePlugin.Event.TEIID40012, vdb.getName(), vdb.getVersion(), resourceName); 
+						Severity severity = vdb.getStatus() == Status.LOADING?Severity.WARNING:Severity.ERROR;
+						model.addRuntimeError(severity, msg);
+						LogManager.logInfo(LogConstants.CTX_RUNTIME, msg);
+					}
 				}
 			}
 		}
 	}
 
-	private String getSourceName(String translatorName, ModelMetaData model, boolean translator) {
-		for (String sourceName:model.getSourceNames()) {
-			if (translator) {
-				if (translatorName.equals(model.getSourceTranslatorName(sourceName))) {
-					return sourceName;
-				}
-			} else {
-				String jndiName = model.getSourceConnectionJndiName(sourceName);
-				if (jndiName.startsWith(JAVA_CONTEXT)) {
-					jndiName = jndiName.substring(5);
-				}
-				if (translatorName.equals(jndiName)) {
-					return sourceName;
-				}
+	private String getSourceName(String factoryName, ModelMetaData model) {
+		for (SourceMappingMetadata source:model.getSources().values()) {
+			String jndiName = source.getConnectionJndiName();
+			if (jndiName == null) {
+				continue;
 			}
+			if (jndiName.startsWith(JAVA_CONTEXT)) {
+				jndiName = jndiName.substring(5);
+			}
+			if (factoryName.equals(jndiName)) {
+				return source.getName();
+			}
 		}
 		return null;
 	}

Modified: trunk/runtime/src/main/java/org/teiid/runtime/RuntimePlugin.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/runtime/RuntimePlugin.java	2012-07-13 13:14:44 UTC (rev 4237)
+++ trunk/runtime/src/main/java/org/teiid/runtime/RuntimePlugin.java	2012-07-15 11:25:56 UTC (rev 4238)
@@ -35,7 +35,6 @@
     	TEIID40001, // undefined translator properties
     	TEIID40002, // failed to load ODBC metadata
     	TEIID40003, // VDB status
-    	TEIID40005, // datasource or translator not found
     	TEIID40007, // keep alive failed
     	TEIID40008, // expired session
     	TEIID40009, // terminate session

Modified: trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties
===================================================================
--- trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties	2012-07-13 13:14:44 UTC (rev 4237)
+++ trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties	2012-07-15 11:25:56 UTC (rev 4238)
@@ -47,7 +47,6 @@
 TEIID40035=VDB with given name and version already exists! {0}.{1}
 TEIID40021=System.vdb not found in classpath
 
-TEIID40005=For {0}.{1} VDB, Translator "{2}" not found.
 TEIID40012=For {0}.{1} VDB, Data Source "{2}" not found.
 TEIID40076=For {0}.{1} VDB, Data Source "{2}" replaced with "{3}"
 TEIID40024={0} invalid type of class specified. Must be of type org.teiid.connector.api.Connector

Modified: trunk/test-integration/common/src/test/java/org/teiid/arquillian/IntegrationTestDeployment.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/arquillian/IntegrationTestDeployment.java	2012-07-13 13:14:44 UTC (rev 4237)
+++ trunk/test-integration/common/src/test/java/org/teiid/arquillian/IntegrationTestDeployment.java	2012-07-15 11:25:56 UTC (rev 4238)
@@ -79,7 +79,11 @@
 		
 		AdminUtil.createDataSource(admin, "Oracle11_PushDS", "h2", props);
 		admin.deploy("fake.jar",new FileInputStream(UnitTestUtil.getTestDataFile("fake.jar")));
-		admin.deploy("chained-vdb.xml",new FileInputStream(UnitTestUtil.getTestDataFile("chained-vdb.xml")));
+		try {
+			admin.deploy("chained-vdb.xml",new FileInputStream(UnitTestUtil.getTestDataFile("chained-vdb.xml")));
+		} finally {
+			admin.undeploy("fake.jar");
+		}
 	}
 	
 	@Test



More information about the teiid-commits mailing list