
com.yahoo.parsec.clients.ParsecEqualsUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of parsec-clients Show documentation
Show all versions of parsec-clients Show documentation
The Parsec Java Libraries.
// Copyright 2016 Yahoo Inc.
// Licensed under the terms of the Apache license. Please see LICENSE.md file distributed with this work for terms.
package com.yahoo.parsec.clients;
import com.ning.http.client.Request;
import com.ning.http.client.multipart.ByteArrayPart;
import com.ning.http.client.multipart.FilePart;
import com.ning.http.client.multipart.Part;
import com.ning.http.client.multipart.StringPart;
import org.apache.commons.lang3.builder.EqualsBuilder;
import java.util.Arrays;
import java.util.List;
/**
* Utility class that helps compare objects by value.
*
* @author sho
*/
@SuppressWarnings("PMD.CompareObjectsWithEquals")
final class ParsecEqualsUtil {
/**
* Unused private constructor.
*/
private ParsecEqualsUtil() {
}
/**
* Ning request equals.
*
* @param lhs lhs
* @param rhs rhs
*
* @return true when two Ning Request are equal by value
*/
static boolean ningRequestEquals(final Request lhs, final Request rhs) {
if (!toStringEquals(lhs.getProxyServer(), rhs.getProxyServer())) {
return false;
}
if (!byteArrayListEquals(lhs.getCompositeByteData(), rhs.getCompositeByteData())) {
return false;
}
if (!partListEquals(lhs.getParts(), rhs.getParts())) {
return false;
}
return new EqualsBuilder()
.append(lhs.getBodyEncoding(), rhs.getBodyEncoding())
.append(lhs.getByteData(), rhs.getByteData())
.append(lhs.getContentLength(), rhs.getContentLength())
.append(lhs.getFollowRedirect(), rhs.getFollowRedirect())
.append(lhs.getMethod(), rhs.getMethod())
.append(lhs.getRangeOffset(), rhs.getRangeOffset())
.append(lhs.getRequestTimeout(), rhs.getRequestTimeout())
.append(lhs.getStringData(), rhs.getStringData())
.append(lhs.getUrl(), rhs.getUrl())
.append(lhs.getVirtualHost(), rhs.getVirtualHost())
.isEquals();
}
/**
* ToString equals.
*
* @param lhs lhs
* @param rhs rhs
*
* @return true when two objects are equal by toString value
*/
static boolean toStringEquals(final Object lhs, final Object rhs) {
if (lhs != rhs && (lhs == null || rhs == null || !lhs.toString().equals(rhs.toString()))) {
return false;
}
return true;
}
/**
* Byte array list equals.
*
* @param lhs lhs
* @param rhs rhs
*
* @return true when two byte array list are equal by value
*/
static boolean byteArrayListEquals(final List lhs, final List rhs) {
if (lhs != rhs) {
if (lhs == null || rhs == null || lhs.size() != rhs.size()) {
return false;
}
for (int i = 0; i < lhs.size(); i++) {
if (!Arrays.equals(lhs.get(i), rhs.get(i))) {
return false;
}
}
}
return true;
}
/**
* Ning Part list equals.
*
* @param lhs lhs
* @param rhs rhs
*
* @return true when two Ning Part list are equal by value
*/
static boolean partListEquals(final List lhs, final List rhs) {
if (lhs != rhs) {
if (lhs == null || rhs == null || lhs.size() != rhs.size()) {
return false;
}
for (int i = 0; i < lhs.size(); i++) {
if (!partEquals(lhs.get(i), rhs.get(i))) {
return false;
}
}
}
return true;
}
/**
* Ning Part equals.
*
* @param lhs lhs
* @param rhs rhs
*
* @return true when two Ning Part are equal by value
*/
static boolean partEquals(final Part lhs, final Part rhs) {
if (!lhs.equals(rhs)) {
if (lhs.getClass() != rhs.getClass()) {
return false;
}
if (!new EqualsBuilder()
.append(lhs.getCharset(), rhs.getCharset())
.append(lhs.getContentId(), rhs.getContentId())
.append(lhs.getContentType(), rhs.getContentType())
.append(lhs.getDispositionType(), rhs.getDispositionType())
.append(lhs.getName(), rhs.getName())
.append(lhs.getTransferEncoding(), rhs.getTransferEncoding())
.isEquals()) {
return false;
}
switch (lhs.getClass().getSimpleName()) {
case "ByteArrayPart":
if (!Arrays.equals(((ByteArrayPart) lhs).getBytes(), ((ByteArrayPart) rhs).getBytes())) {
return false;
}
break;
case "FilePart":
if (!((FilePart) lhs).getFile().equals(((FilePart) rhs).getFile())) {
return false;
}
break;
case "StringPart":
if (!((StringPart) lhs).getValue().equals(((StringPart) rhs).getValue())) {
return false;
}
break;
default:
return false;
}
}
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy