AbstractConditionShardLocator { protected boolean isAlreadyAllShards(Set<String> allShards, Set<String> shards) { if(shards == null || shards.isEmpty()) { return false; } if(!allShards.containsAll(shards)) { shards.removeAll(allShards); throw new IllegalStateException("Illegal shard detected:" + shards); } return allShards.equals(shards); }  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 testIsAlreadyAllShards() { assertFalse(test.isAlreadyAllShards(set("1"), null)); assertFalse(test.isAlreadyAllShards(set("1"), set())); try { test.isAlreadyAllShards(set("1"), set("2")); fail(); } catch (Exception e) { assertEquals(IllegalStateException.class, e.getClass()); } assertTrue(test.isAlreadyAllShards(set("1"), set("1"))); }