/******************************************************************************* | |
* Copyright (c) 1998, 2013 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 v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Contributors: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.testing.tests.workbenchintegration; | |
import java.io.File; | |
import org.eclipse.persistence.descriptors.ClassDescriptor; | |
import org.eclipse.persistence.queries.ReadObjectQuery; | |
import org.eclipse.persistence.testing.framework.AutoVerifyTestCase; | |
import org.eclipse.persistence.testing.framework.TestErrorException; | |
import org.eclipse.persistence.testing.models.employee.relational.EmployeeProject; | |
import org.eclipse.persistence.sessions.factories.XMLProjectReader; | |
import org.eclipse.persistence.sessions.factories.XMLProjectWriter; | |
/** | |
* Bug 3432075 | |
* Test to ensure that cache maintenance settings are properly read from and written to XML | |
*/ | |
public class QueryShouldMaintainCacheTest extends AutoVerifyTestCase { | |
protected org.eclipse.persistence.sessions.Project project = null; | |
// Changed original file name EmployeeProject.xml for this unique one: | |
// another EmployeeProject.xml file is found in resource/foundation - | |
// if it happens to be higher on the classpath this other file is read in | |
// (instead of the one we just wrote out) - that causes NPE: | |
// foundation/resources/EmployeeProject.xml doesn't have the queries defined in this test. | |
public static final String FILENAME = "EmployeeProjectForQueryShouldMaintainCacheTest.xml"; | |
public QueryShouldMaintainCacheTest() { | |
setDescription("Ensure should maintain cache settings for descriptors are properly written out."); | |
} | |
public void setup() { | |
project = new EmployeeProject(); | |
ClassDescriptor descriptor = | |
project.getDescriptors().get(org.eclipse.persistence.testing.models.employee.domain.Employee.class); | |
descriptor.disableCacheHits(); | |
// ReadObjectQuery query = new ReadObjectQuery(Employee.class); | |
// descriptor.getQueryManager().addQuery("UndefinedQuery", query); | |
ReadObjectQuery query = new ReadObjectQuery(Employee.class); | |
query.maintainCache(); | |
descriptor.getQueryManager().addQuery("TrueQuery", query); | |
query = new ReadObjectQuery(Employee.class); | |
query.dontMaintainCache(); | |
descriptor.getQueryManager().addQuery("FalseQuery", query); | |
} | |
public void test() { | |
XMLProjectWriter.write(FILENAME, project); | |
project = XMLProjectReader.read(FILENAME, getClass().getClassLoader()); | |
} | |
public void verify() { | |
ClassDescriptor descriptor = | |
project.getDescriptors().get(org.eclipse.persistence.testing.models.employee.domain.Employee.class); | |
// Here we test the maintainCache setting. This should override any other settings. | |
ReadObjectQuery query = (ReadObjectQuery)descriptor.getQueryManager().getQuery("TrueQuery"); | |
if /*getSession()*/(!query.shouldMaintainCache() || !query.shouldMaintainCache()) { | |
throw new TestErrorException("Project read from XML should be set to maintainCache, but is not."); | |
} | |
// Here we test the donMaintainceCacheSetting. This should override other settings. | |
query = (ReadObjectQuery)descriptor.getQueryManager().getQuery("FalseQuery"); | |
if /*getSession()*/(query.shouldMaintainCache() || query.shouldMaintainCache()) { | |
throw new TestErrorException("Project read from XML should be set not to maintainCache, but it does."); | |
} | |
} | |
public void reset() { | |
File file = new File(FILENAME); | |
file.delete(); | |
} | |
} |