diff options
Diffstat (limited to 'java')
3 files changed, 44 insertions, 10 deletions
diff --git a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java index 7c353b3c57..d74d3f413f 100644 --- a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java +++ b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/UpdateGenerator.java @@ -70,17 +70,23 @@ public final class UpdateGenerator extends BaseGenerator { List parameters = new ArrayList(); Type type = changedObject.getType(); TableWrapper tableWrapper = new TableWrapper(table); + // get changed fields + ChangeSummary summary = changedObject.getDataGraph().getChangeSummary(); + HashSet changedFields = getChangedFields(mapping, summary, changedObject, tableWrapper); + // if there are no changed fields return null + if (changedFields.size() == 0) { + return null; + } + // compose statement StringBuffer statement = new StringBuffer("update "); if(mapping.getConfig().isDatabaseSchemaNameSupported()){ statement.append(table.getSchemaName()+"."+table.getTableName()); } else{ - statement.append(table.getTableName()); + statement.append(table.getTableName()); } statement.append(" set "); - ChangeSummary summary = changedObject.getDataGraph().getChangeSummary(); - HashSet changedFields = getChangedFields(mapping, summary, changedObject, tableWrapper); Iterator i = changedFields.iterator(); int idx = 1; diff --git a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java index c348eae54e..f8c669ed43 100644 --- a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java +++ b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeFactory.java @@ -65,9 +65,14 @@ public class ChangeFactory { deleteCommand = cmd; } - ChangeOperation createUpdateOperation(DataObject changedObject, String propagatedID) { - return new UpdateOperation(getUpdateCommand(changedObject), changedObject, propagatedID); - } + ChangeOperation createUpdateOperation(DataObject changedObject, String propagatedID) { + UpdateCommandImpl cmd = getUpdateCommand(changedObject); + if (cmd == null) { + return null; + } else { + return new UpdateOperation(cmd, changedObject, propagatedID); + } + } ChangeOperation createUpdateOperation(DataObject changedObject) { return createUpdateOperation(changedObject, null); @@ -160,9 +165,16 @@ public class ChangeFactory { updateCommand = new UpdateCommandImpl(update); } } - updateCommand.setConnection(connection); - updateCommand.configWrapper = mapping; + if (updateCommand != null) { + updateCommand.setConnection(connection); + updateCommand.configWrapper = mapping; + } else { + if(this.logger.isDebugEnabled()) { + this.logger.debug("Update command is NULL"); + } + } + if (this.logger.isDebugEnabled()) { this.logger.debug("Returning updateCommand: " + updateCommand); } diff --git a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java index 5131819b69..0f83dcd939 100644 --- a/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java +++ b/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java @@ -112,7 +112,15 @@ public class ChangeSummarizer { this.logger.debug("Attribute Change for " + changedObject.getType().getName()); } String propagatedID = (String) generatedKeys.get(changedObject.getType().getName()); - changes.addUpdate(factory.createUpdateOperation(changedObject, propagatedID)); + ChangeOperation op = factory.createUpdateOperation(changedObject, propagatedID); + if (op != null) { + changes.addUpdate(op); + } else { + if(this.logger.isDebugEnabled()) { + this.logger.debug("Update Operation is NULL"); + } + } + } else { List values = changeSummary.getOldValues(changedObject); Iterator i = values.iterator(); @@ -128,7 +136,15 @@ public class ChangeSummarizer { } if (hasState(ref, changedObject)) { ChangeFactory factory = getRegistry().getFactory(changedObject.getType()); - changes.addUpdate(factory.createUpdateOperation(changedObject)); + ChangeOperation op = factory.createUpdateOperation(changedObject); + if (op != null) { + changes.addUpdate(op); + } else { + if(this.logger.isDebugEnabled()) { + this.logger.debug("Update Operation is NULL"); + } + } + } } } |