}
public void testPropertyFoundOnSuperclassButHelperMethodFoundOnSubclass() {
final PropertyAccessorFacetViaAccessorFactory facetFactory = new PropertyAccessorFacetViaAccessorFactory();
facetFactory.setSpecificationLookup(reflector);
final HideForContextFacetViaMethodFactory facetFactoryForHide = new HideForContextFacetViaMethodFactory();
facetFactoryForHide.setSpecificationLookup(reflector);
final DisableForContextFacetViaMethodFactory facetFactoryForDisable = new DisableForContextFacetViaMethodFactory();
facetFactoryForDisable.setSpecificationLookup(reflector);
class Customer {
@SuppressWarnings("unused")
public String getFirstName() {
return null;
}
}
class CustomerEx extends Customer {
@SuppressWarnings("unused")
public boolean hideFirstName() {
return true;
}
@SuppressWarnings("unused")
public String disableFirstName() {
return "disabled";
}
}
final Method propertyAccessorMethod = findMethod(Customer.class, "getFirstName");
final Method propertyHideMethod = findMethod(CustomerEx.class, "hideFirstName");
final Method propertyDisableMethod = findMethod(CustomerEx.class, "disableFirstName");
final ProcessMethodContext processMethodContext = new ProcessMethodContext(CustomerEx.class, null, null, propertyAccessorMethod, methodRemover, facetedMethod);
facetFactory.process(processMethodContext);
facetFactoryForHide.process(processMethodContext);
facetFactoryForDisable.process(processMethodContext);
final Facet facet = facetedMethod.getFacet(HideForContextFacet.class);
assertNotNull(facet);
assertTrue(facet instanceof HideForContextFacetViaMethod);