Author: curtisr7
Date: Wed Mar 21 18:41:42 2012
New Revision: 1303496

URL: http://svn.apache.org/viewvc?rev=1303496&view=rev
Log:
OPENJPA-2156: Add support for generating a final class.

Modified:
    
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/util/SourceCode.java
    
openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/util/localizer.properties

Modified: 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/util/SourceCode.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/util/SourceCode.java?rev=1303496&r1=1303495&r2=1303496&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/util/SourceCode.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/util/SourceCode.java
 Wed Mar 21 18:41:42 2012
@@ -361,7 +361,8 @@ public class SourceCode {
         *
         */
        public class Class extends Element<Class> {
-               private boolean isAbstract;
+        private boolean isAbstract;
+               private boolean isFinal;
                private ClassName superCls;
                private List<ClassName> interfaces = new ArrayList<ClassName>();
            private Set<Field> fields   = new TreeSet<Field>();
@@ -383,10 +384,20 @@ public class SourceCode {
                        return this;
                }
                
-               public Class makeAbstract() {
-                       isAbstract = true;
-                       return this;
-               }
+        public Class makeAbstract() {
+            if (isFinal)
+                throw new 
IllegalArgumentException(_loc.get("src-invalid-modifier").toString());
+
+            isAbstract = true;
+            return this;
+        }
+
+        public Class makeFinal() {
+            if (isAbstract)
+                throw new 
IllegalArgumentException(_loc.get("src-invalid-modifier").toString());
+            isFinal = true;
+            return this;
+        }
                
            /**
             * Adds getters and setters to every non-public field.
@@ -449,6 +460,8 @@ public class SourceCode {
                        super.write(out, tab);
                        if (isAbstract) 
                            out.append("abstract ");
+                       if(isFinal)
+                           out.append("final ");
                        out.print("class ");
                        out.print(type.simpleName);
                        writeList(out, BLANK, params, PARAMS_DELIMITER, false);

Modified: 
openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/util/localizer.properties
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/util/localizer.properties?rev=1303496&r1=1303495&r2=1303496&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/util/localizer.properties
 (original)
+++ 
openjpa/trunk/openjpa-persistence/src/main/resources/org/apache/openjpa/persistence/util/localizer.properties
 Wed Mar 21 18:41:42 2012
@@ -23,3 +23,4 @@ src-invalid-type: "{0}" is not a valid t
 Java type or token and a valid Java identifier.
 src-invalid-field: "{0}" is not a valid field name. \
 It must be a non-reserved Java token and a valid Java identifier.
+src-invalid-modifier: Unable to declare a class as abstract and final.


Reply via email to