1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.hc.client5.http.impl.cache;
28
29 import java.util.Iterator;
30 import java.util.Objects;
31
32 import org.apache.hc.client5.http.cache.HttpCacheEntry;
33 import org.apache.hc.core5.http.Header;
34 import org.apache.hc.core5.http.MessageHeaders;
35 import org.hamcrest.BaseMatcher;
36 import org.hamcrest.Description;
37 import org.hamcrest.Matcher;
38
39 public class ContainsHeaderMatcher extends BaseMatcher<HttpCacheEntry> {
40
41 private final String headerName;
42 private final Object headerValue;
43
44 public ContainsHeaderMatcher(final String headerName, final Object headerValue) {
45 this.headerName = headerName;
46 this.headerValue = headerValue;
47 }
48
49 @Override
50 public boolean matches(final Object item) {
51 if (item instanceof MessageHeaders) {
52 final MessageHeaders messageHeaders = (MessageHeaders) item;
53 for (final Iterator<Header> it = messageHeaders.headerIterator(); it.hasNext(); ) {
54 final Header header = it.next();
55 if (headerName.equalsIgnoreCase(header.getName()) && Objects.equals(headerValue, header.getValue())) {
56 return true;
57 }
58 }
59 }
60 return false;
61 }
62
63 @Override
64 public void describeTo(final Description description) {
65 description.appendText("contains header ").appendValue(headerValue).appendText(": ").appendValue(headerValue);
66 }
67
68 public static Matcher<HttpCacheEntry> contains(final String headerName, final Object headerValue) {
69 return new ContainsHeaderMatcher(headerName, headerValue);
70 }
71
72 }