Repository: camel Updated Branches: refs/heads/master 3faef3f8a -> 5c435e0b3
CAMEL-8855 camel-jpa - Add support for JPA producer to delete records Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/cdbb91c6 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/cdbb91c6 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/cdbb91c6 Branch: refs/heads/master Commit: cdbb91c648efe4acb08b55c4e39c23d76730655a Parents: 3faef3f Author: Andrea Cosentino <anco...@gmail.com> Authored: Thu Jun 11 21:54:07 2015 +0200 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Thu Jun 11 21:54:07 2015 +0200 ---------------------------------------------------------------------- .../apache/camel/component/jpa/JpaEndpoint.java | 10 +++++++ .../apache/camel/component/jpa/JpaProducer.java | 30 ++++++++++++++++++-- 2 files changed, 37 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/cdbb91c6/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java index e725758..84fa7ee 100644 --- a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java +++ b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java @@ -74,6 +74,8 @@ public class JpaEndpoint extends ScheduledPollEndpoint { private boolean usePersist; @UriParam(label = "producer") private boolean usePassedInEntityManager; + @UriParam(label = "producer") + private boolean isRemove; public JpaEndpoint() { } @@ -290,6 +292,14 @@ public class JpaEndpoint extends ScheduledPollEndpoint { this.usePersist = usePersist; } + public boolean isRemove() { + return isRemove; + } + + public void setRemove(boolean isRemove) { + this.isRemove = isRemove; + } + public boolean isJoinTransaction() { return joinTransaction; } http://git-wip-us.apache.org/repos/asf/camel/blob/cdbb91c6/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaProducer.java b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaProducer.java index cf96488..72532b6 100644 --- a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaProducer.java +++ b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaProducer.java @@ -68,15 +68,28 @@ public class JpaProducer extends DefaultProducer { if (values.getClass().isArray()) { Object[] array = (Object[])values; for (Object element : array) { - save(element); + if (!getEndpoint().isRemove()) { + save(element); + } else { + remove(element); + } } } else if (values instanceof Collection) { Collection<?> collection = (Collection<?>)values; for (Object entity : collection) { - save(entity); + if (!getEndpoint().isRemove()) { + save(entity); + } else { + remove(entity); + } } } else { - Object managedEntity = save(values); + Object managedEntity = null; + if (!getEndpoint().isRemove()) { + managedEntity = save(values); + } else { + managedEntity = remove(values); + } if (!getEndpoint().isUsePersist()) { exchange.getIn().setBody(managedEntity); } @@ -103,6 +116,17 @@ public class JpaProducer extends DefaultProducer { return entityManager.merge(entity); } } + + /** + * Remove the given entity end return the managed entity + * + * @return the managed entity + */ + private Object remove(final Object entity) { + LOG.debug("remove: {}", entity); + entityManager.remove(entity); + return entity; + } }); } }