/* | |
* TestIntermediate.java | |
* | |
* Created on October 3, 2006, 12:01 PM | |
* | |
* To change this template, choose Tools | Template Manager | |
* and open the template in the editor. | |
*/ | |
/* | |
* 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.jdbc.meta; | |
import java.util.*; | |
import org.apache.openjpa.kernel.Broker; | |
import org.apache.openjpa.kernel.BrokerFactory; | |
import org.apache.openjpa.kernel.OpenJPAStateManager; | |
import org.apache.openjpa.meta.FieldMetaData; | |
import org.apache.openjpa.persistence.OpenJPAPersistence; | |
import org.apache.openjpa.persistence.JPAFacadeHelper; | |
import org.apache.openjpa.persistence.jdbc.common.apps.*; | |
import java.lang.annotation.Annotation; | |
import junit.framework.*; | |
import javax.persistence.EntityManager; | |
import javax.persistence.EntityManagerFactory; | |
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory; | |
import org.apache.openjpa.persistence.OpenJPAEntityManager; | |
public class TestIntermediate extends org.apache.openjpa.persistence.jdbc.kernel.BaseJDBCTest | |
{ | |
private Object _pc; | |
private Object _rel; | |
public TestIntermediate(String test) { | |
super(test); | |
} | |
/** Creates a new instance of TestIntermediate */ | |
public TestIntermediate() { | |
} | |
public void setUp() { | |
RuntimeTest1 pc = new RuntimeTest1("pc", 1); | |
RuntimeTest1 rel = new RuntimeTest1("rel", 2); | |
pc.setSelfOneOne(rel); | |
OpenJPAEntityManager em =(OpenJPAEntityManager)currentEntityManager(); | |
Broker broker = JPAFacadeHelper.toBroker(em); | |
broker.begin(); | |
broker.persist(pc, null); | |
broker.commit(); | |
_pc = broker.getObjectId(pc); | |
_rel = broker.getObjectId(rel); | |
broker.close(); | |
em.close(); | |
} | |
public void testOneOneSetsIntermediate() { | |
OpenJPAEntityManager em =(OpenJPAEntityManager)currentEntityManager(); | |
Broker broker = JPAFacadeHelper.toBroker(em); | |
try { | |
oneOneIntermediateTest(broker); | |
} finally { | |
broker.close(); | |
em.close(); | |
} | |
} | |
public void testDataCacheOneOneSetsIntermediate() { | |
BrokerFactory factory = getBrokerFactory(new String[]{ | |
"openjpa.DataCache", "true", | |
"openjpa.RemoteCommitProvider", "sjvm", | |
}); | |
// get obj into cache | |
Broker broker = factory.newBroker(); | |
try { | |
broker.find(_pc, true, null); | |
} finally { | |
broker.close(); | |
} | |
// test from cache | |
broker = factory.newBroker(); | |
try { | |
oneOneIntermediateTest(broker); | |
} finally { | |
broker.close(); | |
try { | |
factory.close(); | |
} catch (Exception e) { | |
} | |
} | |
} | |
/** | |
* Helper method to see that the one to one uses an intermediate values. | |
*/ | |
private void oneOneIntermediateTest(Broker broker) { | |
RuntimeTest1 pc = (RuntimeTest1) broker.find(_pc, true, null); | |
OpenJPAStateManager sm = broker.getStateManager(pc); | |
assertNotNull(sm); | |
FieldMetaData fmd = sm.getMetaData().getField("selfOneOne"); | |
assertNotNull(fmd); | |
assertEquals(_rel, sm.getIntermediate(fmd.getIndex())); | |
assertEquals(_rel, broker.getObjectId(pc.getSelfOneOne())); | |
assertNull(sm.getIntermediate(fmd.getIndex())); | |
} | |
} |