package org.gbif.checklistbank.cli;
import java.io.IOException;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.Ignore;
import org.junit.Test;
/**
* Manual terst to inspect the uber jar to list number of files to get an idea whats inside.
*/
@Ignore
public class JarTest {
@Test
public void countJar() throws IOException {
JarFile jar = new JarFile("target/checklistbank-cli.jar");
System.out.println(
Collections.list(jar.entries()).size()
);
Pattern rootPath = Pattern.compile("^(org\\/(apache|neo4j(\\/cypher\\/internal\\/compiler)?)|[a-z0-9_-]+)\\/[a-z0-9_-]+", Pattern.CASE_INSENSITIVE);
Map<String, AtomicInteger> counts = new TreeMap<String, AtomicInteger>();
Enumeration<JarEntry> entries = jar.entries();
while (entries.hasMoreElements()) {
JarEntry e = entries.nextElement();
String key;
Matcher m = rootPath.matcher(e.getName());
if (m.find()) {
key = m.group(0);
} else {
key = e.getName();
}
if (!counts.containsKey(key)) {
counts.put(key, new AtomicInteger(1));
} else {
counts.get(key).getAndIncrement();
}
}
for (Map.Entry<String, AtomicInteger> e : counts.entrySet()) {
if (e.getValue().get() > 100) {
System.out.println(e.getKey() + " " + e.getValue());
}
}
}
}