Author: shawkins
Date: 2011-06-13 10:52:40 -0400 (Mon, 13 Jun 2011)
New Revision: 3245
Modified:
branches/7.4.x/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java
branches/7.4.x/runtime/src/test/java/org/teiid/deployers/TestCompositeVDB.java
Log:
TEIID-1618 fix for removeChild causing subsequent npe
Modified: branches/7.4.x/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java
===================================================================
--- branches/7.4.x/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java 2011-06-10
19:34:01 UTC (rev 3244)
+++ branches/7.4.x/runtime/src/main/java/org/teiid/deployers/CompositeVDB.java 2011-06-13
14:52:40 UTC (rev 3245)
@@ -146,17 +146,19 @@
newMergedVDB.setConnectionType(this.vdb.getConnectionType());
ConnectorManagerRepository mergedRepo = new ConnectorManagerRepository();
mergedRepo.getConnectorManagers().putAll(this.cmr.getConnectorManagers());
- for (CompositeVDB child:this.children.values()) {
-
- // add models
- for (Model m:child.getVDB().getModels()) {
- newMergedVDB.addModel((ModelMetaData)m);
+ if (this.children != null) {
+ for (CompositeVDB child:this.children.values()) {
+
+ // add models
+ for (Model m:child.getVDB().getModels()) {
+ newMergedVDB.addModel((ModelMetaData)m);
+ }
+
+ for (DataPolicy p:child.getVDB().getDataPolicies()) {
+ newMergedVDB.addDataPolicy((DataPolicyMetadata)p);
+ }
+ mergedRepo.getConnectorManagers().putAll(child.cmr.getConnectorManagers());
}
-
- for (DataPolicy p:child.getVDB().getDataPolicies()) {
- newMergedVDB.addDataPolicy((DataPolicyMetadata)p);
- }
- mergedRepo.getConnectorManagers().putAll(child.cmr.getConnectorManagers());
}
newMergedVDB.addAttchment(ConnectorManagerRepository.class, mergedRepo);
return newMergedVDB;
Modified: branches/7.4.x/runtime/src/test/java/org/teiid/deployers/TestCompositeVDB.java
===================================================================
---
branches/7.4.x/runtime/src/test/java/org/teiid/deployers/TestCompositeVDB.java 2011-06-10
19:34:01 UTC (rev 3244)
+++
branches/7.4.x/runtime/src/test/java/org/teiid/deployers/TestCompositeVDB.java 2011-06-13
14:52:40 UTC (rev 3245)
@@ -21,6 +21,8 @@
*/
package org.teiid.deployers;
+import static org.junit.Assert.*;
+
import java.util.ArrayList;
import java.util.List;
@@ -40,12 +42,20 @@
import org.teiid.query.sql.lang.Command;
import org.teiid.query.unittest.RealMetadataFactory;
import org.teiid.translator.ExecutionFactory;
+import org.teiid.vdb.runtime.VDBKey;
@SuppressWarnings("nls")
public class TestCompositeVDB {
public static TransformationMetadata createTransformationMetadata(MetadataStore
metadataStore, String vdbName) throws Exception {
- VDBMetaData vdbMetaData = new VDBMetaData();
+ CompositeVDB cvdb = createCompositeVDB(metadataStore, vdbName);
+ VDBMetaData vdb = cvdb.getVDB();
+ return vdb.getAttachment(TransformationMetadata.class);
+ }
+
+ private static CompositeVDB createCompositeVDB(MetadataStore metadataStore,
+ String vdbName) {
+ VDBMetaData vdbMetaData = new VDBMetaData();
vdbMetaData.setName(vdbName); //$NON-NLS-1$
vdbMetaData.setVersion(1);
for (Schema schema : metadataStore.getSchemas().values()) {
@@ -59,8 +69,7 @@
cmr.addConnectorManager("source2", getConnectorManager("bqt2",
"FakeTranslator2", "FakeConnection2", getFuncsTwo()));
CompositeVDB cvdb = new CompositeVDB(vdbMetaData, metaGroup, null, null,
RealMetadataFactory.SFM.getSystemFunctions(),cmr);
- VDBMetaData vdb = cvdb.getVDB();
- return vdb.getAttachment(TransformationMetadata.class);
+ return cvdb;
}
private static ConnectorManager getConnectorManager(String modelName, String
translatorName, String connectionName, List<FunctionMethod> funcs) {
@@ -103,7 +112,7 @@
private void helpResolve(String sql) throws Exception {
- TransformationMetadata metadata =
createTransformationMetadata(RealMetadataFactory.exampleBQTStore(), "bqt");
+ TransformationMetadata metadata =
createTransformationMetadata(RealMetadataFactory.exampleBQTCached().getMetadataStore(),
"bqt");
Command command = QueryParser.getQueryParser().parseCommand(sql);
QueryResolver.resolveCommand(command, metadata);
}
@@ -138,4 +147,10 @@
helpResolve("SELECT duplicate_func(BQT1.SmallA.INTKEY) FROM BQT1.SmallA");
}
+ @Test public void testRemoveChild() throws Exception {
+ CompositeVDB vdb = createCompositeVDB(RealMetadataFactory.exampleBQTStore(),
"bqt");
+ vdb.removeChild(new VDBKey("foo", 1));
+ assertNotNull(vdb.getVDB());
+ }
+
}
Show replies by date