From 8c4a8b77f1aa80ada3c0eb3c2100dadadb580176 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Wed, 30 Jan 2019 16:37:03 +0100 Subject: [PATCH] [Fix] Fixed calling tx.addOrUpdate() after tx.remove() --- .../li/strolch/persistence/api/AbstractTransaction.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java index bc159e4e8..282898421 100644 --- a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java +++ b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java @@ -950,7 +950,8 @@ public abstract class AbstractTransaction implements StrolchTransaction { @Override public void addOrUpdate(Resource resource) throws StrolchModelException { DBC.PRE.assertNotNull("resource must not be null", resource); - if (hasResource(resource.getType(), resource.getId())) + if (hasResource(resource.getType(), resource.getId()) && !getObjectFilter() + .hasElement(Tags.RESOURCE, resource.getLocator())) getObjectFilter().update(Tags.RESOURCE, resource.getLocator(), resource); else getObjectFilter().add(Tags.RESOURCE, resource.getLocator(), resource); @@ -959,7 +960,7 @@ public abstract class AbstractTransaction implements StrolchTransaction { @Override public void addOrUpdate(Order order) throws StrolchModelException { DBC.PRE.assertNotNull("order must not be null", order); - if (hasOrder(order.getType(), order.getId())) + if (hasOrder(order.getType(), order.getId()) && !getObjectFilter().hasElement(Tags.ORDER, order.getLocator())) getObjectFilter().update(Tags.ORDER, order.getLocator(), order); else getObjectFilter().add(Tags.ORDER, order.getLocator(), order); @@ -968,7 +969,8 @@ public abstract class AbstractTransaction implements StrolchTransaction { @Override public void addOrUpdate(Activity activity) throws StrolchModelException { DBC.PRE.assertNotNull("activity must not be null", activity); - if (hasActivity(activity.getType(), activity.getId())) + if (hasActivity(activity.getType(), activity.getId()) && !getObjectFilter() + .hasElement(Tags.ACTIVITY, activity.getLocator())) getObjectFilter().update(Tags.ACTIVITY, activity.getLocator(), activity); else getObjectFilter().add(Tags.ACTIVITY, activity.getLocator(), activity);