package com.smartandroid.sa.zip; import java.io.IOException; import java.io.InputStream; import java.util.zip.ZipEntry; class ZipEntryOrInfoAdapter implements ZipEntryCallback, ZipInfoCallback { private final ZipEntryCallback entryCallback; private final ZipInfoCallback infoCallback; public ZipEntryOrInfoAdapter(ZipEntryCallback entryCallback, ZipInfoCallback infoCallback) { if (entryCallback != null && infoCallback != null || entryCallback == null && infoCallback == null) { throw new IllegalArgumentException( "Only one of ZipEntryCallback and ZipInfoCallback must be specified together"); } this.entryCallback = entryCallback; this.infoCallback = infoCallback; } public void process(ZipEntry zipEntry) throws IOException { infoCallback.process(zipEntry); } public void process(InputStream in, ZipEntry zipEntry) throws IOException { if (entryCallback != null) { entryCallback.process(in, zipEntry); } else { process(zipEntry); } } }