1 package com.google.code.beanmatchers;
2
3 import static java.util.Arrays.asList;
4
5 import java.util.List;
6 import org.hamcrest.Description;
7
8 public class HasValidGettersAndSettersExcludingMatcher<T> extends AbstractBeanAccessorMatcher<T> {
9 private List<String> excludedProperties;
10
11 HasValidGettersAndSettersExcludingMatcher(
12 TypeBasedValueGenerator valueGenerator, String... excludedProperties) {
13 super(valueGenerator);
14 this.excludedProperties = asList(excludedProperties);
15 }
16
17 @Override
18 protected boolean matches(Object item, Description mismatchDescription) {
19 JavaBean bean = new JavaBean(item);
20 List<String> properties = bean.properties();
21 properties.removeAll(excludedProperties);
22 return super.beanHasValidGetterAndSetterForProperties(bean, properties, mismatchDescription);
23 }
24
25 @Override
26 public void describeTo(Description description) {
27 if (excludedProperties.isEmpty()) {
28 description.appendText("bean with valid setter and getter methods for all properties");
29 } else {
30 description.appendText(
31 "bean with valid setter and getter methods for all properties excluding ");
32 description.appendValue(excludedProperties);
33 }
34 }
35 }