From 1a3860ff7dc6194b2835941a0a2bc31d2259bfdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20Soto=20Valero?= Date: Sat, 17 Apr 2021 14:30:17 +0200 Subject: [PATCH] Add IT for checking the creation of depclean-results.json (#84) --- .../se/kth/depclean/util/MavenInvoker.java | 13 +- .../java/se/kth/depclean/util/OsUtils.java | 20 + .../java/se/kth/depclean/DepCleanMojoIT.java | 25 +- .../json_should_be_correct/pom.xml | 57 ++ .../src/main/java/org/UseCommonsCodec.java | 11 + .../src/main/java/org/UseJcabiManifest.java | 11 + .../src/test/resources/depclean-results.json | 493 ++++++++++++++++++ 7 files changed, 608 insertions(+), 22 deletions(-) create mode 100644 depclean-maven-plugin/src/main/java/se/kth/depclean/util/OsUtils.java create mode 100644 depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/pom.xml create mode 100644 depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/src/main/java/org/UseCommonsCodec.java create mode 100644 depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/src/main/java/org/UseJcabiManifest.java create mode 100644 depclean-maven-plugin/src/test/resources/depclean-results.json diff --git a/depclean-maven-plugin/src/main/java/se/kth/depclean/util/MavenInvoker.java b/depclean-maven-plugin/src/main/java/se/kth/depclean/util/MavenInvoker.java index 6bfe9d54..50e0ce3c 100644 --- a/depclean-maven-plugin/src/main/java/se/kth/depclean/util/MavenInvoker.java +++ b/depclean-maven-plugin/src/main/java/se/kth/depclean/util/MavenInvoker.java @@ -42,16 +42,15 @@ private MavenInvoker() { * @throws InterruptedException In case of IO issues. */ public static String[] runCommand(String cmd) throws IOException, InterruptedException { - String os = System.getProperty("os.name").toLowerCase(); Process process; ArrayList list; - if (isUnix(os)) { + if (OsUtils.isUnix()) { list = new ArrayList<>(); process = Runtime.getRuntime().exec(cmd); InputStream inputStream = process.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); return outputToConsole(process, list, br); - } else if (isWindows(os)) { + } else if (OsUtils.isWindows()) { list = new ArrayList<>(); process = Runtime.getRuntime().exec("cmd /C " + cmd); BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); @@ -73,12 +72,4 @@ private static String[] outputToConsole(Process process, ArrayList list, br.close(); return list.toArray(new String[0]); } - - private static boolean isUnix(String os) { - return (os.contains("nix") || os.contains("nux") || os.contains("mac os")); - } - - private static boolean isWindows(String os) { - return (os.contains("win")); - } } diff --git a/depclean-maven-plugin/src/main/java/se/kth/depclean/util/OsUtils.java b/depclean-maven-plugin/src/main/java/se/kth/depclean/util/OsUtils.java new file mode 100644 index 00000000..484e76c7 --- /dev/null +++ b/depclean-maven-plugin/src/main/java/se/kth/depclean/util/OsUtils.java @@ -0,0 +1,20 @@ +package se.kth.depclean.util; + +/** + * Utility class to determine the operative system being used. + */ +public class OsUtils { + + private static final String OS = System.getProperty("os.name").toLowerCase(); + + private OsUtils() { + } + + public static boolean isUnix() { + return (OS.contains("nix") || OS.contains("nux") || OS.contains("mac os")); + } + + public static boolean isWindows() { + return (OS.contains("win")); + } +} diff --git a/depclean-maven-plugin/src/test/java/se/kth/depclean/DepCleanMojoIT.java b/depclean-maven-plugin/src/test/java/se/kth/depclean/DepCleanMojoIT.java index 8f47d047..27ae9667 100644 --- a/depclean-maven-plugin/src/test/java/se/kth/depclean/DepCleanMojoIT.java +++ b/depclean-maven-plugin/src/test/java/se/kth/depclean/DepCleanMojoIT.java @@ -6,7 +6,11 @@ import com.soebes.itf.jupiter.extension.MavenTest; import com.soebes.itf.jupiter.maven.MavenExecutionResult; import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import org.apache.commons.io.FileUtils; import org.junit.jupiter.api.DisplayName; +import se.kth.depclean.util.OsUtils; /** * This class executes integration tests against the DepCleanMojo. The projects used for testing are in @@ -48,17 +52,16 @@ void processor_used(MavenExecutionResult result) { @MavenTest @DisplayName("Test that DepClean creates a proper depclean-results.json file") - void json_should_be_correct(MavenExecutionResult result) { - File producedJson = - new File("target/maven-it/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/project/depclean-results.json"); - File expectedJson = - new File("src/test/resources/depclean-results.json"); - assertThat(result).isSuccessful() - .out() - .plain().contains( - "Creating depclean-results.json, please wait...", - "[INFO] depclean-results.json file created in: " + producedJson.getAbsolutePath()); - assertThat(expectedJson).hasSameTextualContentAs(producedJson); + void json_should_be_correct(MavenExecutionResult result) throws IOException { + if (OsUtils.isUnix()) { + File expectedJsonFile = new File("src/test/resources/depclean-results.json"); + String expectedJsonContent = FileUtils.readFileToString(expectedJsonFile, Charset.defaultCharset()); + assertThat(result).isSuccessful() + .project() + .hasTarget() + .withFile("depclean-results.json") + .hasContent(expectedJsonContent); + } } } diff --git a/depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/pom.xml b/depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/pom.xml new file mode 100644 index 00000000..5d414481 --- /dev/null +++ b/depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/pom.xml @@ -0,0 +1,57 @@ + + + 4.0.0 + + org.foo.bar + foobar + 1.0.0-SNAPSHOT + jar + foobar + + + UTF-8 + UTF-8 + 11 + 11 + + + + + com.jcabi + jcabi-manifests + 1.1 + + + commons-io + commons-io + 2.8.0 + + + commons-codec + commons-codec + 1.15 + + + + + + + se.kth.castor + depclean-maven-plugin + 2.0.2-SNAPSHOT + + + + depclean + + + true + + + + + + + + diff --git a/depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/src/main/java/org/UseCommonsCodec.java b/depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/src/main/java/org/UseCommonsCodec.java new file mode 100644 index 00000000..3dd41d30 --- /dev/null +++ b/depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/src/main/java/org/UseCommonsCodec.java @@ -0,0 +1,11 @@ +package org; + +import org.apache.commons.codec.Charsets; + +public class UseCommonsCodec { + + public static void main(String[] args) { + System.out.println(Charsets.UTF_8); + } + +} diff --git a/depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/src/main/java/org/UseJcabiManifest.java b/depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/src/main/java/org/UseJcabiManifest.java new file mode 100644 index 00000000..4d16e10c --- /dev/null +++ b/depclean-maven-plugin/src/test/resources-its/se/kth/depclean/DepCleanMojoIT/json_should_be_correct/src/main/java/org/UseJcabiManifest.java @@ -0,0 +1,11 @@ +package org; + +import com.jcabi.manifests.Manifests; + +public class UseJcabiManifest { + + public static void main(String[] args) { + Manifests manifests = new Manifests(); + System.out.println(manifests.size()); + } +} diff --git a/depclean-maven-plugin/src/test/resources/depclean-results.json b/depclean-maven-plugin/src/test/resources/depclean-results.json new file mode 100644 index 00000000..da6b4ad0 --- /dev/null +++ b/depclean-maven-plugin/src/test/resources/depclean-results.json @@ -0,0 +1,493 @@ +{ + "id": "org.foo.bar:foobar:jar:1.0.0-SNAPSHOT:null", + "coordinates": "org.foo.bar:foobar:1.0.0-SNAPSHOT", + "groupId": "org.foo.bar", + "artifactId": "foobar", + "version": "1.0.0-SNAPSHOT", + "packaging": "jar", + "omitted": false, + "size": 1284, + "type": "unknown", + "status": "unknown", + "parent": "unknown", + "allTypes": [], + "usedTypes": [], + "usageRatio": -1.0, + "children": [ + { + "id": "com.jcabi:jcabi-manifests:jar:1.1:compile", + "coordinates": "com.jcabi:jcabi-manifests:1.1", + "groupId": "com.jcabi", + "artifactId": "jcabi-manifests", + "version": "1.1", + "scope": "compile", + "packaging": "jar", + "omitted": false, + "size": 11747, + "type": "direct", + "status": "used", + "parent": "org.foo.bar:foobar:jar:1.0.0-SNAPSHOT", + "allTypes": [ + "com.jcabi.manifests.Mfs", + "com.jcabi.manifests.MfMap", + "com.jcabi.manifests.StreamsMfs", + "com.jcabi.manifests.FilesMfs", + "com.jcabi.manifests.Manifests", + "com.jcabi.manifests.ServletMfs", + "com.jcabi.manifests.ClasspathMfs" + ], + "usedTypes": [ + "com.jcabi.manifests.Mfs", + "com.jcabi.manifests.MfMap", + "com.jcabi.manifests.StreamsMfs", + "com.jcabi.manifests.FilesMfs", + "com.jcabi.manifests.Manifests", + "com.jcabi.manifests.ServletMfs", + "com.jcabi.manifests.ClasspathMfs" + ], + "usageRatio": 1.0, + "children": [ + { + "id": "com.jcabi:jcabi-log:jar:0.14:compile", + "coordinates": "com.jcabi:jcabi-log:0.14", + "groupId": "com.jcabi", + "artifactId": "jcabi-log", + "version": "0.14", + "scope": "compile", + "packaging": "jar", + "omitted": false, + "size": 38943, + "type": "transitive", + "status": "used", + "parent": "com.jcabi:jcabi-manifests:jar:1.1:compile", + "allTypes": [ + "com.jcabi.log.DecorsManager", + "com.jcabi.log.VerboseThreads$Wrap", + "com.jcabi.log.DomDecor", + "com.jcabi.log.ObjectDecor", + "com.jcabi.log.NanoDecor", + "com.jcabi.log.VerboseRunnable$1", + "com.jcabi.log.VerboseThreads$Group", + "com.jcabi.log.MsDecor", + "com.jcabi.log.ListDecor", + "com.jcabi.log.PreFormatter", + "com.jcabi.log.ExceptionDecor", + "com.jcabi.log.VerboseThreads", + "com.jcabi.log.MulticolorLayout", + "com.jcabi.log.VerboseProcess", + "com.jcabi.log.VerboseProcess$Monitor", + "com.jcabi.log.Logger", + "com.jcabi.log.SecretDecor", + "com.jcabi.log.DecorException", + "com.jcabi.log.VerboseRunnable", + "com.jcabi.log.Logger$1", + "com.jcabi.log.SizeDecor", + "com.jcabi.log.TextDecor", + "com.jcabi.log.TypeDecor" + ], + "usedTypes": [ + "com.jcabi.log.DecorsManager", + "com.jcabi.log.DomDecor", + "com.jcabi.log.ObjectDecor", + "com.jcabi.log.NanoDecor", + "com.jcabi.log.MsDecor", + "com.jcabi.log.ListDecor", + "com.jcabi.log.PreFormatter", + "com.jcabi.log.ExceptionDecor", + "com.jcabi.log.Logger", + "com.jcabi.log.SecretDecor", + "com.jcabi.log.DecorException", + "com.jcabi.log.Logger$1", + "com.jcabi.log.TypeDecor", + "com.jcabi.log.TextDecor", + "com.jcabi.log.SizeDecor" + ], + "usageRatio": 0.6521739130434783, + "children": [ + { + "id": "org.slf4j:slf4j-api:jar:1.7.5:compile", + "coordinates": "org.slf4j:slf4j-api:1.7.5", + "groupId": "org.slf4j", + "artifactId": "slf4j-api", + "version": "1.7.5", + "scope": "compile", + "packaging": "jar", + "omitted": false, + "size": 26084, + "type": "transitive", + "status": "used", + "parent": "com.jcabi:jcabi-log:jar:0.14:compile", + "allTypes": [ + "org.slf4j.helpers.BasicMDCAdapter", + "org.slf4j.Logger", + "org.slf4j.spi.LoggerFactoryBinder", + "org.slf4j.LoggerFactory", + "org.slf4j.MarkerFactory", + "org.slf4j.helpers.FormattingTuple", + "org.slf4j.spi.MarkerFactoryBinder", + "org.slf4j.spi.MDCAdapter", + "org.slf4j.spi.LocationAwareLogger", + "org.slf4j.helpers.SubstituteLoggerFactory", + "org.slf4j.helpers.NOPMDCAdapter", + "org.slf4j.helpers.Util", + "org.slf4j.helpers.BasicMarkerFactory", + "org.slf4j.helpers.NOPLogger", + "org.slf4j.Marker", + "org.slf4j.MDC", + "org.slf4j.helpers.MarkerIgnoringBase", + "org.slf4j.helpers.BasicMarker", + "org.slf4j.helpers.NOPLoggerFactory", + "org.slf4j.IMarkerFactory", + "org.slf4j.helpers.NamedLoggerBase", + "org.slf4j.ILoggerFactory", + "org.slf4j.helpers.MessageFormatter" + ], + "usedTypes": [ + "org.slf4j.helpers.Util", + "org.slf4j.Logger", + "org.slf4j.helpers.NOPLogger", + "org.slf4j.Marker", + "org.slf4j.LoggerFactory", + "org.slf4j.helpers.MarkerIgnoringBase", + "org.slf4j.helpers.NOPLoggerFactory", + "org.slf4j.helpers.NamedLoggerBase", + "org.slf4j.ILoggerFactory", + "org.slf4j.helpers.SubstituteLoggerFactory" + ], + "usageRatio": 0.43478260869565216, + "children": [] + } + ] + } + ] + }, + { + "id": "commons-io:commons-io:jar:2.8.0:compile", + "coordinates": "commons-io:commons-io:2.8.0", + "groupId": "commons-io", + "artifactId": "commons-io", + "version": "2.8.0", + "scope": "compile", + "packaging": "jar", + "omitted": false, + "size": 285424, + "type": "direct", + "status": "bloated", + "parent": "org.foo.bar:foobar:jar:1.0.0-SNAPSHOT", + "allTypes": [ + "org.apache.commons.io.LineIterator", + "org.apache.commons.io.input.ObservableInputStream", + "org.apache.commons.io.comparator.AbstractFileComparator", + "org.apache.commons.io.output.FilterCollectionWriter", + "org.apache.commons.io.input.ReaderInputStream", + "org.apache.commons.io.output.NullPrintStream", + "org.apache.commons.io.input.XmlStreamReaderException", + "org.apache.commons.io.FileCleaningTracker$Tracker", + "org.apache.commons.io.EndianUtils", + "org.apache.commons.io.serialization.RegexpClassNameMatcher", + "org.apache.commons.io.output.FileWriterWithEncoding", + "org.apache.commons.io.output.AbstractByteArrayOutputStream$InputStreamConstructor", + "org.apache.commons.io.input.CloseShieldInputStream", + "org.apache.commons.io.output.AppendableWriter", + "org.apache.commons.io.filefilter.EmptyFileFilter", + "org.apache.commons.io.input.XmlStreamReader", + "org.apache.commons.io.file.CopyDirectoryVisitor", + "org.apache.commons.io.filefilter.NotFileFilter", + "org.apache.commons.io.filefilter.TrueFileFilter", + "org.apache.commons.io.input.ReversedLinesFileReader$FilePart", + "org.apache.commons.io.input.ObservableInputStream$Observer", + "org.apache.commons.io.filefilter.AgeFileFilter", + "org.apache.commons.io.serialization.ValidatingObjectInputStream", + "org.apache.commons.io.CopyUtils", + "org.apache.commons.io.IOExceptionWithCause", + "org.apache.commons.io.DirectoryWalker", + "org.apache.commons.io.ByteOrderParser", + "org.apache.commons.io.output.ByteArrayOutputStream", + "org.apache.commons.io.HexDump", + "org.apache.commons.io.filefilter.ConditionalFileFilter", + "org.apache.commons.io.input.ProxyReader", + "org.apache.commons.io.comparator.ExtensionFileComparator", + "org.apache.commons.io.input.buffer.CircularBufferInputStream", + "org.apache.commons.io.serialization.ClassNameMatcher", + "org.apache.commons.io.output.ProxyCollectionWriter", + "org.apache.commons.io.filefilter.DirectoryFileFilter", + "org.apache.commons.io.input.BrokenReader", + "org.apache.commons.io.IOUtils", + "org.apache.commons.io.file.Counters$Counter", + "org.apache.commons.io.filefilter.SuffixFileFilter", + "org.apache.commons.io.output.ProxyWriter", + "org.apache.commons.io.file.StandardDeleteOption", + "org.apache.commons.io.input.NullInputStream", + "org.apache.commons.io.comparator.LastModifiedFileComparator", + "org.apache.commons.io.TaggedIOException", + "org.apache.commons.io.file.Counters$LongPathCounters", + "org.apache.commons.io.FileSystem", + "org.apache.commons.io.input.buffer.PeekableInputStream", + "org.apache.commons.io.file.Counters$LongCounter", + "org.apache.commons.io.FileCleaningTracker", + "org.apache.commons.io.input.UnixLineEndingInputStream", + "org.apache.commons.io.filefilter.DelegateFileFilter", + "org.apache.commons.io.input.Tailer", + "org.apache.commons.io.filefilter.AndFileFilter", + "org.apache.commons.io.input.TeeInputStream", + "org.apache.commons.io.input.BoundedReader", + "org.apache.commons.io.input.WindowsLineEndingInputStream", + "org.apache.commons.io.output.ChunkedOutputStream", + "org.apache.commons.io.file.SimplePathVisitor", + "org.apache.commons.io.input.CharSequenceReader", + "org.apache.commons.io.input.MessageDigestCalculatingInputStream", + "org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream", + "org.apache.commons.io.comparator.DefaultFileComparator", + "org.apache.commons.io.filefilter.NameFileFilter", + "org.apache.commons.io.output.StringBuilderWriter", + "org.apache.commons.io.filefilter.CanExecuteFileFilter", + "org.apache.commons.io.output.TaggedWriter", + "org.apache.commons.io.serialization.FullClassNameMatcher", + "org.apache.commons.io.file.Counters$1", + "org.apache.commons.io.file.DeleteOption", + "org.apache.commons.io.output.TeeOutputStream", + "org.apache.commons.io.file.AccumulatorPathVisitor", + "org.apache.commons.io.Charsets", + "org.apache.commons.io.output.XmlStreamWriter", + "org.apache.commons.io.output.CountingOutputStream", + "org.apache.commons.io.file.PathUtils$1", + "org.apache.commons.io.input.InfiniteCircularInputStream", + "org.apache.commons.io.monitor.FileAlterationListener", + "org.apache.commons.io.output.DeferredFileOutputStream", + "org.apache.commons.io.comparator.CompositeFileComparator", + "org.apache.commons.io.output.ChunkedWriter", + "org.apache.commons.io.FileUtils", + "org.apache.commons.io.output.BrokenOutputStream", + "org.apache.commons.io.input.SwappedDataInputStream", + "org.apache.commons.io.output.TaggedOutputStream", + "org.apache.commons.io.comparator.SizeFileComparator", + "org.apache.commons.io.file.PathUtils$RelativeSortedPaths", + "org.apache.commons.io.input.RandomAccessFileInputStream", + "org.apache.commons.io.input.NullReader", + "org.apache.commons.io.filefilter.WildcardFilter", + "org.apache.commons.io.output.NullOutputStream", + "org.apache.commons.io.output.LockableFileWriter", + "org.apache.commons.io.filefilter.WildcardFileFilter", + "org.apache.commons.io.comparator.DirectoryFileComparator", + "org.apache.commons.io.output.WriterOutputStream", + "org.apache.commons.io.filefilter.IOFileFilter", + "org.apache.commons.io.input.CloseShieldReader", + "org.apache.commons.io.filefilter.MagicNumberFileFilter", + "org.apache.commons.io.input.BoundedInputStream", + "org.apache.commons.io.input.TaggedReader", + "org.apache.commons.io.output.NullWriter", + "org.apache.commons.io.monitor.FileAlterationObserver", + "org.apache.commons.io.input.CharacterSetFilterReader", + "org.apache.commons.io.file.Counters$BigIntegerPathCounters", + "org.apache.commons.io.filefilter.FileFilterUtils", + "org.apache.commons.io.input.AbstractCharacterFilterReader", + "org.apache.commons.io.input.CharacterFilterReader", + "org.apache.commons.io.file.Counters$AbstractPathCounters", + "org.apache.commons.io.output.CloseShieldWriter", + "org.apache.commons.io.input.BOMInputStream", + "org.apache.commons.io.file.Counters$BigIntegerCounter", + "org.apache.commons.io.input.TaggedInputStream", + "org.apache.commons.io.output.AbstractByteArrayOutputStream", + "org.apache.commons.io.input.ReversedLinesFileReader$1", + "org.apache.commons.io.IOIndexedException", + "org.apache.commons.io.filefilter.AbstractFileFilter", + "org.apache.commons.io.ByteOrderMark", + "org.apache.commons.io.comparator.ReverseFileComparator", + "org.apache.commons.io.filefilter.FileFileFilter", + "org.apache.commons.io.input.DemuxInputStream", + "org.apache.commons.io.output.ProxyOutputStream", + "org.apache.commons.io.function.IOSupplier", + "org.apache.commons.io.filefilter.HiddenFileFilter", + "org.apache.commons.io.file.CountingPathVisitor", + "org.apache.commons.io.input.buffer.CircularByteBuffer", + "org.apache.commons.io.FileExistsException", + "org.apache.commons.io.input.BrokenInputStream", + "org.apache.commons.io.IOExceptionList", + "org.apache.commons.io.filefilter.FalseFileFilter", + "org.apache.commons.io.function.IOConsumer", + "org.apache.commons.io.input.TailerListener", + "org.apache.commons.io.file.DeletingPathVisitor", + "org.apache.commons.io.filefilter.CanReadFileFilter", + "org.apache.commons.io.output.DemuxOutputStream", + "org.apache.commons.io.FilenameUtils", + "org.apache.commons.io.DirectoryWalker$CancelException", + "org.apache.commons.io.monitor.FileEntry", + "org.apache.commons.io.IOCase", + "org.apache.commons.io.FileDeleteStrategy", + "org.apache.commons.io.file.CleaningPathVisitor", + "org.apache.commons.io.FileSystemUtils", + "org.apache.commons.io.output.AppendableOutputStream", + "org.apache.commons.io.function.IOFunction", + "org.apache.commons.io.output.BrokenWriter", + "org.apache.commons.io.comparator.PathFileComparator", + "org.apache.commons.io.filefilter.SizeFileFilter", + "org.apache.commons.io.input.ReversedLinesFileReader", + "org.apache.commons.io.output.TeeWriter", + "org.apache.commons.io.monitor.FileAlterationListenerAdaptor", + "org.apache.commons.io.filefilter.OrFileFilter", + "org.apache.commons.io.input.TeeReader", + "org.apache.commons.io.input.MessageDigestCalculatingInputStream$MessageDigestMaintainingObserver", + "org.apache.commons.io.input.TailerListenerAdapter", + "org.apache.commons.io.input.MarkShieldInputStream", + "org.apache.commons.io.filefilter.RegexFileFilter", + "org.apache.commons.io.file.Counters", + "org.apache.commons.io.output.CloseShieldOutputStream", + "org.apache.commons.io.output.ClosedOutputStream", + "org.apache.commons.io.output.ClosedWriter", + "org.apache.commons.io.input.ClosedInputStream", + "org.apache.commons.io.input.CountingInputStream", + "org.apache.commons.io.input.UnsynchronizedByteArrayInputStream", + "org.apache.commons.io.ThreadMonitor", + "org.apache.commons.io.monitor.FileAlterationMonitor", + "org.apache.commons.io.FileCleaner", + "org.apache.commons.io.serialization.WildcardClassNameMatcher", + "org.apache.commons.io.input.CharSequenceInputStream", + "org.apache.commons.io.filefilter.PrefixFileFilter", + "org.apache.commons.io.comparator.NameFileComparator", + "org.apache.commons.io.FileCleaningTracker$Reaper", + "org.apache.commons.io.file.Counters$PathCounters", + "org.apache.commons.io.output.NullAppendable", + "org.apache.commons.io.FileDeleteStrategy$ForceFileDeleteStrategy", + "org.apache.commons.io.input.AutoCloseInputStream", + "org.apache.commons.io.file.PathUtils", + "org.apache.commons.io.input.ProxyInputStream", + "org.apache.commons.io.output.ThresholdingOutputStream", + "org.apache.commons.io.input.ClassLoaderObjectInputStream", + "org.apache.commons.io.input.ClosedReader", + "org.apache.commons.io.input.SequenceReader", + "org.apache.commons.io.filefilter.CanWriteFileFilter", + "org.apache.commons.io.input.CircularInputStream" + ], + "usedTypes": [], + "usageRatio": 0.0, + "children": [] + }, + { + "id": "commons-codec:commons-codec:jar:1.15:compile", + "coordinates": "commons-codec:commons-codec:1.15", + "groupId": "commons-codec", + "artifactId": "commons-codec", + "version": "1.15", + "scope": "compile", + "packaging": "jar", + "omitted": false, + "size": 353793, + "type": "direct", + "status": "used", + "parent": "org.foo.bar:foobar:jar:1.0.0-SNAPSHOT", + "allTypes": [ + "org.apache.commons.codec.EncoderException", + "org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult", + "org.apache.commons.codec.language.ColognePhonetic$CologneBuffer", + "org.apache.commons.codec.language.SoundexUtils", + "org.apache.commons.codec.net.Utils", + "org.apache.commons.codec.digest.MurmurHash2", + "org.apache.commons.codec.digest.MurmurHash3", + "org.apache.commons.codec.binary.Base32InputStream", + "org.apache.commons.codec.language.ColognePhonetic$CologneOutputBuffer", + "org.apache.commons.codec.binary.Base64", + "org.apache.commons.codec.language.Caverphone1", + "org.apache.commons.codec.language.Caverphone2", + "org.apache.commons.codec.language.bm.Languages$2", + "org.apache.commons.codec.language.Caverphone", + "org.apache.commons.codec.digest.MurmurHash3$IncrementalHash32", + "org.apache.commons.codec.Charsets", + "org.apache.commons.codec.language.bm.Languages$1", + "org.apache.commons.codec.binary.BaseNCodec", + "org.apache.commons.codec.digest.HmacUtils", + "org.apache.commons.codec.language.bm.PhoneticEngine$RulesApplication", + "org.apache.commons.codec.DecoderException", + "org.apache.commons.codec.digest.Crypt", + "org.apache.commons.codec.binary.BinaryCodec", + "org.apache.commons.codec.language.bm.Rule$PhonemeExpr", + "org.apache.commons.codec.net.QuotedPrintableCodec", + "org.apache.commons.codec.cli.Digest", + "org.apache.commons.codec.language.DaitchMokotoffSoundex$1", + "org.apache.commons.codec.digest.Sha2Crypt", + "org.apache.commons.codec.net.RFC1522Codec", + "org.apache.commons.codec.digest.Md5Crypt", + "org.apache.commons.codec.language.DaitchMokotoffSoundex$Rule", + "org.apache.commons.codec.language.Nysiis", + "org.apache.commons.codec.net.QCodec", + "org.apache.commons.codec.CodecPolicy", + "org.apache.commons.codec.language.bm.Languages$LanguageSet", + "org.apache.commons.codec.language.bm.PhoneticEngine$PhonemeBuilder", + "org.apache.commons.codec.language.bm.Languages", + "org.apache.commons.codec.digest.PureJavaCrc32C", + "org.apache.commons.codec.language.Metaphone", + "org.apache.commons.codec.language.DaitchMokotoffSoundex$Branch", + "org.apache.commons.codec.digest.HmacAlgorithms", + "org.apache.commons.codec.language.Soundex", + "org.apache.commons.codec.digest.PureJavaCrc32", + "org.apache.commons.codec.language.bm.Rule$RPattern", + "org.apache.commons.codec.language.bm.BeiderMorseEncoder", + "org.apache.commons.codec.language.ColognePhonetic$CologneInputBuffer", + "org.apache.commons.codec.language.DoubleMetaphone", + "org.apache.commons.codec.binary.Base16OutputStream", + "org.apache.commons.codec.language.bm.Rule$PhonemeList", + "org.apache.commons.codec.language.bm.Rule", + "org.apache.commons.codec.StringEncoderComparator", + "org.apache.commons.codec.language.bm.PhoneticEngine", + "org.apache.commons.codec.language.bm.PhoneticEngine$1", + "org.apache.commons.codec.digest.UnixCrypt", + "org.apache.commons.codec.binary.BaseNCodecOutputStream", + "org.apache.commons.codec.language.bm.Rule$Phoneme", + "org.apache.commons.codec.language.bm.ResourceConstants", + "org.apache.commons.codec.language.bm.Lang", + "org.apache.commons.codec.net.BCodec", + "org.apache.commons.codec.binary.Base32OutputStream", + "org.apache.commons.codec.Encoder", + "org.apache.commons.codec.language.bm.Lang$LangRule", + "org.apache.commons.codec.language.AbstractCaverphone", + "org.apache.commons.codec.BinaryDecoder", + "org.apache.commons.codec.binary.Base32", + "org.apache.commons.codec.binary.BaseNCodec$Context", + "org.apache.commons.codec.binary.Base16InputStream", + "org.apache.commons.codec.language.DaitchMokotoffSoundex", + "org.apache.commons.codec.net.PercentCodec", + "org.apache.commons.codec.binary.Base64InputStream", + "org.apache.commons.codec.language.bm.NameType", + "org.apache.commons.codec.BinaryEncoder", + "org.apache.commons.codec.Resources", + "org.apache.commons.codec.binary.Hex", + "org.apache.commons.codec.binary.CharSequenceUtils", + "org.apache.commons.codec.StringDecoder", + "org.apache.commons.codec.language.bm.Rule$10", + "org.apache.commons.codec.Decoder", + "org.apache.commons.codec.digest.XXHash32", + "org.apache.commons.codec.language.bm.Lang$1", + "org.apache.commons.codec.binary.Base64OutputStream", + "org.apache.commons.codec.language.RefinedSoundex", + "org.apache.commons.codec.language.MatchRatingApproachEncoder", + "org.apache.commons.codec.language.bm.Rule$Phoneme$1", + "org.apache.commons.codec.StringEncoder", + "org.apache.commons.codec.binary.Base16", + "org.apache.commons.codec.language.bm.Rule$8", + "org.apache.commons.codec.digest.MurmurHash3$IncrementalHash32x86", + "org.apache.commons.codec.language.bm.Rule$7", + "org.apache.commons.codec.language.bm.Rule$9", + "org.apache.commons.codec.language.bm.Rule$4", + "org.apache.commons.codec.digest.B64", + "org.apache.commons.codec.language.bm.Rule$3", + "org.apache.commons.codec.binary.BaseNCodecInputStream", + "org.apache.commons.codec.digest.MessageDigestAlgorithms", + "org.apache.commons.codec.language.bm.Rule$6", + "org.apache.commons.codec.CharEncoding", + "org.apache.commons.codec.language.bm.Rule$5", + "org.apache.commons.codec.language.bm.Rule$2", + "org.apache.commons.codec.net.URLCodec", + "org.apache.commons.codec.language.bm.Rule$1", + "org.apache.commons.codec.binary.StringUtils", + "org.apache.commons.codec.digest.DigestUtils", + "org.apache.commons.codec.language.ColognePhonetic", + "org.apache.commons.codec.language.bm.RuleType", + "org.apache.commons.codec.language.bm.Languages$SomeLanguages" + ], + "usedTypes": [ + "org.apache.commons.codec.Charsets" + ], + "usageRatio": 0.009433962264150943, + "children": [] + } + ] +} \ No newline at end of file