embulk 0.7.0-java
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 +7 -0
- data/.gitignore +15 -0
- data/.ruby-version +1 -0
- data/.travis.yml +18 -0
- data/COPYING +14 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +31 -0
- data/README.md +206 -0
- data/Rakefile +26 -0
- data/appveyor.yml +20 -0
- data/bin/embulk +106 -0
- data/build.gradle +338 -0
- data/embulk-cli/build.gradle +6 -0
- data/embulk-cli/src/main/java/org/embulk/cli/Main.java +22 -0
- data/embulk-cli/src/main/sh/selfrun.sh +158 -0
- data/embulk-cli/src/test/java/org/embulk/cli/DummyMain.java +23 -0
- data/embulk-cli/src/test/java/org/embulk/cli/SelfrunTest.java +281 -0
- data/embulk-core/build.gradle +59 -0
- data/embulk-core/src/main/java/org/embulk/EmbulkEmbed.java +315 -0
- data/embulk-core/src/main/java/org/embulk/EmbulkService.java +76 -0
- data/embulk-core/src/main/java/org/embulk/command/PreviewPrinter.java +84 -0
- data/embulk-core/src/main/java/org/embulk/command/TablePreviewPrinter.java +107 -0
- data/embulk-core/src/main/java/org/embulk/command/VerticalPreviewPrinter.java +47 -0
- data/embulk-core/src/main/java/org/embulk/config/CommitReport.java +33 -0
- data/embulk-core/src/main/java/org/embulk/config/Config.java +15 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigDefault.java +15 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigDiff.java +29 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigException.java +20 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigInject.java +14 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigLoader.java +141 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigSource.java +31 -0
- data/embulk-core/src/main/java/org/embulk/config/DataSource.java +39 -0
- data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +231 -0
- data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +84 -0
- data/embulk-core/src/main/java/org/embulk/config/GenericTypeReference.java +20 -0
- data/embulk-core/src/main/java/org/embulk/config/ModelManager.java +123 -0
- data/embulk-core/src/main/java/org/embulk/config/Task.java +10 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskInvocationHandler.java +180 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskReport.java +29 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +345 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskSource.java +31 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +38 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskValidator.java +24 -0
- data/embulk-core/src/main/java/org/embulk/exec/BulkLoader.java +652 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExecModule.java +52 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExecutionInterruptedException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExecutionResult.java +26 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExtensionServiceLoaderModule.java +43 -0
- data/embulk-core/src/main/java/org/embulk/exec/ForGuess.java +16 -0
- data/embulk-core/src/main/java/org/embulk/exec/ForSystemConfig.java +16 -0
- data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +373 -0
- data/embulk-core/src/main/java/org/embulk/exec/LocalExecutorPlugin.java +129 -0
- data/embulk-core/src/main/java/org/embulk/exec/LocalThreadExecutor.java +34 -0
- data/embulk-core/src/main/java/org/embulk/exec/LoggerProvider.java +60 -0
- data/embulk-core/src/main/java/org/embulk/exec/NoSampleException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/exec/PartialExecutionException.java +18 -0
- data/embulk-core/src/main/java/org/embulk/exec/PooledBufferAllocator.java +77 -0
- data/embulk-core/src/main/java/org/embulk/exec/PreviewExecutor.java +183 -0
- data/embulk-core/src/main/java/org/embulk/exec/PreviewResult.java +27 -0
- data/embulk-core/src/main/java/org/embulk/exec/PreviewedNoticeError.java +17 -0
- data/embulk-core/src/main/java/org/embulk/exec/ResumeState.java +100 -0
- data/embulk-core/src/main/java/org/embulk/exec/SamplingParserPlugin.java +136 -0
- data/embulk-core/src/main/java/org/embulk/exec/SetCurrentThreadName.java +19 -0
- data/embulk-core/src/main/java/org/embulk/exec/SystemConfigModule.java +24 -0
- data/embulk-core/src/main/java/org/embulk/exec/TempFileAllocator.java +35 -0
- data/embulk-core/src/main/java/org/embulk/guice/Bootstrap.java +157 -0
- data/embulk-core/src/main/java/org/embulk/guice/CloseableInjector.java +22 -0
- data/embulk-core/src/main/java/org/embulk/guice/InjectorProxy.java +145 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleInjector.java +26 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleInjectorProxy.java +61 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleManager.java +187 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleMethods.java +89 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleMethodsMap.java +38 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleModule.java +97 -0
- data/embulk-core/src/main/java/org/embulk/jruby/JRubyPluginSource.java +72 -0
- data/embulk-core/src/main/java/org/embulk/jruby/JRubyScriptingModule.java +119 -0
- data/embulk-core/src/main/java/org/embulk/plugin/BuiltinPluginSourceModule.java +17 -0
- data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +96 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoader.java +168 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderFactory.java +9 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderModule.java +71 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +78 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginSource.java +6 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginSourceNotMatchException.java +19 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginType.java +47 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/InputPluginWrapper.java +102 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/PluginWrappers.java +30 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileInputWrapper.java +96 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileOutputWrapper.java +102 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalPageOutputWrapper.java +95 -0
- data/embulk-core/src/main/java/org/embulk/spi/Buffer.java +148 -0
- data/embulk-core/src/main/java/org/embulk/spi/BufferAllocator.java +8 -0
- data/embulk-core/src/main/java/org/embulk/spi/Column.java +92 -0
- data/embulk-core/src/main/java/org/embulk/spi/ColumnConfig.java +112 -0
- data/embulk-core/src/main/java/org/embulk/spi/ColumnVisitor.java +14 -0
- data/embulk-core/src/main/java/org/embulk/spi/DecoderPlugin.java +16 -0
- data/embulk-core/src/main/java/org/embulk/spi/EncoderPlugin.java +16 -0
- data/embulk-core/src/main/java/org/embulk/spi/Exec.java +113 -0
- data/embulk-core/src/main/java/org/embulk/spi/ExecAction.java +6 -0
- data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +217 -0
- data/embulk-core/src/main/java/org/embulk/spi/ExecutorPlugin.java +19 -0
- data/embulk-core/src/main/java/org/embulk/spi/Extension.java +44 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileInput.java +11 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +30 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +162 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileOutput.java +13 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +28 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +202 -0
- data/embulk-core/src/main/java/org/embulk/spi/FilterPlugin.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/FormatterPlugin.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +9 -0
- data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +33 -0
- data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +29 -0
- data/embulk-core/src/main/java/org/embulk/spi/Page.java +51 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageBuilder.java +338 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageFormat.java +47 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageOutput.java +11 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageReader.java +226 -0
- data/embulk-core/src/main/java/org/embulk/spi/ParserPlugin.java +17 -0
- data/embulk-core/src/main/java/org/embulk/spi/ProcessState.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/ProcessTask.java +117 -0
- data/embulk-core/src/main/java/org/embulk/spi/Schema.java +134 -0
- data/embulk-core/src/main/java/org/embulk/spi/SchemaConfig.java +93 -0
- data/embulk-core/src/main/java/org/embulk/spi/SchemaConfigException.java +22 -0
- data/embulk-core/src/main/java/org/embulk/spi/TaskState.java +81 -0
- data/embulk-core/src/main/java/org/embulk/spi/TempFileException.java +19 -0
- data/embulk-core/src/main/java/org/embulk/spi/TempFileSpace.java +87 -0
- data/embulk-core/src/main/java/org/embulk/spi/Transactional.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileInput.java +17 -0
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileOutput.java +19 -0
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalPageOutput.java +17 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java +55 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelper.java +8 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelperFactory.java +6 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/Timestamp.java +159 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormat.java +100 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +97 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParseException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +104 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampSerDe.java +49 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/AbstractType.java +58 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/BooleanType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/DoubleType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/LongType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/StringType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/TimestampType.java +41 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/Type.java +15 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/TypeDeserializer.java +44 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/Types.java +14 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/ByteSize.java +156 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFile.java +106 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFileSerDe.java +113 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/ToString.java +54 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/ToStringMap.java +34 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/CharsetSerDe.java +55 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Decoders.java +81 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnNotFoundException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetter.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetterFactory.java +94 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicPageBuilder.java +161 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Encoders.java +81 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Executors.java +95 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/FileInputInputStream.java +111 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/FileOutputOutputStream.java +119 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Filters.java +100 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamFileInput.java +190 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamTransactionalFileInput.java +25 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Inputs.java +65 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/LineDecoder.java +118 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +123 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/ListFileInput.java +52 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Newline.java +38 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/OutputStreamFileOutput.java +88 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +102 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +139 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/ResumableInputStream.java +128 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/RetryExecutor.java +130 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Timestamps.java +53 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/AbstractDynamicColumnSetter.java +79 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/BooleanColumnSetter.java +64 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DefaultValueSetter.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DoubleColumnSetter.java +61 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/LongColumnSetter.java +69 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/NullDefaultValueSetter.java +34 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/SkipColumnSetter.java +52 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/StringColumnSetter.java +56 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/TimestampColumnSetter.java +64 -0
- data/embulk-core/src/main/resources/embulk/logback-color.xml +72 -0
- data/embulk-core/src/main/resources/embulk/logback-console.xml +14 -0
- data/embulk-core/src/main/resources/embulk/logback-file.xml +25 -0
- data/embulk-core/src/main/resources/embulk/parent_first_packages.properties +70 -0
- data/embulk-core/src/main/resources/embulk/parent_first_resources.properties +28 -0
- data/embulk-core/src/test/java/org/embulk/EmbulkTestRuntime.java +114 -0
- data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +72 -0
- data/embulk-core/src/test/java/org/embulk/RandomManager.java +53 -0
- data/embulk-core/src/test/java/org/embulk/TestPluginSourceModule.java +23 -0
- data/embulk-core/src/test/java/org/embulk/TestUtilityModule.java +17 -0
- data/embulk-core/src/test/java/org/embulk/config/TestConfigLoader.java +66 -0
- data/embulk-core/src/test/java/org/embulk/config/TestConfigSource.java +114 -0
- data/embulk-core/src/test/java/org/embulk/config/TestTaskSource.java +70 -0
- data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +58 -0
- data/embulk-core/src/test/java/org/embulk/plugin/TestPluginType.java +18 -0
- data/embulk-core/src/test/java/org/embulk/spi/MockFileOutput.java +63 -0
- data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +101 -0
- data/embulk-core/src/test/java/org/embulk/spi/MockParserPlugin.java +73 -0
- data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +57 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestBuffer.java +24 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestFileInputInputStream.java +89 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +196 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +207 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestInputStreamFileInput.java +188 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestPageBuilderReader.java +319 -0
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestamp.java +116 -0
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParser.java +63 -0
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParserDeprecated.java +67 -0
- data/embulk-core/src/test/java/org/embulk/spi/type/TestTypeSerDe.java +45 -0
- data/embulk-core/src/test/java/org/embulk/spi/unit/TestByteSize.java +79 -0
- data/embulk-core/src/test/java/org/embulk/spi/util/TestLineDecoder.java +132 -0
- data/embulk-core/src/test/java/org/embulk/spi/util/TestLineEncoder.java +123 -0
- data/embulk-docs/Makefile +178 -0
- data/embulk-docs/build.gradle +32 -0
- data/embulk-docs/make.bat +243 -0
- data/embulk-docs/push-gh-pages.sh +49 -0
- data/embulk-docs/src/_static/embulk-architecture.png +0 -0
- data/embulk-docs/src/_static/embulk-logo.png +0 -0
- data/embulk-docs/src/_static/embulk-logo.svg +133 -0
- data/embulk-docs/src/built-in.rst +440 -0
- data/embulk-docs/src/conf.py +260 -0
- data/embulk-docs/src/customization.rst +184 -0
- data/embulk-docs/src/index.rst +84 -0
- data/embulk-docs/src/recipe.rst +8 -0
- data/embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana4.rst +153 -0
- data/embulk-docs/src/release.rst +57 -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-docs/src/release/release-0.4.1.rst +18 -0
- data/embulk-docs/src/release/release-0.4.10.rst +17 -0
- data/embulk-docs/src/release/release-0.4.2.rst +18 -0
- data/embulk-docs/src/release/release-0.4.3.rst +34 -0
- data/embulk-docs/src/release/release-0.4.4.rst +39 -0
- data/embulk-docs/src/release/release-0.4.5.rst +24 -0
- data/embulk-docs/src/release/release-0.4.6.rst +30 -0
- data/embulk-docs/src/release/release-0.4.7.rst +16 -0
- data/embulk-docs/src/release/release-0.4.8.rst +15 -0
- data/embulk-docs/src/release/release-0.4.9.rst +23 -0
- data/embulk-docs/src/release/release-0.5.0.rst +89 -0
- data/embulk-docs/src/release/release-0.5.1.rst +13 -0
- data/embulk-docs/src/release/release-0.5.2.rst +30 -0
- data/embulk-docs/src/release/release-0.5.3.rst +22 -0
- data/embulk-docs/src/release/release-0.5.4.rst +24 -0
- data/embulk-docs/src/release/release-0.5.5.rst +18 -0
- data/embulk-docs/src/release/release-0.6.0.rst +34 -0
- data/embulk-docs/src/release/release-0.6.1.rst +11 -0
- data/embulk-docs/src/release/release-0.6.10.rst +15 -0
- data/embulk-docs/src/release/release-0.6.11.rst +19 -0
- data/embulk-docs/src/release/release-0.6.12.rst +31 -0
- data/embulk-docs/src/release/release-0.6.13.rst +23 -0
- data/embulk-docs/src/release/release-0.6.14.rst +47 -0
- data/embulk-docs/src/release/release-0.6.15.rst +26 -0
- data/embulk-docs/src/release/release-0.6.16.rst +26 -0
- data/embulk-docs/src/release/release-0.6.17.rst +39 -0
- data/embulk-docs/src/release/release-0.6.18.rst +14 -0
- data/embulk-docs/src/release/release-0.6.19.rst +18 -0
- data/embulk-docs/src/release/release-0.6.2.rst +17 -0
- data/embulk-docs/src/release/release-0.6.20.rst +19 -0
- data/embulk-docs/src/release/release-0.6.21.rst +20 -0
- data/embulk-docs/src/release/release-0.6.22.rst +26 -0
- data/embulk-docs/src/release/release-0.6.23.rst +17 -0
- data/embulk-docs/src/release/release-0.6.24.rst +13 -0
- data/embulk-docs/src/release/release-0.6.25.rst +12 -0
- data/embulk-docs/src/release/release-0.6.3.rst +23 -0
- data/embulk-docs/src/release/release-0.6.4.rst +13 -0
- data/embulk-docs/src/release/release-0.6.5.rst +17 -0
- data/embulk-docs/src/release/release-0.6.6.rst +17 -0
- data/embulk-docs/src/release/release-0.6.7.rst +17 -0
- data/embulk-docs/src/release/release-0.6.8.rst +24 -0
- data/embulk-docs/src/release/release-0.6.9.rst +24 -0
- data/embulk-docs/src/release/release-0.7.0.rst +96 -0
- data/embulk-standards/build.gradle +5 -0
- data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +284 -0
- data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +379 -0
- data/embulk-standards/src/main/java/org/embulk/standards/CsvTokenizer.java +411 -0
- data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +55 -0
- data/embulk-standards/src/main/java/org/embulk/standards/GzipFileEncoderPlugin.java +71 -0
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +203 -0
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +148 -0
- data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +59 -0
- data/embulk-standards/src/main/java/org/embulk/standards/RenameFilterPlugin.java +56 -0
- data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginExtension.java +16 -0
- data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +53 -0
- data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +85 -0
- data/embulk-standards/src/main/resources/META-INF/services/org.embulk.spi.Extension +1 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvFormatterPlugin.java +312 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvParserPlugin.java +75 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvTokenizer.java +360 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestRenameFilterPlugin.java +88 -0
- data/embulk.gemspec +39 -0
- data/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/gradlew +164 -0
- data/gradlew.bat +90 -0
- data/lib/embulk.rb +72 -0
- data/lib/embulk/buffer.rb +22 -0
- data/lib/embulk/column.rb +70 -0
- data/lib/embulk/command/embulk_bundle.rb +56 -0
- data/lib/embulk/command/embulk_example.rb +32 -0
- data/lib/embulk/command/embulk_generate_bin.rb +62 -0
- data/lib/embulk/command/embulk_main.rb +2 -0
- data/lib/embulk/command/embulk_migrate_plugin.rb +170 -0
- data/lib/embulk/command/embulk_new_plugin.rb +124 -0
- data/lib/embulk/command/embulk_run.rb +470 -0
- data/lib/embulk/command/embulk_selfupdate.rb +84 -0
- data/lib/embulk/data/bundle/.bundle/config +3 -0
- data/lib/embulk/data/bundle/.ruby-version +1 -0
- data/lib/embulk/data/bundle/Gemfile +26 -0
- data/lib/embulk/data/bundle/embulk/filter/example.rb +42 -0
- data/lib/embulk/data/bundle/embulk/input/example.rb +54 -0
- data/lib/embulk/data/bundle/embulk/output/example.rb +58 -0
- data/lib/embulk/data/new/LICENSE.txt +21 -0
- data/lib/embulk/data/new/README.md.erb +111 -0
- data/lib/embulk/data/new/gitignore.erb +13 -0
- data/lib/embulk/data/new/java/build.gradle.erb +73 -0
- data/lib/embulk/data/new/java/decoder.java.erb +84 -0
- data/lib/embulk/data/new/java/encoder.java.erb +86 -0
- data/lib/embulk/data/new/java/file_input.java.erb +143 -0
- data/lib/embulk/data/new/java/file_output.java.erb +93 -0
- data/lib/embulk/data/new/java/filter.java.erb +56 -0
- data/lib/embulk/data/new/java/formatter.java.erb +54 -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 +87 -0
- data/lib/embulk/data/new/java/output.java.erb +77 -0
- data/lib/embulk/data/new/java/parser.java.erb +60 -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/.ruby-version +1 -0
- data/lib/embulk/data/new/ruby/Gemfile +2 -0
- data/lib/embulk/data/new/ruby/Rakefile +3 -0
- data/lib/embulk/data/new/ruby/decoder_guess.rb.erb +25 -0
- data/lib/embulk/data/new/ruby/filter.rb.erb +41 -0
- data/lib/embulk/data/new/ruby/formatter.rb.erb +49 -0
- data/lib/embulk/data/new/ruby/gemspec.erb +20 -0
- data/lib/embulk/data/new/ruby/input.rb.erb +59 -0
- data/lib/embulk/data/new/ruby/output.rb.erb +61 -0
- data/lib/embulk/data/new/ruby/parser.rb.erb +44 -0
- data/lib/embulk/data/new/ruby/parser_guess.rb.erb +65 -0
- data/lib/embulk/data/package_data.rb +50 -0
- data/lib/embulk/data_source.rb +220 -0
- data/lib/embulk/decoder_plugin.rb +27 -0
- data/lib/embulk/encoder_plugin.rb +27 -0
- data/lib/embulk/error.rb +8 -0
- data/lib/embulk/executor_plugin.rb +23 -0
- data/lib/embulk/file_input.rb +87 -0
- data/lib/embulk/file_input_plugin.rb +27 -0
- data/lib/embulk/file_output.rb +56 -0
- data/lib/embulk/file_output_plugin.rb +27 -0
- data/lib/embulk/filter_plugin.rb +105 -0
- data/lib/embulk/formatter_plugin.rb +105 -0
- data/lib/embulk/guess/charset.rb +44 -0
- data/lib/embulk/guess/csv.rb +327 -0
- data/lib/embulk/guess/gzip.rb +18 -0
- data/lib/embulk/guess/newline.rb +22 -0
- data/lib/embulk/guess/schema_guess.rb +118 -0
- data/lib/embulk/guess/time_format_guess.rb +394 -0
- data/lib/embulk/guess_plugin.rb +129 -0
- data/lib/embulk/input_plugin.rb +121 -0
- data/lib/embulk/java/bootstrap.rb +24 -0
- data/lib/embulk/java/imports.rb +69 -0
- data/lib/embulk/java/time_helper.rb +79 -0
- data/lib/embulk/java_plugin.rb +90 -0
- data/lib/embulk/logger.rb +154 -0
- data/lib/embulk/output_plugin.rb +150 -0
- data/lib/embulk/page.rb +30 -0
- data/lib/embulk/page_builder.rb +76 -0
- data/lib/embulk/parser_plugin.rb +78 -0
- data/lib/embulk/plugin.rb +239 -0
- data/lib/embulk/plugin_registry.rb +96 -0
- data/lib/embulk/runner.rb +184 -0
- data/lib/embulk/schema.rb +103 -0
- data/lib/embulk/version.rb +3 -0
- data/settings.gradle +6 -0
- data/test/guess/test_schema_guess.rb +11 -0
- data/test/guess/test_time_format_guess.rb +133 -0
- data/test/helper.rb +21 -0
- data/test/run-test.rb +14 -0
- metadata +566 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
package org.embulk.exec;
|
|
2
|
+
|
|
3
|
+
import java.util.List;
|
|
4
|
+
import org.embulk.spi.Schema;
|
|
5
|
+
import org.embulk.spi.Page;
|
|
6
|
+
|
|
7
|
+
public class PreviewResult
|
|
8
|
+
{
|
|
9
|
+
private final Schema schema;
|
|
10
|
+
private final List<Page> pages;
|
|
11
|
+
|
|
12
|
+
public PreviewResult(Schema schema, List<Page> pages)
|
|
13
|
+
{
|
|
14
|
+
this.schema = schema;
|
|
15
|
+
this.pages = pages;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public Schema getSchema()
|
|
19
|
+
{
|
|
20
|
+
return schema;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public List<Page> getPages()
|
|
24
|
+
{
|
|
25
|
+
return pages;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
package org.embulk.exec;
|
|
2
|
+
|
|
3
|
+
public class PreviewedNoticeError
|
|
4
|
+
extends Error
|
|
5
|
+
{
|
|
6
|
+
private final PreviewResult previewResult;
|
|
7
|
+
|
|
8
|
+
public PreviewedNoticeError(PreviewResult previewResult)
|
|
9
|
+
{
|
|
10
|
+
this.previewResult = previewResult;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public PreviewResult getPreviewResult()
|
|
14
|
+
{
|
|
15
|
+
return previewResult;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
package org.embulk.exec;
|
|
2
|
+
|
|
3
|
+
import java.util.List;
|
|
4
|
+
import com.google.common.base.Optional;
|
|
5
|
+
import com.fasterxml.jackson.annotation.JsonCreator;
|
|
6
|
+
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
7
|
+
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
8
|
+
import org.embulk.config.TaskSource;
|
|
9
|
+
import org.embulk.config.ConfigSource;
|
|
10
|
+
import org.embulk.config.TaskReport;
|
|
11
|
+
import org.embulk.config.CommitReport;
|
|
12
|
+
import org.embulk.spi.Schema;
|
|
13
|
+
|
|
14
|
+
public class ResumeState
|
|
15
|
+
{
|
|
16
|
+
private final ConfigSource execSessionConfigSource;
|
|
17
|
+
private final TaskSource inputTaskSource;
|
|
18
|
+
private final TaskSource outputTaskSource;
|
|
19
|
+
private final Schema inputSchema;
|
|
20
|
+
private final Schema outputSchema;
|
|
21
|
+
private final List<Optional<TaskReport>> inputTaskReports;
|
|
22
|
+
private final List<Optional<TaskReport>> outputTaskReports;
|
|
23
|
+
|
|
24
|
+
@JsonCreator
|
|
25
|
+
public ResumeState(
|
|
26
|
+
@JsonProperty("exec_task") ConfigSource execSessionConfigSource,
|
|
27
|
+
@JsonProperty("in_task") TaskSource inputTaskSource,
|
|
28
|
+
@JsonProperty("out_task") TaskSource outputTaskSource,
|
|
29
|
+
@JsonProperty("in_schema") Schema inputSchema,
|
|
30
|
+
@JsonProperty("out_schema") Schema outputSchema,
|
|
31
|
+
@JsonProperty("in_reports") List<Optional<TaskReport>> inputTaskReports,
|
|
32
|
+
@JsonProperty("out_reports") List<Optional<TaskReport>> outputTaskReports)
|
|
33
|
+
{
|
|
34
|
+
this.execSessionConfigSource = execSessionConfigSource;
|
|
35
|
+
this.inputTaskSource = inputTaskSource;
|
|
36
|
+
this.outputTaskSource = outputTaskSource;
|
|
37
|
+
this.inputSchema = inputSchema;
|
|
38
|
+
this.outputSchema = outputSchema;
|
|
39
|
+
this.inputTaskReports = inputTaskReports;
|
|
40
|
+
this.outputTaskReports = outputTaskReports;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@JsonProperty("exec_task")
|
|
44
|
+
public ConfigSource getExecSessionConfigSource()
|
|
45
|
+
{
|
|
46
|
+
return execSessionConfigSource;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@JsonProperty("in_task")
|
|
50
|
+
public TaskSource getInputTaskSource()
|
|
51
|
+
{
|
|
52
|
+
return inputTaskSource;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@JsonProperty("out_task")
|
|
56
|
+
public TaskSource getOutputTaskSource()
|
|
57
|
+
{
|
|
58
|
+
return outputTaskSource;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@JsonProperty("in_schema")
|
|
62
|
+
public Schema getInputSchema()
|
|
63
|
+
{
|
|
64
|
+
return inputSchema;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@JsonProperty("out_schema")
|
|
68
|
+
public Schema getOutputSchema()
|
|
69
|
+
{
|
|
70
|
+
return outputSchema;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@JsonProperty("in_reports")
|
|
74
|
+
public List<Optional<TaskReport>> getInputTaskReports()
|
|
75
|
+
{
|
|
76
|
+
return inputTaskReports;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@Deprecated
|
|
80
|
+
@JsonIgnore
|
|
81
|
+
@SuppressWarnings("unchecked")
|
|
82
|
+
public List<Optional<CommitReport>> getInputCommitReports()
|
|
83
|
+
{
|
|
84
|
+
return (List) inputTaskReports; // the only implementation of TaskReport is DataSourceImpl which implements CommitReport
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@JsonProperty("out_reports")
|
|
88
|
+
public List<Optional<TaskReport>> getOutputTaskReports()
|
|
89
|
+
{
|
|
90
|
+
return outputTaskReports;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@Deprecated
|
|
94
|
+
@JsonIgnore
|
|
95
|
+
@SuppressWarnings("unchecked")
|
|
96
|
+
public List<Optional<CommitReport>> getOutputCommitReports()
|
|
97
|
+
{
|
|
98
|
+
return (List) outputTaskReports; // the only implementation of TaskReport is DataSourceImpl which implements CommitReport;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
package org.embulk.exec;
|
|
2
|
+
|
|
3
|
+
import java.util.List;
|
|
4
|
+
import com.google.inject.Inject;
|
|
5
|
+
import com.google.common.base.Preconditions;
|
|
6
|
+
import org.embulk.config.TaskSource;
|
|
7
|
+
import org.embulk.config.ConfigSource;
|
|
8
|
+
import org.embulk.config.TaskReport;
|
|
9
|
+
import org.embulk.spi.Schema;
|
|
10
|
+
import org.embulk.spi.Exec;
|
|
11
|
+
import org.embulk.spi.Page;
|
|
12
|
+
import org.embulk.spi.Buffer;
|
|
13
|
+
import org.embulk.spi.InputPlugin;
|
|
14
|
+
import org.embulk.spi.ParserPlugin;
|
|
15
|
+
import org.embulk.spi.FileInput;
|
|
16
|
+
import org.embulk.spi.FileInputRunner;
|
|
17
|
+
import org.embulk.spi.PageOutput;
|
|
18
|
+
import static org.embulk.spi.util.Inputs.each;
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* Used by FileInputRunner.guess
|
|
22
|
+
*/
|
|
23
|
+
public class SamplingParserPlugin
|
|
24
|
+
implements ParserPlugin
|
|
25
|
+
{
|
|
26
|
+
public static Buffer runFileInputSampling(final FileInputRunner runner, ConfigSource inputConfig)
|
|
27
|
+
{
|
|
28
|
+
// override in.parser.type so that FileInputRunner creates SamplingParserPlugin
|
|
29
|
+
ConfigSource samplingInputConfig = inputConfig.deepCopy();
|
|
30
|
+
samplingInputConfig.getNestedOrSetEmpty("parser").set("type", "system_sampling");
|
|
31
|
+
samplingInputConfig.set("decoders", null);
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
runner.transaction(samplingInputConfig, new InputPlugin.Control() {
|
|
35
|
+
public List<TaskReport> run(TaskSource taskSource, Schema schema, int taskCount)
|
|
36
|
+
{
|
|
37
|
+
if (taskCount == 0) {
|
|
38
|
+
throw new NoSampleException("No input files to read sample data");
|
|
39
|
+
}
|
|
40
|
+
for (int taskIndex=0; taskIndex < taskCount; taskIndex++) {
|
|
41
|
+
try {
|
|
42
|
+
runner.run(taskSource, schema, taskIndex, new PageOutput() {
|
|
43
|
+
@Override
|
|
44
|
+
public void add(Page page)
|
|
45
|
+
{
|
|
46
|
+
throw new RuntimeException("Input plugin must be a FileInputPlugin to guess parser configuration"); // TODO exception class
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
public void finish() { }
|
|
50
|
+
|
|
51
|
+
public void close() { }
|
|
52
|
+
});
|
|
53
|
+
} catch (NotEnoughSampleError ex) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
throw new NoSampleException("All input files are smaller than minimum sampling size"); // TODO include minSampleSize in message
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
throw new AssertionError("SamplingParserPlugin must throw SampledNoticeError");
|
|
61
|
+
} catch (SampledNoticeError error) {
|
|
62
|
+
return error.getSample();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public static class SampledNoticeError
|
|
67
|
+
extends Error
|
|
68
|
+
{
|
|
69
|
+
private final Buffer sample;
|
|
70
|
+
|
|
71
|
+
public SampledNoticeError(Buffer sample)
|
|
72
|
+
{
|
|
73
|
+
this.sample = sample;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
public Buffer getSample()
|
|
77
|
+
{
|
|
78
|
+
return sample;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
public static class NotEnoughSampleError
|
|
83
|
+
extends Error
|
|
84
|
+
{ }
|
|
85
|
+
|
|
86
|
+
private final int minSampleSize;
|
|
87
|
+
private final int sampleSize;
|
|
88
|
+
|
|
89
|
+
@Inject
|
|
90
|
+
public SamplingParserPlugin(@ForSystemConfig ConfigSource systemConfig)
|
|
91
|
+
{
|
|
92
|
+
this.minSampleSize = 40; // empty gzip file is 33 bytes. // TODO get sample size from system config
|
|
93
|
+
this.sampleSize = 32*1024; // TODO get sample size from system config
|
|
94
|
+
Preconditions.checkArgument(minSampleSize < sampleSize, "minSampleSize must be smaller than sampleSize");
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@Override
|
|
98
|
+
public void transaction(ConfigSource config, ParserPlugin.Control control)
|
|
99
|
+
{
|
|
100
|
+
control.run(Exec.newTaskSource(), null);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@Override
|
|
104
|
+
public void run(TaskSource taskSource, Schema schema,
|
|
105
|
+
FileInput input, PageOutput output)
|
|
106
|
+
{
|
|
107
|
+
Buffer buffer = readSample(input, sampleSize);
|
|
108
|
+
if (buffer.limit() < minSampleSize) {
|
|
109
|
+
throw new NotEnoughSampleError();
|
|
110
|
+
}
|
|
111
|
+
throw new SampledNoticeError(buffer);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private static Buffer readSample(FileInput fileInput, int sampleSize)
|
|
115
|
+
{
|
|
116
|
+
if (!fileInput.nextFile()) {
|
|
117
|
+
// no input files
|
|
118
|
+
return Buffer.EMPTY;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
Buffer sample = Buffer.allocate(sampleSize);
|
|
122
|
+
int offset = 0;
|
|
123
|
+
|
|
124
|
+
for (Buffer buffer : each(fileInput)) {
|
|
125
|
+
int size = Math.min(buffer.limit(), sample.capacity() - offset);
|
|
126
|
+
sample.setBytes(offset, buffer, 0, size);
|
|
127
|
+
offset += size;
|
|
128
|
+
buffer.release();
|
|
129
|
+
if (offset >= sampleSize) {
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
sample.limit(offset);
|
|
134
|
+
return sample;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package org.embulk.exec;
|
|
2
|
+
|
|
3
|
+
public class SetCurrentThreadName
|
|
4
|
+
implements AutoCloseable
|
|
5
|
+
{
|
|
6
|
+
private final String original;
|
|
7
|
+
|
|
8
|
+
public SetCurrentThreadName(String name)
|
|
9
|
+
{
|
|
10
|
+
this.original = Thread.currentThread().getName();
|
|
11
|
+
Thread.currentThread().setName(name);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@Override
|
|
15
|
+
public void close()
|
|
16
|
+
{
|
|
17
|
+
Thread.currentThread().setName(original);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
package org.embulk.exec;
|
|
2
|
+
|
|
3
|
+
import com.google.inject.Module;
|
|
4
|
+
import com.google.inject.Binder;
|
|
5
|
+
import org.embulk.config.ConfigSource;
|
|
6
|
+
|
|
7
|
+
public class SystemConfigModule
|
|
8
|
+
implements Module
|
|
9
|
+
{
|
|
10
|
+
private final ConfigSource systemConfig;
|
|
11
|
+
|
|
12
|
+
public SystemConfigModule(ConfigSource systemConfig)
|
|
13
|
+
{
|
|
14
|
+
this.systemConfig = systemConfig;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@Override
|
|
18
|
+
public void configure(Binder binder)
|
|
19
|
+
{
|
|
20
|
+
binder.bind(ConfigSource.class)
|
|
21
|
+
.annotatedWith(ForSystemConfig.class)
|
|
22
|
+
.toInstance(systemConfig);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
package org.embulk.exec;
|
|
2
|
+
|
|
3
|
+
import java.io.File;
|
|
4
|
+
import com.google.inject.Inject;
|
|
5
|
+
import org.embulk.config.ConfigSource;
|
|
6
|
+
import org.embulk.spi.TempFileSpace;
|
|
7
|
+
|
|
8
|
+
// TODO change this class to interface
|
|
9
|
+
// TODO don't use this class directly. Use spi.Exec.getTempFileSpace() instead.
|
|
10
|
+
public class TempFileAllocator
|
|
11
|
+
{
|
|
12
|
+
private final File[] dirs;
|
|
13
|
+
|
|
14
|
+
@Inject
|
|
15
|
+
public TempFileAllocator(@ForSystemConfig ConfigSource systemConfig)
|
|
16
|
+
{
|
|
17
|
+
// TODO get `temp_dirs` from system config
|
|
18
|
+
String s = System.getProperty("java.io.tmpdir");
|
|
19
|
+
if (s == null || s.isEmpty()) {
|
|
20
|
+
s = "/tmp";
|
|
21
|
+
}
|
|
22
|
+
this.dirs = new File[] {
|
|
23
|
+
new File(s, "embulk")
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public TempFileSpace newSpace(String subdir)
|
|
28
|
+
{
|
|
29
|
+
// TODO support multiple directories
|
|
30
|
+
// UNIX/Linux cannot include '/' as file name.
|
|
31
|
+
// Windows cannot include ':' as file name.
|
|
32
|
+
subdir = subdir.replace('/', '-').replace(':', '-');
|
|
33
|
+
return new TempFileSpace(new File(dirs[0], subdir));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015 Sadayuki Furuhashi
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
package org.embulk.guice;
|
|
17
|
+
|
|
18
|
+
import com.google.common.base.Function;
|
|
19
|
+
import com.google.common.collect.ImmutableList;
|
|
20
|
+
import com.google.common.collect.Iterables;
|
|
21
|
+
import com.google.common.annotations.Beta;
|
|
22
|
+
|
|
23
|
+
import com.google.inject.Binder;
|
|
24
|
+
import com.google.inject.Guice;
|
|
25
|
+
import com.google.inject.Module;
|
|
26
|
+
import com.google.inject.Stage;
|
|
27
|
+
import com.google.inject.Injector;
|
|
28
|
+
import java.util.Arrays;
|
|
29
|
+
import java.util.List;
|
|
30
|
+
|
|
31
|
+
@Beta
|
|
32
|
+
public class Bootstrap
|
|
33
|
+
{
|
|
34
|
+
private List<Module> modules;
|
|
35
|
+
|
|
36
|
+
private boolean requireExplicitBindings = true;
|
|
37
|
+
|
|
38
|
+
private boolean started;
|
|
39
|
+
|
|
40
|
+
public Bootstrap(Module... modules)
|
|
41
|
+
{
|
|
42
|
+
this(Arrays.asList(modules));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public Bootstrap(Iterable<? extends Module> modules)
|
|
46
|
+
{
|
|
47
|
+
this.modules = ImmutableList.copyOf(modules);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public Bootstrap requireExplicitBindings(boolean requireExplicitBindings)
|
|
51
|
+
{
|
|
52
|
+
this.requireExplicitBindings = requireExplicitBindings;
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public Bootstrap addModules(Module... additionalModules)
|
|
57
|
+
{
|
|
58
|
+
return addModules(Arrays.asList(additionalModules));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public Bootstrap addModules(Iterable<? extends Module> additionalModules)
|
|
62
|
+
{
|
|
63
|
+
modules = ImmutableList.copyOf(Iterables.concat(modules, additionalModules));
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
//public Bootstrap onPreDestroy()
|
|
68
|
+
//{
|
|
69
|
+
//}
|
|
70
|
+
|
|
71
|
+
//public Bootstrap onPreDestroyException()
|
|
72
|
+
//{
|
|
73
|
+
//}
|
|
74
|
+
|
|
75
|
+
//public Bootstrap onStop()
|
|
76
|
+
//{
|
|
77
|
+
//}
|
|
78
|
+
|
|
79
|
+
//public Bootstrap forEachModule(Consumer<? super Module> function)
|
|
80
|
+
//{
|
|
81
|
+
// for (Module module : modules) {
|
|
82
|
+
// function.accept(module);
|
|
83
|
+
// }
|
|
84
|
+
// return this;
|
|
85
|
+
//}
|
|
86
|
+
|
|
87
|
+
//public <T> Bootstrap forEachModule(Class<T> ifClass, Consumer<? super T> function)
|
|
88
|
+
//{
|
|
89
|
+
// for (Module module : modules) {
|
|
90
|
+
// if (ifClass.instance(module) {
|
|
91
|
+
// function.accept(module);
|
|
92
|
+
// }
|
|
93
|
+
// }
|
|
94
|
+
// return this;
|
|
95
|
+
//}
|
|
96
|
+
|
|
97
|
+
public Bootstrap overrideModules(Function<? super List<Module>, ? extends Iterable<? extends Module>> function)
|
|
98
|
+
{
|
|
99
|
+
modules = ImmutableList.copyOf(function.apply(modules));
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
public LifeCycleInjector initialize()
|
|
104
|
+
{
|
|
105
|
+
return build(true);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public CloseableInjector initializeCloseable()
|
|
109
|
+
{
|
|
110
|
+
return build(false);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
private LifeCycleInjectorProxy build(boolean destroyOnShutdownHook)
|
|
114
|
+
{
|
|
115
|
+
Injector injector = start();
|
|
116
|
+
LifeCycleManager lifeCycleManager = injector.getInstance(LifeCycleManager.class);
|
|
117
|
+
if (destroyOnShutdownHook) {
|
|
118
|
+
lifeCycleManager.destroyOnShutdownHook();
|
|
119
|
+
}
|
|
120
|
+
return new LifeCycleInjectorProxy(injector, lifeCycleManager);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
private Injector start()
|
|
124
|
+
{
|
|
125
|
+
if (started) {
|
|
126
|
+
throw new IllegalStateException("System already initialized");
|
|
127
|
+
}
|
|
128
|
+
started = true;
|
|
129
|
+
|
|
130
|
+
ImmutableList.Builder<Module> moduleList = ImmutableList.builder();
|
|
131
|
+
|
|
132
|
+
moduleList.addAll(modules);
|
|
133
|
+
|
|
134
|
+
moduleList.add(new Module()
|
|
135
|
+
{
|
|
136
|
+
@Override
|
|
137
|
+
public void configure(Binder binder)
|
|
138
|
+
{
|
|
139
|
+
binder.disableCircularProxies();
|
|
140
|
+
if (requireExplicitBindings) {
|
|
141
|
+
binder.requireExplicitBindings();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
moduleList.add(new LifeCycleModule());
|
|
147
|
+
|
|
148
|
+
Injector injector = Guice.createInjector(Stage.PRODUCTION, moduleList.build());
|
|
149
|
+
|
|
150
|
+
LifeCycleManager lifeCycleManager = injector.getInstance(LifeCycleManager.class);
|
|
151
|
+
if (lifeCycleManager.size() > 0) {
|
|
152
|
+
lifeCycleManager.start();
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return injector;
|
|
156
|
+
}
|
|
157
|
+
}
|