### Question:
PropertiesBasedTraceeFilterConfiguration implements TraceeFilterConfiguration { @Override public boolean shouldProcessParam(String paramName, Channel channel) { final String messageTypePropertyValue = getProfiledOrDefaultProperty(channel.name()); final List<Pattern> patterns = retrievePatternsForPropertyValue(messageTypePropertyValue); return anyPatternMatchesParamName(patterns, paramName); } PropertiesBasedTraceeFilterConfiguration(PropertyChain propertyChain);  PropertiesBasedTraceeFilterConfiguration(PropertyChain propertyChain,
													String profileName); static PropertyChain loadPropertyChain(); @Override boolean shouldProcessParam(String paramName, Channel channel); @Override boolean shouldProcessContext(final Channel channel); @Override boolean shouldGenerateInvocationId(); @Override int generatedInvocationIdLength(); @Override boolean shouldGenerateSessionId(); @Override int generatedSessionIdLength(); @Override Map<String, String> filterDeniedParams(final Map<String, String> unfiltered, final Channel channel);  }### Answer:
@Test public void testShouldPropagatePositive() { when(propertyChain.getProperty(TRACEE_DEFAULT_PROFILE_PREFIX + AsyncDispatch.name())).thenReturn(".*"); assertTrue(unit.shouldProcessParam("foo", AsyncDispatch)); }
@Test public void testShouldPropagateNegative() { when(propertyChain.getProperty(TRACEE_DEFAULT_PROFILE_PREFIX + AsyncDispatch.name())).thenReturn("a,b,c"); assertFalse(unit.shouldProcessParam("foo", AsyncDispatch)); }
@Test public void testShouldAllowRegexInPatterns() { when(propertyChain.getProperty(TRACEE_DEFAULT_PROFILE_PREFIX + AsyncDispatch.name())).thenReturn("b[oa]+b"); assertTrue(unit.shouldProcessParam("baab", AsyncDispatch)); assertTrue(unit.shouldProcessParam("boob", AsyncDispatch)); }
@Test public void testShouldNotPropagateIfNothingIsConfigured() { assertFalse(unit.shouldProcessParam("foo", AsyncDispatch)); }