You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mi...@apache.org on 2009/06/22 20:03:39 UTC

svn commit: r787334 - in /openjpa/branches/1.0.x: openjpa-kernel/src/main/java/org/apache/openjpa/meta/ openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/

Author: mikedd
Date: Mon Jun 22 18:03:38 2009
New Revision: 787334

URL: http://svn.apache.org/viewvc?rev=787334&view=rev
Log:
OPENJPA-873 committing patch from Jody Grassel based on Fay's changes for trunk & 1.3.x

Added:
    openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/BaseEntity.java   (with props)
    openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/CashBaseEntity.java   (with props)
    openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/SituationDA.java   (with props)
    openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/TestMappedSuperClass.java   (with props)
    openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/ValuableItemDA.java   (with props)
Modified:
    openjpa/branches/1.0.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java

Modified: openjpa/branches/1.0.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.0.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java?rev=787334&r1=787333&r2=787334&view=diff
==============================================================================
--- openjpa/branches/1.0.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java (original)
+++ openjpa/branches/1.0.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java Mon Jun 22 18:03:38 2009
@@ -1874,10 +1874,13 @@
         if (_super != null) {
             // concrete superclass oids must match or be parent of ours
             ClassMetaData sup = getPCSuperclassMetaData();
-            if (!sup.getObjectIdType().isAssignableFrom(_objectId))
+            Class objectIdType = sup.getObjectIdType();
+            if (objectIdType != null &&
+                !objectIdType.isAssignableFrom(_objectId)) {
                 throw new MetaDataException(_loc.get("id-classes",
                     new Object[]{ _type, _objectId, _super,
                         sup.getObjectIdType() }));
+            }
 
             // validate that no other pks are declared if we have a
             // concrete PC superclass

Added: openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/BaseEntity.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/BaseEntity.java?rev=787334&view=auto
==============================================================================
--- openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/BaseEntity.java (added)
+++ openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/BaseEntity.java Mon Jun 22 18:03:38 2009
@@ -0,0 +1,34 @@
+/*
+ * 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.inheritance.mappedsuperclass;
+
+
+/**
+ * Entity used to test MappedSuperClass which does not have IdClass. 
+ * 
+ * Test case and domain classes were originally part of the reported issue
+ * <A href="https://issues.apache.org/jira/browse/OPENJPA-873">OPENJPA-873</A>
+ *  
+ * @author pioneer_ip@yahoo.com
+ * @author Fay Wang
+ *
+ */
+public class BaseEntity {
+
+}

Propchange: openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/BaseEntity.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/CashBaseEntity.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/CashBaseEntity.java?rev=787334&view=auto
==============================================================================
--- openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/CashBaseEntity.java (added)
+++ openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/CashBaseEntity.java Mon Jun 22 18:03:38 2009
@@ -0,0 +1,89 @@
+/*
+ * 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.inheritance.mappedsuperclass;
+
+import java.util.Date;
+
+import javax.persistence.*;
+
+/**
+ * Entity used to test MappedSuperClass which does not have IdClass. 
+ * 
+ * Test case and domain classes were originally part of the reported issue
+ * <A href="https://issues.apache.org/jira/browse/OPENJPA-873">OPENJPA-873</A>
+ *  
+ * @author pioneer_ip@yahoo.com
+ * @author Fay Wang
+ *
+ */
+
+@MappedSuperclass
+public abstract class CashBaseEntity extends BaseEntity{
+    @Column(name="TRCCRUI")
+    private String createUser;
+
+    @Column(name="TRCCRTS")
+    private Date createTime;
+
+    @Column(name="TRCLUUID")
+    private String updateUser;
+
+    @Column(name="TRCLUTS")
+    private Date updateTime;
+
+    @Version
+    @Column(name="TRCVER")
+    private int version;
+
+    public String getCreateUser() {
+        return createUser;
+    }
+    
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+    
+    public Date getCreateTime() {
+        return createTime;
+    }
+    
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+    
+    public String getUpdateUser() {
+        return updateUser;
+    }
+    
+    public void setUpdateUser(String updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+    
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+    
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+}

Propchange: openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/CashBaseEntity.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/SituationDA.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/SituationDA.java?rev=787334&view=auto
==============================================================================
--- openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/SituationDA.java (added)
+++ openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/SituationDA.java Mon Jun 22 18:03:38 2009
@@ -0,0 +1,92 @@
+/*
+ * 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.inheritance.mappedsuperclass;
+
+import javax.persistence.*;
+
+/**
+ * Entity used to test MappedSuperClass which does not have IdClass. 
+ * 
+ * Test case and domain classes were originally part of the reported issue
+ * <A href="https://issues.apache.org/jira/browse/OPENJPA-873">OPENJPA-873</A>
+ *  
+ * @author pioneer_ip@yahoo.com
+ * @author Fay Wang
+ *
+ */
+
+@Entity
+@Table (name = "cc2SITUATION")
+@IdClass(SituationDA.SituationId.class)
+public class SituationDA extends CashBaseEntity {
+   
+    @Id
+    @Column(name="C2008SRL")
+    private String cashBoxPeriodSerial;
+   
+    @Id
+    @Column(name="C2012TYPE")
+    private short type;
+    
+    public static class SituationId implements java.io.Serializable{
+        private static final long serialVersionUID = 1L;
+        private String cashBoxPeriodSerial;
+        private short type;
+       
+        public SituationId(){}
+        
+        public SituationId(String cashBoxPeriodSerial, short type){
+            this.cashBoxPeriodSerial = cashBoxPeriodSerial;
+            this.type = type;
+        }
+        
+        
+        public boolean equals(Object other){
+            if (other instanceof SituationId) {
+                final SituationId otherId = (SituationId)other;
+                return ( otherId.cashBoxPeriodSerial.equals(
+                    this.cashBoxPeriodSerial) && otherId.type == this.type );
+                }
+                return false;   
+        }
+       
+        public int hashCode() {
+            return super.hashCode();
+        }
+    }
+    
+    public short getType() {
+        return type;
+    }
+    
+    public void setType(short type) {
+        this.type = type;
+    }
+    
+    public String getCashBoxPeriodSerial() {
+        return cashBoxPeriodSerial;
+    }
+    
+    public void setCashBoxPeriodSerial(String cashBoxPeriodSerial) {
+        this.cashBoxPeriodSerial = cashBoxPeriodSerial;
+    }
+    
+}
+
+

Propchange: openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/SituationDA.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/TestMappedSuperClass.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/TestMappedSuperClass.java?rev=787334&view=auto
==============================================================================
--- openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/TestMappedSuperClass.java (added)
+++ openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/TestMappedSuperClass.java Mon Jun 22 18:03:38 2009
@@ -0,0 +1,49 @@
+/*
+ * 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.inheritance.mappedsuperclass;
+
+import javax.persistence.EntityManager;
+
+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
+
+/**
+ * Test case and domain classes were originally part of the reported issue
+ * <A href="https://issues.apache.org/jira/browse/OPENJPA-873">OPENJPA-873</A>
+ *  
+ * @author pioneer_ip@yahoo.com
+ * @author Fay Wang
+ *
+ */
+public class TestMappedSuperClass extends SingleEMFTestCase {
+
+    public void setUp() {
+        setUp(CashBaseEntity.class, 
+              SituationDA.class, ValuableItemDA.class);
+    }
+
+    public void testMappedSuperClass() {
+        EntityManager em = emf.createEntityManager();
+        em.getTransaction().begin();
+        SituationDA s = new SituationDA();
+        s.setCashBoxPeriodSerial("test");
+        s.setType((short)1);
+        em.persist(s);
+        em.getTransaction().commit();
+    }
+}

Propchange: openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/TestMappedSuperClass.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/ValuableItemDA.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/ValuableItemDA.java?rev=787334&view=auto
==============================================================================
--- openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/ValuableItemDA.java (added)
+++ openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/ValuableItemDA.java Mon Jun 22 18:03:38 2009
@@ -0,0 +1,47 @@
+/*
+ * 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.inheritance.mappedsuperclass;
+
+import javax.persistence.*;
+
+/**
+ * Entity used to test MappedSuperClass which does not have IdClass. 
+ * 
+ * Test case and domain classes were originally part of the reported issue
+ * <A href="https://issues.apache.org/jira/browse/OPENJPA-873">OPENJPA-873</A>
+ *  
+ * @author pioneer_ip@yahoo.com
+ * @author Fay Wang
+ *
+ */
+@Entity
+@Table (name = "CF2VLUITEM")
+public class ValuableItemDA extends CashBaseEntity {
+    @Id
+    @Column(name="C2001COD")
+    private short code;
+
+    public void setCode(short code) {
+        this.code = code;
+    }
+    
+    public short getCode() {
+        return code;
+    }
+}
\ No newline at end of file

Propchange: openjpa/branches/1.0.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/ValuableItemDA.java
------------------------------------------------------------------------------
    svn:eol-style = native