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 }