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;
+                }
             });
         }
     }

Reply via email to