@Override public CompletableFuture<Boolean> isClasspathCorrectAsync() { return CompletableFuture.supplyAsync(() -> isClasspathCorrect()); } }
@Override public boolean isClasspathCorrect() { List<String> bundleNames = getBundleSymbolicNames(); long numberOfMatches = bundleNames.stream() .filter(hasRemoteUberJar() .or(hasEmbeddedUberJar()) .or(hasCommons())) .count(); return numberOfMatches < 2; }
@Test public void shouldNotThrowExceptionOnEmptyClasspath() throws Exception { new ManifestUberJarDuplicatedJarsWarner() { @Override List<String> getBundleSymbolicNames() { return Arrays.asList("org.infinispan.embedded", "org.infinispan.commons"); } }.isClasspathCorrect(); }
@Test public void shouldDetectCommonsAndUberJar() throws Exception { //given ManifestUberJarDuplicatedJarsWarner scanner = new ManifestUberJarDuplicatedJarsWarner() { @Override List<String> getBundleSymbolicNames() { return Arrays.asList("org.infinispan.embedded", "org.infinispan.commons"); } }; //when Boolean isClasspathCorrect = scanner.isClasspathCorrect(); //then assertFalse(isClasspathCorrect); }
@Test public void shouldDetectBothUberJars() throws Exception { //given ManifestUberJarDuplicatedJarsWarner scanner = new ManifestUberJarDuplicatedJarsWarner() { @Override List<String> getBundleSymbolicNames() { return Arrays.asList("org.infinispan.embedded", "org.infinispan.remote"); } }; //when Boolean isClasspathCorrect = scanner.isClasspathCorrect(); //then assertFalse(isClasspathCorrect); }
@Test public void shouldPassOnNormalClasspath() throws Exception { //given ManifestUberJarDuplicatedJarsWarner scanner = new ManifestUberJarDuplicatedJarsWarner() { @Override List<String> getBundleSymbolicNames() { return Arrays.asList("org.infinispan.embedded", "org.acme.DonaldDuck"); } }; //when Boolean isClasspathCorrect = scanner.isClasspathCorrect(); //then assertTrue(isClasspathCorrect); }