All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.akquinet.jbosscc.guttenbase.export.zip.ZipClassesFromClassResourceExporter Maven / Gradle / Ivy

There is a newer version: 2.1.0
Show newest version
package de.akquinet.jbosscc.guttenbase.export.zip;

import de.akquinet.jbosscc.guttenbase.utils.ResourceUtil;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

/**
 * Copy all classes and data that can be found relative to the given class resource to the generated JAR/ZIP.
 *
 * This allows us to create a self-contained executable JAR with a user defined startup class.
 *
 * 

* © 2012-2020 akquinet tech@spree *

* * @author M. Dahm */ public class ZipClassesFromClassResourceExporter extends ZipResourceExporter { public ZipClassesFromClassResourceExporter(final ZipOutputStream zipOutputStream) { super(zipOutputStream); } /** * Copy all classes and data that can be found relative to the given class resource to the generated JAR/ZIP. * * We support classes read from file system or JAR. */ public void copyClassesToZip(final Class startupClass) throws IOException { final ResourceUtil.ResourceInfo resourceInfo = new ResourceUtil().getResourceInfo(startupClass); if (resourceInfo.isJarFile()) { copyClassesFromJar(resourceInfo.getJarFileOrFolder()); } else { copyClassesFromFilesystem(resourceInfo.getJarFileOrFolder(), resourceInfo.getJarFileOrFolder().getPath()); } } private void copyClassesFromFilesystem(final File dir, String rootPath) throws IOException { for (final File file : dir.listFiles()) { addFileToJar(file, rootPath); } } private void addFileToJar(final File path, String rootPath) throws IOException { if (!path.isFile()) { copyClassesFromFilesystem(path, rootPath); } else { final String name = path.getPath().substring(rootPath.length() + 1); final InputStream inputStream = new FileInputStream(path); addEntry(name, inputStream); } } private void copyClassesFromJar(final File path) throws IOException { final ZipFile zipFile = new ZipFile(path); for (final Enumeration entries = zipFile.entries(); entries.hasMoreElements(); ) { final ZipEntry zipEntry = entries.nextElement(); final InputStream inputStream = zipFile.getInputStream(zipEntry); addEntry(zipEntry.getName(), inputStream); } zipFile.close(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy