All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jvnet.hyperjaxb3.lang.builder.JAXBEqualsBuilder Maven / Gradle / Ivy

The newest version!
package org.jvnet.hyperjaxb3.lang.builder;

import java.util.Iterator;

import javax.xml.bind.JAXBElement;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.jvnet.hyperjaxb3.lang.Equals;

public class JAXBEqualsBuilder extends EqualsBuilder {

  @Override
  public EqualsBuilder append(Object lhs, Object rhs) {
    if (!isEquals()) {
      return this;
    }
    if (lhs == rhs) {
      return this;
    }
    if (lhs == null || rhs == null) {
      this.setEquals(false);
      return this;
    }
    final Class lhsClass = lhs.getClass();
    if (lhsClass.isArray()) {
      super.append(lhs, rhs);
    }
    else {
      if (lhs instanceof Iterable && rhs instanceof Iterable) {
        append((Iterable) lhs, (Iterable) rhs);
      }
      else if (lhs instanceof JAXBElement && rhs instanceof JAXBElement) {
        append((JAXBElement) lhs, (JAXBElement) rhs);
      }
      else if (lhs instanceof Equals)
      {
        ((Equals)lhs).equals(rhs, this);
      }
      else {
        setEquals(lhs.equals(rhs));
      }
    }
    return this;
  }

  public EqualsBuilder append(Iterable lhs, Iterable rhs) {
    if (!isEquals()) {
      return this;
    }
    if (lhs == rhs) {
      return this;
    }
    if (lhs == null || rhs == null) {
      this.setEquals(false);
      return this;
    }

    final Iterator e1 = lhs.iterator();
    final Iterator e2 = rhs.iterator();

    while (e1.hasNext() && e2.hasNext() && isEquals()) {
      append(e1.next(), e2.next());
    }
    setEquals(!(e1.hasNext() || e2.hasNext()));
    return this;
  }

  public EqualsBuilder append(JAXBElement lhs, JAXBElement rhs) {
    if (!isEquals()) {
      return this;
    }
    if (lhs == rhs) {
      return this;
    }
    if (lhs == null || rhs == null) {
      this.setEquals(false);
      return this;
    }

    append(lhs.getName(), rhs.getName()).append(lhs.getScope(), rhs.getScope()).append(
        lhs.getValue(),
        rhs.getValue());
    return this;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy