001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one
003: * or more contributor license agreements. See the NOTICE file
004: * distributed with this work for additional information
005: * regarding copyright ownership. The ASF licenses this file
006: * to you under the Apache License, Version 2.0 (the
007: * "License"); you may not use this file except in compliance
008: * with the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing,
013: * software distributed under the License is distributed on an
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015: * KIND, either express or implied. See the License for the
016: * specific language governing permissions and limitations
017: * under the License.
018: */
019: package org.apache.openjpa.persistence.kernel;
020:
021: import javax.persistence.EntityManager;
022:
023: import org.apache.openjpa.persistence.kernel.common.apps.InterfaceHolder;
024: import org.apache.openjpa.persistence.kernel.common.apps.InterfaceTestImpl1;
025: import org.apache.openjpa.persistence.kernel.common.apps.InterfaceTestImpl2;
026: import org.apache.openjpa.persistence.common.utils.AbstractTestCase;
027:
028: /**
029: * Test for persistent interfaces.
030: *
031: * @author <a href="mailto:marc@solarmetric.com">Marc Prud'hommeaux</a>
032: */
033: public class TestEJBInterfaces extends AbstractTestCase {
034:
035: public TestEJBInterfaces(String name) {
036: super (name, "kernelcactusapp");
037: }
038:
039: @SuppressWarnings("unchecked")
040: public void testInterfaceField() {
041: try {
042: deleteAll(InterfaceTestImpl1.class);
043: deleteAll(InterfaceTestImpl2.class);
044: deleteAll(InterfaceHolder.class);
045: } catch (Exception e) {
046: }
047:
048: EntityManager em2 = currentEntityManager();
049: startTx(em2);
050:
051: em2.flush();
052: endTx(em2);
053: endEm(em2);
054:
055: EntityManager em = currentEntityManager();
056: startTx(em);
057: InterfaceHolder holder = new InterfaceHolder(1);
058: em.persist(holder);
059: holder.setIntf(new InterfaceTestImpl1("intf-1-field"));
060: assertEquals("intf-1-field", holder.getIntf().getStringField());
061: endTx(em);
062: endEm(em);
063:
064: em = currentEntityManager();
065: startTx(em);
066: InterfaceHolder hold = (InterfaceHolder) em.find(
067: InterfaceHolder.class, 1);
068: assertNotNull(hold.getIntf());
069: assertEquals("intf-1-field", hold.getIntf().getStringField());
070: endTx(em);
071: endEm(em);
072:
073: em = currentEntityManager();
074: startTx(em);
075: hold = (InterfaceHolder) em.find(InterfaceHolder.class, 1);
076: hold.setIntf(null);
077: assertNull(hold.getIntf());
078: endTx(em);
079: endEm(em);
080:
081: em = currentEntityManager();
082: startTx(em);
083: hold = (InterfaceHolder) em.find(InterfaceHolder.class, 1);
084: assertNull(hold.getIntf());
085: endTx(em);
086: endEm(em);
087:
088: em = currentEntityManager();
089: startTx(em);
090: hold = (InterfaceHolder) em.find(InterfaceHolder.class, 1);
091: hold.setIntf(new InterfaceTestImpl2("intf-2-field"));
092: assertEquals("intf-2-field", hold.getIntf().getStringField());
093: endTx(em);
094: endEm(em);
095:
096: em = currentEntityManager();
097: startTx(em);
098: hold = (InterfaceHolder) em.find(InterfaceHolder.class, 1);
099: assertNotNull(hold.getIntf());
100: assertEquals("intf-2-field", hold.getIntf().getStringField());
101: endTx(em);
102: endEm(em);
103:
104: em = currentEntityManager();
105: startTx(em);
106: hold = (InterfaceHolder) em.find(InterfaceHolder.class, 1);
107: hold.getIntfs().add(new InterfaceTestImpl1("intf-1-set"));
108: endTx(em);
109: endEm(em);
110:
111: // em = currentEntityManager();
112: // startTx(em);
113: // hold = (InterfaceHolder)em.find(InterfaceHolder.class, 1);
114: // assertEquals (1, hold.getIntfs ().size ());
115: // assertEquals ("intf-1-set", ((InterfaceTest) hold.getIntfs ().iterator ().next ()).getStringField ());
116: // endTx(em);
117: // endEm(em);
118: }
119: }
|