aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/java/jarjar/jarjar-core/src/main/java/com/tonicsystems/jarjar/classpath/ClassPathArchive.java
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/java/jarjar/jarjar-core/src/main/java/com/tonicsystems/jarjar/classpath/ClassPathArchive.java')
-rw-r--r--third_party/java/jarjar/jarjar-core/src/main/java/com/tonicsystems/jarjar/classpath/ClassPathArchive.java200
1 files changed, 0 insertions, 200 deletions
diff --git a/third_party/java/jarjar/jarjar-core/src/main/java/com/tonicsystems/jarjar/classpath/ClassPathArchive.java b/third_party/java/jarjar/jarjar-core/src/main/java/com/tonicsystems/jarjar/classpath/ClassPathArchive.java
deleted file mode 100644
index 9c3a4bf470..0000000000
--- a/third_party/java/jarjar/jarjar-core/src/main/java/com/tonicsystems/jarjar/classpath/ClassPathArchive.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package com.tonicsystems.jarjar.classpath;
-
-import com.tonicsystems.jarjar.util.ClassNameUtils;
-import com.tonicsystems.jarjar.util.RuntimeIOException;
-import java.io.BufferedInputStream;
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import javax.annotation.Nonnull;
-
-/**
- *
- * @author shevek
- */
-public abstract class ClassPathArchive implements Iterable<ClassPathResource> {
-
- protected final File root;
-
- public ClassPathArchive(@Nonnull File root) {
- this.root = root;
- }
-
- @Nonnull
- public String getArchiveName() {
- return root.getPath();
- }
-
- public static class ZipArchive extends ClassPathArchive {
-
- public ZipArchive(@Nonnull File root) {
- super(root);
- }
-
- @Override
- public Iterator<ClassPathResource> iterator() {
- try {
- return new ZipIterator(root);
- } catch (IOException e) {
- throw new RuntimeIOException(e);
- }
- }
-
- }
-
- private static class ZipIterator implements Iterator<ClassPathResource>, Closeable {
-
- private final ZipFile zipFile;
- private Enumeration<? extends ZipEntry> zipEntries;
-
- ZipIterator(@Nonnull File file) throws IOException {
- this.zipFile = new ZipFile(file);
- this.zipEntries = zipFile.entries();
- }
-
- @Override
- public boolean hasNext() {
- if (!zipEntries.hasMoreElements()) {
- // close();
- return false;
- } else {
- return true;
- }
- }
-
- @Override
- public ClassPathResource next() {
- final ZipEntry entry = zipEntries.nextElement();
- if (entry == null)
- throw new NoSuchElementException();
- return new ClassPathResource() {
- @Override
- public String getArchiveName() {
- return zipFile.getName();
- }
-
- @Override
- public String getName() {
- return entry.getName();
- }
-
- @Override
- public long getLastModifiedTime() {
- return entry.getTime();
- }
-
- @Override
- public InputStream openStream() throws IOException {
- return zipFile.getInputStream(entry);
- }
- };
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void close() throws IOException {
- zipFile.close();
- }
- }
-
- public static class DirectoryArchive extends ClassPathArchive {
-
- public DirectoryArchive(@Nonnull File root) {
- super(root);
- }
-
- @Override
- public Iterator<ClassPathResource> iterator() {
- return new DirectoryIterator(root);
- }
-
- }
-
- private static class DirectoryIterator implements Iterator<ClassPathResource> {
-
- @Nonnull
- private static void findClassFiles(@Nonnull Collection<? super File> out, @Nonnull File dir) {
- for (File file : dir.listFiles()) {
- if (file.isDirectory()) {
- findClassFiles(out, file);
- } else if (file.isFile()) {
- if (ClassNameUtils.isClass(file.getName())) {
- out.add(file);
- }
- }
- }
- }
-
- private final File root;
- private final Iterator<File> entries;
-
- DirectoryIterator(@Nonnull File root) {
- this.root = root;
- List<File> files = new ArrayList<File>();
- findClassFiles(files, root);
- this.entries = files.iterator();
- }
-
- @Override
- public boolean hasNext() {
- return entries.hasNext();
- }
-
- @Override
- public ClassPathResource next() {
- final File file = entries.next();
- return new ClassPathResource() {
- @Override
- public String getArchiveName() {
- return root.getPath();
- }
-
- @Override
- public String getName() {
- return file.getName();
- }
-
- @Override
- public long getLastModifiedTime() {
- return file.lastModified();
- }
-
- @Override
- public InputStream openStream() throws IOException {
- return new BufferedInputStream(new FileInputStream(file));
- }
- };
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException();
- }
-
- }
-
- @Override
- public String toString() {
- return getClass().getSimpleName() + "(" + root + ")";
- }
-
-}