public static boolean equals(KvValue<?> v1, KvValue<?> v2) { return v1.accept(COMPARISON_VISITOR, v2); }
@Override public BsonValue<?> apply(@Nonnull KvValue<?> kvValue) { return kvValue.accept(this, null); }
public static BsonValue<?> translate(KvValue<?> kvValue) { return kvValue.accept(ToBsonValueTranslator.getInstance(), null); }
@Override public BsonValue<?> visit(KvArray value, Void arg) { List<BsonValue<?>> list = new ArrayList<>(value.size()); for (KvValue<?> kVValue : value) { list.add(kVValue.accept(this, arg)); } return newArray(list); }
@Override public BsonValue<?> visit(KvDocument value, Void arg) { List<Entry<?>> entryList = new ArrayList<>(value.size()); for (DocEntry<?> docEntry : value) { entryList.add(new SimpleEntry<>(docEntry.getKey(), docEntry.getValue().accept(this, arg))); } return newDocument(entryList); }
@Override public Void visit(KvArray value, A arg) { preKvValue(value, arg); preArray(value, arg); for (KvValue<?> element : value) { element.accept(this, arg); } postArray(value, arg); postKvValue(value, arg); return null; }
@Override public Void visit(KvDocument value, A arg) { preKvValue(value, arg); preDoc(value, arg); for (DocEntry<?> entry : value) { entry.getValue().accept(this, arg); } postDoc(value, arg); postKvValue(value, arg); return null; }
@Override public Boolean visit(KvDocument value, KvValue<?> other) { if (other == value) { return true; } if (other == null) { return false; } if (!(other instanceof KvDocument)) { return false; } KvDocument otherDoc = (KvDocument) other; if (value.size() != otherDoc.size()) { return false; } for (KvDocument.DocEntry<?> myEntry : value) { KvValue<?> otherValue = otherDoc.get(myEntry.getKey()); if (otherValue == null) { return false; } if (!otherValue.accept(this, myEntry.getValue())) { return false; } } return true; }
@Override public Boolean visit(KvArray value, KvValue<?> other) { if (other == value) { return true; } if (other == null) { return false; } if (!(other instanceof KvArray)) { return false; } KvArray otherArr = (KvArray) other; if (value.size() != otherArr.size()) { return false; } for (int i = 0; i < value.size(); i++) { KvValue<?> v1 = value.get(i); KvValue<?> v2 = otherArr.get(i); if (!v1.accept(this, v2)) { return false; } } return true; }