[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