[teiid-commits] teiid SVN: r607 - in trunk/server/src: test/java/com/metamatrix/admin/server and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Thu Mar 19 22:37:03 EDT 2009


Author: shawkins
Date: 2009-03-19 22:37:03 -0400 (Thu, 19 Mar 2009)
New Revision: 607

Modified:
   trunk/server/src/main/java/com/metamatrix/admin/server/ServerConfigAdminImpl.java
   trunk/server/src/test/java/com/metamatrix/admin/server/TestServerConfigAdminImpl.java
Log:
TEIID-432 fix for bad exception when deassigning a connector binding

Modified: trunk/server/src/main/java/com/metamatrix/admin/server/ServerConfigAdminImpl.java
===================================================================
--- trunk/server/src/main/java/com/metamatrix/admin/server/ServerConfigAdminImpl.java	2009-03-19 22:26:17 UTC (rev 606)
+++ trunk/server/src/main/java/com/metamatrix/admin/server/ServerConfigAdminImpl.java	2009-03-20 02:37:03 UTC (rev 607)
@@ -29,6 +29,7 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -1583,22 +1584,20 @@
 
     }
 
-    
-    
-    
-    private ConnectorBinding getConnectorBindingByName(String name) throws ConfigurationException, ServiceException {
+    private ConnectorBinding getConnectorBindingByName(String name) throws ConfigurationException, ServiceException, AdminProcessingException {
         Configuration nextStartupConfig = getConfigurationServiceProxy().getNextStartupConfiguration();
         ConnectorBinding cb = nextStartupConfig.getConnectorBinding(name);
+        if (cb == null) {
+        	throw new AdminProcessingException(AdminServerPlugin.Util.getString("ServerConfigAdminImpl.Connector_Binding_not_found_in_Configuration", name)); //$NON-NLS-1$
+        }
         return cb;
     }
     
-    protected List getConnectorBindingsByName(String[] bindingNames) throws ConfigurationException, ServiceException {
-    	List bindingList = new ArrayList(bindingNames.length);
+    protected List<ConnectorBinding> getConnectorBindingsByName(String[] bindingNames) throws ConfigurationException, ServiceException, AdminProcessingException {
+    	List<ConnectorBinding> bindingList = new ArrayList<ConnectorBinding>(bindingNames.length);
     	
-        Configuration nextStartupConfig = getConfigurationServiceProxy().getNextStartupConfiguration();
         for(int i=0; i<bindingNames.length; i++) {
-        	ConnectorBinding cb = nextStartupConfig.getConnectorBinding(bindingNames[i]);
-        	bindingList.add(cb);
+        	bindingList.add(getConnectorBindingByName(bindingNames[i]));
         }
         return bindingList;
     }
@@ -1720,61 +1719,55 @@
                                            String modelName) throws AdminException {
         try {
 
-            List bindingList = getConnectorBindingsByName(connectorBindingNames);
-            if (!bindingList.isEmpty()) {
+            List<ConnectorBinding> connectorList = getConnectorBindingsByName(connectorBindingNames);
 
-                Collection colVdbs = getVirtualDatabases();
-                if (colVdbs != null) {
-                    for (Iterator iter = colVdbs.iterator(); iter.hasNext();) {
-                        VirtualDatabase vdb = (VirtualDatabase)iter.next();
+            Collection colVdbs = getVirtualDatabases();
+            if (colVdbs == null) {
+            	return;
+            }
+            for (Iterator iter = colVdbs.iterator(); iter.hasNext();) {
+                VirtualDatabase vdb = (VirtualDatabase)iter.next();
 
-                        if (vdb.getName().equals(vdbName) && vdb.getVirtualDatabaseID().getVersion().equals(vdbVersion)) {
-                            VirtualDatabaseID vdbId = (VirtualDatabaseID)vdb.getID();
-                            Collection models = getModels(vdbId);
+                if (vdb.getName().equals(vdbName) && vdb.getVirtualDatabaseID().getVersion().equals(vdbVersion)) {
+                    VirtualDatabaseID vdbId = (VirtualDatabaseID)vdb.getID();
+                    Collection models = getModels(vdbId);
 
-                            if (models != null) {
-                                HashMap map = new HashMap(models.size());
-                                Iterator modelIter = models.iterator();
-                                while (modelIter.hasNext()) {
-                                    Model model = (Model)modelIter.next();
-            
-                                    if (model.getName().equals(modelName)) {                                       
-                                        if (model.getConnectorBindingNames().size() > 0) {
-                                             
-                                             // load all the existing bindings
-                                             Set bindingSet = new HashSet(model.getConnectorBindingNames().size());
-                                             bindingSet.addAll(model.getConnectorBindingNames());
-                                             
-                                             // remove the bindings passed in to be removed
-                                             List toBeRemovedBindings = getConnectorBindingsByName(connectorBindingNames);
-                                             Iterator toBeRemovedBindingsIter = toBeRemovedBindings.iterator();
-                                             while(toBeRemovedBindingsIter.hasNext()) {
-                                                	ConnectorBinding toBeRemovedBinding = (ConnectorBinding)toBeRemovedBindingsIter.next();
-                                                	bindingSet.remove(toBeRemovedBinding.getRoutingUUID());                                               
-                                             }
-                                             
-                                             // convert the set to a list for the map
- 			                                 List bindings = new ArrayList(model.getConnectorBindingNames().size());
-                                             bindings.addAll(bindingSet);
-                                             map.put(model.getName(), bindings);
-                                         }
-                                    } else {
-                                        //put the original name in the map, because the user is not changing this
-                                        map.put(model.getName(), model.getConnectorBindingNames());
-                                    }
-                                }
-                                
-                                setConnectorBindingNames(vdbId, map);
-
+                    if (models != null) {
+                        HashMap map = new HashMap(models.size());
+                        Iterator modelIter = models.iterator();
+                        while (modelIter.hasNext()) {
+                            Model model = (Model)modelIter.next();
+    
+                            if (model.getName().equals(modelName)) {                                       
+                                if (model.getConnectorBindingNames().size() > 0) {
+                                     
+                                     // load all the existing bindings
+                                     Set bindingSet = new HashSet(model.getConnectorBindingNames().size());
+                                     bindingSet.addAll(model.getConnectorBindingNames());
+                                     
+                                     // remove the bindings passed in to be removed
+                                     for (ConnectorBinding binding : connectorList) {
+                                        	bindingSet.remove(binding.getRoutingUUID());                                               
+                                     }
+                                     
+                                     // convert the set to a list for the map
+	                                 List bindings = new ArrayList(model.getConnectorBindingNames().size());
+                                     bindings.addAll(bindingSet);
+                                     map.put(model.getName(), bindings);
+                                 }
+                            } else {
+                                //put the original name in the map, because the user is not changing this
+                                map.put(model.getName(), model.getConnectorBindingNames());
                             }
-                            setVDBState(vdbId, VDB.ACTIVE);
-                            // done
-                            break;
                         }
+                        
+                        setConnectorBindingNames(vdbId, map);
+
                     }
+                    setVDBState(vdbId, VDB.ACTIVE);
+                    // done
+                    break;
                 }
-            } else {
-                throw new AdminProcessingException(AdminServerPlugin.Util.getString("ServerConfigAdminImpl.Connector_Binding_not_found_in_Configuration")); //$NON-NLS-1$
             }
         } catch (VirtualDatabaseException e) {
         	throw new AdminComponentException(e);

Modified: trunk/server/src/test/java/com/metamatrix/admin/server/TestServerConfigAdminImpl.java
===================================================================
--- trunk/server/src/test/java/com/metamatrix/admin/server/TestServerConfigAdminImpl.java	2009-03-19 22:26:17 UTC (rev 606)
+++ trunk/server/src/test/java/com/metamatrix/admin/server/TestServerConfigAdminImpl.java	2009-03-20 02:37:03 UTC (rev 607)
@@ -30,6 +30,7 @@
 import junit.framework.TestCase;
 
 import com.metamatrix.admin.api.exception.AdminException;
+import com.metamatrix.admin.api.exception.AdminProcessingException;
 import com.metamatrix.admin.api.objects.Host;
 import com.metamatrix.core.util.ObjectConverterUtil;
 import com.metamatrix.core.util.UnitTestUtil;
@@ -297,6 +298,22 @@
     	// Check results - expect to have no bindings
     	expectedBindingNames = new HashSet();
     	helpCheckBindings(model,expectedBindingNames);
+    }
+    
+    public void testDeassignNonexistantBinding() throws Exception {
+    	// The FakeConfiguration has 3 connectors available, connectorBinding1, 2 and 3.
+    	
+    	// Assign multiple connector bindings, connectorBinding1 , 2 and 3
+    	String[] bindings = new String[] {"connectorBinding1", "connectorBinding2", "connectorBinding3"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+    	
+    	admin.assignBindingsToModel(bindings,VDB_NAME2,VERSION1,PHYSICAL_MODEL_NAME2);  
+    	
+    	String[] debindings = new String[] {"connectorBindingx"}; //$NON-NLS-1$ 
+    	try {
+    		admin.deassignBindingsFromModel(debindings,VDB_NAME2,VERSION1,PHYSICAL_MODEL_NAME2);  
+    	} catch (AdminProcessingException e) {
+    		assertEquals("Connector Binding connectorBindingx not found in Configuration", e.getMessage()); //$NON-NLS-1$ 
+    	}
     }
     
     public void testAddAuthenticationProvider() throws Exception {




More information about the teiid-commits mailing list