Sha256: e1f911322a7d9a6bec4e9710eabf0fcb509afc45572080caf70c4a3631d040fc

Contents?: true

Size: 1.54 KB

Versions: 6

Compression:

Stored size: 1.54 KB

Contents

package org.embulk.plugin;

import com.google.inject.Binder;
import com.google.inject.Module;
import com.google.inject.multibindings.Multibinder;

public class MockPluginSource
        implements PluginSource
{
    private final Class<?> expectedIface;
    private final Object plugin;
    private PluginType typeConfig;

    public <T> MockPluginSource(Class<T> expectedIface, T plugin)
    {
        this.expectedIface = expectedIface;
        this.plugin = plugin;
    }

    public PluginType getTypeConfig()
    {
        return typeConfig;
    }

    public <T> T newPlugin(Class<T> iface, PluginType typeConfig) throws PluginSourceNotMatchException
    {
        if (expectedIface.equals(iface)) {
            this.typeConfig = typeConfig;
            return (T) plugin;
        } else {
            throw new PluginSourceNotMatchException();
        }
    }

    public static <T> Module newInjectModule(final Class<T> expectedIface, final T plugin)
    {
        return new InjectModule(expectedIface, plugin);
    }

    public static class InjectModule
            implements Module
    {
        private final PluginSource pluginSource;

        public <T> InjectModule(Class<T> expectedIface, T plugin)
        {
            this.pluginSource = new MockPluginSource(expectedIface, plugin);
        }

        @Override
        public void configure(Binder binder)
        {
            Multibinder<PluginSource> multibinder = Multibinder.newSetBinder(binder, PluginSource.class);
            multibinder.addBinding().toInstance(pluginSource);
        }
    }
}

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
embulk-0.3.2 embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java
embulk-0.3.1 embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java
embulk-0.3.0 embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java
embulk-0.2.1 embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java
embulk-0.2.0 embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java
embulk-0.1.0 embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java