[teiid-commits] teiid SVN: r2006 - in trunk: build/assembly/jboss-container and 7 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Sat Mar 27 16:40:16 EDT 2010


Author: rareddy
Date: 2010-03-27 16:40:15 -0400 (Sat, 27 Mar 2010)
New Revision: 2006

Removed:
   trunk/build/assembly/runtime/
Modified:
   trunk/build/assembly/jboss-container/dist.xml
   trunk/build/kit-jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml
   trunk/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java
   trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java
   trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManagerRepository.java
   trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/ConnectorBindingDeployer.java
   trunk/jboss-integration/src/main/resources/org/teiid/jboss/i18n.properties
   trunk/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java
   trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java
   trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties
Log:
TEIID-838: The VDB status is automatically managed as the connector bindings deployed and un-deployed.  If the required binding is down VDB will be inactive and if all the bindins are there then vdb will be active.

Modified: trunk/build/assembly/jboss-container/dist.xml
===================================================================
--- trunk/build/assembly/jboss-container/dist.xml	2010-03-27 20:35:57 UTC (rev 2005)
+++ trunk/build/assembly/jboss-container/dist.xml	2010-03-27 20:40:15 UTC (rev 2006)
@@ -76,8 +76,8 @@
             <include>org.jboss.teiid.connectors:connector-ldap:rar</include>
             <include>org.jboss.teiid.connectors:connector-salesforce:rar</include>
             <include>org.jboss.teiid.connectors:connector-xml-http:rar</include>
-            <include>org.jboss.teiid.connectors:connector-xmlsource-file:rar</include>
-            <include>org.jboss.teiid.connectors:connector-xmlsource-soap:rar</include>
+            <include>org.jboss.teiid.connectors:connector-xml-file:rar</include>
+            <include>org.jboss.teiid.connectors:connector-xml-soap:rar</include>
         </includes>
 
         <binaries>        

Modified: trunk/build/kit-jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml
===================================================================
--- trunk/build/kit-jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml	2010-03-27 20:35:57 UTC (rev 2005)
+++ trunk/build/kit-jboss-container/deployers/teiid.deployer/teiid-deployer-jboss-beans.xml	2010-03-27 20:40:15 UTC (rev 2006)
@@ -58,6 +58,7 @@
         <property name="securityHelper"><inject bean="SecurityHelper"/></property>
         <property name="connectorManagerRepository"><inject bean="ConnectorManagerRepository"/></property>
         <property name="managedObjectFactory"><inject bean="ManagedObjectFactory"/></property>
+        <property name="VDBRepository"><inject bean="VDBRepository"/></property>
     </bean>
     
     <!-- Persistence class for the VDB deployment file -->

Modified: trunk/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java
===================================================================
--- trunk/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java	2010-03-27 20:35:57 UTC (rev 2005)
+++ trunk/client/src/main/java/org/teiid/adminapi/impl/ModelMetaData.java	2010-03-27 20:40:15 UTC (rev 2006)
@@ -24,6 +24,7 @@
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
 
@@ -180,6 +181,9 @@
 	
 	@ManagementProperty(description = "Model Validity Errors", readOnly=true, managed=true)
 	public List<ValidationError> getErrors(){
+		if (this.errors == null) {
+			return Collections.emptyList();
+		}
 		return this.errors;
 	}
 	
@@ -188,7 +192,11 @@
             this.errors = new ArrayList<ValidationError>();
         }
         this.errors.add(new ValidationError(severity, message));
-    }	
+    }
+    
+    public void clearErrors() {
+    	this.errors.clear();
+    }
 	
     @XmlAccessorType(XmlAccessType.NONE)
     @XmlType(name = "", propOrder = {

Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java	2010-03-27 20:35:57 UTC (rev 2005)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java	2010-03-27 20:40:15 UTC (rev 2006)
@@ -202,7 +202,7 @@
     	}
     	this.state = ConnectorStatus.INIT_FAILED;
         
-        LogManager.logInfo(LogConstants.CTX_CONNECTOR, DQPPlugin.Util.getString("ConnectorManagerImpl.Initializing_connector", connectorName)); //$NON-NLS-1$
+        LogManager.logDetail(LogConstants.CTX_CONNECTOR, DQPPlugin.Util.getString("ConnectorManagerImpl.Initializing_connector", connectorName)); //$NON-NLS-1$
 
     	this.state = ConnectorStatus.OPEN;
     }

Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManagerRepository.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManagerRepository.java	2010-03-27 20:35:57 UTC (rev 2005)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManagerRepository.java	2010-03-27 20:40:15 UTC (rev 2006)
@@ -23,6 +23,8 @@
 package org.teiid.dqp.internal.datamgr.impl;
 
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -40,6 +42,11 @@
 		return this.repo.get(connectorName);
 	}
 	
+	public List<ConnectorManager> getConnectorManagers() {
+		return new ArrayList(this.repo.values());
+	}
+	
+	
 	public ConnectorManager removeConnectorManager(String connectorName) {
 		return this.repo.remove(connectorName);
 	}

Modified: trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/ConnectorBindingDeployer.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/ConnectorBindingDeployer.java	2010-03-27 20:35:57 UTC (rev 2005)
+++ trunk/jboss-integration/src/main/java/org/teiid/jboss/deployers/ConnectorBindingDeployer.java	2010-03-27 20:40:15 UTC (rev 2006)
@@ -25,26 +25,37 @@
 import java.util.Map;
 import java.util.Set;
 
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
 import org.jboss.deployers.spi.deployer.managed.ManagedObjectCreator;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.logging.Logger;
 import org.jboss.managed.api.ManagedObject;
 import org.jboss.managed.api.factory.ManagedObjectFactory;
 import org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentGroup;
 import org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentMetaData;
+import org.teiid.adminapi.Model;
+import org.teiid.adminapi.VDB;
+import org.teiid.adminapi.impl.ModelMetaData;
+import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.connector.api.Connector;
+import org.teiid.deployers.VDBRepository;
 import org.teiid.dqp.internal.datamgr.impl.ConnectorManager;
 import org.teiid.dqp.internal.datamgr.impl.ConnectorManagerRepository;
+import org.teiid.jboss.IntegrationPlugin;
 import org.teiid.security.SecurityHelper;
 
+import com.metamatrix.common.log.LogConstants;
+import com.metamatrix.common.log.LogManager;
+
 public class ConnectorBindingDeployer extends AbstractSimpleRealDeployer<ManagedConnectionFactoryDeploymentGroup> implements ManagedObjectCreator {
-	protected Logger log = Logger.getLogger(getClass());
 	private ManagedObjectFactory mof;
 	private SecurityHelper securityHelper;
 	
 	private ConnectorManagerRepository connectorManagerRepository;
+	private VDBRepository vdbRepository;
 	
 	public ConnectorBindingDeployer() {
 		super(ManagedConnectionFactoryDeploymentGroup.class);
@@ -60,17 +71,21 @@
 		for (ManagedConnectionFactoryDeploymentMetaData data : deployments) {
 			String connectorDefinition = data.getConnectionDefinition();
 			if (connectorDefinition.equals(Connector.class.getName())) {
-				String connectorName = data.getJndiName();
+				String connectorName = "java:"+data.getJndiName(); //$NON-NLS-1$
 
-				ConnectorManager cm = createConnectorManger("java:"+connectorName, data.getMaxSize()); //$NON-NLS-1$
+				ConnectorManager cm = createConnectorManger(connectorName, data.getMaxSize());
 				cm.start();
 				cmGroup.addConnectorManager(cm);
 
 				// Add the references to the mgr as loaded.
-	            this.connectorManagerRepository.addConnectorManager("java:"+connectorName, cm);  //$NON-NLS-1$    
+	            this.connectorManagerRepository.addConnectorManager(connectorName, cm);      
 	            
-	            log.info("Teiid Connector Started = " + connectorName); //$NON-NLS-1$
+	            connectorAdded(connectorName);
+	            LogManager.logInfo(LogConstants.CTX_RUNTIME, IntegrationPlugin.Util.getString("connector_started", connectorName)); //$NON-NLS-1$
 			}
+			else {
+				// check if data source is down
+			}
 		}
 		
 		if (!cmGroup.getConnectorManagers().isEmpty()) {
@@ -96,14 +111,15 @@
 		for (ManagedConnectionFactoryDeploymentMetaData data : deployments) {
 			String connectorDefinition = data.getConnectionDefinition();
 			if (connectorDefinition.equals(Connector.class.getName())) {
-				String connectorName = data.getJndiName();
+				String connectorName = "java:"+data.getJndiName(); //$NON-NLS-1$
 				if (this.connectorManagerRepository != null) {
-					ConnectorManager cm = this.connectorManagerRepository.removeConnectorManager("java:"+connectorName); //$NON-NLS-1$
+					ConnectorManager cm = this.connectorManagerRepository.removeConnectorManager(connectorName);
 					if (cm != null) {
 						cm.stop();
 					}
 				}
-				log.info("Teiid Connector Stopped = " + connectorName); //$NON-NLS-1$
+				connectorRemoved(connectorName);
+				LogManager.logInfo(LogConstants.CTX_RUNTIME, IntegrationPlugin.Util.getString("connector_stopped", connectorName)); //$NON-NLS-1$				
 			}
 		}
 	}
@@ -131,4 +147,78 @@
 	public void setSecurityHelper(SecurityHelper securityHelper) {
 		this.securityHelper = securityHelper;
 	}
+	
+	public void setVDBRepository(VDBRepository repo) {
+		this.vdbRepository = repo;
+	}
+	
+	public void connectorAdded(String connectorName) {
+		for (VDBMetaData vdb:this.vdbRepository.getVDBs()) {
+			if (vdb.getStatus() == VDB.Status.ACTIVE) {
+				continue;
+			}
+			for (Model m:vdb.getModels()) {
+				ModelMetaData model = (ModelMetaData)m;
+				if (model.getErrors().isEmpty()) {
+					continue;
+				}
+
+				boolean inUse = false;
+				for (String sourceName:model.getSourceNames()) {
+					if (connectorName.equals(model.getSourceJndiName(sourceName))) {
+						inUse = true;
+					}
+				}
+					
+				if (inUse) {
+					model.clearErrors();
+					for (String sourceName:model.getSourceNames()) {
+						if (!connectorName.equals(model.getSourceJndiName(sourceName))) {
+							try {
+								InitialContext ic = new InitialContext();
+								ic.lookup(model.getSourceJndiName(sourceName));
+							} catch (NamingException e) {
+								String msg = IntegrationPlugin.Util.getString("jndi_not_found", vdb.getName(), vdb.getVersion(), model.getSourceJndiName(sourceName), sourceName); //$NON-NLS-1$
+								model.addError(ModelMetaData.ValidationError.Severity.ERROR.name(), msg);
+								LogManager.logInfo(LogConstants.CTX_RUNTIME, msg);
+							}								
+						}
+					}						
+				}
+			}
+
+			boolean valid = true;
+			for (Model m:vdb.getModels()) {
+				ModelMetaData model = (ModelMetaData)m;
+				if (!model.getErrors().isEmpty()) {
+					valid = false;
+					break;
+				}
+			}
+			
+			if (valid) {
+				vdb.setStatus(VDB.Status.ACTIVE);
+				LogManager.logInfo(LogConstants.CTX_RUNTIME, IntegrationPlugin.Util.getString("vdb_activated",vdb.getName(), vdb.getVersion())); //$NON-NLS-1$
+			}
+			
+		}
+	}
+
+	public void connectorRemoved(String connectorName) {
+		for (VDBMetaData vdb:this.vdbRepository.getVDBs()) {
+			for (Model m:vdb.getModels()) {
+				ModelMetaData model = (ModelMetaData)m;
+				for (String sourceName:model.getSourceNames()) {
+					if (connectorName.equals(model.getSourceJndiName(sourceName))) {
+						vdb.setStatus(VDB.Status.INACTIVE);
+						String msg = IntegrationPlugin.Util.getString("jndi_not_found", vdb.getName(), vdb.getVersion(), model.getSourceJndiName(sourceName), sourceName); //$NON-NLS-1$
+						model.addError(ModelMetaData.ValidationError.Severity.ERROR.name(), msg);
+						LogManager.logInfo(LogConstants.CTX_RUNTIME, msg);					
+						LogManager.logInfo(LogConstants.CTX_RUNTIME, IntegrationPlugin.Util.getString("vdb_inactivated",vdb.getName(), vdb.getVersion())); //$NON-NLS-1$							
+					}
+				}
+			}
+		}
+	}		
+	
 }

Modified: trunk/jboss-integration/src/main/resources/org/teiid/jboss/i18n.properties
===================================================================
--- trunk/jboss-integration/src/main/resources/org/teiid/jboss/i18n.properties	2010-03-27 20:35:57 UTC (rev 2005)
+++ trunk/jboss-integration/src/main/resources/org/teiid/jboss/i18n.properties	2010-03-27 20:40:15 UTC (rev 2006)
@@ -35,4 +35,9 @@
 connector_type_not_found=Connector Type template "{0}" not found in the configuration.
 vdb_not_found=VDB with name "{0}" version "{1}" not found in configuration
 model_not_found=Model name "{0}" not found in the VDB with name "{1}" version "{2}"
-sourcename_not_found=No source name {0} found in the model: {1}.{2}.{3}
\ No newline at end of file
+sourcename_not_found=No source name {0} found in the model: {1}.{2}.{3}
+connector_started= Teiid connector {0} started
+connector_stopped=Teiid connector {0} stopped
+vdb_activated={0}.{1} status has been changed to active
+vdb_inactivated={0}.{1} status has been changed to inactive. Check the connector mappings!
+jndi_not_found=For {0}.{1} VDB, JNDI resource "{2}" not found for Source Name "{3}"
\ No newline at end of file

Modified: trunk/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java	2010-03-27 20:35:57 UTC (rev 2005)
+++ trunk/runtime/src/main/java/org/teiid/deployers/VDBDeployer.java	2010-03-27 20:40:15 UTC (rev 2006)
@@ -137,8 +137,10 @@
 		// Check if the VDB is fully configured.
 		if (valid) {
 			deployment.setStatus(VDB.Status.ACTIVE);
+		} else {
+			deployment.setStatus(VDB.Status.INACTIVE);
 		}
-		LogManager.logInfo(LogConstants.CTX_RUNTIME, RuntimePlugin.Util.getString("vdb_deployed",deployment)); //$NON-NLS-1$
+		LogManager.logInfo(LogConstants.CTX_RUNTIME, RuntimePlugin.Util.getString("vdb_deployed",deployment, valid?"active":"inactive")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	}
 
 	private boolean validateSources(VDBMetaData deployment) {

Modified: trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java	2010-03-27 20:35:57 UTC (rev 2005)
+++ trunk/runtime/src/main/java/org/teiid/deployers/VDBRepository.java	2010-03-27 20:40:15 UTC (rev 2006)
@@ -22,9 +22,11 @@
 package org.teiid.deployers;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -33,12 +35,9 @@
 import org.teiid.adminapi.impl.VDBMetaData;
 import org.teiid.connector.metadata.runtime.Datatype;
 import org.teiid.connector.metadata.runtime.MetadataStore;
-import org.teiid.metadata.CompositeMetadataStore;
 import org.teiid.metadata.TransformationMetadata;
 import org.teiid.runtime.RuntimePlugin;
 
-import com.metamatrix.common.log.LogConstants;
-import com.metamatrix.common.log.LogManager;
 import com.metamatrix.common.types.DataTypeManager;
 import com.metamatrix.core.CoreConstants;
 import com.metamatrix.vdb.runtime.VDBKey;
@@ -64,6 +63,10 @@
 	public VDBMetaData getVDB(String name, int version) {
 		return this.vdbRepo.get(new VDBKey(name, version));
 	}
+	
+	public List<VDBMetaData> getVDBs(){
+		return new ArrayList(this.vdbRepo.values());
+	}
 
     protected VDBKey vdbId(VDBMetaData vdb) {
         return new VDBKey(vdb.getName(), vdb.getVersion());
@@ -93,44 +96,7 @@
         throw new VirtualDatabaseException(RuntimePlugin.Util.getString("VDBService.VDB_does_not_exist._2", vdbName, latestVersion)); //$NON-NLS-1$
 	}
 	
-	public void changeVDBStatus(String vdbName, int vdbVersion, VDB.Status status) throws VirtualDatabaseException {
 
-		VDBMetaData vdb = getVDB(vdbName, vdbVersion);
-
-		VDB.Status currentStatus = vdb.getStatus();
-
-		if (status != currentStatus) {
-			// Change the VDB's status
-			if (status == VDB.Status.ACTIVE || status == VDB.Status.ACTIVE_DEFAULT) {
-				if (!vdb.isValid()) {
-					throw new VirtualDatabaseException(RuntimePlugin.Util.getString("EmbeddedConfigurationService.invalid_vdb", vdb.getName())); //$NON-NLS-1$
-				}
-				if (status == VDB.Status.ACTIVE_DEFAULT) {
-					// only 1 can be set as active default
-					VDBMetaData latestActive = getActiveVDB(vdbName);
-					if (latestActive.getStatus() == VDB.Status.ACTIVE_DEFAULT) {
-						latestActive.setStatus(VDB.Status.ACTIVE);
-						saveVDB(latestActive);
-					}
-				}
-			}
-			vdb.setStatus(status);
-
-			// make sure we got what we asked for
-			if (status != vdb.getStatus()) {
-				throw new VirtualDatabaseException(RuntimePlugin.Util.getString("VDBService.vdb_change_status_failed", new Object[] { vdbName, vdbVersion, status })); //$NON-NLS-1$                
-			}
-
-			// now save the change in the configuration.
-			saveVDB(vdb);
-			LogManager.logInfo(LogConstants.CTX_RUNTIME, RuntimePlugin.Util.getString("VDBService.vdb_change_status", new Object[] { vdbName, vdbVersion, status})); //$NON-NLS-1$
-		}
-	}
-	
-	private void saveVDB(VDBMetaData vdb) {
-		System.out.println("FIXME:VDB can not persisted to disk, changes temporary");
-	}
-	
 	public TransformationMetadata getMetadata(String vdbName, int vdbVersion) {
 		return this.vdbToQueryMetadata.get(new VDBKey(vdbName, vdbVersion));
 	}
@@ -138,15 +104,6 @@
 	public void addMetadata(VDBMetaData vdb, TransformationMetadata metadata) {
 		this.vdbToQueryMetadata.put(vdbId(vdb), metadata);
 	}
-		
-    public void updateCostMetadata(String vdbName, int vdbVersion, String modelName) {
-    	CompositeMetadataStore store = getMetadata(vdbName, vdbVersion).getMetadataStore();
-    	System.out.println("FIXME:Metadata can not persisted to disk, changes temporary");
-    }
-    
-    public void updateCostMetadata(String vdbName, String vdbVersion, String objectName, String propertyName, String value) {
-    	System.out.println("FIXME:Metadata can not persisted to disk, changes temporary");
-    }
 
 	public void addMetadataStore(VDBMetaData vdb, MetadataStore store) {
 		this.metadataStoreRepo.put(vdbId(vdb), store);
@@ -163,8 +120,6 @@
 		this.vdbToQueryMetadata.remove(key);
 	}	
 	
-	
-	
 	public Map<String, Datatype> getBuiltinDatatypes() {
 		Collection<Datatype> datatypes = getMetadataStore(CoreConstants.SYSTEM_VDB, 1).getDatatypes();
 		Map<String, Datatype> datatypeMap = new HashMap<String, Datatype>();
@@ -177,5 +132,5 @@
 			}
 		}
 		return datatypeMap;
-	}		
+	}
 }

Modified: trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties
===================================================================
--- trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties	2010-03-27 20:35:57 UTC (rev 2005)
+++ trunk/runtime/src/main/resources/org/teiid/runtime/i18n.properties	2010-03-27 20:40:15 UTC (rev 2006)
@@ -281,7 +281,7 @@
 validity_errors_in_vdb=VDB has validaity 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.
+vdb_deployed=VDB "{0}" deployed in {1} state.
 vdb_undeployed=VDB "{0}" undeployed.
 jndi_not_found=For {0}.{1} VDB, JNDI resource "{2}" not found for Source Name "{3}"
 system_vdb_load_error=System.vdb needs to be loaded before any other VDBs.



More information about the teiid-commits mailing list