embulk 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/.travis.yml +16 -0
- data/Gemfile +0 -1
- data/README.md +37 -19
- data/Rakefile +5 -37
- data/bin/embulk +1 -1
- data/build.gradle +178 -95
- data/embulk-core/build.gradle +1 -1
- data/embulk-core/src/main/java/org/embulk/command/Runner.java +11 -10
- data/embulk-core/src/main/java/org/embulk/config/ConfigDiff.java +26 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigInject.java +14 -0
- data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +2 -2
- data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +4 -3
- data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +5 -3
- data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +1 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExecutionResult.java +6 -6
- data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +19 -19
- data/embulk-core/src/main/java/org/embulk/exec/LocalExecutor.java +61 -36
- data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +4 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +16 -1
- data/embulk-core/src/main/java/org/embulk/spi/Column.java +1 -1
- data/embulk-core/src/main/java/org/embulk/spi/{SchemaVisitor.java → ColumnVisitor.java} +1 -1
- data/embulk-core/src/main/java/org/embulk/spi/Exec.java +3 -3
- data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +2 -2
- data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +3 -3
- data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +3 -3
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +3 -3
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +3 -3
- data/embulk-core/src/main/java/org/embulk/spi/FilterPlugin.java +1 -1
- data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +2 -2
- data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +3 -3
- data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +3 -3
- data/embulk-core/src/main/java/org/embulk/spi/PluginClassLoader.java +80 -0
- data/embulk-core/src/main/java/org/embulk/spi/Schema.java +1 -1
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +2 -2
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +2 -2
- data/embulk-core/src/main/java/org/embulk/spi/util/Filters.java +1 -1
- data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +2 -2
- data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +6 -6
- data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +6 -6
- data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +1 -1
- data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +1 -0
- data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +2 -2
- data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +1 -1
- data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +3 -3
- data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +4 -4
- data/embulk-docs/Makefile +178 -0
- data/embulk-docs/build.gradle +20 -0
- data/embulk-docs/make.bat +243 -0
- data/embulk-docs/push-gh-pages.sh +29 -0
- data/embulk-docs/src/conf.py +260 -0
- data/embulk-docs/src/index.rst +19 -0
- data/embulk-docs/src/release.rst +14 -0
- data/embulk-docs/src/release/release-0.1.0.rst +8 -0
- data/embulk-docs/src/release/release-0.2.0.rst +16 -0
- data/embulk-docs/src/release/release-0.2.1.rst +19 -0
- data/embulk-docs/src/release/release-0.3.0.rst +34 -0
- data/embulk-docs/src/release/release-0.3.1.rst +11 -0
- data/embulk-docs/src/release/release-0.3.2.rst +15 -0
- data/embulk-docs/src/release/release-0.4.0.rst +74 -0
- data/embulk-standards/build.gradle +0 -1
- data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +2 -2
- data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +12 -3
- data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +2 -2
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +49 -26
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +16 -17
- data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +4 -4
- data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +0 -1
- data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +5 -5
- data/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/gradle/wrapper/gradle-wrapper.properties +2 -2
- data/lib/embulk/buffer.rb +2 -2
- data/lib/embulk/column.rb +6 -6
- data/lib/embulk/command/embulk_example.rb +1 -1
- data/lib/embulk/command/embulk_new_plugin.rb +87 -0
- data/lib/embulk/command/embulk_run.rb +84 -26
- data/lib/embulk/data/bundle/Gemfile +12 -20
- data/lib/embulk/data/bundle/embulk/{filter_example.rb → filter/example.rb} +3 -3
- data/lib/embulk/data/bundle/embulk/{input_example.rb → input/example.rb} +3 -3
- data/lib/embulk/data/bundle/embulk/{output_example.rb → output/example.rb} +3 -3
- data/lib/embulk/data/new/LICENSE.txt +21 -0
- data/lib/embulk/data/new/README.md.erb +75 -0
- data/lib/embulk/data/new/gitignore.erb +12 -0
- data/lib/embulk/data/new/java/build.gradle.erb +57 -0
- data/lib/embulk/data/new/java/decoder.java.erb +40 -0
- data/lib/embulk/data/new/java/encoder.java.erb +40 -0
- data/lib/embulk/data/new/java/file_input.java.erb +64 -0
- data/lib/embulk/data/new/java/file_output.java.erb +66 -0
- data/lib/embulk/data/new/java/filter.java.erb +47 -0
- data/lib/embulk/data/new/java/formatter.java.erb +45 -0
- data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/lib/embulk/data/new/java/gradlew +164 -0
- data/lib/embulk/data/new/java/gradlew.bat +90 -0
- data/lib/embulk/data/new/java/input.java.erb +69 -0
- data/lib/embulk/data/new/java/output.java.erb +65 -0
- data/lib/embulk/data/new/java/parser.java.erb +51 -0
- data/lib/embulk/data/new/java/plugin_loader.rb.erb +3 -0
- data/lib/embulk/data/new/java/test.java.erb +5 -0
- data/lib/embulk/data/new/ruby/Gemfile +2 -0
- data/lib/embulk/data/new/ruby/Rakefile +1 -0
- data/lib/embulk/data/new/ruby/filter.rb.erb +39 -0
- data/lib/embulk/data/new/ruby/gemspec.erb +19 -0
- data/lib/embulk/data/new/ruby/input.rb.erb +47 -0
- data/lib/embulk/data/new/ruby/output.rb.erb +59 -0
- data/lib/embulk/data/package_data.rb +64 -0
- data/lib/embulk/data_source.rb +2 -2
- data/lib/embulk/decoder_plugin.rb +27 -0
- data/lib/embulk/encoder_plugin.rb +27 -0
- data/lib/embulk/error.rb +3 -0
- data/lib/embulk/file_input_plugin.rb +27 -0
- data/lib/embulk/file_output_plugin.rb +27 -0
- data/lib/embulk/filter_plugin.rb +28 -9
- data/lib/embulk/formatter_plugin.rb +105 -0
- data/lib/embulk/guess_csv.rb +10 -1
- data/lib/embulk/guess_plugin.rb +22 -27
- data/lib/embulk/input_plugin.rb +34 -20
- data/lib/embulk/java/bootstrap.rb +5 -0
- data/lib/embulk/java/imports.rb +7 -0
- data/lib/embulk/java_plugin.rb +84 -0
- data/lib/embulk/output_plugin.rb +35 -19
- data/lib/embulk/page.rb +1 -1
- data/lib/embulk/page_builder.rb +1 -1
- data/lib/embulk/parser_plugin.rb +76 -0
- data/lib/embulk/plugin.rb +130 -65
- data/lib/embulk/plugin_registry.rb +19 -8
- data/lib/embulk/schema.rb +4 -4
- data/lib/embulk/version.rb +1 -1
- data/settings.gradle +1 -0
- metadata +123 -90
- data/ChangeLog +0 -46
- data/embulk-cli/pom.xml +0 -94
- data/embulk-core/pom.xml +0 -148
- data/embulk-core/src/main/java/org/embulk/config/NextConfig.java +0 -26
- data/embulk-standards/pom.xml +0 -68
- data/embulk-standards/src/main/java/org/embulk/standards/S3FileInputPlugin.java +0 -250
- data/embulk-standards/src/test/java/org/embulk/standards/TestS3FileInputPlugin.java +0 -43
- data/pom.xml +0 -541
|
@@ -46,6 +46,7 @@ public class InjectedPluginSource
|
|
|
46
46
|
{
|
|
47
47
|
String name = type.getName();
|
|
48
48
|
try {
|
|
49
|
+
@SuppressWarnings("unchecked")
|
|
49
50
|
PluginFactory<T> factory = (PluginFactory<T>) injector.getInstance(
|
|
50
51
|
Key.get(PluginFactory.class, pluginFactoryName(iface, name)));
|
|
51
52
|
return factory.newPlugin(injector);
|
|
@@ -60,6 +61,7 @@ public class InjectedPluginSource
|
|
|
60
61
|
if (FileInputPlugin.class.isAssignableFrom(impl)) {
|
|
61
62
|
Preconditions.checkArgument(InputPlugin.class.equals(iface));
|
|
62
63
|
factory = new PluginFactory<T>() {
|
|
64
|
+
@SuppressWarnings("unchecked")
|
|
63
65
|
public T newPlugin(Injector injector)
|
|
64
66
|
{
|
|
65
67
|
return (T) new FileInputRunner((FileInputPlugin) injector.getInstance(impl));
|
|
@@ -68,6 +70,7 @@ public class InjectedPluginSource
|
|
|
68
70
|
} else if (FileOutputPlugin.class.isAssignableFrom(impl)) {
|
|
69
71
|
Preconditions.checkArgument(OutputPlugin.class.equals(iface));
|
|
70
72
|
factory = new PluginFactory<T>() {
|
|
73
|
+
@SuppressWarnings("unchecked")
|
|
71
74
|
public T newPlugin(Injector injector)
|
|
72
75
|
{
|
|
73
76
|
return (T) new FileOutputRunner((FileOutputPlugin) injector.getInstance(impl));
|
|
@@ -76,6 +79,7 @@ public class InjectedPluginSource
|
|
|
76
79
|
} else {
|
|
77
80
|
Preconditions.checkArgument(iface.isAssignableFrom(impl));
|
|
78
81
|
factory = new PluginFactory<T>() {
|
|
82
|
+
@SuppressWarnings("unchecked")
|
|
79
83
|
public T newPlugin(Injector injector)
|
|
80
84
|
{
|
|
81
85
|
return (T) injector.getInstance(impl);
|
|
@@ -2,6 +2,7 @@ package org.embulk.plugin;
|
|
|
2
2
|
|
|
3
3
|
import java.util.Set;
|
|
4
4
|
import java.util.List;
|
|
5
|
+
import java.util.ArrayList;
|
|
5
6
|
import com.google.common.collect.ImmutableList;
|
|
6
7
|
import com.google.inject.Inject;
|
|
7
8
|
import com.google.inject.Injector;
|
|
@@ -23,12 +24,26 @@ public class PluginManager
|
|
|
23
24
|
|
|
24
25
|
public <T> T newPlugin(Class<T> iface, PluginType type)
|
|
25
26
|
{
|
|
27
|
+
if (sources.isEmpty()) {
|
|
28
|
+
throw new ConfigException("No PluginSource is installed");
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
List<Throwable> causes = new ArrayList<Throwable>();
|
|
26
32
|
for (PluginSource source : sources) {
|
|
27
33
|
try {
|
|
28
34
|
return source.newPlugin(iface, type);
|
|
29
35
|
} catch (PluginSourceNotMatchException e) {
|
|
36
|
+
if (e.getCause() != null) {
|
|
37
|
+
causes.add(e.getCause());
|
|
38
|
+
}
|
|
30
39
|
}
|
|
31
40
|
}
|
|
32
|
-
|
|
41
|
+
|
|
42
|
+
ConfigException e = new ConfigException(String.format("%s '%s' is not found",
|
|
43
|
+
iface.getSimpleName(), type.getName()), causes.remove(causes.size()-1));
|
|
44
|
+
for (Throwable cause : causes) {
|
|
45
|
+
e.addSuppressed(cause);
|
|
46
|
+
}
|
|
47
|
+
throw e;
|
|
33
48
|
}
|
|
34
49
|
}
|
|
@@ -3,7 +3,7 @@ package org.embulk.spi;
|
|
|
3
3
|
import org.slf4j.Logger;
|
|
4
4
|
import org.embulk.config.Task;
|
|
5
5
|
import org.embulk.config.CommitReport;
|
|
6
|
-
import org.embulk.config.
|
|
6
|
+
import org.embulk.config.ConfigDiff;
|
|
7
7
|
import org.embulk.config.ConfigSource;
|
|
8
8
|
import org.embulk.config.TaskSource;
|
|
9
9
|
import org.embulk.plugin.PluginType;
|
|
@@ -59,9 +59,9 @@ public class Exec
|
|
|
59
59
|
return session().newCommitReport();
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
public static
|
|
62
|
+
public static ConfigDiff newConfigDiff()
|
|
63
63
|
{
|
|
64
|
-
return session().
|
|
64
|
+
return session().newConfigDiff();
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
public static ConfigSource newConfigSource()
|
|
@@ -10,7 +10,7 @@ import org.embulk.config.Config;
|
|
|
10
10
|
import org.embulk.config.ConfigDefault;
|
|
11
11
|
import org.embulk.config.ModelManager;
|
|
12
12
|
import org.embulk.config.CommitReport;
|
|
13
|
-
import org.embulk.config.
|
|
13
|
+
import org.embulk.config.ConfigDiff;
|
|
14
14
|
import org.embulk.config.ConfigSource;
|
|
15
15
|
import org.embulk.config.TaskSource;
|
|
16
16
|
import org.embulk.config.DataSourceImpl;
|
|
@@ -111,7 +111,7 @@ public class ExecSession
|
|
|
111
111
|
return new DataSourceImpl(modelManager);
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
public
|
|
114
|
+
public ConfigDiff newConfigDiff()
|
|
115
115
|
{
|
|
116
116
|
return new DataSourceImpl(modelManager);
|
|
117
117
|
}
|
|
@@ -3,7 +3,7 @@ package org.embulk.spi;
|
|
|
3
3
|
import java.util.List;
|
|
4
4
|
import org.embulk.config.TaskSource;
|
|
5
5
|
import org.embulk.config.ConfigSource;
|
|
6
|
-
import org.embulk.config.
|
|
6
|
+
import org.embulk.config.ConfigDiff;
|
|
7
7
|
import org.embulk.config.CommitReport;
|
|
8
8
|
|
|
9
9
|
public interface FileInputPlugin
|
|
@@ -14,10 +14,10 @@ public interface FileInputPlugin
|
|
|
14
14
|
int processorCount);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
public
|
|
17
|
+
public ConfigDiff transaction(ConfigSource config,
|
|
18
18
|
FileInputPlugin.Control control);
|
|
19
19
|
|
|
20
|
-
public
|
|
20
|
+
public ConfigDiff resume(TaskSource taskSource,
|
|
21
21
|
int processorCount,
|
|
22
22
|
FileInputPlugin.Control control);
|
|
23
23
|
|
|
@@ -5,7 +5,7 @@ import java.util.List;
|
|
|
5
5
|
import org.embulk.config.Task;
|
|
6
6
|
import org.embulk.config.TaskSource;
|
|
7
7
|
import org.embulk.config.ConfigSource;
|
|
8
|
-
import org.embulk.config.
|
|
8
|
+
import org.embulk.config.ConfigDiff;
|
|
9
9
|
import org.embulk.config.CommitReport;
|
|
10
10
|
import org.embulk.config.Config;
|
|
11
11
|
import org.embulk.config.ConfigDefault;
|
|
@@ -54,13 +54,13 @@ public class FileInputRunner
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
@Override
|
|
57
|
-
public
|
|
57
|
+
public ConfigDiff transaction(ConfigSource config, final InputPlugin.Control control)
|
|
58
58
|
{
|
|
59
59
|
final RunnerTask task = config.loadConfig(RunnerTask.class);
|
|
60
60
|
return fileInputPlugin.transaction(config, new RunnerControl(task, control));
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
public
|
|
63
|
+
public ConfigDiff resume(TaskSource taskSource,
|
|
64
64
|
Schema schema, int processorCount,
|
|
65
65
|
InputPlugin.Control control)
|
|
66
66
|
{
|
|
@@ -3,7 +3,7 @@ package org.embulk.spi;
|
|
|
3
3
|
import java.util.List;
|
|
4
4
|
import org.embulk.config.TaskSource;
|
|
5
5
|
import org.embulk.config.ConfigSource;
|
|
6
|
-
import org.embulk.config.
|
|
6
|
+
import org.embulk.config.ConfigDiff;
|
|
7
7
|
import org.embulk.config.CommitReport;
|
|
8
8
|
|
|
9
9
|
public interface FileOutputPlugin
|
|
@@ -13,10 +13,10 @@ public interface FileOutputPlugin
|
|
|
13
13
|
public List<CommitReport> run(TaskSource taskSource);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
public
|
|
16
|
+
public ConfigDiff transaction(ConfigSource config, int processorCount,
|
|
17
17
|
FileOutputPlugin.Control control);
|
|
18
18
|
|
|
19
|
-
public
|
|
19
|
+
public ConfigDiff resume(TaskSource taskSource,
|
|
20
20
|
int processorCount,
|
|
21
21
|
FileOutputPlugin.Control control);
|
|
22
22
|
|
|
@@ -5,7 +5,7 @@ import java.util.ArrayList;
|
|
|
5
5
|
import org.embulk.config.Task;
|
|
6
6
|
import org.embulk.config.TaskSource;
|
|
7
7
|
import org.embulk.config.ConfigSource;
|
|
8
|
-
import org.embulk.config.
|
|
8
|
+
import org.embulk.config.ConfigDiff;
|
|
9
9
|
import org.embulk.config.CommitReport;
|
|
10
10
|
import org.embulk.config.Config;
|
|
11
11
|
import org.embulk.config.ConfigDefault;
|
|
@@ -55,7 +55,7 @@ public class FileOutputRunner
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
@Override
|
|
58
|
-
public
|
|
58
|
+
public ConfigDiff transaction(ConfigSource config,
|
|
59
59
|
final Schema schema, final int processorCount,
|
|
60
60
|
final OutputPlugin.Control control)
|
|
61
61
|
{
|
|
@@ -63,7 +63,7 @@ public class FileOutputRunner
|
|
|
63
63
|
return fileOutputPlugin.transaction(config, processorCount, new RunnerControl(schema, task, control));
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
public
|
|
66
|
+
public ConfigDiff resume(TaskSource taskSource,
|
|
67
67
|
Schema schema, int processorCount,
|
|
68
68
|
final OutputPlugin.Control control)
|
|
69
69
|
{
|
|
@@ -3,7 +3,7 @@ package org.embulk.spi;
|
|
|
3
3
|
import java.util.List;
|
|
4
4
|
import org.embulk.config.TaskSource;
|
|
5
5
|
import org.embulk.config.ConfigSource;
|
|
6
|
-
import org.embulk.config.
|
|
6
|
+
import org.embulk.config.ConfigDiff;
|
|
7
7
|
import org.embulk.config.CommitReport;
|
|
8
8
|
|
|
9
9
|
public interface FilterPlugin
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
package org.embulk.spi;
|
|
2
2
|
|
|
3
|
-
import org.embulk.config.
|
|
3
|
+
import org.embulk.config.ConfigDiff;
|
|
4
4
|
import org.embulk.config.ConfigSource;
|
|
5
5
|
|
|
6
6
|
public interface GuessPlugin
|
|
7
7
|
{
|
|
8
|
-
public
|
|
8
|
+
public ConfigDiff guess(ConfigSource config, Buffer sample);
|
|
9
9
|
}
|
|
@@ -3,7 +3,7 @@ package org.embulk.spi;
|
|
|
3
3
|
import java.util.List;
|
|
4
4
|
import org.embulk.config.TaskSource;
|
|
5
5
|
import org.embulk.config.ConfigSource;
|
|
6
|
-
import org.embulk.config.
|
|
6
|
+
import org.embulk.config.ConfigDiff;
|
|
7
7
|
import org.embulk.config.CommitReport;
|
|
8
8
|
|
|
9
9
|
public interface InputPlugin
|
|
@@ -14,10 +14,10 @@ public interface InputPlugin
|
|
|
14
14
|
Schema schema, int processorCount);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
public
|
|
17
|
+
public ConfigDiff transaction(ConfigSource config,
|
|
18
18
|
InputPlugin.Control control);
|
|
19
19
|
|
|
20
|
-
public
|
|
20
|
+
public ConfigDiff resume(TaskSource taskSource,
|
|
21
21
|
Schema schema, int processorCount,
|
|
22
22
|
InputPlugin.Control control);
|
|
23
23
|
|
|
@@ -3,7 +3,7 @@ package org.embulk.spi;
|
|
|
3
3
|
import java.util.List;
|
|
4
4
|
import org.embulk.config.TaskSource;
|
|
5
5
|
import org.embulk.config.ConfigSource;
|
|
6
|
-
import org.embulk.config.
|
|
6
|
+
import org.embulk.config.ConfigDiff;
|
|
7
7
|
import org.embulk.config.CommitReport;
|
|
8
8
|
|
|
9
9
|
public interface OutputPlugin
|
|
@@ -13,11 +13,11 @@ public interface OutputPlugin
|
|
|
13
13
|
public List<CommitReport> run(TaskSource taskSource);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
public
|
|
16
|
+
public ConfigDiff transaction(ConfigSource config,
|
|
17
17
|
Schema schema, int processorCount,
|
|
18
18
|
OutputPlugin.Control control);
|
|
19
19
|
|
|
20
|
-
public
|
|
20
|
+
public ConfigDiff resume(TaskSource taskSource,
|
|
21
21
|
Schema schema, int processorCount,
|
|
22
22
|
OutputPlugin.Control control);
|
|
23
23
|
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
package org.embulk.spi;
|
|
2
|
+
|
|
3
|
+
import java.net.URL;
|
|
4
|
+
import java.net.URLClassLoader;
|
|
5
|
+
import java.util.List;
|
|
6
|
+
import com.google.common.collect.ImmutableList;
|
|
7
|
+
import org.jruby.Ruby;
|
|
8
|
+
|
|
9
|
+
public class PluginClassLoader
|
|
10
|
+
extends URLClassLoader
|
|
11
|
+
{
|
|
12
|
+
private static final String[] PARENT_FIRST_PACKAGES = new String[] {
|
|
13
|
+
"org.embulk.",
|
|
14
|
+
"io.airlift.slice.",
|
|
15
|
+
"com.fasterxml.jackson.",
|
|
16
|
+
"com.google.inject.",
|
|
17
|
+
"org.jruby.",
|
|
18
|
+
"javax.inject.",
|
|
19
|
+
"java.",
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
public PluginClassLoader(Ruby pluginJRubyRuntime, List<URL> urls)
|
|
23
|
+
{
|
|
24
|
+
this(urls, pluginJRubyRuntime.getJRubyClassLoader());
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public PluginClassLoader(List<URL> urls, ClassLoader parent)
|
|
28
|
+
{
|
|
29
|
+
super(urls.toArray(new URL[urls.size()]), parent);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@Override
|
|
33
|
+
protected Class<?> loadClass(String name, boolean resolve)
|
|
34
|
+
throws ClassNotFoundException
|
|
35
|
+
{
|
|
36
|
+
synchronized (getClassLoadingLock(name)) {
|
|
37
|
+
Class<?> loadedClass = findLoadedClass(name);
|
|
38
|
+
if (loadedClass != null) {
|
|
39
|
+
return resolveClass(loadedClass, resolve);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
boolean parentFirst = isInParentFirstPackage(name);
|
|
43
|
+
if (!parentFirst) {
|
|
44
|
+
try {
|
|
45
|
+
return resolveClass(findClass(name), resolve);
|
|
46
|
+
} catch (ClassNotFoundException ignored) {
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
try {
|
|
51
|
+
return resolveClass(getParent().loadClass(name), resolve);
|
|
52
|
+
} catch (ClassNotFoundException ignored) {
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (parentFirst) {
|
|
56
|
+
return resolveClass(findClass(name), resolve);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
throw new ClassNotFoundException(name);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private Class<?> resolveClass(Class<?> clazz, boolean resolve)
|
|
64
|
+
{
|
|
65
|
+
if (resolve) {
|
|
66
|
+
resolveClass(clazz);
|
|
67
|
+
}
|
|
68
|
+
return clazz;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
private boolean isInParentFirstPackage(String name)
|
|
72
|
+
{
|
|
73
|
+
for (String pkg : PARENT_FIRST_PACKAGES) {
|
|
74
|
+
if (name.startsWith(pkg)) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -5,9 +5,9 @@ import org.joda.time.DateTime;
|
|
|
5
5
|
import org.joda.time.DateTimeZone;
|
|
6
6
|
import org.jruby.embed.ScriptingContainer;
|
|
7
7
|
import org.jruby.util.RubyDateFormat;
|
|
8
|
-
import com.fasterxml.jackson.annotation.JacksonInject;
|
|
9
8
|
import org.embulk.config.Task;
|
|
10
9
|
import org.embulk.config.Config;
|
|
10
|
+
import org.embulk.config.ConfigInject;
|
|
11
11
|
import org.embulk.config.ConfigDefault;
|
|
12
12
|
import org.embulk.config.ConfigException;
|
|
13
13
|
import org.embulk.spi.util.LineEncoder;
|
|
@@ -21,7 +21,7 @@ public class TimestampFormatter
|
|
|
21
21
|
@ConfigDefault("\"UTC\"")
|
|
22
22
|
public DateTimeZone getTimeZone();
|
|
23
23
|
|
|
24
|
-
@
|
|
24
|
+
@ConfigInject
|
|
25
25
|
public ScriptingContainer getJRuby();
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -2,9 +2,9 @@ package org.embulk.spi.time;
|
|
|
2
2
|
|
|
3
3
|
import org.joda.time.DateTimeZone;
|
|
4
4
|
import org.jruby.embed.ScriptingContainer;
|
|
5
|
-
import com.fasterxml.jackson.annotation.JacksonInject;
|
|
6
5
|
import org.embulk.config.Task;
|
|
7
6
|
import org.embulk.config.Config;
|
|
7
|
+
import org.embulk.config.ConfigInject;
|
|
8
8
|
import org.embulk.config.ConfigDefault;
|
|
9
9
|
import org.embulk.config.ConfigException;
|
|
10
10
|
import static org.embulk.spi.time.TimestampFormat.parseDateTimeZone;
|
|
@@ -18,7 +18,7 @@ public class TimestampParser
|
|
|
18
18
|
@ConfigDefault("\"UTC\"")
|
|
19
19
|
public DateTimeZone getDefaultTimeZone();
|
|
20
20
|
|
|
21
|
-
@
|
|
21
|
+
@ConfigInject
|
|
22
22
|
public ScriptingContainer getJRuby();
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -5,7 +5,7 @@ import com.google.common.collect.ImmutableList;
|
|
|
5
5
|
import org.embulk.config.TaskSource;
|
|
6
6
|
import org.embulk.config.ConfigSource;
|
|
7
7
|
import org.embulk.config.CommitReport;
|
|
8
|
-
import org.embulk.config.
|
|
8
|
+
import org.embulk.config.ConfigDiff;
|
|
9
9
|
import org.embulk.plugin.PluginType;
|
|
10
10
|
import org.embulk.spi.ExecSession;
|
|
11
11
|
import org.embulk.spi.Schema;
|
|
@@ -6,9 +6,9 @@ import java.io.IOException;
|
|
|
6
6
|
import java.nio.charset.Charset;
|
|
7
7
|
import java.nio.charset.CharsetEncoder;
|
|
8
8
|
import java.nio.charset.CodingErrorAction;
|
|
9
|
-
import com.fasterxml.jackson.annotation.JacksonInject;
|
|
10
9
|
import org.embulk.config.Task;
|
|
11
10
|
import org.embulk.config.Config;
|
|
11
|
+
import org.embulk.config.ConfigInject;
|
|
12
12
|
import org.embulk.config.ConfigDefault;
|
|
13
13
|
import org.embulk.spi.FileOutput;
|
|
14
14
|
import org.embulk.spi.BufferAllocator;
|
|
@@ -29,7 +29,7 @@ public class LineEncoder
|
|
|
29
29
|
@ConfigDefault("\"CRLF\"")
|
|
30
30
|
public Newline getNewline();
|
|
31
31
|
|
|
32
|
-
@
|
|
32
|
+
@ConfigInject
|
|
33
33
|
public BufferAllocator getBufferAllocator();
|
|
34
34
|
}
|
|
35
35
|
|