Author: simoneg
Date: Tue Sep 15 23:46:46 2009
New Revision: 815566

URL: http://svn.apache.org/viewvc?rev=815566&view=rev
Log:
LABS-452 : MagPersistent as a neutral alternative to OpenJPA Persistent while 
waiting for JPA 2

Added:
    
labs/magma/trunk/database-openjpa/src/main/java/org/apache/magma/database/openjpa/UseOpenJPAPersistentAnnotation.aj
    labs/magma/trunk/database-openjpa/src/test/
    labs/magma/trunk/database-openjpa/src/test/java/
    labs/magma/trunk/database-openjpa/src/test/java/org/
    labs/magma/trunk/database-openjpa/src/test/java/org/apache/
    labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/
    labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/
    
labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/openjpa/
    
labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/openjpa/BeanWithStream.java
    
labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/openjpa/TestAnnotationPresent.java
    
labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/MagPersistent.java

Added: 
labs/magma/trunk/database-openjpa/src/main/java/org/apache/magma/database/openjpa/UseOpenJPAPersistentAnnotation.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-openjpa/src/main/java/org/apache/magma/database/openjpa/UseOpenJPAPersistentAnnotation.aj?rev=815566&view=auto
==============================================================================
--- 
labs/magma/trunk/database-openjpa/src/main/java/org/apache/magma/database/openjpa/UseOpenJPAPersistentAnnotation.aj
 (added)
+++ 
labs/magma/trunk/database-openjpa/src/main/java/org/apache/magma/database/openjpa/UseOpenJPAPersistentAnnotation.aj
 Tue Sep 15 23:46:46 2009
@@ -0,0 +1,12 @@
+package org.apache.magma.database.openjpa;
+
+import org.apache.magma.database.MagPersistent;
+import org.apache.openjpa.persistence.Persistent;
+import javax.persistence.Entity;
+
+public aspect UseOpenJPAPersistentAnnotation {
+       
+       declare @method : @MagPersistent * (@Entity *).get*(..) : @Persistent;
+       declare @field : @MagPersistent * (@Entity *).* : @Persistent;
+       
+}

Added: 
labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/openjpa/BeanWithStream.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/openjpa/BeanWithStream.java?rev=815566&view=auto
==============================================================================
--- 
labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/openjpa/BeanWithStream.java
 (added)
+++ 
labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/openjpa/BeanWithStream.java
 Tue Sep 15 23:46:46 2009
@@ -0,0 +1,25 @@
+package org.apache.magma.database.openjpa;
+
+import java.io.InputStream;
+
+import javax.persistence.Entity;
+
+import org.apache.magma.beans.MagmaBean;
+import org.apache.magma.database.MagPersistent;
+
+...@entity
+...@magmabean
+public class BeanWithStream {
+       
+       private InputStream mystream;
+
+       @MagPersistent
+       public InputStream getMystream() {
+               return mystream;
+       }
+
+       public void setMystream(InputStream mystream) {
+               this.mystream = mystream;
+       }
+
+}

Added: 
labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/openjpa/TestAnnotationPresent.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/openjpa/TestAnnotationPresent.java?rev=815566&view=auto
==============================================================================
--- 
labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/openjpa/TestAnnotationPresent.java
 (added)
+++ 
labs/magma/trunk/database-openjpa/src/test/java/org/apache/magma/database/openjpa/TestAnnotationPresent.java
 Tue Sep 15 23:46:46 2009
@@ -0,0 +1,21 @@
+package org.apache.magma.database.openjpa;
+
+import static org.junit.Assert.*;
+
+import java.lang.reflect.Method;
+
+import org.apache.magma.database.MagPersistent;
+import org.apache.openjpa.persistence.Persistent;
+import org.junit.Test;
+
+
+public class TestAnnotationPresent {
+
+       @Test
+       public void persistentAnnotation() throws Exception {
+               Method method = BeanWithStream.class.getMethod("getMystream");
+               assertTrue("No MagPersistent annotation", 
method.isAnnotationPresent(MagPersistent.class));
+               assertTrue("No OpenJPA Persistent annotation", 
method.isAnnotationPresent(Persistent.class));
+       }
+       
+}

Added: 
labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/MagPersistent.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/MagPersistent.java?rev=815566&view=auto
==============================================================================
--- 
labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/MagPersistent.java
 (added)
+++ 
labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/MagPersistent.java
 Tue Sep 15 23:46:46 2009
@@ -0,0 +1,18 @@
+package org.apache.magma.database;
+
+import java.io.InputStream;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Use this annotation on {...@link InputStream} properties that must be saved 
on database.
+ *
+ * @author Simone Gianni <[email protected]>
+ */
+...@retention(RetentionPolicy.RUNTIME)
+...@target({ElementType.FIELD, ElementType.METHOD})
+public @interface MagPersistent {
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to