Java tutorial
/* * Copyright (c) LinkedIn Corporation. All rights reserved. Licensed under the BSD-2 Clause license. * See LICENSE in the project root for license information. */ package com.linkedin.flashback.matchrules; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.linkedin.flashback.serializable.RecordedHttpRequest; import java.util.HashSet; import java.util.Set; /** * Customized match rule which can contain any Match rule combinations. * @author shfeng * @author dvinegra */ public class CompositeMatchRule implements MatchRule { private Set<MatchRule> _matchRules = new HashSet<>(); public void addRule(MatchRule matchRule) { _matchRules.add(matchRule); } public void addAll(Set<MatchRule> rules) { _matchRules.addAll(rules); } @Override public boolean test(final RecordedHttpRequest incomingRequest, final RecordedHttpRequest expectedRequest) { return Iterables.all(_matchRules, new Predicate<MatchRule>() { @Override public boolean apply(MatchRule rule) { return rule.test(incomingRequest, expectedRequest); } }); } @Override public String getMatchFailureDescriptionForRequests(RecordedHttpRequest incomingRequest, RecordedHttpRequest expectedRequest) { StringBuilder resultBuilder = new StringBuilder(); _matchRules.stream().forEach((rule) -> { if (!rule.test(incomingRequest, expectedRequest)) { resultBuilder.append(rule.getMatchFailureDescriptionForRequests(incomingRequest, expectedRequest)) .append("\n"); } }); return resultBuilder.toString(); } }