}
public void testPropertyFoundOnSuperclassButHelperMethodFoundOnSubclass() {
final PropertyAccessorFacetFactory facetFactory = new PropertyAccessorFacetFactory();
facetFactory.setSpecificationLookup(reflector);
final HiddenFacetViaHideMethodFacetFactory facetFactoryForHide = new HiddenFacetViaHideMethodFacetFactory();
facetFactoryForHide.setSpecificationLookup(reflector);
final DisabledFacetViaDisableMethodFacetFactory facetFactoryForDisable = new DisabledFacetViaDisableMethodFacetFactory();
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);