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