embulk 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|