
com.mzt.logapi.util.diff.ArrayItemAccessor Maven / Gradle / Ivy
package com.mzt.logapi.util.diff;
import de.danielbechler.diff.access.Accessor;
import de.danielbechler.diff.access.TypeAwareAccessor;
import de.danielbechler.diff.identity.EqualsIdentityStrategy;
import de.danielbechler.diff.identity.IdentityStrategy;
import de.danielbechler.diff.selector.CollectionItemElementSelector;
import de.danielbechler.diff.selector.ElementSelector;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
/**
* @author wulang
**/
public class ArrayItemAccessor implements TypeAwareAccessor, Accessor {
private final Object referenceItem;
private final IdentityStrategy identityStrategy;
public ArrayItemAccessor(final Object referenceItem) {
this(referenceItem, EqualsIdentityStrategy.getInstance());
}
public ArrayItemAccessor(final Object referenceItem,
final IdentityStrategy identityStrategy) {
Assert.notNull(identityStrategy, "identityStrategy");
this.referenceItem = referenceItem;
this.identityStrategy = identityStrategy;
}
@Override
public Class> getType() {
return referenceItem != null ? referenceItem.getClass() : null;
}
@Override
public String toString() {
return "collection item " + getElementSelector();
}
@Override
public ElementSelector getElementSelector() {
final CollectionItemElementSelector selector = new CollectionItemElementSelector(referenceItem);
return identityStrategy == null ? selector : selector.copyWithIdentityStrategy(identityStrategy);
}
@Override
public Object get(final Object target) {
final Collection targetCollection = objectAsCollection(target);
if (targetCollection == null) {
return null;
}
for (final Object item : targetCollection) {
if (item != null && identityStrategy.equals(item, referenceItem)) {
return item;
}
}
return null;
}
@Override
public void set(final Object target, final Object value) {
final Collection
© 2015 - 2025 Weber Informatics LLC | Privacy Policy