/******************************************************************************* * Copyright (c) 1998, 2015 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.oxm.mappings.sequenced; import java.util.List; import org.w3c.dom.Node; import org.eclipse.persistence.oxm.XMLRoot; import org.eclipse.persistence.oxm.sequenced.Setting; import org.eclipse.persistence.platform.xml.XMLComparer; public class Comparer { private static final XMLComparer xmlComparer = new XMLComparer(); public static boolean equals(Object control, Object test) { if(null == control) { return control == test; } else { if(control instanceof Node && test instanceof Node) { return xmlComparer.isNodeEqual((Node)control, (Node)test); } else if(control instanceof XMLRoot && test instanceof XMLRoot) { return equals((XMLRoot) control, (XMLRoot) test); } else { return control.equals(test); } } } public static boolean equals(List<Setting> control, List<Setting> test) { if(control == test) { return true; } if(null == test) { return false; } int controlSize = control.size(); if(controlSize != test.size()) { return false; } for(int x=0; x<controlSize; x++) { if(!equals(control.get(x), test.get(x))) { return false; } } return true; } public static boolean equals(Setting control, Setting test) { if(!Comparer.equals(control.getName(), test.getName())) { return false; } if(!Comparer.equals(control.getNamespaceURI(), test.getNamespaceURI())) { return false; } try { if(!Comparer.equals((List<Setting>) control.getChildren(), (List<Setting>)test.getChildren())) { return false; } } catch(ClassCastException e) { return false; } if(!Comparer.equals(control.getValue(), test.getValue())) { return false; } return true; } public static boolean equals(XMLRoot control, XMLRoot test) { if(!Comparer.equals(control.getLocalName(), test.getLocalName())) { return false; } if(!Comparer.equals(control.getNamespaceURI(), test.getNamespaceURI())) { return false; } return equals(control.getObject(), test.getObject()); } }