/******************************************************************************* | |
* 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.util.Iterator; | |
import java.util.Vector; | |
import org.eclipse.persistence.descriptors.ClassDescriptor; | |
import org.eclipse.persistence.queries.DatabaseQuery; | |
import org.eclipse.persistence.sessions.Project; | |
import org.eclipse.persistence.testing.framework.AutoVerifyTestCase; | |
import org.eclipse.persistence.testing.framework.TestErrorException; | |
/** | |
* bug: 5677655 | |
* Used to compare the order of queries contained in the DescriptorQueryManager so that | |
* XML files written out the same as they were read in wrt query order. | |
*/ | |
public class ProjectXMLQueryManagerQueryOrderTest extends AutoVerifyTestCase { | |
Vector original, current; //list of queries to compare | |
public ProjectXMLQueryManagerQueryOrderTest() { | |
} | |
public void test() { | |
original = current = null; | |
Project initialProj = (new EmployeeWorkbenchIntegrationSystem()).getInitialProject(); | |
ClassDescriptor initialDescriptor = | |
initialProj.getDescriptor(org.eclipse.persistence.testing.models.employee.domain.Employee.class); | |
Project readinProj = this.getSession().getProject(); | |
ClassDescriptor currentDescriptor = | |
readinProj.getDescriptor(org.eclipse.persistence.testing.models.employee.domain.Employee.class); | |
original = initialDescriptor.getDescriptorQueryManager().getAllQueries(); | |
current = currentDescriptor.getDescriptorQueryManager().getAllQueries(); | |
} | |
protected void verify() { | |
if (original.size() != current.size()) { | |
throw new TestErrorException("The number of queries read was not equal to the number originally."); | |
} | |
Iterator orig = original.iterator(); | |
Iterator curr = current.iterator(); | |
while (orig.hasNext()) { | |
DatabaseQuery origQuery = (DatabaseQuery)orig.next(); | |
int argumentTypesSize = 0; | |
if (origQuery.getArguments() != null) { | |
argumentTypesSize = origQuery.getArguments().size(); | |
} | |
Vector argumentTypes = new Vector(); | |
for (int i = 0; i < argumentTypesSize; i++) { | |
argumentTypes.addElement(origQuery.getArgumentTypeNames().get(i)); | |
} | |
DatabaseQuery currentQuery = (DatabaseQuery)curr.next(); | |
if ((origQuery.getName() != currentQuery.getName()) && | |
((origQuery.getName() == null) || !origQuery.getName().equals(currentQuery.getName()))) | |
if (!argumentTypes.equals(currentQuery.getArgumentTypeNames())) { | |
throw new TestErrorException("A query in the descriptor query manager does not match the original based on arguments"); | |
} | |
} | |
} | |
} |