001: /*
002: * TestPCClass.java
003: *
004: * Created on October 12, 2006, 4:27 PM
005: *
006: * To change this template, choose Tools | Template Manager
007: * and open the template in the editor.
008: */
009: /*
010: * Licensed to the Apache Software Foundation (ASF) under one
011: * or more contributor license agreements. See the NOTICE file
012: * distributed with this work for additional information
013: * regarding copyright ownership. The ASF licenses this file
014: * to you under the Apache License, Version 2.0 (the
015: * "License"); you may not use this file except in compliance
016: * with the License. You may obtain a copy of the License at
017: *
018: * http://www.apache.org/licenses/LICENSE-2.0
019: *
020: * Unless required by applicable law or agreed to in writing,
021: * software distributed under the License is distributed on an
022: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
023: * KIND, either express or implied. See the License for the
024: * specific language governing permissions and limitations
025: * under the License.
026: */
027: package org.apache.openjpa.persistence.kernel;
028:
029: import java.io.Serializable;
030:
031: import org.apache.openjpa.persistence.kernel.common.apps.PCClassInterface;
032: import org.apache.openjpa.persistence.kernel.common.apps.PCClassPC;
033:
034: import org.apache.openjpa.enhance.PersistenceCapable;
035: import org.apache.openjpa.meta.ClassMetaData;
036: import org.apache.openjpa.meta.FieldMetaData;
037: import org.apache.openjpa.meta.JavaTypes;
038: import org.apache.openjpa.meta.MetaDataRepository;
039: import org.apache.openjpa.persistence.OpenJPAEntityManager;
040:
041: public class TestPCClass extends BaseKernelTest {
042:
043: /**
044: * Creates a new instance of TestPCClass
045: */
046: public TestPCClass() {
047: }
048:
049: public TestPCClass(String test) {
050: super (test);
051: }
052:
053: public void setUp() {
054: deleteAll(PCClassPC.class);
055: }
056:
057: public void testMetaData() {
058:
059: MetaDataRepository repos = getConfiguration()
060: .getMetaDataRepositoryInstance();
061: ClassMetaData meta = repos.getMetaData(PCClassPC.class, null,
062: true);
063:
064: FieldMetaData fmd = meta.getField("specificPC");
065: assertNotNull("fmd is nulll", fmd);
066: assertEquals("JavaTypes.PC != fmd.getTypeCode()", JavaTypes.PC,
067: fmd.getTypeCode());
068: assertEquals(
069: "PCClassPC.class.getName() != fmd.getType().getName()",
070: PCClassPC.class.getName(), fmd.getType().getName());
071: assertEquals(
072: "Object.class.getName() != fmd.getDeclaredType().getName()",
073: Object.class.getName(), fmd.getDeclaredType().getName());
074:
075: fmd = meta.getField("genericPC");
076: assertNotNull("fmd is null", fmd);
077: assertEquals("JavaTypes.PC_UNTYPE != fmd.getTypeCode()",
078: JavaTypes.PC_UNTYPED, fmd.getTypeCode());
079: assertEquals(
080: "PersistenceCapable.class.getName() != fmd.getType().getName()",
081: PersistenceCapable.class.getName(), fmd.getType()
082: .getName());
083: assertEquals(Object.class.getName(), fmd.getDeclaredType()
084: .getName());
085:
086: fmd = meta.getField("genericObject");
087: assertNotNull(fmd);
088: assertEquals(JavaTypes.OBJECT, fmd.getTypeCode());
089: assertEquals(Object.class.getName(), fmd.getType().getName());
090: assertEquals(Object.class.getName(), fmd.getDeclaredType()
091: .getName());
092:
093: fmd = meta.getField("specificInterface");
094: assertNotNull(fmd);
095: assertEquals(JavaTypes.PC, fmd.getTypeCode());
096: assertEquals(PCClassPC.class.getName(), fmd.getType().getName());
097: assertEquals(PCClassInterface.class.getName(), fmd
098: .getDeclaredType().getName());
099:
100: fmd = meta.getField("defaultInterface");
101: assertNotNull(fmd);
102: assertEquals(JavaTypes.PC_UNTYPED, fmd.getTypeCode());
103: assertEquals(PCClassInterface.class.getName(), fmd.getType()
104: .getName());
105: assertEquals(PCClassInterface.class.getName(), fmd
106: .getDeclaredType().getName());
107:
108: fmd = meta.getField("serializableInterface");
109: assertNotNull(fmd);
110: assertEquals(JavaTypes.OBJECT, fmd.getTypeCode());
111: assertEquals(Serializable.class.getName(), fmd.getType()
112: .getName());
113: assertEquals(Serializable.class.getName(), fmd
114: .getDeclaredType().getName());
115:
116: fmd = meta.getField("genericInterface");
117: assertNotNull(fmd);
118: assertEquals(JavaTypes.OBJECT, fmd.getTypeCode());
119: assertEquals(Object.class.getName(), fmd.getType().getName());
120: assertEquals(PCClassInterface.class.getName(), fmd
121: .getDeclaredType().getName());
122: }
123:
124: public void testPersist() {
125: PCClassPC pc = new PCClassPC();
126: pc.setSpecificPC(pc);
127: pc.setGenericPC(pc);
128: pc.setGenericObject(pc);
129: pc.setSpecificInterface(pc);
130: pc.setDefaultInterface(pc);
131: pc.setGenericInterface(pc);
132: pc.setSerializableInterface(pc);
133:
134: OpenJPAEntityManager pm = getPM();
135: startTx(pm);
136: pm.persist(pc);
137: Object oid = pm.getObjectId(pc);
138: endTx(pm);
139: endEm(pm);
140:
141: pm = getPM();
142:
143: pc = (PCClassPC) pm.find(PCClassPC.class, oid);
144:
145: assertTrue(pc == pc.getSpecificPC());
146: assertTrue(pc == pc.getGenericPC());
147: assertNotNull(pc.getGenericObject());
148: assertTrue(pc == pc.getGenericObject());
149: assertTrue(pc == pc.getSpecificInterface());
150: assertTrue(pc == pc.getDefaultInterface());
151: assertNotNull(pc.getGenericInterface());
152: assertTrue(pc == pc.getGenericInterface());
153: assertNotNull(pc.getSerializableInterface());
154: assertTrue(pc == pc.getSerializableInterface());
155:
156: endEm(pm);
157: }
158: }
|