public void process ( ) { if ( src == null && dest == null ) { throw new IllegalArgumentException ( "Source and destination shouldn't be null together" ) ; } File destinationFile = null ; try { destinationFile = getDestinationFile ( ) ; ZipOutputStream out = null ; ZipEntryOrInfoAdapter zipEntryAdapter = null ; if ( destinationFile . isFile ( ) ) { out = ZipFileUtil . createZipOutputStream ( new BufferedOutputStream ( new FileOutputStream ( destinationFile ) ) , charset ) ; zipEntryAdapter = new ZipEntryOrInfoAdapter ( new CopyingCallback ( transformers , out , preserveTimestamps ) , null ) ; } else { // directory zipEntryAdapter = new ZipEntryOrInfoAdapter ( new UnpackingCallback ( transformers , destinationFile ) , null ) ; } try { processAllEntries ( zipEntryAdapter ) ; } finally { IOUtils . closeQuietly ( out ) ; } handleInPlaceActions ( destinationFile ) ; } catch ( IOException e ) { ZipExceptionUtil . rethrow ( e ) ; } finally { if ( isInPlace ( ) ) { // destinationZip is a temporary file FileUtils . deleteQuietly ( destinationFile ) ; } } }
Iterates through source Zip entries removing or changing them according to set parameters .