Brent,
This looks good.  What tool provided the coverage data?
Thanks,
--Kevin


Brent Daniel wrote:

The attached patch has three changes in response to coverage data:

1) Some dead internal code has been removed
2) Test cases have been updated to test some corner cases that weren't
being covered
3) A fix to operation sorting for deletes (this was not being tested
previously.)

Brent

------------------------------------------------------------------------

Index: src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java
===================================================================
--- src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java   
(revision 425121)
+++ src/test/java/org/apache/tuscany/das/rdb/test/OperationOrderingTests.java   
(working copy)
@@ -16,6 +16,9 @@
 */
package org.apache.tuscany.das.rdb.test;

+import java.util.ArrayList;
+import java.util.Iterator;
+
import org.apache.tuscany.das.rdb.Command;
import org.apache.tuscany.das.rdb.DAS;
import org.apache.tuscany.das.rdb.test.data.CityData;
@@ -75,4 +78,44 @@
                assertEquals(numberOfStates + 1, root.getList("STATES").size());
        }

+       public void testDeletes() throws Exception {
+               DAS das = DAS.FACTORY.createDAS(getConfig("cityStates.xml"), 
getConnection());
+               Command select = das
+                               .createCommand(
+                                               "Select * from STATES inner join 
CITIES on STATES.ID = CITIES.STATE_ID");             
+               DataObject root = select.executeQuery();
+
+               
+               DataObject firstState = root.getDataObject("STATES[1]");
+               String stateName = firstState.getString("NAME");
+               
+               ArrayList cityNames = new ArrayList();
+               Iterator i = firstState.getList("cities").iterator();
+               while ( i.hasNext()) {
+                       DataObject firstCity = (DataObject) i.next();
+                       cityNames.add(firstCity.getString("NAME"));             
      
+                       firstCity.delete();                                     
+               }
+               firstState.delete();
+       
+               
+               
+               
+               das.applyChanges(root);
+       
+               root = select.executeQuery();
+               
+               Iterator iter = root.getList("STATES").iterator();
+               while ( iter.hasNext()) {
+                       DataObject state = (DataObject)iter.next();
+                       assertFalse(state.getString("NAME").equals(stateName));
+               }
+               
+               iter = root.getList("CITIES").iterator();
+               while ( iter.hasNext()) {
+                       DataObject city = (DataObject)iter.next();
+                       assertFalse(cityNames.contains(city.getString("NAME")));
+               }
+               
+       }
}
Index: src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java
===================================================================
--- src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java   
(revision 425121)
+++ src/test/java/org/apache/tuscany/das/rdb/test/ExceptionTests.java   
(working copy)
@@ -16,6 +16,7 @@
 */
package org.apache.tuscany.das.rdb.test;

+import java.io.FileInputStream;
import java.sql.Connection;

import org.apache.tuscany.das.rdb.Command;
@@ -26,6 +27,7 @@
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 {
@@ -133,5 +135,6 @@

    }
+ }
Index: src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java
===================================================================
--- src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java    
(revision 425121)
+++ src/test/java/org/apache/tuscany/das/rdb/test/CrudWithChangeHistory.java    
(working copy)
@@ -48,6 +48,41 @@
        super.tearDown();
    }

+    public void testDeleteAndCreate() throws Exception {
+               DAS das = DAS.FACTORY.createDAS(
+                               getConfig("basicCustomerMappingWithCUD2.xml"), 
getConnection());
+               // Read customer 1
+               Command select = das
+                               .createCommand("Select * from CUSTOMER");
+               DataObject root = select.executeQuery();
+
+               DataObject customer = (DataObject) root.get("CUSTOMER[1]");
+
+               int customerId = customer.getInt("ID");
+               // Modify customer
+               customer.delete();
+
+               DataObject newCustomer = root.createDataObject("CUSTOMER");
+               newCustomer.setInt("ID", 9999);
+               newCustomer.setString("LASTNAME", "Jones");
+               
+               // Build apply changes command
+               das.applyChanges(root);
+
+               // Verify changes
+               root = select.executeQuery();
+               boolean found = false;
+               Iterator i = root.getList("CUSTOMER").iterator();
+               while ( i.hasNext()) {
+                       customer = (DataObject)i.next();
+                       assertFalse(customerId == customer.getInt("ID"));
+                       if ( customer.getInt("ID") == 9999 )
+                               found = true;
+               }
+               
+               assertTrue(found);
+
+       }
    /**
     * Read and modify a customer. Provide needed Create/Update/Delete
     * statements programatically
Index: src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java
===================================================================
--- src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java (revision 
425121)
+++ src/test/java/org/apache/tuscany/das/rdb/test/OCCTests.java (working copy)
@@ -17,7 +17,10 @@
package org.apache.tuscany.das.rdb.test;

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.config.Config;
+import org.apache.tuscany.das.rdb.config.ConfigFactory;
import org.apache.tuscany.das.rdb.test.data.BookData;
import org.apache.tuscany.das.rdb.test.framework.DasTest;

@@ -99,4 +102,29 @@
                                throw ex;
                }
        }
+       
+       public void testProvidedConfig() throws Exception {
+               // Create config programmatically
+               Config config = ConfigFactory.INSTANCE.createConfig();
+               ConfigHelper helper = new ConfigHelper(config);
+               helper.addPrimaryKey("BOOK.BOOK_ID");
+               DAS das = DAS.FACTORY.createDAS(helper.getConfig(), 
getConnection());
+
+               // Read a book instance
+               Command select = das
+                               .createCommand("SELECT * FROM BOOK WHERE BOOK_ID = 
1");
+               DataObject root = select.executeQuery();
+               DataObject book = root.getDataObject("BOOK[1]");
+               // Change a field to mark the instance 'dirty'
+               book.setInt("QUANTITY", 2);
+
+               // Flush the change
+
+               das.applyChanges(root);
+
+               // Verify
+               root = select.executeQuery();
+               book = root.getDataObject("BOOK[1]");
+               assertEquals(2, book.getInt("QUANTITY"));
+       }
}
Index: src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java
===================================================================
--- src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java   
(revision 425121)
+++ src/test/java/org/apache/tuscany/das/rdb/test/ConverterTests.java   
(working copy)
@@ -23,8 +23,11 @@

import org.apache.tuscany.das.rdb.Command;
import org.apache.tuscany.das.rdb.DAS;
+import org.apache.tuscany.das.rdb.test.customer.Customer;
+import org.apache.tuscany.das.rdb.test.customer.CustomerFactory;
import org.apache.tuscany.das.rdb.test.data.CustomerData;
import org.apache.tuscany.das.rdb.test.framework.DasTest;
+import org.apache.tuscany.sdo.util.SDOUtil;

import commonj.sdo.DataObject;

@@ -99,4 +102,59 @@
                
        }
        
+       public void testInvalidConverter1() throws Exception {
+
+               DAS das = 
DAS.FACTORY.createDAS(getConfig("InvalidConverter.xml"), getConnection());
+               
+               // Build the select command to read a specific customer and 
related
+               // orders
+               Command select = das
+                               .createCommand(
+                                               "SELECT * FROM CUSTOMER LEFT JOIN 
ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?");
+
+               // Parameterize the command     
+               select.setParameter(1, new Integer(1));
+
+               // Get the graph
+               try {
+                       select.executeQuery();
+               } catch (Exception ex) {
+                       assertEquals("java.lang.ClassNotFoundException: 
not.a.valid.class", ex.getMessage());
+               }
+
+       
+       }
+       
+       public void testInvalidConverter2() throws Exception {
+
+               SDOUtil.registerStaticTypes(CustomerFactory.class);
+               DAS das = 
DAS.FACTORY.createDAS(getConfig("InvalidConverter.xml"), getConnection());
+               
+               // Build the select command to read a specific customer and 
related
+               // orders
+               Command select = das
+                               .createCommand(
+                                               "SELECT * FROM ANORDER");     
+
+               // Get the graph
+               
+               DataObject root = select.executeQuery();
+               DataObject order = root.getDataObject("AnOrder[1]");
+               
+               Customer customer = (Customer) 
root.createDataObject("Customer");
+               customer.setID(700);
+               customer.setLastName("Daniel");
+               customer.setAddress("an address");            
+               
+               customer.getOrders().add(order);        
+               
+               try {
+                       das.applyChanges(root);
+               } catch (Exception ex) {
+                       assertEquals("java.lang.ClassNotFoundException: 
not.a.valid.class", ex.getMessage());
+               }
+
+       
+       }
+       
}
Index: src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java
===================================================================
--- src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java      
(revision 425121)
+++ src/test/java/org/apache/tuscany/das/rdb/test/GeneratedId.java      
(working copy)
@@ -22,6 +22,8 @@
* */

+import java.util.Iterator;
+
import org.apache.tuscany.das.rdb.Command;
import org.apache.tuscany.das.rdb.DAS;
import org.apache.tuscany.das.rdb.test.data.CompanyData;
@@ -100,6 +102,31 @@

    }

+    // Test insert into row with generated ID and generated insert
+    public void testInsert4() throws Exception {
+
+       DAS das = 
DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"),getConnection());
+ Command select = das.getCommand("all companies"); + DataObject root = select.executeQuery();
+
+        DataObject company = root.createDataObject("COMPANY");
+        company.setString("NAME", "Phil's Tires");
+        // This shouldn't do anything
+        company.setInt("ID", 999);
+ + das.applyChanges(root); + + // Verify insert + root = select.executeQuery();
+
+        assertEquals(4, root.getList("COMPANY").size());
+        Iterator i = root.getList("COMPANY").iterator();
+        while ( i.hasNext()) {
+               DataObject comp = (DataObject)i.next();
+               assertFalse( comp.getInt("ID") == 999);
+ } +
+    }
    // Test ability to propogate generated values back to owning data objects
    public void testPropagateIds() throws Exception {
Index: src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java
===================================================================
--- src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java 
(revision 425121)
+++ src/test/java/org/apache/tuscany/das/rdb/test/CompoundKeyTests.java 
(working copy)
@@ -92,4 +92,21 @@
        assertEquals(2, firstOrder.getList("ORDERDETAILS").size());

    }
+ + public void testReadAndDelete() throws Exception {
+       DAS das = 
DAS.FACTORY.createDAS(getConfig("OrdersOrderDetailsConfig.xml"), 
getConnection());
+        Command getOrderDetails = das
+                .createCommand("Select * from ORDERDETAILS where ORDERID = ? AND 
PRODUCTID = ?");
+ +
+        getOrderDetails.setParameter(1, new Integer(1));
+        getOrderDetails.setParameter(2, new Integer(1));
+
+        DataObject root = getOrderDetails.executeQuery();
+
+        DataObject orderDetail = (DataObject) root.get("ORDERDETAILS[1]");
+        orderDetail.delete();
+ das.applyChanges(root); +
+    }
}
Index: src/test/resources/BooksConfig.xml
===================================================================
--- src/test/resources/BooksConfig.xml  (revision 425121)
+++ src/test/resources/BooksConfig.xml  (working copy)
@@ -21,7 +21,7 @@

        <Table tableName="BOOK">
        <Column columnName="BOOK_ID" primaryKey="true"/>
-           <Column columnName="OCC" collision="true"/>
+           <Column columnName="OCC" collision="true" 
propertyName="anOccColumn"/>
    </Table>
</Config>
Index: src/test/resources/InvalidConverter.xml
===================================================================
--- /dev/null   (revision 0)
+++ src/test/resources/InvalidConverter.xml     (revision 0)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+  Copyright (c) 2005 The Apache Software Foundation or its licensors, as 
applicable.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+ -->
+<Config xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd"; +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+dataObjectModel="http:///org.apache.tuscany.das.rdb.test/customer.xsd";>
+
+  <Table tableName="CUSTOMER" typeName="Customer">
+    <Column columnName="ID"  primaryKey="true" 
converterClassName="not.a.valid.class"/>
+  </Table>
+ + <Table tableName="ANORDER" typeName="AnOrder">
+       <Column columnName="CUSTOMER_ID"/>
+    <Column columnName="ID"  primaryKey="true"/>
+  </Table>
+       
+  <Relationship name="orders" primaryKeyTable="CUSTOMER" foreignKeyTable="ANORDER" 
many="true">
+     <KeyPair primaryKeyColumn="ID" foreignKeyColumn="CUSTOMER_ID"/>
+  </Relationship>
+ +</Config>
+
Index: 
src/main/java/org/apache/tuscany/das/rdb/impl/ApplyChangesCommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/ApplyChangesCommandImpl.java  
(revision 425121)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/ApplyChangesCommandImpl.java  
(working copy)
@@ -34,13 +34,6 @@
    private static final boolean debug = false;

    private ChangeSummarizer summarizer = new ChangeSummarizer();
-
-    public ApplyChangesCommandImpl() {
-    }
-
-    public ApplyChangesCommandImpl(Config config){
- this.configWrapper = new MappingWrapper(config); - } public ApplyChangesCommandImpl(Config config, Connection connection){ this.configWrapper = new MappingWrapper(config); @@ -53,18 +46,7 @@
                summarizer.setConnection(connection);
        }

-    public void addCreateCommand(Type type, Command cmd) {
- summarizer.addCreateCommand(type, cmd); - }

- public void addUpdateCommand(Type type, Command cmd) { - summarizer.addUpdateCommand(type, cmd); - }
-
-    public void addDeleteCommand(Type type, Command cmd) {
- summarizer.addDeleteCommand(type, cmd); - }
-
    public void execute(DataObject root) {
        DebugUtil.debugln(getClass(), debug, "Executing ApplyChangesCmd");

Index: src/main/java/org/apache/tuscany/das/rdb/impl/FactoryRegistry.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/FactoryRegistry.java  
(revision 425121)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/FactoryRegistry.java  
(working copy)
@@ -39,7 +39,7 @@
                ChangeFactory factory = (ChangeFactory)registry.get(type);
                if ( factory == null )  {
                        DebugUtil.debugln(getClass(), debug, "Creating new 
ChangeFactory for type " + type.getName());
-                       factory = new ChangeFactory(type, mapping, connection);
+                       factory = new ChangeFactory(mapping, connection);
                        registry.put(type, factory);
                }
                return factory;
Index: src/main/java/org/apache/tuscany/das/rdb/impl/ParameterImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/ParameterImpl.java    
(revision 425121)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/ParameterImpl.java    
(working copy)
@@ -50,10 +50,6 @@
                super();
        }

-       public ParameterImpl(String name) {
-               this.name = name;
-       }
-
        public ParameterImpl(int index) {
                this.index = index;
        }
@@ -113,14 +109,6 @@
                return this.converter;
        }

-
-       public String toString() {
-               StringBuffer buffer = new StringBuffer();
-               buffer.append("Index: " + getIndex());
-               buffer.append("\nName: " + getName());
-               buffer.append("\nValue: " + getValue());
-               return buffer.toString();
-       }
        
        
}
Index: src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java        
(revision 425121)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/InsertCommandImpl.java        
(working copy)
@@ -35,9 +35,6 @@
                addParameters(create.getParameters());
        }

-       protected boolean isInsert() {
-               return true;
-       }

        public int getGeneratedKey() {

@@ -60,16 +57,5 @@

        }

-       public String toString() {

-               String superString = super.toString();
-               StringBuffer buffer = new StringBuffer(superString);
-
-               buffer.append("\nGenerating key: " + hasGeneratedKey);
-               if (hasGeneratedKey)
-                       buffer.append("\nGenerated key: " + generatedKey);
-
-               return buffer.toString();
-       }
-
}
Index: src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java 
(revision 425121)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java 
(working copy)
@@ -17,8 +17,6 @@
package org.apache.tuscany.das.rdb.impl;

import java.sql.SQLException;
-import java.util.Collection;
-import java.util.Iterator;
import java.util.StringTokenizer;

import org.apache.tuscany.das.rdb.config.Config;
@@ -89,13 +87,7 @@
                        addParameter(p);
                }
        }
-       public void addParameters(Collection updateParameters) {
-               Iterator i = updateParameters.iterator();
-               while ( i.hasNext()) {
-                       ParameterImpl p = (ParameterImpl) i.next();
-                       addParameter(p);
-               }
-       }
+       


}
Index: src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java    
(revision 425121)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java    
(working copy)
@@ -28,11 +28,8 @@
import org.apache.tuscany.das.rdb.util.DebugUtil;

import commonj.sdo.DataObject;
-import commonj.sdo.Type;

public class ChangeFactory {
-
- private final Type type;
        private InsertCommandImpl createCommand;

@@ -46,15 +43,10 @@

private final ConnectionImpl connection;
-       public ChangeFactory(Type type, MappingWrapper mapping, ConnectionImpl 
connection) {
-               this.type = type;
+       public ChangeFactory(MappingWrapper mapping, ConnectionImpl connection) 
{       
                this.mapping = mapping;
                this.connection = connection;
        }
-
-       public Type getType() {
-               return this.type;
-       }
        
        public void setCreateCommand(InsertCommandImpl cmd) {
                createCommand = cmd;
@@ -138,6 +130,7 @@
                                deleteCommand = new DeleteCommandImpl(delete);  
                                        
                        }
                        deleteCommand.setConnection(connection);
+                       deleteCommand.configWrapper = mapping;
                }
                return deleteCommand;
        }
Index: src/main/java/org/apache/tuscany/das/rdb/impl/QueryString.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/QueryString.java      
(revision 425121)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/QueryString.java      
(working copy)
@@ -1,86 +0,0 @@
-/**
- *
- *  Copyright 2005 The Apache Software Foundation or its licensors, as 
applicable.
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.tuscany.das.rdb.impl;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.tuscany.das.rdb.util.DebugUtil;
-
-
-public class QueryString {
-
-       private final String unmodifiedQueryString;
-       private final String preparedString;
-       private HashMap parameters = new HashMap();
-       private static final boolean debug = false;
-       
-       public QueryString(String originalString) {
-               this.unmodifiedQueryString = originalString;
-               this.preparedString = 
replaceNamesAndSetIndexes(originalString);        
-       }
-
-       public String getPreparedString() {
-               return this.preparedString;
-       }
-       
-       public String getUnmodifiedString() {
-               return this.unmodifiedQueryString;
-       }
-       
-       public int getParameterIndex(String name) {
-               DebugUtil.debugln(getClass(), debug, "Looking for parameter index 
for: " + name);
-               return ((Integer)parameters.get(name)).intValue();
-       }
-       
-       private String replaceNamesAndSetIndexes(String query) {
-               DebugUtil.debugln(getClass(), debug, "Parameterizing query: " + 
query);
-               Pattern p = Pattern.compile(":[\\S&&[^,()]]*");
-               Matcher m = p.matcher(query);
-
-               int index = 1;
-               while (m.find()) {
-                       parameters.put(m.group().substring(1), new 
Integer(index));
-                       query = m.replaceFirst("?");
-                       m = p.matcher(query);
-                       index++;
-               }
-               
-               DebugUtil.debugln(getClass(), debug, "Parameterized query: " + 
query);
-               return query;
-       }
-
-       
-       public String toString() {
-               StringBuffer buffer = new StringBuffer();
-               buffer.append("\nOriginal SQL: ");
-               buffer.append(unmodifiedQueryString);
-               buffer.append("\nPrepared SQL: ");
-               buffer.append(preparedString);
-               buffer.append("\nParameters: ");
-               Iterator i = parameters.keySet().iterator();
-               while ( i.hasNext() ) {
-                       String key = (String)i.next();
-                       buffer.append("\n");
-                       buffer.append(key);
-               }
-               return buffer.toString();
-       }
-
-}
Index: src/main/java/org/apache/tuscany/das/rdb/impl/DeleteList.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/impl/DeleteList.java       
(revision 425121)
+++ src/main/java/org/apache/tuscany/das/rdb/impl/DeleteList.java       
(working copy)
@@ -21,6 +21,8 @@
import java.util.HashMap;
import java.util.Iterator;

+import org.apache.tuscany.das.rdb.util.DebugUtil;
+
/**
 * DeleteList will sort delete operations so that child objects are deleted
 * before their parents
@@ -40,7 +42,7 @@
        }

        public void add(ChangeOperation op) {
-               if (( order == null  ) || ( op.getTableName() == null ) ) {
+               if (( order.size() == 0  ) || ( op.getTableName() == null ) ) {
                        deleteOperations.add(op);
                } else {
                        String name = op.getTableName();
@@ -54,11 +56,12 @@
        }

        public Collection getSortedList() {
-               if  (( order != null  ) && ( opsByTableName.keySet().size() > 
0) ) {
+               if  (( order.size() > 0  ) && ( opsByTableName.keySet().size() 
> 0) ) {
                        Iterator i = this.order.iterator();
                        while (i.hasNext()) {
                                String name = (String) i.next();
-                               deleteOperations.addAll((Collection) 
opsByTableName.get(name));
+                               if ( opsByTableName.get(name) != null)
+                                       deleteOperations.addAll((Collection) 
opsByTableName.get(name));
                        }
                }
                
Index: src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java  (revision 
425121)
+++ src/main/java/org/apache/tuscany/das/rdb/ConfigHelper.java  (working copy)
@@ -44,9 +44,6 @@
        configWrapper = new MappingWrapper(config);
    }

-    public Config newInstance() {
-        return factory.createConfig();
-    }

    public void addPrimaryKey(String columnName) {
        configWrapper.addPrimaryKey(columnName);
Index: 
src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
===================================================================
--- src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java 
(revision 425121)
+++ src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java 
(working copy)
@@ -190,19 +190,6 @@
        return propertyName;
    }

-    public void addCollisionColumn(String columnName) {
-
-        if (config == null)
-            config = factory.createConfig();
-
-        QualifiedColumn occColumn = new QualifiedColumn(columnName);
-        Table t = findOrCreateTable(occColumn.getTableName());
-        Column c = findOrCreateColumn(t, occColumn.getColumnName());
-        c.setCollision(true);
-
-        config.getTable().add(t);
-    }
-
    public void addTable(String tableName, String typeName) {
        Table table = getTable(tableName);
        if (table != null)
Index: 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
===================================================================
--- 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java    
    (revision 425121)
+++ 
src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java    
    (working copy)
@@ -111,7 +111,7 @@
                        } else {
                                if ( obj.isSet(p) ) {
                                        Relationship relationship = 
config.getRelationshipByReference(p);
-                                       if ( p.getOpposite().isMany() || 
(hasState(config, relationship, obj))) {                                        
               
+                                       if ((p.getOpposite() != null && 
p.getOpposite().isMany()) || (hasState(config, relationship, obj))) {                   
                                
                                                RelationshipWrapper r = new 
RelationshipWrapper(
                                                        relationship);
                                                Iterator keys = 
r.getForeignKeys().iterator();
Index: pom.xml
===================================================================
--- pom.xml     (revision 425121)
+++ pom.xml     (working copy)
@@ -63,8 +63,6 @@
                        <id>config</id>
                        <configuration>
                            
<schemaFile>${basedir}/src/main/resources/config.xsd</schemaFile>
-                            <generateLoader>true</generateLoader>
-                            <generateSwitch>true</generateSwitch>
                            <noNotification>true</noNotification>
                            <noUnsettable>true</noUnsettable>
                        </configuration>
@@ -76,8 +74,6 @@
                        <id>company</id>
                        <configuration>
                            
<schemaFile>${basedir}/src/test/resources/company.xsd</schemaFile>
-                            <generateLoader>true</generateLoader>
- <generateSwitch>true</generateSwitch> <noUnsettable>true</noUnsettable>
                        </configuration>
                        <goals>
@@ -88,8 +84,6 @@
                        <id>customer</id>
                        <configuration>
                            
<schemaFile>${basedir}/src/test/resources/customer.xsd</schemaFile>
-                            <generateLoader>true</generateLoader>
- <generateSwitch>true</generateSwitch> <noUnsettable>true</noUnsettable>
                        </configuration>
                        <goals>
------------------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to