From 3892b01cfd0fe4ef0b88da1718ae607a983ff2ff Mon Sep 17 00:00:00 2001 From: Jody Grassel Date: Thu, 20 Sep 2012 15:09:25 +0000 Subject: [PATCH] OPENJPA-2233: Revert patch, test failures encountered git-svn-id: https://svn.apache.org/repos/asf/openjpa/branches/2.0.x@1388061 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/openjpa/enhance/PCEnhancer.java | 16 +-- .../openjpa/enhance/localizer.properties | 3 +- .../TestEmbeddableEntityWithIDAnnotation.java | 49 -------- .../EmbeddableEntityWithIDAnnotation.java | 105 ------------------ .../common/apps/IDOwningClassTestEntity.java | 32 ------ 5 files changed, 7 insertions(+), 198 deletions(-) diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java index 0af06fe59..6af248705 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java @@ -1150,11 +1150,6 @@ public class PCEnhancer { if (_meta.hasAbstractPKField() == true) { addGetIDOwningClass(); } - - if (_meta.isEmbeddedOnly() && _meta.getIdentityType() == ClassMetaData.ID_APPLICATION) { - _log.error(_loc.get("ID-field-in-embeddable-unsupported", _meta.toString())); - } - addNewObjectIdInstanceMethod(true); addNewObjectIdInstanceMethod(false); } @@ -2587,12 +2582,13 @@ public class PCEnhancer { // new (); code.anew().setType(oidType); code.dup(); - if (_meta.isOpenJPAIdentity() || (obj && usesClsString == Boolean.TRUE)) { - if ((_meta.isEmbeddedOnly() && ! (_meta.getIdentityType() == ClassMetaData.ID_APPLICATION)) - || _meta.hasAbstractPKField() == true ) { + if (_meta.isOpenJPAIdentity() || (obj && usesClsString == + Boolean.TRUE)) { + if(_meta.isEmbeddedOnly() || _meta.hasAbstractPKField() == true ) { code.aload().setThis(); - code.invokevirtual().setMethod(PRE + "GetIDOwningClass", Class.class, null); - } else { + code.invokevirtual().setMethod(PRE + "GetIDOwningClass", + Class.class, null); + }else { code.classconstant().setClass(getType(_meta)); } } diff --git a/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties b/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties index 1cd1facfa..507e93715 100644 --- a/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties +++ b/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties @@ -214,5 +214,4 @@ temp-file-creation: The temporary file "{0}" was created and it may not get \ get-field: Error while getting value of field {1} from instance {0} by reflection. get-method: Error while getting value by getter method {1} on instance {0} by reflection. set-field: Error while setting value {2} of {3} on field {1} of instance {0} by reflection. -set-method: Error while setting value {2} of {3} by setter method {1} of instance {0} by reflection. -ID-field-in-embeddable-unsupported: The identity field defined in the embeddable entity {0} is not supported. +set-method: Error while setting value {2} of {3} by setter method {1} of instance {0} by reflection. diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/TestEmbeddableEntityWithIDAnnotation.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/TestEmbeddableEntityWithIDAnnotation.java index 4df20df89..e69de29bb 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/TestEmbeddableEntityWithIDAnnotation.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/TestEmbeddableEntityWithIDAnnotation.java @@ -1,49 +0,0 @@ -/* - * 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.enhance; - -import javax.persistence.EntityManager; - -import org.apache.openjpa.persistence.enhance.common.apps.EmbeddableEntityWithIDAnnotation; -import org.apache.openjpa.persistence.enhance.common.apps.IDOwningClassTestEntity; -import org.apache.openjpa.persistence.test.SQLListenerTestCase; - -public class TestEmbeddableEntityWithIDAnnotation extends SQLListenerTestCase{ - - public void setUp() { - setUp(EmbeddableEntityWithIDAnnotation.class, IDOwningClassTestEntity.class, CLEAR_TABLES); - } - - //make sure no exception is thrown here. - public void testpcNewObjectIdInstanceMethod(){ - EntityManager em = emf.createEntityManager(); - try{ - IDOwningClassTestEntity e = new IDOwningClassTestEntity(); - em.getTransaction().begin(); - em.persist(e); - em.getTransaction().commit(); - assertTrue(em.createQuery("select count(c) from IDOwningClassTestEntity c", Long.class) - .getSingleResult().longValue() > 0); - }finally{ - em.close(); - } - } - -} diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/common/apps/EmbeddableEntityWithIDAnnotation.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/common/apps/EmbeddableEntityWithIDAnnotation.java index 8ff76ebf1..e69de29bb 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/common/apps/EmbeddableEntityWithIDAnnotation.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/common/apps/EmbeddableEntityWithIDAnnotation.java @@ -1,105 +0,0 @@ -/* - * 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.enhance.common.apps; - -// default package - -import javax.persistence.Column; -import javax.persistence.Embeddable; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; - -/** - * BillingNoteId entity. @author MyEclipse Persistence Tools - */ -@Embeddable -public class EmbeddableEntityWithIDAnnotation implements java.io.Serializable -{ - - private static final long serialVersionUID = 558333273831654654L; - - private Long id; - - private Long seqNo = new Long(2012); - - public EmbeddableEntityWithIDAnnotation( ) - { - } - - public EmbeddableEntityWithIDAnnotation( Long id, Long seqNo ) - { - this.id = id; - this.seqNo = seqNo; - } - - // Property accessors - @Id - @Column(unique=true, nullable=false, precision=12, scale=0) - public Long getId() - { - return this.id; - } - - public void setId( Long id ) - { - this.id = id; - } - - @Column( name = "EmbeddableEntitySeqNo", nullable = false, precision = 12, scale = 0 ) - public Long getSeqNo() - { - return this.seqNo; - } - - public void setSeqNo( Long seqNo ) - { - this.seqNo = seqNo; - } - - public boolean equals( Object other ) - { - if ( ( this == other ) ) - return true; - if ( ( other == null ) ) - return false; - if ( !( other instanceof EmbeddableEntityWithIDAnnotation ) ) - return false; - EmbeddableEntityWithIDAnnotation castOther = ( EmbeddableEntityWithIDAnnotation ) other; - - return ( ( this.getId( ) == castOther.getId( ) ) - || ( this.getId( ) != null && castOther.getId( ) != null - && this.getId( ).equals( castOther.getId( ) ) ) ) - && ( ( this.getSeqNo( ) == castOther.getSeqNo( ) ) - || ( this.getSeqNo( ) != null && castOther.getSeqNo( ) != null - && this.getSeqNo( ).equals( castOther.getSeqNo( ) ) ) ); - } - - public int hashCode() - { - int result = 17; - - result = 37 * result + ( getId( ) == null ? 0 : this.getId( ).hashCode( ) ); - result = 37 * result + ( getSeqNo( ) == null ? 0 : this.getSeqNo( ).hashCode( ) ); - return result; - } - -} diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/common/apps/IDOwningClassTestEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/common/apps/IDOwningClassTestEntity.java index 544236f19..e69de29bb 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/common/apps/IDOwningClassTestEntity.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/enhance/common/apps/IDOwningClassTestEntity.java @@ -1,32 +0,0 @@ -/* - * 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.enhance.common.apps; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; - -@Entity -public class IDOwningClassTestEntity { - @EmbeddedId - EmbeddableEntityWithIDAnnotation pk = new EmbeddableEntityWithIDAnnotation(new Long(2012), new Long(2000)); - - String name; - -}