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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to