blob: 2c971c85be07519e20c4d037410d514d4f338744 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.tests.queries.options;
import org.eclipse.persistence.queries.*;
import org.eclipse.persistence.testing.framework.*;
import org.eclipse.persistence.descriptors.ClassDescriptor;
public class ReadObjectQueryDisableCacheHitsTest extends AutoVerifyTestCase {
ClassDescriptor m_addressDesc;
ClassDescriptor m_policyHolderDesc;
boolean m_addressDisableCacheHits;
boolean m_addressAlwaysrefreshCache;
boolean m_policyHolderDisableCacheHits;
boolean m_policyHolderAlwaysrefreshCache;
public ReadObjectQueryDisableCacheHitsTest() {
super();
setDescription("This test verifies that infinite recursion will not occur when reading an object with no cascade all, no indirection and disabled cache hits");
}
@Override
public void reset() {
m_addressDesc.setShouldDisableCacheHits(m_addressDisableCacheHits);
m_addressDesc.setShouldAlwaysRefreshCache(m_addressAlwaysrefreshCache);
m_policyHolderDesc.setShouldDisableCacheHits(m_policyHolderDisableCacheHits);
m_policyHolderDesc.setShouldAlwaysRefreshCache(m_policyHolderAlwaysrefreshCache);
}
@Override
public void setup() {
m_addressDesc = getSession().getClassDescriptor(org.eclipse.persistence.testing.models.insurance.Address.class);
m_addressDisableCacheHits = m_addressDesc.shouldDisableCacheHits();
m_addressAlwaysrefreshCache = m_addressDesc.shouldAlwaysRefreshCache();
m_addressDesc.disableCacheHits();
m_addressDesc.alwaysRefreshCache();
m_policyHolderDesc = getSession().getClassDescriptor(org.eclipse.persistence.testing.models.insurance.PolicyHolder.class);
m_policyHolderDisableCacheHits = m_policyHolderDesc.shouldDisableCacheHits();
m_policyHolderAlwaysrefreshCache = m_policyHolderDesc.shouldAlwaysRefreshCache();
m_policyHolderDesc.disableCacheHits();
m_policyHolderDesc.alwaysRefreshCache();
}
@Override
public void test() {
try {
ReadObjectQuery query = new ReadObjectQuery(org.eclipse.persistence.testing.models.insurance.PolicyHolder.class);
getSession().executeQuery(query);
} catch (StackOverflowError ex) {
throw new TestErrorException("ReadObjectQuery with disabled cache hits caused infinite recursion");
}
}
}