blob: 2d2b84e2091c3c408eff37d4480ad63f32feb038 [file] [log] [blame]
/*******************************************************************************
* 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.queries.optimization;
import java.util.*;
import org.eclipse.persistence.testing.models.employee.domain.*;
import org.eclipse.persistence.testing.framework.*;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.queries.*;
/**
* This class tests the batch reading feature.
*/
public class ReadAllBatchReadingTest extends ReadAllTest {
public ReadAllBatchReadingTest(int size) {
super(Employee.class, size);
}
protected void setup() {
getSession().getIdentityMapAccessor().initializeIdentityMaps();
super.setup();
}
protected void verify() throws Exception {
super.verify();
ReadAllQuery query = new ReadAllQuery(Employee.class);
query.dontMaintainCache();
query.cascadeAllParts();
query.setSelectionCriteria(getQuery().getSelectionCriteria());
Vector normalEmps = (Vector)getSession().executeQuery(query);
//
org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy = getQuery().getContainerPolicy();
if (getQuery().getContainerPolicy().isCursorPolicy()) {
if ((normalEmps.size() != ((Vector)this.objectsFromDatabase).size()) ||
(normalEmps.size() != getOriginalObjectsSize())) {
throw new TestErrorException("Size of batch result does not match.");
}
} else {
if ((normalEmps.size() != containerPolicy.sizeFor(objectsFromDatabase)) ||
(normalEmps.size() != getOriginalObjectsSize())) {
throw new TestErrorException("Size of batch result does not match.");
}
}
Enumeration enumtr = null;
Object iter = null;
if (containerPolicy.isCursorPolicy()) {
enumtr = ((Vector)objectsFromDatabase).elements();
} else {
iter = containerPolicy.iteratorFor(objectsFromDatabase);
}
int subset = Math.min(3, normalEmps.size());
for (int index = 0; index < subset; index++) {
Employee nemployee = (Employee)normalEmps.elementAt(index);
Employee bemployee = null;
if (containerPolicy.isCursorPolicy()) {
bemployee = (Employee)enumtr.nextElement();
} else {
bemployee = (Employee)containerPolicy.next(iter, (AbstractSession)getSession());
}
bemployee.getAddress();
bemployee.getManager();
bemployee.getPhoneNumbers();
bemployee.getProjects();
bemployee.getResponsibilitiesList();
((AbstractSession)getSession()).compareObjects(bemployee.getAddress(), nemployee.getAddress());
if (bemployee.getPhoneNumbers().size() != nemployee.getPhoneNumbers().size()) {
throw new TestErrorException("Phones not match.");
}
if (bemployee.getProjects().size() != nemployee.getProjects().size()) {
throw new TestErrorException("Projects not match.");
}
if (bemployee.getResponsibilitiesList().size() != nemployee.getResponsibilitiesList().size()) {
throw new TestErrorException("Responsibilties list not match.");
}
if (!((bemployee.getManager() == null) && (nemployee.getManager() == null))) {
if ((bemployee.getManager() == null) || (nemployee.getManager() == null)) {
throw new TestErrorException("Mgr null not match.");
} else if (!bemployee.getManager().getFirstName().equals(nemployee.getManager().getFirstName())) {
throw new TestErrorException("Mgr name of batch result does not match.");
}
}
}
}
}