// Path: stickypunch-common/src/main/java/com/comandante/stickypunch/api/model/PackageCreator.java
// public interface PackageCreator {
// 
//     PackageZipEntry getPackage() throws Exception;
// 
// }
// 
// Path: stickypunch-common/src/main/java/com/comandante/stickypunch/api/model/PackageZipEntry.java
// public class PackageZipEntry {
//     private final byte[] packageZipData;
//     private final String id;
// 
//     public PackageZipEntry(byte[] packageZipData, String id) {
//         this.packageZipData = packageZipData;
//         this.id = id;
//     }
// 
//     public byte[] getPackageZipData() {
//         return packageZipData;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public InputStream getInputStream() {
//         return new ByteArrayInputStream(packageZipData);
//     }
// }


import com.comandante.stickypunch.api.model.PackageCreator;
import com.comandante.stickypunch.api.model.PackageZipEntry;
import java.util.concurrent.ArrayBlockingQueue;
package com.comandante.pushpackage;



public class PackageZipPool implements PackageCreator {

    public final ArrayBlockingQueue<PackageZipEntry> packagesQueue;
    private final PackageZipConfiguration packageZipConfiguration;

    public PackageZipPool(PackageZipConfiguration packageZipConfiguration) {
        this.packageZipConfiguration = packageZipConfiguration;
        this.packagesQueue = new ArrayBlockingQueue<PackageZipEntry>(packageZipConfiguration.packageZipQueueSize);
    }

    @Override
// Path: stickypunch-common/src/main/java/com/comandante/stickypunch/api/model/PackageCreator.java
// public interface PackageCreator {
// 
//     PackageZipEntry getPackage() throws Exception;
// 
// }
// 
// Path: stickypunch-common/src/main/java/com/comandante/stickypunch/api/model/PackageZipEntry.java
// public class PackageZipEntry {
//     private final byte[] packageZipData;
//     private final String id;
// 
//     public PackageZipEntry(byte[] packageZipData, String id) {
//         this.packageZipData = packageZipData;
//         this.id = id;
//     }
// 
//     public byte[] getPackageZipData() {
//         return packageZipData;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public InputStream getInputStream() {
//         return new ByteArrayInputStream(packageZipData);
//     }
// }


// Path: stickypunch-pushpackage/src/main/java/com/comandante/pushpackage/PackageZipPool.java
import com.comandante.stickypunch.api.model.PackageCreator;
import com.comandante.stickypunch.api.model.PackageZipEntry;
import java.util.concurrent.ArrayBlockingQueue;

package com.comandante.pushpackage;



public class PackageZipPool implements PackageCreator {

    public final ArrayBlockingQueue<PackageZipEntry> packagesQueue;
    private final PackageZipConfiguration packageZipConfiguration;

    public PackageZipPool(PackageZipConfiguration packageZipConfiguration) {
        this.packageZipConfiguration = packageZipConfiguration;
        this.packagesQueue = new ArrayBlockingQueue<PackageZipEntry>(packageZipConfiguration.packageZipQueueSize);
    }

    @Override
    public PackageZipEntry getPackage() throws Exception {