mirror of https://github.com/apache/openjpa.git
OPENJPA-1697: A EnumValueHandler strategy along with XmlType annotation incorrectly mapped to XmlType in create table DDL
git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@955805 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
dbaf9fa67e
commit
eac9c66b74
|
@ -1534,11 +1534,11 @@ public class AnnotationPersistenceMappingParser
|
|||
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 AnnotationPersistenceMappingParser
|
|||
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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue