Author: ppoddar
Date: Thu May  7 14:38:41 2009
New Revision: 772665

URL: http://svn.apache.org/viewvc?rev=772665&view=rev
Log:
OPENJPA-1010: Add -Asource option to control target compilable version for the 
generated meta-model source

Modified:
    
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java

Modified: 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java?rev=772665&r1=772664&r2=772665&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java
 Thu May  7 14:38:41 2009
@@ -65,7 +65,7 @@
     "javax.persistence.Entity",
     "javax.persistence.Embeddable", 
     "javax.persistence.MappedSuperclass" })
-...@supportedoptions( { "log", "out" })
+...@supportedoptions( { "log", "out", "source" })
 @SupportedSourceVersion(RELEASE_6)
 
 public class AnnotationProcessor6 extends AbstractProcessor {
@@ -244,15 +244,34 @@
         SourceCode.Class cls = source.getTopLevelClass();
         cls.addAnnotation(TypesafeMetamodel.class.getName())
             .addArgument("value", originalClass + ".class", false);
-        cls.addAnnotation(Generated.class.getName())
-           .addArgument("value", this.getClass().getName())
-           .addArgument("date", new Date().toString());
+        if (getSourceVersion() >= 6) {
+            cls.addAnnotation(Generated.class.getName())
+            .addArgument("value", this.getClass().getName())
+            .addArgument("date", new Date().toString());
+        }
     }
     
     private void comment(SourceCode source) {
         source.addComment(false, _loc.get("mmg-tool-sign").getMessage());
     }
     
+    /**
+     * Parse annotation processor option <code>-Asource=n</code> to detect
+     * the source version for the generated classes. 
+     * n must be a integer. Default or wrong specification returns 6.
+     */
+    private int getSourceVersion() {
+        String version = processingEnv.getOptions().get("source");
+        if (version != null) {
+            try {
+                return Integer.parseInt(version);
+            } catch (NumberFormatException e) {
+            
+            }
+        }
+        return 6;
+    }
+    
     private PrintWriter createSourceFile(String metaClass, TypeElement e) 
         throws IOException {
         JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();


Reply via email to