View Javadoc
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 HasValidBeanHashCodeExcludingMatcher<T> extends AbstractBeanHashCodeMatcher<T> {
9     private final List<String> excludedProperties;
10  
11    HasValidBeanHashCodeExcludingMatcher(
12        TypeBasedValueGenerator valueGenerator, String... excludedProperties) {
13      super(valueGenerator);
14      this.excludedProperties = asList(excludedProperties);
15    }
16  
17    @Override
18    protected boolean matchesSafely(Class<T> beanType, Description mismatchDescription) {
19      JavaBean bean = new JavaBean(beanType);
20      List<String> properties = bean.properties();
21      properties.removeAll(excludedProperties);
22      return hashCodeIsInfluencedByProperties(bean, properties, mismatchDescription);
23    }
24  
25    @Override
26    public void describeTo(Description description) {
27      if (excludedProperties.isEmpty()) {
28        description.appendText("bean with all properties influencing hashCode");
29      } else {
30        description.appendText("bean with all properties excluding ");
31        description.appendValue(excludedProperties);
32        description.appendText(" influencing hashCode");
33      }
34    }
35  }