| /* |
| * Copyright (c) 2012, 2020 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: |
| // Blaise Doughan - 2.4.1 - initial implementation |
| package org.eclipse.persistence.testing.jaxb.collections; |
| |
| import java.lang.reflect.Array; |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import java.util.List; |
| import java.util.SortedSet; |
| import java.util.Iterator; |
| import java.util.Map; |
| |
| import jakarta.xml.bind.JAXBElement; |
| import jakarta.xml.bind.annotation.XmlAnyAttribute; |
| import jakarta.xml.bind.annotation.XmlAnyElement; |
| import jakarta.xml.bind.annotation.XmlAttribute; |
| import jakarta.xml.bind.annotation.XmlElement; |
| import jakarta.xml.bind.annotation.XmlElementRef; |
| import jakarta.xml.bind.annotation.XmlElementRefs; |
| import jakarta.xml.bind.annotation.XmlElements; |
| import jakarta.xml.bind.annotation.XmlIDREF; |
| import jakarta.xml.bind.annotation.XmlList; |
| import jakarta.xml.bind.annotation.XmlRootElement; |
| |
| @XmlRootElement(name = "container") |
| public class SortedSetHolder implements Comparable { |
| |
| protected SortedSet<Integer> collection1; |
| |
| @XmlList |
| protected SortedSet<String> collection2; |
| |
| protected SortedSet<Object> collection3; |
| |
| protected SortedSet<SortedSetHolder> collection5; |
| |
| @XmlElement(name = "referenced-id") |
| @XmlIDREF |
| @XmlList |
| protected SortedSet<ReferencedObject> collection7; |
| |
| @XmlAttribute(name = "attribute-referenced-id") |
| @XmlIDREF |
| public SortedSet<ReferencedObject> collection8; |
| |
| protected SortedSet<CoinEnum> collection9; |
| |
| @XmlAnyAttribute |
| protected Map collection10; |
| |
| @XmlAttribute |
| protected SortedSet<String> collection12; |
| |
| @XmlElements({ @XmlElement(name = "collection13integer", type = Integer.class), @XmlElement(name = "collection13string", type = String.class) }) |
| protected SortedSet collection13; |
| |
| @XmlElements({ @XmlElement(name = "collection14integer", type = Integer.class), @XmlElement(name = "collection14string", type = String.class, nillable = true) }) |
| protected SortedSet collection14; |
| |
| @XmlElement |
| protected List<ReferencedObject> referenced = new ArrayList<ReferencedObject>(); |
| |
| public SortedSetHolder() { |
| } |
| |
| public SortedSet<Integer> getCollection1() { |
| return collection1; |
| } |
| |
| public void setCollection1(SortedSet<Integer> collection1) { |
| this.collection1 = collection1; |
| } |
| |
| public SortedSet<String> getCollection2() { |
| return collection2; |
| } |
| |
| public void setCollection2(SortedSet<String> collection2) { |
| this.collection2 = collection2; |
| } |
| |
| public SortedSet<Object> getCollection3() { |
| return collection3; |
| } |
| |
| public void setCollection3(SortedSet<Object> collection3) { |
| this.collection3 = collection3; |
| } |
| |
| public SortedSet<SortedSetHolder> getCollection5() { |
| return collection5; |
| } |
| |
| public void setCollection5(SortedSet<SortedSetHolder> collection5) { |
| this.collection5 = collection5; |
| } |
| |
| public SortedSet<ReferencedObject> getCollection7() { |
| return collection7; |
| } |
| |
| public void setCollection7(SortedSet<ReferencedObject> collection7) { |
| this.collection7 = collection7; |
| } |
| |
| public SortedSet<ReferencedObject> getCollection8() { |
| return collection8; |
| } |
| |
| public void setCollection8(SortedSet<ReferencedObject> collection8) { |
| this.collection8 = collection8; |
| } |
| |
| public SortedSet<CoinEnum> getCollection9() { |
| return collection9; |
| } |
| |
| public void setCollection9(SortedSet<CoinEnum> collection9) { |
| this.collection9 = collection9; |
| } |
| |
| public Map getCollection10() { |
| return collection10; |
| } |
| |
| public void setCollection10(Map collection10) { |
| this.collection10 = collection10; |
| } |
| |
| public SortedSet<String> getCollection12() { |
| return collection12; |
| } |
| |
| public void setCollection12(SortedSet<String> collection12) { |
| this.collection12 = collection12; |
| } |
| |
| public SortedSet getCollection13() { |
| return collection13; |
| } |
| |
| public void setCollection13(SortedSet collection13) { |
| this.collection13 = collection13; |
| } |
| |
| public List<ReferencedObject> getReferenced() { |
| return referenced; |
| } |
| |
| public void setReferenced(List<ReferencedObject> referenced) { |
| this.referenced = referenced; |
| } |
| |
| public boolean equals(Object compareObject){ |
| |
| if(compareObject instanceof SortedSetHolder){ |
| SortedSetHolder compareCollectionHolder = ((SortedSetHolder)compareObject); |
| return compareCollections(collection1, compareCollectionHolder.getCollection1()) |
| && compareCollections(collection2, compareCollectionHolder.getCollection2()) |
| && compareCollections(collection3, compareCollectionHolder.getCollection3()) |
| && compareCollections(collection5, compareCollectionHolder.getCollection5()) |
| && compareCollections(collection7, compareCollectionHolder.getCollection7()) |
| && compareCollections(collection8, compareCollectionHolder.getCollection8()) |
| && compareCollections(collection9, compareCollectionHolder.getCollection9()) |
| && compareMaps(collection10, compareCollectionHolder.getCollection10()) |
| && compareCollections(collection12, compareCollectionHolder.getCollection12()) |
| && compareCollections(collection13, compareCollectionHolder.getCollection13()) |
| ; |
| } |
| return false; |
| } |
| |
| private boolean compareMaps(Map map1, Map map2) { |
| if (map1 == null) { |
| return map2 == null; |
| } |
| if (map1.size() != map2.size()) { |
| return false; |
| } |
| return map1.equals(map2); |
| } |
| |
| private boolean compareCollections(Collection compareList1, Collection compareList2) { |
| if (compareList1 == null) { |
| return compareList2 == null; |
| } else { |
| if (compareList2 == null) { |
| return false; |
| } |
| if (compareList1.size() != compareList2.size()) { |
| return false; |
| } |
| Iterator iter1 = compareList1.iterator(); |
| Iterator iter2 = compareList2.iterator(); |
| while (iter1.hasNext()) { |
| Object next1 = iter1.next(); |
| Object next2 = iter2.next(); |
| if (!compareObjects(next1, next2)) { |
| return false; |
| } |
| } |
| return true; |
| } |
| } |
| |
| private boolean compareObjects(Object obj1, Object obj2) { |
| if (obj1 == null & obj2 == null) { |
| return true; |
| } |
| if (obj1 instanceof JAXBElement) { |
| if (obj2 instanceof JAXBElement) { |
| if (!((JAXBElement) obj1).getName().getLocalPart().equals(((JAXBElement) obj2).getName().getLocalPart())) { |
| return false; |
| } |
| if (!((JAXBElement) obj1).getDeclaredType().equals(((JAXBElement) obj2).getDeclaredType())) { |
| return false; |
| } |
| if (!((JAXBElement) obj1).getValue().equals(((JAXBElement) obj2).getValue())) { |
| return false; |
| } |
| return true; |
| } |
| return false; |
| } else { |
| if (obj1.getClass().isArray() && obj2.getClass().isArray()) { |
| return compareArrays(obj1, obj2); |
| } else { |
| return obj1.equals(obj2); |
| } |
| } |
| } |
| |
| protected boolean compareArrays(Object controlValue, Object testValue) { |
| int controlSize = Array.getLength(controlValue); |
| int objSize = Array.getLength(testValue); |
| if (controlSize != objSize) { |
| return false; |
| } |
| for (int x = 0; x < controlSize; x++) { |
| Object controlItem = Array.get(controlValue, x); |
| Object testItem = Array.get(testValue, x); |
| |
| if (!controlItem.equals(testItem)) { |
| return false; |
| } |
| } |
| return true; |
| } |
| |
| @Override |
| public int compareTo(Object o) { |
| if (this.equals(o)) { |
| return 0; |
| } |
| return 1; |
| } |
| |
| } |