You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pc...@apache.org on 2007/04/26 19:17:12 UTC

svn commit: r532805 - in /incubator/openjpa/trunk: openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ openjpa-kernel/src/main/java/org/apache/openjpa/meta/ openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/ openjpa...

Author: pcl
Date: Thu Apr 26 10:17:10 2007
New Revision: 532805

URL: http://svn.apache.org/viewvc?view=rev&rev=532805
Log:
OPENJPA-229

Added:
    incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestSharedUnqualifiedClassNames.java
    incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/embeddable/
    incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entity/
    incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/mappedsuperclass/
Modified:
    incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
    incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java?view=diff&rev=532805&r1=532804&r2=532805
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java Thu Apr 26 10:17:10 2007
@@ -2283,7 +2283,12 @@
         code.getstatic().setField(PRE + "FieldTypes", Class[].class);
         code.getstatic().setField(PRE + "FieldFlags", byte[].class);
         code.getstatic().setField(SUPER, Class.class);
-        code.constant().setValue(_meta.getTypeAlias());
+        
+        if (_meta.isMapped())
+            code.constant().setValue(_meta.getTypeAlias());
+        else
+            code.constant().setNull();
+
         if (_pc.isAbstract())
             code.constant().setNull();
         else {

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?view=diff&rev=532805&r1=532804&r2=532805
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Thu Apr 26 10:17:10 2007
@@ -1396,14 +1396,16 @@
 
         // set alias for class
         String alias = PCRegistry.getTypeAlias(cls);
-        synchronized (_aliases) {
-            List classList = (List) _aliases.get(alias);
-            if (classList == null) {
-                classList = new ArrayList(3);
-                _aliases.put(alias, classList);
+        if (alias != null) {
+            synchronized (_aliases) {
+                List classList = (List) _aliases.get(alias);
+                if (classList == null) {
+                    classList = new ArrayList(3);
+                    _aliases.put(alias, classList);
+                }
+                if (!classList.contains(cls))
+                    classList.add(cls);
             }
-            if (!classList.contains(cls))
-                classList.add(cls);
         }
     }
 

Added: incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestSharedUnqualifiedClassNames.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestSharedUnqualifiedClassNames.java?view=auto&rev=532805
==============================================================================
--- incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestSharedUnqualifiedClassNames.java (added)
+++ incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestSharedUnqualifiedClassNames.java Thu Apr 26 10:17:10 2007
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed 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;
+
+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
+import org.apache.openjpa.persistence.OpenJPAPersistence;
+import org.apache.openjpa.meta.ClassMetaData;
+import org.apache.openjpa.kernel.AbstractBrokerFactory;
+
+/**
+ * Test that entities, mapped superclasses, and embeddables can all share
+ * the same short names without any collisions.
+ */
+public class TestSharedUnqualifiedClassNames
+    extends SingleEMFTestCase {
+
+    public void setUp() {
+        setUp(org.apache.openjpa.persistence.inheritance.mappedsuperclass
+                .SharedName1.class,
+            org.apache.openjpa.persistence.inheritance.entity
+                .SharedName1.class,
+            org.apache.openjpa.persistence.inheritance.embeddable
+                .SharedName2.class,
+            org.apache.openjpa.persistence.inheritance.entity
+                .SharedName2.class);
+        emf.createEntityManager().close();
+    }
+
+        public void testMappedSuperclass() {
+        ClassMetaData meta = emf.getConfiguration()
+            .getMetaDataRepositoryInstance()
+            .getMetaData("SharedName1", getClass().getClassLoader(), true);
+        assertEquals(
+            org.apache.openjpa.persistence.inheritance.entity.SharedName1.class,
+            meta.getDescribedType());
+    }
+
+    public void testEmbeddable() {
+        ClassMetaData meta = emf.getConfiguration()
+            .getMetaDataRepositoryInstance()
+            .getMetaData("SharedName2", getClass().getClassLoader(), true);
+        assertEquals(
+            org.apache.openjpa.persistence.inheritance.entity.SharedName2.class,
+            meta.getDescribedType());
+    }
+}