package org.embulk.decoder;

import org.embulk.config.Config;
import org.embulk.config.ConfigDefault;
import org.embulk.config.ConfigInject;
import org.embulk.config.ConfigSource;
import org.embulk.config.Task;
import org.embulk.config.TaskSource;
import org.embulk.spi.BufferAllocator;
import org.embulk.spi.DecoderPlugin;
import org.embulk.spi.FileInput;
import org.embulk.spi.util.FileInputInputStream;

public class CommonsCompressDecoderPlugin
        implements DecoderPlugin
{
    public interface PluginTask
            extends Task
    {
        @Config("format")
        @ConfigDefault("\"\"")
        public String getFormat();

        @ConfigInject
        public BufferAllocator getBufferAllocator();
    }

    @Override
    public void transaction(ConfigSource config, DecoderPlugin.Control control)
    {
        PluginTask task = config.loadConfig(PluginTask.class);
        control.run(task.dump());
    }

    @Override
    public FileInput open(TaskSource taskSource, FileInput input)
    {
        PluginTask task = taskSource.loadTask(PluginTask.class);
        return new CommonsCompressFileInput(
                task.getBufferAllocator(),
                new CommonsCompressProvider(task, new FileInputInputStream(input)));
    }
}

@@ -1239,16 +1239,461 @@
 m(input)
+ %7B%0A                    // NOTE: This is workaround code to avoid hanging issue.%0A                    // This issue will be fixed after merging #112.%0A                    // https://github.com/embulk/embulk/pull/112%0A                    @Override%0A                    public long skip(long len) %7B%0A                        long skipped = super.skip(len);%0A                        return skipped %3E 0 ? skipped : 0;%0A                    %7D%0A                %7D
 ));%0A    

Add workaround code to avoid hanging by skip issue