Author: hthomann
Date: Wed Apr 17 23:18:05 2013
New Revision: 1469097
URL: http://svn.apache.org/r1469097
Log:
OPENJPA-2025: Byte[] and Char[] should be treated as SingularAttributes, not
lists by the metamodel generator - merged Mike Dick's trunk changes to 2.1.x
Modified:
openjpa/branches/2.1.x/ (props changed)
openjpa/branches/2.1.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java
openjpa/branches/2.1.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/SourceAnnotationHandler.java
Propchange: openjpa/branches/2.1.x/
------------------------------------------------------------------------------
Merged /openjpa/trunk:r1143520
Modified:
openjpa/branches/2.1.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java?rev=1469097&r1=1469096&r2=1469097&view=diff
==============================================================================
---
openjpa/branches/2.1.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java
(original)
+++
openjpa/branches/2.1.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AnnotationProcessor6.java
Wed Apr 17 23:18:05 2013
@@ -48,6 +48,7 @@ import javax.tools.JavaFileObject;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.meta.MetaDataFactory;
import org.apache.openjpa.persistence.PersistenceMetaDataFactory;
+import org.apache.openjpa.persistence.PersistentCollection;
import org.apache.openjpa.persistence.util.SourceCode;
@@ -164,9 +165,10 @@ public class AnnotationProcessor6 extend
*
*/
private TypeCategory toMetaModelTypeCategory(TypeMirror mirror,
- String name) {
- if (mirror.getKind() == TypeKind.ARRAY)
+ String name, boolean persistentCollection) {
+ if (mirror.getKind() == TypeKind.ARRAY && persistentCollection ) {
return TypeCategory.LIST;
+ }
if (CLASSNAMES_COLLECTION.contains(name))
return TypeCategory.COLLECTION;
if (CLASSNAMES_LIST.contains(name))
@@ -240,10 +242,13 @@ public class AnnotationProcessor6 extend
Set<? extends Element> members = handler.getPersistentMembers(e);
for (Element m : members) {
+ boolean isPersistentCollection =
m.getAnnotation(PersistentCollection.class) != null;
+
TypeMirror decl = handler.getDeclaredType(m);
String fieldName = handler.getPersistentMemberName(m);
- String fieldType = handler.getDeclaredTypeName(decl);
- TypeCategory typeCategory = toMetaModelTypeCategory(decl,
fieldType);
+ String fieldType = handler.getDeclaredTypeName(decl, true,
isPersistentCollection);
+ TypeCategory typeCategory =
+ toMetaModelTypeCategory(decl, fieldType,
isPersistentCollection);
String metaModelType = typeCategory.getMetaModelType();
SourceCode.Field modelField = null;
switch (typeCategory) {
Modified:
openjpa/branches/2.1.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/SourceAnnotationHandler.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.1.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/SourceAnnotationHandler.java?rev=1469097&r1=1469096&r2=1469097&view=diff
==============================================================================
---
openjpa/branches/2.1.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/SourceAnnotationHandler.java
(original)
+++
openjpa/branches/2.1.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/SourceAnnotationHandler.java
Wed Apr 17 23:18:05 2013
@@ -549,6 +549,10 @@ public class SourceAnnotationHandler
return getDeclaredTypeName(mirror, true);
}
+ String getDeclaredTypeName(TypeMirror mirror, boolean box) {
+ return getDeclaredTypeName(mirror, box, false);
+ }
+
/**
* Get the element name of the class the given mirror represents. If the
* mirror is primitive then returns the corresponding boxed class name.
@@ -557,12 +561,17 @@ public class SourceAnnotationHandler
* <code>java.util.Set<java.lang.String></code> this method will
* return <code>java.util.Set</code>.
*/
- String getDeclaredTypeName(TypeMirror mirror, boolean box) {
+ String getDeclaredTypeName(TypeMirror mirror, boolean box, boolean
persistentCollection) {
if (mirror == null || mirror.getKind() == TypeKind.NULL ||
mirror.getKind() == TypeKind.WILDCARD)
return "java.lang.Object";
if (mirror.getKind() == TypeKind.ARRAY) {
- TypeMirror comp = ((ArrayType)mirror).getComponentType();
- return getDeclaredTypeName(comp, false);
+ if(persistentCollection) {
+ TypeMirror comp = ((ArrayType)mirror).getComponentType();
+ return getDeclaredTypeName(comp, false);
+ }
+ else {
+ return mirror.toString();
+ }
}
mirror = box ? box(mirror) : mirror;
if (isPrimitive(mirror))