You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by bd...@apache.org on 2006/09/21 17:06:40 UTC

svn commit: r448576 - in /incubator/tuscany/java/das/rdb/src: main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/ test/java/org/apache/tuscany/das/rdb/test/

Author: bdaniel
Date: Thu Sep 21 08:06:40 2006
New Revision: 448576

URL: http://svn.apache.org/viewvc?view=rev&rev=448576
Log:
TUSCANY-740 Throw meaningful exception when there is a mismatch between a query and a data object model

Modified:
    incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/DataObjectMaker.java
    incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/ResultMetadata.java
    incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java

Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/DataObjectMaker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/DataObjectMaker.java?view=diff&rev=448576&r1=448575&r2=448576
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/DataObjectMaker.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/DataObjectMaker.java Thu Sep 21 08:06:40 2006
@@ -68,24 +68,23 @@
 
 			if (p.isContainment() && p.getType().equals(tableClass)) {
 				if (p.isMany())
-					rootObject.getList(p).add(obj);
-				// TODO This was a performance optimization for EMF in SDO 1.1,
-				// check to see if there is
-				// something equivalent in SDO 2.0
-				// ((InternalEList) this.dataGraph.eGet(ref)).addUnique(obj);
+					rootObject.getList(p).add(obj);			
 				else
 					this.rootObject.set(p, obj);
 			}
 
 		}
 
-		Iterator columnNames = resultMetadata.getColumnNames(
+		Iterator columnNames = resultMetadata.getPropertyNames(
 				tableData.getTableName()).iterator();
 		while (columnNames.hasNext()) {
-			String columnName = (String) columnNames.next();
+			String propertyName = (String) columnNames.next();
 
-			Property p = findProperty(obj.getType(), columnName);
-			Object value = tableData.getColumnData(columnName);
+			Property p = findProperty(obj.getType(), propertyName);
+			if ( p == null ) 
+				throw new RuntimeException("Type " + obj.getType().getName() + " does not contain a property named " + propertyName);
+			
+			Object value = tableData.getColumnData(propertyName);
 
 			obj.set(p, value);
 		}

Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/ResultMetadata.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/ResultMetadata.java?view=diff&rev=448576&r1=448575&r2=448576
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/ResultMetadata.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/ResultMetadata.java Thu Sep 21 08:06:40 2006
@@ -122,32 +122,27 @@
     }
 
 	private Converter loadConverter(String converterName) {
-		if (converterName != null) {
-		    
-		    try {
-		        
-		        Class converterClazz=  Class.forName(converterName, true, Thread.currentThread().getContextClassLoader());
-		        if(null != converterClazz)
-		            return (Converter) converterClazz.newInstance();		         
-		    } catch( Exception ex){
-		    	throw new RuntimeException(ex);
-		    }		
-		    
-	        try{   			        			        
-		        Class converterClazz = Class.forName(converterName);
-		        if ( converterClazz != null)
-		        	return (Converter)converterClazz.newInstance();		      
-		    } catch (Exception ex) {
-		        throw new RuntimeException(ex);
-		    }
-		}
-		return new DefaultConverter();
-	}
-
-    //private void debug(Object string) {
-    //    if (debug)
-    //        DebugUtil.debugln(getClass(), debug, string);
-    //}   
+        if (converterName != null) {
+
+            try {
+                Class converterClazz = Class.forName(converterName, true, Thread.currentThread().getContextClassLoader());
+                if (null != converterClazz)
+                    return (Converter) converterClazz.newInstance();
+
+                converterClazz = Class.forName(converterName);
+                if (converterClazz != null)
+                    return (Converter) converterClazz.newInstance();
+            } catch (ClassNotFoundException ex) {
+                throw new RuntimeException(ex);
+            } catch (IllegalAccessException ex) {
+                throw new RuntimeException(ex);
+            } catch (InstantiationException ex) {
+                throw new RuntimeException(ex);
+            }
+        }
+        return new DefaultConverter();
+    }
+
 
     public String getColumnPropertyName(int i) {
         return (String) propertyNames.get(i - 1);
@@ -263,7 +258,7 @@
      * @param tableName
      * @return
      */
-    public Collection getColumnNames(String tableName) {
+    public Collection getPropertyNames(String tableName) {
         return (Collection) tableToPropertyMap.get(tableName);
     }
 

Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java?view=diff&rev=448576&r1=448575&r2=448576
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java Thu Sep 21 08:06:40 2006
@@ -18,18 +18,21 @@
  */
 package org.apache.tuscany.das.rdb.test;
 
-import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.sql.Connection;
+import java.sql.SQLException;
 
 import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.ConfigHelper;
 import org.apache.tuscany.das.rdb.DAS;
+import org.apache.tuscany.das.rdb.test.company.CompanyFactory;
 import org.apache.tuscany.das.rdb.test.customer.CustomerFactory;
 import org.apache.tuscany.das.rdb.test.data.BookData;
+import org.apache.tuscany.das.rdb.test.data.CompanyData;
 import org.apache.tuscany.das.rdb.test.data.CustomerData;
 import org.apache.tuscany.das.rdb.test.data.OrderData;
 import org.apache.tuscany.das.rdb.test.data.OrderDetailsData;
 import org.apache.tuscany.das.rdb.test.framework.DasTest;
-import org.apache.tuscany.das.rdb.util.ConfigUtil;
 import org.apache.tuscany.sdo.util.SDOUtil;
 
 public class ExceptionTests extends DasTest {
@@ -45,6 +48,7 @@
         new OrderData(getAutoConnection()).refresh();
         new BookData(getAutoConnection()).refresh();
         new OrderDetailsData(getAutoConnection()).refresh();
+        new CompanyData(getAutoConnection()).refresh();
 
     }
 
@@ -137,6 +141,17 @@
 
     }
   
+    
+    public void testMismatchedDataObjectModel() throws FileNotFoundException, SQLException {
+    	SDOUtil.registerStaticTypes(CompanyFactory.class);
+    	DAS das = DAS.FACTORY.createDAS(getConfig("companyMappingWithConverters.xml"), getConnection());
+    	Command read = das.createCommand("select * from company");
+    	try {
+    		read.executeQuery();
+    	} catch (RuntimeException ex) {
+    		assertEquals("Type CompanyType does not contain a property named ID", ex.getMessage());
+    	}
+    }
    
     
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org