AbstractConditionShardLocator { protected Set<String> exclude(CTX context, Set<String> shards) { Set<String> allShards = new HashSet<>(getAllShards(context)); allShards.removeAll(shards); return allShards; }  abstract Set<String> locateForEqual(CTX context); abstract Set<String> locateForNotEqual(CTX ctx); abstract Set<String> locateForGreaterThan(CTX context); abstract Set<String> locateForGreaterThanOrEqual(CTX ctx); abstract Set<String> locateForLessThan(CTX context); abstract Set<String> locateForLessThanOrEqual(CTX ctx); abstract Set<String> locateForBetween(CTX ctx); abstract Set<String> locateForNotBetween(CTX ctx); abstract Set<String> locateForIn(CTX context); abstract Set<String> locateForNotIn(CTX context); abstract Set<String> locateForLike(CTX context); abstract Set<String> locateForNotLike(CTX context); abstract Set<String> locateForIsNull(CTX context); abstract Set<String> locateForIsNotNull(CTX context); Set<String> getAllShards(CTX context); Set<String> locateShards(CTX context);  }
@Test public void testExclude() { }