openjpa-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From fa...@apache.org
Subject svn commit: r955805 - in /openjpa/trunk/openjpa-persistence-jdbc/src: main/java/org/apache/openjpa/persistence/jdbc/ test/java/org/apache/openjpa/persistence/jdbc/mapping/
Date Fri, 18 Jun 2010 00:41:16 GMT
Author: fancy
Date: Fri Jun 18 00:41:16 2010
New Revision: 955805

URL: http://svn.apache.org/viewvc?rev=955805&view=rev
Log:
OPENJPA-1697: A EnumValueHandler strategy along with XmlType annotation incorrectly mapped
to XmlType in create table DDL

Added:
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/mapping/Authority.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/mapping/TestEnumXmlTypeMapping.java
Modified:
    openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java?rev=955805&r1=955804&r2=955805&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
(original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/AnnotationPersistenceMappingParser.java
Fri Jun 18 00:41:16 2010
@@ -1534,11 +1534,11 @@ public class AnnotationPersistenceMappin
             throw new MetaDataException(_loc.get("num-cols-mismatch", fm,
                 String.valueOf(cols.size()), String.valueOf(pcols.length)));
 
-        // cache the JAXB XmlType class if it is present so we do not
+        // cache the JAXB XmlRootElement class if it is present so we do not
         // have a hard-wired dependency on JAXB here
-        Class xmlTypeClass = null;
+        Class xmlRootElementClass = null;
         try {
-            xmlTypeClass = Class.forName("javax.xml.bind.annotation.XmlType");
+            xmlRootElementClass = Class.forName("javax.xml.bind.annotation.XmlRootElement");
         } catch (Exception e) {
         }
 
@@ -1552,12 +1552,11 @@ public class AnnotationPersistenceMappin
                     cols = new ArrayList<Column>(pcols.length);
                 cols.add(newColumn(pcols[i], delimit()));
             }
-            
-            if (xmlTypeClass != null
+            if (xmlRootElementClass != null
                 && StringUtils.isEmpty(pcols[i].columnDefinition())
                 && (AccessController.doPrivileged(J2DoPrivHelper
                     .isAnnotationPresentAction(fm.getDeclaredType(),
-                        xmlTypeClass))).booleanValue()) {
+                        xmlRootElementClass))).booleanValue()) {
                 DBDictionary dict = ((MappingRepository) getRepository())
                     .getDBDictionary();
                 if (dict.supportsXMLColumn)

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/mapping/Authority.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/mapping/Authority.java?rev=955805&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/mapping/Authority.java
(added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/mapping/Authority.java
Fri Jun 18 00:41:16 2010
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.openjpa.persistence.jdbc.mapping;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.openjpa.persistence.Persistent;
+import org.apache.openjpa.persistence.jdbc.Strategy;
+
+@Entity
+@Table(name="authority")
+@NamedQueries( {
+       @NamedQuery(name = "AllIonAuthorities", query = "SELECT x FROM IonAuthority x")
+})
+public class Authority {
+@Id
+       @GeneratedValue(strategy = GenerationType.AUTO)
+       @Column(name = "ID")
+       private Integer id;
+
+       @Enumerated( EnumType.STRING )
+       @Column(nullable=false, length=128, updatable=true, insertable=true)
+       @Persistent
+       @Strategy("org.apache.openjpa.jdbc.meta.strats.EnumValueHandler")
+       private AuthorityValues authorityName;
+
+       
+       @XmlType(name = "IonAuthorityValues")
+       @XmlEnum
+       public enum AuthorityValues {
+
+          AUTH1,
+          AUTH2,
+       }
+
+       public Authority() {}
+       public Authority(AuthorityValues auth) {
+           authorityName = auth;
+       }
+
+       public Integer getId() {
+           return id;
+       }
+
+       public void setAuthorityName(AuthorityValues auth) {
+           authorityName = auth;
+       }
+       
+       public AuthorityValues getAuthorityName() {
+           return authorityName;
+       }
+}

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/mapping/TestEnumXmlTypeMapping.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/mapping/TestEnumXmlTypeMapping.java?rev=955805&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/mapping/TestEnumXmlTypeMapping.java
(added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/mapping/TestEnumXmlTypeMapping.java
Fri Jun 18 00:41:16 2010
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.openjpa.persistence.jdbc.mapping;
+
+import org.apache.openjpa.jdbc.meta.ClassMapping;
+import org.apache.openjpa.jdbc.meta.FieldMapping;
+import org.apache.openjpa.jdbc.schema.Column;
+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
+
+public class TestEnumXmlTypeMapping extends SingleEMFTestCase {
+    
+    public void setUp() { 
+        setUp(Authority.class, DROP_TABLES);
+    }
+    
+    public void testEnumXmlType() {
+        ClassMapping mapping = getMapping(Authority.class);
+        FieldMapping fm = mapping.getFieldMapping("authorityName");
+        Column[] cols = fm.getColumns();
+        assertFalse(cols[0].isXML());
+    }
+}



Mime
View raw message