Skip to content

Commit

Permalink
Add a dummy example plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
dmikurube committed Sep 17, 2024
1 parent 70083d7 commit 5c00db5
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 4 deletions.
20 changes: 19 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
id "java"
// id "embulk-plugin-test"
id "org.embulk.embulk-plugins" version "0.7.0"
}

repositories {
Expand Down Expand Up @@ -28,6 +28,18 @@ sourceSets {
}

dependencies {
compileOnly "org.embulk:embulk-spi:0.11"
compileOnly "org.slf4j:slf4j-api:2.0.7"

implementation "org.embulk:embulk-util-config:0.5.0"
implementation "javax.validation:validation-api:2.0.1.Final"

implementation platform("com.fasterxml.jackson:jackson-bom:2.16.2")
implementation "com.fasterxml.jackson.core:jackson-annotations"
implementation "com.fasterxml.jackson.core:jackson-core"
implementation "com.fasterxml.jackson.core:jackson-databind"
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jdk8"

testImplementation "org.junit.jupiter:junit-jupiter-api:5.11.0"

testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.11.0"
Expand All @@ -38,6 +50,12 @@ dependencies {
embulkTestRuntimeOnly "org.embulk:embulk-core:0.11.5"
}

embulkPlugin {
mainClass = "org.embulk.input.junit5example.ExampleInputPlugin"
category = "input"
type = "junit5example"
}

test {
useJUnitPlatform()
testLogging {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public EmbulkPluginTestEngine() {
logger.info(() -> "Initializing EmbulkPluginTestEngine@" + Integer.toHexString(this.hashCode()));
logger.info(() -> "EmbulkPluginTestEngine's ClassLoader: " + this.klassLoader.toString());
this.pluginClassLoaderFactory = PluginClassLoaderFactoryImpl.of();
// this.pluginClassLoader = this.pluginClassLoaderFactory.create(, this.klassLoader);
this.pluginClassLoader = null;
}

/**
Expand Down Expand Up @@ -161,5 +161,5 @@ private static Class<?> findOrLoadClassFrom(final ClassLoader klassLoader, final

private final PluginClassLoaderFactory pluginClassLoaderFactory;

// private final PluginClassLoader pluginClassLoader;
private final PluginClassLoader pluginClassLoader;
}
12 changes: 11 additions & 1 deletion gradle.lockfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
empty=compileClasspath,runtimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.16.2=compileClasspath,runtimeClasspath
com.fasterxml.jackson.core:jackson-core:2.16.2=compileClasspath,runtimeClasspath
com.fasterxml.jackson.core:jackson-databind:2.16.2=compileClasspath,runtimeClasspath
com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.16.2=compileClasspath,runtimeClasspath
com.fasterxml.jackson:jackson-bom:2.16.2=compileClasspath,runtimeClasspath
javax.validation:validation-api:2.0.1.Final=compileClasspath,runtimeClasspath
org.embulk:embulk-spi:0.11=compileClasspath
org.embulk:embulk-util-config:0.5.0=compileClasspath,runtimeClasspath
org.msgpack:msgpack-core:0.8.24=compileClasspath
org.slf4j:slf4j-api:2.0.7=compileClasspath
empty=
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package org.embulk.input.junit5example;

import com.fasterxml.jackson.databind.JsonNode;
import java.io.IOException;
import java.time.Instant;
import java.time.format.DateTimeParseException;
import java.util.List;
import java.util.Optional;
import org.embulk.config.ConfigDiff;
import org.embulk.config.ConfigSource;
import org.embulk.config.TaskReport;
import org.embulk.config.TaskSource;
import org.embulk.spi.BufferAllocator;
import org.embulk.spi.Column;
import org.embulk.spi.ColumnVisitor;
import org.embulk.spi.DataException;
import org.embulk.spi.Exec;
import org.embulk.spi.InputPlugin;
import org.embulk.spi.PageBuilder;
import org.embulk.spi.PageOutput;
import org.embulk.spi.Schema;
import org.embulk.spi.type.TimestampType;
import org.embulk.spi.type.Types;
import org.embulk.util.config.Config;
import org.embulk.util.config.ConfigDefault;
import org.embulk.util.config.ConfigMapperFactory;
import org.embulk.util.config.Task;
import org.embulk.util.config.units.ColumnConfig;
import org.embulk.util.config.units.SchemaConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ExampleInputPlugin implements InputPlugin {
private interface PluginTask extends Task {
}

@Override
public ConfigDiff transaction(ConfigSource config, InputPlugin.Control control) {
final PluginTask task = CONFIG_MAPPER_FACTORY.createConfigMapper().map(config, PluginTask.class);
final Schema schema = Schema.builder().add("id", Types.STRING).build();

final int taskCount = 0;

return resume(task.toTaskSource(), schema, taskCount, control);
}

@Override
public ConfigDiff resume(TaskSource taskSource,
Schema schema, int taskCount,
InputPlugin.Control control) {
control.run(taskSource, schema, taskCount);
return CONFIG_MAPPER_FACTORY.newConfigDiff();
}

@Override
public void cleanup(TaskSource taskSource,
Schema schema, int taskCount,
List<TaskReport> successTaskReports) {}

@Override
public TaskReport run(TaskSource taskSource,
Schema schema, int taskIndex,
PageOutput output) {
final PluginTask task = CONFIG_MAPPER_FACTORY.createTaskMapper().map(taskSource, PluginTask.class);

try (final PageBuilder pageBuilder = Exec.getPageBuilder(Exec.getBufferAllocator(), schema, output)) {
pageBuilder.finish();
}

return CONFIG_MAPPER_FACTORY.newTaskReport();
}

@Override
public ConfigDiff guess(ConfigSource config) {
return CONFIG_MAPPER_FACTORY.newConfigDiff();
}

private static final ConfigMapperFactory CONFIG_MAPPER_FACTORY = ConfigMapperFactory.builder().addDefaultModules().build();

private static final Logger logger = LoggerFactory.getLogger(ExampleInputPlugin.class);
}

0 comments on commit 5c00db5

Please sign in to comment.