You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2009/12/09 16:28:29 UTC

svn commit: r888834 - /camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java

Author: cmoulliard
Date: Wed Dec  9 15:28:29 2009
New Revision: 888834

URL: http://svn.apache.org/viewvc?rev=888834&view=rev
Log:
CAMEL-2273 - do not use fully qualified class name in JPA query but simple name or entity name

Modified:
    camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java

Modified: camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java?rev=888834&r1=888833&r2=888834&view=diff
==============================================================================
--- camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java (original)
+++ camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java Wed Dec  9 15:28:29 2009
@@ -21,6 +21,7 @@
 import java.util.List;
 import java.util.Queue;
 
+import javax.persistence.Entity;
 import javax.persistence.EntityManager;
 import javax.persistence.LockModeType;
 import javax.persistence.PersistenceException;
@@ -36,6 +37,7 @@
 import org.apache.commons.logging.LogFactory;
 
 import org.springframework.orm.jpa.JpaCallback;
+import org.springframework.util.ClassUtils;
 
 /**
  * @version $Revision$
@@ -234,13 +236,39 @@
             return QueryBuilder.nativeQuery(nativeQuery);
         } else {
             Class<?> entityType = endpoint.getEntityType();
+            
             if (entityType == null) {
                 return null;
             } else {
-                return QueryBuilder.query("select x from " + entityType.getName() + " x");
+                
+                // Check if we have a property name on the @Entity annotation
+                String name = getEntityName(entityType);
+                
+                if ( name != null ) {
+                    return QueryBuilder.query("select x from " + name + " x");
+                } else {
+                    // Remove package name of the entity to be conform with JPA 1.0 spec
+                    return QueryBuilder.query("select x from " + entityType.getSimpleName() + " x");
+                }
+                    
+
+                
             }
         }
     }
+    
+    protected String getEntityName(Class<?> clazz) {
+        
+        Entity entity = clazz.getAnnotation(Entity.class);
+        
+        // Check if the property name has been defined for Entity annotation
+        if ( ! entity.name().equals("") ) {
+            return entity.name();
+        } else {
+            return null;
+        }
+ 
+    }
 
     protected DeleteHandler<Object> createDeleteHandler() {
         // look for @Consumed to allow custom callback when the Entity has been consumed