blob: 6db403fe2cd98763c29ebd0b1a0732a56be71d60 [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:
// 08/15/2008-1.0.1 Chris Delahunt
// - 237545: List attribute types on OneToMany using @OrderBy does not work with attribute change tracking
package org.eclipse.persistence.testing.tests.distributedcache;
import org.eclipse.persistence.descriptors.changetracking.AttributeChangeTrackingPolicy;
import org.eclipse.persistence.sessions.Project;
import org.eclipse.persistence.sessions.UnitOfWork;
import org.eclipse.persistence.testing.models.employee.domain.Child;
import org.eclipse.persistence.testing.models.employee.domain.Employee;
import org.eclipse.persistence.testing.models.employee.relational.EmployeeProject;
import java.util.Collection;
import java.util.Iterator;
//Bugs 4458089 & 4454532
//adds one to the collection
public class OrderedListMergeTest extends DistributedCacheMergeTest {
public OrderedListMergeTest(){
super();
}
@Override
protected void modifyCollection(UnitOfWork uow, Object objectToModify) {
Child newChildWC = (Child)uow.registerNewObject(newItemForCollection());
((Employee)objectToModify).children.add(newChildWC);
newChildWC.parent = (Employee)objectToModify;
}
@Override
protected int getCollectionSize(Object rootObject) {
return ((Employee)rootObject).children.size();
}
@Override
protected Object buildOriginalObject() {
Employee emp = new Employee();
emp.setFirstName("Sally");
emp.setLastName("Hamilton");
emp.setFemale();
java.util.Vector children = new java.util.Vector();
java.util.Calendar cal =java.util.Calendar.getInstance();
Child child = new Child();
child.setFirstName("Sarah");
child.setLastName("Hamilton");
cal.set(2005,8,8);
child.setBirthday( new java.util.Date(cal.getTimeInMillis()) );
child.setGender("Female");
child.setParent(emp);
children.add(child);
child = new Child();
child.setFirstName("Billy");
child.setLastName("Hamilton");
cal.set(2006,8,8);
child.setBirthday( new java.util.Date(cal.getTimeInMillis()) );
child.setGender("Male");
child.setParent( emp );
children.add(child);
child = new Child();
child.setFirstName("Samantha");
child.setLastName("Hamilton");
cal.set(2007,8,8);
child.setBirthday(new java.util.Date(cal.getTimeInMillis()) );
child.setGender("Female");
child.setParent(emp);
children.add(child);
emp.children = children;
return emp;
}
protected Object newItemForCollection() {
Child child = new Child();
child.firstName = "Susy";
child.lastName = "Hamilton";
child.birthday = new java.util.Date(System.currentTimeMillis());
child.gender = "Female";
return child;
}
@Override
protected Project getNewProject() {
Project empProject = new EmployeeProject();
empProject.getDescriptor(Employee.class).setObjectChangePolicy(new AttributeChangeTrackingPolicy());
return empProject;
}
protected boolean compareObjectsCollections(Object object1, Object object2){
if ( getCollectionSize(object1)!=getCollectionSize(object2) ){
return false;
}
return compareCollections( ((Employee)object1).children, ((Employee)object2).children );
}
protected boolean compareCollections(Collection col1, Collection col2){
boolean comparison=true;
Iterator i1 = col1.iterator();
Iterator i2 = col2.iterator();
while (comparison && i1.hasNext()){
Object o = i1.next();
comparison = o.equals(i2.next());
}
return comparison;
}
}