embulk 0.8.39-java → 0.10.28-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (604) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +1 -1
  3. data/LICENSE +202 -0
  4. data/embulk.gemspec +34 -33
  5. data/lib/embulk.rb +5 -61
  6. data/lib/embulk/buffer.rb +1 -2
  7. data/lib/embulk/gem_version.rb +3 -0
  8. data/lib/embulk/guess/charset.rb +2 -11
  9. data/lib/embulk/java/bootstrap.rb +0 -1
  10. data/lib/embulk/java_plugin.rb +9 -1
  11. data/lib/embulk/logger.rb +2 -1
  12. data/lib/embulk/page_builder.rb +2 -2
  13. data/lib/embulk/plugin.rb +2 -2
  14. data/lib/embulk/schema.rb +3 -4
  15. data/lib/embulk/version.rb +43 -19
  16. metadata +23 -762
  17. data/.gitignore +0 -15
  18. data/.ruby-version +0 -1
  19. data/.travis.yml +0 -28
  20. data/COPYING +0 -14
  21. data/Gemfile.lock +0 -30
  22. data/README.md +0 -229
  23. data/Rakefile +0 -26
  24. data/appveyor.yml +0 -28
  25. data/bin/embulk +0 -139
  26. data/build.gradle +0 -419
  27. data/embulk-cli/build.gradle +0 -9
  28. data/embulk-cli/src/main/bat/selfrun.bat +0 -107
  29. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkArguments.java +0 -54
  30. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkCommandLine.java +0 -227
  31. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkCommandLineException.java +0 -25
  32. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkExample.java +0 -86
  33. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkMigrate.java +0 -480
  34. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkNew.java +0 -419
  35. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkRun.java +0 -786
  36. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkSelfUpdate.java +0 -235
  37. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkSubcommand.java +0 -47
  38. data/embulk-cli/src/main/java/org/embulk/cli/Main.java +0 -31
  39. data/embulk-cli/src/main/java/org/embulk/cli/parse/AbstractHelpLineDefinition.java +0 -15
  40. data/embulk-cli/src/main/java/org/embulk/cli/parse/CliHelpFormatterWithHelpMessages.java +0 -141
  41. data/embulk-cli/src/main/java/org/embulk/cli/parse/CliOptionsWithHelpMessages.java +0 -45
  42. data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineHelpRequired.java +0 -10
  43. data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineParseException.java +0 -25
  44. data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineParser.java +0 -187
  45. data/embulk-cli/src/main/java/org/embulk/cli/parse/HelpMessageAsCliOption.java +0 -36
  46. data/embulk-cli/src/main/java/org/embulk/cli/parse/HelpMessageLineDefinition.java +0 -20
  47. data/embulk-cli/src/main/java/org/embulk/cli/parse/OptionBehavior.java +0 -39
  48. data/embulk-cli/src/main/java/org/embulk/cli/parse/OptionDefinition.java +0 -120
  49. data/embulk-cli/src/main/sh/selfrun.sh +0 -60
  50. data/embulk-cli/src/test/java/org/embulk/cli/DummyMain.java +0 -23
  51. data/embulk-cli/src/test/java/org/embulk/cli/SelfrunTest.java +0 -296
  52. data/embulk-core/build.gradle +0 -83
  53. data/embulk-core/src/main/java/org/embulk/EmbulkEmbed.java +0 -321
  54. data/embulk-core/src/main/java/org/embulk/EmbulkRunner.java +0 -531
  55. data/embulk-core/src/main/java/org/embulk/EmbulkService.java +0 -78
  56. data/embulk-core/src/main/java/org/embulk/EmbulkSetup.java +0 -49
  57. data/embulk-core/src/main/java/org/embulk/EmbulkVersion.java +0 -109
  58. data/embulk-core/src/main/java/org/embulk/command/PreviewPrinter.java +0 -87
  59. data/embulk-core/src/main/java/org/embulk/command/TablePreviewPrinter.java +0 -107
  60. data/embulk-core/src/main/java/org/embulk/command/VerticalPreviewPrinter.java +0 -47
  61. data/embulk-core/src/main/java/org/embulk/config/CommitReport.java +0 -36
  62. data/embulk-core/src/main/java/org/embulk/config/Config.java +0 -15
  63. data/embulk-core/src/main/java/org/embulk/config/ConfigDefault.java +0 -15
  64. data/embulk-core/src/main/java/org/embulk/config/ConfigDiff.java +0 -32
  65. data/embulk-core/src/main/java/org/embulk/config/ConfigException.java +0 -26
  66. data/embulk-core/src/main/java/org/embulk/config/ConfigInject.java +0 -14
  67. data/embulk-core/src/main/java/org/embulk/config/ConfigLoader.java +0 -149
  68. data/embulk-core/src/main/java/org/embulk/config/ConfigSource.java +0 -34
  69. data/embulk-core/src/main/java/org/embulk/config/DataSource.java +0 -41
  70. data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +0 -243
  71. data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +0 -84
  72. data/embulk-core/src/main/java/org/embulk/config/GenericTypeReference.java +0 -20
  73. data/embulk-core/src/main/java/org/embulk/config/ModelManager.java +0 -123
  74. data/embulk-core/src/main/java/org/embulk/config/Task.java +0 -10
  75. data/embulk-core/src/main/java/org/embulk/config/TaskInvocationHandler.java +0 -180
  76. data/embulk-core/src/main/java/org/embulk/config/TaskReport.java +0 -32
  77. data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +0 -349
  78. data/embulk-core/src/main/java/org/embulk/config/TaskSource.java +0 -34
  79. data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +0 -38
  80. data/embulk-core/src/main/java/org/embulk/config/TaskValidator.java +0 -24
  81. data/embulk-core/src/main/java/org/embulk/config/UserDataException.java +0 -4
  82. data/embulk-core/src/main/java/org/embulk/config/UserDataExceptions.java +0 -17
  83. data/embulk-core/src/main/java/org/embulk/config/YamlTagResolver.java +0 -53
  84. data/embulk-core/src/main/java/org/embulk/exec/BufferFileInputPlugin.java +0 -88
  85. data/embulk-core/src/main/java/org/embulk/exec/BulkLoader.java +0 -754
  86. data/embulk-core/src/main/java/org/embulk/exec/ConfigurableGuessInputPlugin.java +0 -9
  87. data/embulk-core/src/main/java/org/embulk/exec/ExecModule.java +0 -53
  88. data/embulk-core/src/main/java/org/embulk/exec/ExecutionInterruptedException.java +0 -10
  89. data/embulk-core/src/main/java/org/embulk/exec/ExecutionResult.java +0 -33
  90. data/embulk-core/src/main/java/org/embulk/exec/ExtensionServiceLoaderModule.java +0 -43
  91. data/embulk-core/src/main/java/org/embulk/exec/ForGuess.java +0 -16
  92. data/embulk-core/src/main/java/org/embulk/exec/ForSystemConfig.java +0 -16
  93. data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +0 -309
  94. data/embulk-core/src/main/java/org/embulk/exec/LocalExecutorPlugin.java +0 -563
  95. data/embulk-core/src/main/java/org/embulk/exec/LoggerProvider.java +0 -68
  96. data/embulk-core/src/main/java/org/embulk/exec/NoSampleException.java +0 -10
  97. data/embulk-core/src/main/java/org/embulk/exec/PartialExecutionException.java +0 -26
  98. data/embulk-core/src/main/java/org/embulk/exec/PooledBufferAllocator.java +0 -77
  99. data/embulk-core/src/main/java/org/embulk/exec/PreviewExecutor.java +0 -222
  100. data/embulk-core/src/main/java/org/embulk/exec/PreviewResult.java +0 -27
  101. data/embulk-core/src/main/java/org/embulk/exec/PreviewedNoticeError.java +0 -17
  102. data/embulk-core/src/main/java/org/embulk/exec/ResumeState.java +0 -100
  103. data/embulk-core/src/main/java/org/embulk/exec/SamplingParserPlugin.java +0 -215
  104. data/embulk-core/src/main/java/org/embulk/exec/SetCurrentThreadName.java +0 -22
  105. data/embulk-core/src/main/java/org/embulk/exec/SkipTransactionException.java +0 -23
  106. data/embulk-core/src/main/java/org/embulk/exec/SystemConfigModule.java +0 -24
  107. data/embulk-core/src/main/java/org/embulk/exec/TempFileAllocator.java +0 -35
  108. data/embulk-core/src/main/java/org/embulk/exec/TransactionStage.java +0 -27
  109. data/embulk-core/src/main/java/org/embulk/jruby/JRubyPluginSource.java +0 -76
  110. data/embulk-core/src/main/java/org/embulk/jruby/JRubyScriptingModule.java +0 -395
  111. data/embulk-core/src/main/java/org/embulk/plugin/BuiltinPluginSourceModule.java +0 -17
  112. data/embulk-core/src/main/java/org/embulk/plugin/DefaultPluginType.java +0 -50
  113. data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +0 -100
  114. data/embulk-core/src/main/java/org/embulk/plugin/MavenPluginType.java +0 -112
  115. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoader.java +0 -993
  116. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderFactory.java +0 -16
  117. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderModule.java +0 -102
  118. data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +0 -78
  119. data/embulk-core/src/main/java/org/embulk/plugin/PluginSource.java +0 -49
  120. data/embulk-core/src/main/java/org/embulk/plugin/PluginSourceNotMatchException.java +0 -25
  121. data/embulk-core/src/main/java/org/embulk/plugin/PluginType.java +0 -122
  122. data/embulk-core/src/main/java/org/embulk/plugin/compat/InputPluginWrapper.java +0 -102
  123. data/embulk-core/src/main/java/org/embulk/plugin/compat/PluginWrappers.java +0 -30
  124. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileInputWrapper.java +0 -96
  125. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileOutputWrapper.java +0 -102
  126. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalPageOutputWrapper.java +0 -95
  127. data/embulk-core/src/main/java/org/embulk/plugin/jar/InvalidJarPluginException.java +0 -14
  128. data/embulk-core/src/main/java/org/embulk/plugin/jar/JarPluginLoader.java +0 -232
  129. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenArtifactFinder.java +0 -134
  130. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenArtifactNotFoundException.java +0 -20
  131. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenPluginSource.java +0 -187
  132. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenPluginSourceModule.java +0 -22
  133. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenRepositoryNotFoundException.java +0 -31
  134. data/embulk-core/src/main/java/org/embulk/spi/AbortTransactionResource.java +0 -36
  135. data/embulk-core/src/main/java/org/embulk/spi/Buffer.java +0 -148
  136. data/embulk-core/src/main/java/org/embulk/spi/BufferAllocator.java +0 -8
  137. data/embulk-core/src/main/java/org/embulk/spi/CloseResource.java +0 -42
  138. data/embulk-core/src/main/java/org/embulk/spi/Column.java +0 -95
  139. data/embulk-core/src/main/java/org/embulk/spi/ColumnConfig.java +0 -112
  140. data/embulk-core/src/main/java/org/embulk/spi/ColumnVisitor.java +0 -16
  141. data/embulk-core/src/main/java/org/embulk/spi/DataException.java +0 -23
  142. data/embulk-core/src/main/java/org/embulk/spi/DecoderPlugin.java +0 -16
  143. data/embulk-core/src/main/java/org/embulk/spi/EncoderPlugin.java +0 -16
  144. data/embulk-core/src/main/java/org/embulk/spi/Exec.java +0 -113
  145. data/embulk-core/src/main/java/org/embulk/spi/ExecAction.java +0 -6
  146. data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +0 -220
  147. data/embulk-core/src/main/java/org/embulk/spi/ExecutorPlugin.java +0 -19
  148. data/embulk-core/src/main/java/org/embulk/spi/Extension.java +0 -44
  149. data/embulk-core/src/main/java/org/embulk/spi/FileInput.java +0 -11
  150. data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +0 -30
  151. data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +0 -169
  152. data/embulk-core/src/main/java/org/embulk/spi/FileOutput.java +0 -13
  153. data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +0 -28
  154. data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +0 -199
  155. data/embulk-core/src/main/java/org/embulk/spi/FilterPlugin.java +0 -18
  156. data/embulk-core/src/main/java/org/embulk/spi/FormatterPlugin.java +0 -18
  157. data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +0 -9
  158. data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +0 -33
  159. data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +0 -29
  160. data/embulk-core/src/main/java/org/embulk/spi/Page.java +0 -86
  161. data/embulk-core/src/main/java/org/embulk/spi/PageBuilder.java +0 -696
  162. data/embulk-core/src/main/java/org/embulk/spi/PageFormat.java +0 -47
  163. data/embulk-core/src/main/java/org/embulk/spi/PageOutput.java +0 -11
  164. data/embulk-core/src/main/java/org/embulk/spi/PageReader.java +0 -248
  165. data/embulk-core/src/main/java/org/embulk/spi/ParserPlugin.java +0 -17
  166. data/embulk-core/src/main/java/org/embulk/spi/ProcessState.java +0 -10
  167. data/embulk-core/src/main/java/org/embulk/spi/ProcessTask.java +0 -117
  168. data/embulk-core/src/main/java/org/embulk/spi/Schema.java +0 -139
  169. data/embulk-core/src/main/java/org/embulk/spi/SchemaConfig.java +0 -93
  170. data/embulk-core/src/main/java/org/embulk/spi/SchemaConfigException.java +0 -22
  171. data/embulk-core/src/main/java/org/embulk/spi/TaskState.java +0 -81
  172. data/embulk-core/src/main/java/org/embulk/spi/TempFileException.java +0 -19
  173. data/embulk-core/src/main/java/org/embulk/spi/TempFileSpace.java +0 -88
  174. data/embulk-core/src/main/java/org/embulk/spi/Transactional.java +0 -10
  175. data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileInput.java +0 -17
  176. data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileOutput.java +0 -19
  177. data/embulk-core/src/main/java/org/embulk/spi/TransactionalPageOutput.java +0 -17
  178. data/embulk-core/src/main/java/org/embulk/spi/json/JsonParseException.java +0 -17
  179. data/embulk-core/src/main/java/org/embulk/spi/json/JsonParser.java +0 -233
  180. data/embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java +0 -100
  181. data/embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java +0 -55
  182. data/embulk-core/src/main/java/org/embulk/spi/time/Timestamp.java +0 -180
  183. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormat.java +0 -158
  184. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +0 -125
  185. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParseException.java +0 -12
  186. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +0 -310
  187. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampSerDe.java +0 -49
  188. data/embulk-core/src/main/java/org/embulk/spi/type/AbstractType.java +0 -58
  189. data/embulk-core/src/main/java/org/embulk/spi/type/BooleanType.java +0 -12
  190. data/embulk-core/src/main/java/org/embulk/spi/type/DoubleType.java +0 -12
  191. data/embulk-core/src/main/java/org/embulk/spi/type/JsonType.java +0 -14
  192. data/embulk-core/src/main/java/org/embulk/spi/type/LongType.java +0 -12
  193. data/embulk-core/src/main/java/org/embulk/spi/type/StringType.java +0 -12
  194. data/embulk-core/src/main/java/org/embulk/spi/type/TimestampType.java +0 -41
  195. data/embulk-core/src/main/java/org/embulk/spi/type/Type.java +0 -15
  196. data/embulk-core/src/main/java/org/embulk/spi/type/TypeDeserializer.java +0 -45
  197. data/embulk-core/src/main/java/org/embulk/spi/type/Types.java +0 -16
  198. data/embulk-core/src/main/java/org/embulk/spi/unit/ByteSize.java +0 -156
  199. data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFile.java +0 -106
  200. data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFileSerDe.java +0 -113
  201. data/embulk-core/src/main/java/org/embulk/spi/unit/ToString.java +0 -54
  202. data/embulk-core/src/main/java/org/embulk/spi/unit/ToStringMap.java +0 -34
  203. data/embulk-core/src/main/java/org/embulk/spi/util/CharsetSerDe.java +0 -55
  204. data/embulk-core/src/main/java/org/embulk/spi/util/Decoders.java +0 -81
  205. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnNotFoundException.java +0 -10
  206. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetter.java +0 -21
  207. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetterFactory.java +0 -134
  208. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicPageBuilder.java +0 -200
  209. data/embulk-core/src/main/java/org/embulk/spi/util/Encoders.java +0 -81
  210. data/embulk-core/src/main/java/org/embulk/spi/util/Executors.java +0 -93
  211. data/embulk-core/src/main/java/org/embulk/spi/util/FileInputInputStream.java +0 -111
  212. data/embulk-core/src/main/java/org/embulk/spi/util/FileOutputOutputStream.java +0 -119
  213. data/embulk-core/src/main/java/org/embulk/spi/util/Filters.java +0 -100
  214. data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamFileInput.java +0 -189
  215. data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamTransactionalFileInput.java +0 -25
  216. data/embulk-core/src/main/java/org/embulk/spi/util/Inputs.java +0 -65
  217. data/embulk-core/src/main/java/org/embulk/spi/util/LineDecoder.java +0 -157
  218. data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +0 -123
  219. data/embulk-core/src/main/java/org/embulk/spi/util/ListFileInput.java +0 -52
  220. data/embulk-core/src/main/java/org/embulk/spi/util/Newline.java +0 -38
  221. data/embulk-core/src/main/java/org/embulk/spi/util/OutputStreamFileOutput.java +0 -88
  222. data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +0 -126
  223. data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +0 -149
  224. data/embulk-core/src/main/java/org/embulk/spi/util/ResumableInputStream.java +0 -168
  225. data/embulk-core/src/main/java/org/embulk/spi/util/RetryExecutor.java +0 -130
  226. data/embulk-core/src/main/java/org/embulk/spi/util/Timestamps.java +0 -53
  227. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/AbstractDynamicColumnSetter.java +0 -94
  228. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/BooleanColumnSetter.java +0 -71
  229. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DefaultValueSetter.java +0 -20
  230. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DoubleColumnSetter.java +0 -68
  231. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/JsonColumnSetter.java +0 -64
  232. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/LongColumnSetter.java +0 -78
  233. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/NullDefaultValueSetter.java +0 -39
  234. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/SkipColumnSetter.java +0 -68
  235. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/StringColumnSetter.java +0 -63
  236. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/TimestampColumnSetter.java +0 -72
  237. data/embulk-core/src/main/resources/embulk/logback-color.xml +0 -72
  238. data/embulk-core/src/main/resources/embulk/logback-console.xml +0 -14
  239. data/embulk-core/src/main/resources/embulk/logback-file.xml +0 -23
  240. data/embulk-core/src/main/resources/embulk/parent_first_packages.properties +0 -73
  241. data/embulk-core/src/main/resources/embulk/parent_first_resources.properties +0 -29
  242. data/embulk-core/src/test/java/org/embulk/EmbulkTestRuntime.java +0 -122
  243. data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +0 -72
  244. data/embulk-core/src/test/java/org/embulk/RandomManager.java +0 -53
  245. data/embulk-core/src/test/java/org/embulk/TestPluginSourceModule.java +0 -23
  246. data/embulk-core/src/test/java/org/embulk/TestUtilityModule.java +0 -17
  247. data/embulk-core/src/test/java/org/embulk/config/TestConfigLoader.java +0 -66
  248. data/embulk-core/src/test/java/org/embulk/config/TestConfigSource.java +0 -114
  249. data/embulk-core/src/test/java/org/embulk/config/TestTaskSource.java +0 -70
  250. data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +0 -58
  251. data/embulk-core/src/test/java/org/embulk/plugin/TestPluginType.java +0 -83
  252. data/embulk-core/src/test/java/org/embulk/plugin/TestPluginTypeSerDe.java +0 -67
  253. data/embulk-core/src/test/java/org/embulk/plugin/jar/ExampleJarSpiV0.java +0 -9
  254. data/embulk-core/src/test/java/org/embulk/plugin/jar/JarBuilder.java +0 -101
  255. data/embulk-core/src/test/java/org/embulk/plugin/jar/TestJarPluginLoader.java +0 -60
  256. data/embulk-core/src/test/java/org/embulk/plugin/maven/TestMavenArtifactFinder.java +0 -41
  257. data/embulk-core/src/test/java/org/embulk/spi/MockFileOutput.java +0 -63
  258. data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +0 -108
  259. data/embulk-core/src/test/java/org/embulk/spi/MockParserPlugin.java +0 -80
  260. data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +0 -59
  261. data/embulk-core/src/test/java/org/embulk/spi/TestBuffer.java +0 -24
  262. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputInputStream.java +0 -89
  263. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +0 -199
  264. data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +0 -221
  265. data/embulk-core/src/test/java/org/embulk/spi/TestInputStreamFileInput.java +0 -188
  266. data/embulk-core/src/test/java/org/embulk/spi/TestPageBuilderReader.java +0 -411
  267. data/embulk-core/src/test/java/org/embulk/spi/json/TestJsonParser.java +0 -102
  268. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestamp.java +0 -116
  269. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParser.java +0 -75
  270. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParserDeprecated.java +0 -67
  271. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampParser.java +0 -247
  272. data/embulk-core/src/test/java/org/embulk/spi/type/TestTypeSerDe.java +0 -45
  273. data/embulk-core/src/test/java/org/embulk/spi/unit/TestByteSize.java +0 -79
  274. data/embulk-core/src/test/java/org/embulk/spi/util/TestLineDecoder.java +0 -237
  275. data/embulk-core/src/test/java/org/embulk/spi/util/TestLineEncoder.java +0 -123
  276. data/embulk-core/src/test/resources/m2.test/.gitignore +0 -1
  277. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.jar +0 -0
  278. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.jar.sha1 +0 -1
  279. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.pom +0 -9
  280. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.pom.sha1 +0 -1
  281. data/embulk-docs/Makefile +0 -178
  282. data/embulk-docs/build.gradle +0 -41
  283. data/embulk-docs/make.bat +0 -243
  284. data/embulk-docs/push-gh-pages.sh +0 -49
  285. data/embulk-docs/src/_static/embulk-architecture.png +0 -0
  286. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline-tr.png +0 -0
  287. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline-wt.png +0 -0
  288. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline.ai +0 -396
  289. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-tr-small.png +0 -0
  290. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-tr.png +0 -0
  291. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-wt.png +0 -0
  292. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq.ai +0 -417
  293. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq.svg +0 -1
  294. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol-tr.png +0 -0
  295. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol-wt.png +0 -0
  296. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol.ai +1 -394
  297. data/embulk-docs/src/_static/embulk-logo.svg +0 -133
  298. data/embulk-docs/src/built-in.rst +0 -1017
  299. data/embulk-docs/src/conf.py +0 -260
  300. data/embulk-docs/src/customization.rst +0 -184
  301. data/embulk-docs/src/developers/index.rst +0 -45
  302. data/embulk-docs/src/index.rst +0 -102
  303. data/embulk-docs/src/logo.rst +0 -27
  304. data/embulk-docs/src/recipe.rst +0 -8
  305. data/embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana5.rst +0 -163
  306. data/embulk-docs/src/release.rst +0 -109
  307. data/embulk-docs/src/release/release-0.1.0.rst +0 -8
  308. data/embulk-docs/src/release/release-0.2.0.rst +0 -16
  309. data/embulk-docs/src/release/release-0.2.1.rst +0 -19
  310. data/embulk-docs/src/release/release-0.3.0.rst +0 -34
  311. data/embulk-docs/src/release/release-0.3.1.rst +0 -11
  312. data/embulk-docs/src/release/release-0.3.2.rst +0 -15
  313. data/embulk-docs/src/release/release-0.4.0.rst +0 -74
  314. data/embulk-docs/src/release/release-0.4.1.rst +0 -18
  315. data/embulk-docs/src/release/release-0.4.10.rst +0 -17
  316. data/embulk-docs/src/release/release-0.4.2.rst +0 -18
  317. data/embulk-docs/src/release/release-0.4.3.rst +0 -34
  318. data/embulk-docs/src/release/release-0.4.4.rst +0 -39
  319. data/embulk-docs/src/release/release-0.4.5.rst +0 -24
  320. data/embulk-docs/src/release/release-0.4.6.rst +0 -30
  321. data/embulk-docs/src/release/release-0.4.7.rst +0 -16
  322. data/embulk-docs/src/release/release-0.4.8.rst +0 -15
  323. data/embulk-docs/src/release/release-0.4.9.rst +0 -23
  324. data/embulk-docs/src/release/release-0.5.0.rst +0 -89
  325. data/embulk-docs/src/release/release-0.5.1.rst +0 -13
  326. data/embulk-docs/src/release/release-0.5.2.rst +0 -30
  327. data/embulk-docs/src/release/release-0.5.3.rst +0 -22
  328. data/embulk-docs/src/release/release-0.5.4.rst +0 -24
  329. data/embulk-docs/src/release/release-0.5.5.rst +0 -18
  330. data/embulk-docs/src/release/release-0.6.0.rst +0 -34
  331. data/embulk-docs/src/release/release-0.6.1.rst +0 -11
  332. data/embulk-docs/src/release/release-0.6.10.rst +0 -15
  333. data/embulk-docs/src/release/release-0.6.11.rst +0 -19
  334. data/embulk-docs/src/release/release-0.6.12.rst +0 -31
  335. data/embulk-docs/src/release/release-0.6.13.rst +0 -23
  336. data/embulk-docs/src/release/release-0.6.14.rst +0 -47
  337. data/embulk-docs/src/release/release-0.6.15.rst +0 -26
  338. data/embulk-docs/src/release/release-0.6.16.rst +0 -26
  339. data/embulk-docs/src/release/release-0.6.17.rst +0 -39
  340. data/embulk-docs/src/release/release-0.6.18.rst +0 -14
  341. data/embulk-docs/src/release/release-0.6.19.rst +0 -18
  342. data/embulk-docs/src/release/release-0.6.2.rst +0 -17
  343. data/embulk-docs/src/release/release-0.6.20.rst +0 -19
  344. data/embulk-docs/src/release/release-0.6.21.rst +0 -20
  345. data/embulk-docs/src/release/release-0.6.22.rst +0 -26
  346. data/embulk-docs/src/release/release-0.6.23.rst +0 -17
  347. data/embulk-docs/src/release/release-0.6.24.rst +0 -13
  348. data/embulk-docs/src/release/release-0.6.25.rst +0 -12
  349. data/embulk-docs/src/release/release-0.6.26.rst +0 -17
  350. data/embulk-docs/src/release/release-0.6.27.rst +0 -11
  351. data/embulk-docs/src/release/release-0.6.3.rst +0 -23
  352. data/embulk-docs/src/release/release-0.6.4.rst +0 -13
  353. data/embulk-docs/src/release/release-0.6.5.rst +0 -17
  354. data/embulk-docs/src/release/release-0.6.6.rst +0 -17
  355. data/embulk-docs/src/release/release-0.6.7.rst +0 -17
  356. data/embulk-docs/src/release/release-0.6.8.rst +0 -24
  357. data/embulk-docs/src/release/release-0.6.9.rst +0 -24
  358. data/embulk-docs/src/release/release-0.7.0.rst +0 -96
  359. data/embulk-docs/src/release/release-0.7.1.rst +0 -22
  360. data/embulk-docs/src/release/release-0.7.10.rst +0 -13
  361. data/embulk-docs/src/release/release-0.7.11.rst +0 -12
  362. data/embulk-docs/src/release/release-0.7.2.rst +0 -25
  363. data/embulk-docs/src/release/release-0.7.3.rst +0 -21
  364. data/embulk-docs/src/release/release-0.7.4.rst +0 -14
  365. data/embulk-docs/src/release/release-0.7.5.rst +0 -22
  366. data/embulk-docs/src/release/release-0.7.6.rst +0 -18
  367. data/embulk-docs/src/release/release-0.7.7.rst +0 -13
  368. data/embulk-docs/src/release/release-0.7.8.rst +0 -14
  369. data/embulk-docs/src/release/release-0.7.9.rst +0 -14
  370. data/embulk-docs/src/release/release-0.8.0.rst +0 -74
  371. data/embulk-docs/src/release/release-0.8.1.rst +0 -18
  372. data/embulk-docs/src/release/release-0.8.10.rst +0 -35
  373. data/embulk-docs/src/release/release-0.8.11.rst +0 -12
  374. data/embulk-docs/src/release/release-0.8.12.rst +0 -12
  375. data/embulk-docs/src/release/release-0.8.13.rst +0 -12
  376. data/embulk-docs/src/release/release-0.8.14.rst +0 -31
  377. data/embulk-docs/src/release/release-0.8.15.rst +0 -17
  378. data/embulk-docs/src/release/release-0.8.16.rst +0 -43
  379. data/embulk-docs/src/release/release-0.8.17.rst +0 -11
  380. data/embulk-docs/src/release/release-0.8.18.rst +0 -27
  381. data/embulk-docs/src/release/release-0.8.19.rst +0 -43
  382. data/embulk-docs/src/release/release-0.8.2.rst +0 -19
  383. data/embulk-docs/src/release/release-0.8.20.rst +0 -11
  384. data/embulk-docs/src/release/release-0.8.21.rst +0 -17
  385. data/embulk-docs/src/release/release-0.8.22.rst +0 -15
  386. data/embulk-docs/src/release/release-0.8.23.rst +0 -14
  387. data/embulk-docs/src/release/release-0.8.24.rst +0 -15
  388. data/embulk-docs/src/release/release-0.8.25.rst +0 -14
  389. data/embulk-docs/src/release/release-0.8.26.rst +0 -16
  390. data/embulk-docs/src/release/release-0.8.27.rst +0 -15
  391. data/embulk-docs/src/release/release-0.8.28.rst +0 -14
  392. data/embulk-docs/src/release/release-0.8.29.rst +0 -14
  393. data/embulk-docs/src/release/release-0.8.3.rst +0 -15
  394. data/embulk-docs/src/release/release-0.8.30.rst +0 -14
  395. data/embulk-docs/src/release/release-0.8.31.rst +0 -12
  396. data/embulk-docs/src/release/release-0.8.32.rst +0 -14
  397. data/embulk-docs/src/release/release-0.8.33.rst +0 -13
  398. data/embulk-docs/src/release/release-0.8.34.rst +0 -12
  399. data/embulk-docs/src/release/release-0.8.35.rst +0 -12
  400. data/embulk-docs/src/release/release-0.8.36.rst +0 -32
  401. data/embulk-docs/src/release/release-0.8.37.rst +0 -20
  402. data/embulk-docs/src/release/release-0.8.38.rst +0 -12
  403. data/embulk-docs/src/release/release-0.8.39.rst +0 -12
  404. data/embulk-docs/src/release/release-0.8.4.rst +0 -18
  405. data/embulk-docs/src/release/release-0.8.5.rst +0 -11
  406. data/embulk-docs/src/release/release-0.8.6.rst +0 -14
  407. data/embulk-docs/src/release/release-0.8.7.rst +0 -18
  408. data/embulk-docs/src/release/release-0.8.8.rst +0 -18
  409. data/embulk-docs/src/release/release-0.8.9.rst +0 -14
  410. data/embulk-jruby-strptime/build.gradle +0 -3
  411. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/RubyDateParser.java +0 -121
  412. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeFormat.java +0 -53
  413. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeParser.java +0 -884
  414. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeToken.java +0 -111
  415. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/TimeZoneConverter.java +0 -466
  416. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/lexer/StrptimeLexer.flex +0 -62
  417. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/lexer/StrptimeLexer.java +0 -577
  418. data/embulk-standards/build.gradle +0 -7
  419. data/embulk-standards/src/main/java/org/embulk/standards/Bzip2FileDecoderPlugin.java +0 -55
  420. data/embulk-standards/src/main/java/org/embulk/standards/Bzip2FileEncoderPlugin.java +0 -67
  421. data/embulk-standards/src/main/java/org/embulk/standards/ConfigInputPlugin.java +0 -170
  422. data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +0 -295
  423. data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +0 -416
  424. data/embulk-standards/src/main/java/org/embulk/standards/CsvTokenizer.java +0 -545
  425. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +0 -55
  426. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileEncoderPlugin.java +0 -71
  427. data/embulk-standards/src/main/java/org/embulk/standards/JsonParserPlugin.java +0 -235
  428. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +0 -232
  429. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +0 -148
  430. data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +0 -59
  431. data/embulk-standards/src/main/java/org/embulk/standards/RemoveColumnsFilterPlugin.java +0 -268
  432. data/embulk-standards/src/main/java/org/embulk/standards/RenameFilterPlugin.java +0 -479
  433. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginExtension.java +0 -16
  434. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +0 -60
  435. data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +0 -91
  436. data/embulk-standards/src/main/resources/META-INF/services/org.embulk.spi.Extension +0 -1
  437. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvFormatterPlugin.java +0 -312
  438. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvParserPlugin.java +0 -75
  439. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvTokenizer.java +0 -457
  440. data/embulk-standards/src/test/java/org/embulk/standards/TestJsonParserPlugin.java +0 -351
  441. data/embulk-standards/src/test/java/org/embulk/standards/TestRemoveColumnsFilterPlugin.java +0 -121
  442. data/embulk-standards/src/test/java/org/embulk/standards/TestRenameFilterPlugin.java +0 -1020
  443. data/embulk-standards/src/test/java/org/embulk/standards/guess/TestCsvAllStringsGuessPlugin.java +0 -38
  444. data/embulk-standards/src/test/java/org/embulk/standards/guess/TestCsvGuessPlugin.java +0 -248
  445. data/embulk-standards/src/test/java/org/embulk/standards/preview/TestFilePreview.java +0 -73
  446. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row.csv +0 -1
  447. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header.csv +0 -2
  448. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header_guessed.yml +0 -12
  449. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header_seed.yml +0 -1
  450. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_guessed.yml +0 -12
  451. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_seed.yml +0 -1
  452. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows.csv +0 -1
  453. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header.csv +0 -2
  454. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_guessed.yml +0 -16
  455. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_seed.yml +0 -1
  456. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed.csv +0 -2
  457. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed_guessed.yml +0 -16
  458. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed_seed.yml +0 -1
  459. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_guessed.yml +0 -16
  460. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_seed.yml +0 -1
  461. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed.csv +0 -1
  462. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed_guessed.yml +0 -16
  463. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed_seed.yml +0 -1
  464. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row.csv +0 -1
  465. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header.csv +0 -2
  466. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header_guessed.yml +0 -12
  467. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header_seed.yml +0 -1
  468. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_guessed.yml +0 -12
  469. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_seed.yml +0 -1
  470. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows.csv +0 -2
  471. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows_guessed.yml +0 -12
  472. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows_seed.yml +0 -1
  473. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows.csv +0 -2
  474. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header.csv +0 -3
  475. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header_guessed.yml +0 -16
  476. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header_seed.yml +0 -1
  477. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_guessed.yml +0 -16
  478. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_seed.yml +0 -1
  479. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows.csv +0 -2
  480. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows_guessed.yml +0 -12
  481. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows_seed.yml +0 -1
  482. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape.csv +0 -5
  483. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape_guessed.yml +0 -17
  484. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape_seed.yml +0 -1
  485. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column.csv +0 -12
  486. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column_guessed.yml +0 -12
  487. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column_seed.yml +0 -1
  488. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column.csv +0 -4
  489. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_guessed.yml +0 -12
  490. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_seed.yml +0 -1
  491. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header.csv +0 -5
  492. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header_guessed.yml +0 -12
  493. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header_seed.yml +0 -1
  494. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter.csv +0 -5
  495. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter_guessed.yml +0 -17
  496. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter_seed.yml +0 -1
  497. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple.csv +0 -5
  498. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple_guessed.yml +0 -17
  499. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple_seed.yml +0 -1
  500. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote.csv +0 -5
  501. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote_guessed.yml +0 -17
  502. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote_seed.yml +0 -1
  503. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records.csv +0 -5
  504. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records_guessed.yml +0 -2
  505. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records_seed.yml +0 -1
  506. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column.csv +0 -4
  507. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_guessed.yml +0 -12
  508. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_seed.yml +0 -1
  509. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header.csv +0 -5
  510. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header_guessed.yml +0 -12
  511. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header_seed.yml +0 -1
  512. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter.csv +0 -4
  513. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter_guessed.yml +0 -16
  514. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter_seed.yml +0 -1
  515. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple.csv +0 -5
  516. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple_guessed.yml +0 -17
  517. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple_seed.yml +0 -1
  518. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes.csv +0 -5
  519. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_exec.yml +0 -1
  520. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_load.yml +0 -19
  521. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_previewed.csv +0 -1
  522. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple.csv +0 -5
  523. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple_load.yml +0 -19
  524. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple_previewed.csv +0 -4
  525. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep.csv +0 -5
  526. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_expected.csv +0 -4
  527. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_filter.yml +0 -2
  528. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_in.yml +0 -18
  529. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names.csv +0 -5
  530. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names.yml +0 -2
  531. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names_expected.csv +0 -4
  532. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names_in.yml +0 -17
  533. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_unmatched_filter.yml +0 -3
  534. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_without_unmatched_filter.yml +0 -2
  535. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove.csv +0 -5
  536. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_expected.csv +0 -4
  537. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_filter.yml +0 -2
  538. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_in.yml +0 -18
  539. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_with_unmatched_filter.yml +0 -3
  540. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_without_unmatched_filter.yml +0 -2
  541. data/embulk-test/build.gradle +0 -6
  542. data/embulk-test/src/main/java/org/embulk/test/EmbulkTests.java +0 -75
  543. data/embulk-test/src/main/java/org/embulk/test/PreviewResultInputPlugin.java +0 -65
  544. data/embulk-test/src/main/java/org/embulk/test/TestingBulkLoader.java +0 -129
  545. data/embulk-test/src/main/java/org/embulk/test/TestingEmbulk.java +0 -710
  546. data/gradle/wrapper/gradle-wrapper.jar +0 -0
  547. data/gradle/wrapper/gradle-wrapper.properties +0 -5
  548. data/gradlew +0 -172
  549. data/gradlew.bat +0 -84
  550. data/lib/embulk/data/bundle/.bundle/config +0 -3
  551. data/lib/embulk/data/bundle/.ruby-version +0 -1
  552. data/lib/embulk/data/bundle/Gemfile +0 -31
  553. data/lib/embulk/data/bundle/embulk/filter/example.rb +0 -42
  554. data/lib/embulk/data/bundle/embulk/input/example.rb +0 -54
  555. data/lib/embulk/data/bundle/embulk/output/example.rb +0 -58
  556. data/lib/embulk/data/new/LICENSE.txt +0 -21
  557. data/lib/embulk/data/new/README.md.vm +0 -106
  558. data/lib/embulk/data/new/gitignore.vm +0 -17
  559. data/lib/embulk/data/new/java/build.gradle.vm +0 -96
  560. data/lib/embulk/data/new/java/config/checkstyle/checkstyle.xml +0 -128
  561. data/lib/embulk/data/new/java/config/checkstyle/default.xml +0 -108
  562. data/lib/embulk/data/new/java/decoder.java.vm +0 -86
  563. data/lib/embulk/data/new/java/encoder.java.vm +0 -88
  564. data/lib/embulk/data/new/java/file_input.java.vm +0 -145
  565. data/lib/embulk/data/new/java/file_output.java.vm +0 -95
  566. data/lib/embulk/data/new/java/filter.java.vm +0 -57
  567. data/lib/embulk/data/new/java/formatter.java.vm +0 -55
  568. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.jar +0 -0
  569. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.properties +0 -5
  570. data/lib/embulk/data/new/java/gradlew +0 -172
  571. data/lib/embulk/data/new/java/gradlew.bat +0 -84
  572. data/lib/embulk/data/new/java/input.java.vm +0 -89
  573. data/lib/embulk/data/new/java/output.java.vm +0 -79
  574. data/lib/embulk/data/new/java/parser.java.vm +0 -61
  575. data/lib/embulk/data/new/java/plugin_loader.rb.vm +0 -3
  576. data/lib/embulk/data/new/java/test.java.vm +0 -5
  577. data/lib/embulk/data/new/ruby/.ruby-version +0 -1
  578. data/lib/embulk/data/new/ruby/Gemfile +0 -2
  579. data/lib/embulk/data/new/ruby/Rakefile +0 -3
  580. data/lib/embulk/data/new/ruby/decoder_guess.rb.vm +0 -25
  581. data/lib/embulk/data/new/ruby/filter.rb.vm +0 -50
  582. data/lib/embulk/data/new/ruby/formatter.rb.vm +0 -49
  583. data/lib/embulk/data/new/ruby/gemspec.vm +0 -20
  584. data/lib/embulk/data/new/ruby/input.rb.vm +0 -59
  585. data/lib/embulk/data/new/ruby/output.rb.vm +0 -61
  586. data/lib/embulk/data/new/ruby/parser.rb.vm +0 -44
  587. data/lib/embulk/data/new/ruby/parser_guess.rb.vm +0 -65
  588. data/lib/embulk/data/package_data.rb +0 -59
  589. data/lib/embulk/guess/bzip2.rb +0 -23
  590. data/lib/embulk/guess/csv.rb +0 -374
  591. data/lib/embulk/guess/csv_all_strings.rb +0 -13
  592. data/lib/embulk/guess/gzip.rb +0 -18
  593. data/lib/embulk/guess/json.rb +0 -50
  594. data/lib/embulk/runner.rb +0 -53
  595. data/settings.gradle +0 -8
  596. data/test/helper.rb +0 -23
  597. data/test/monkey_strptime/mri/date/test_date_strptime.rb +0 -515
  598. data/test/monkey_strptime/run-test.rb +0 -29
  599. data/test/vanilla/guess/test_csv_all_strings.rb +0 -43
  600. data/test/vanilla/guess/test_csv_guess.rb +0 -170
  601. data/test/vanilla/guess/test_schema_guess.rb +0 -47
  602. data/test/vanilla/guess/test_time_format_guess.rb +0 -135
  603. data/test/vanilla/run-test.rb +0 -14
  604. data/test/vanilla/time/test_timestamp_parser.rb +0 -117
@@ -1,17 +0,0 @@
1
- package org.embulk.plugin;
2
-
3
- import com.google.inject.Module;
4
- import com.google.inject.Binder;
5
- import com.google.inject.multibindings.Multibinder;
6
-
7
- public class BuiltinPluginSourceModule
8
- implements Module
9
- {
10
- @Override
11
- public void configure(Binder binder)
12
- {
13
- Multibinder<PluginSource> multibinder = Multibinder.newSetBinder(binder, PluginSource.class);
14
- //multibinder.addBinding().to(LocalDirectoryPluginSource.class); // TODO
15
- multibinder.addBinding().to(InjectedPluginSource.class);
16
- }
17
- }
@@ -1,50 +0,0 @@
1
- package org.embulk.plugin;
2
-
3
- import com.fasterxml.jackson.annotation.JsonValue;
4
- import java.util.Objects;
5
-
6
- public final class DefaultPluginType
7
- extends PluginType
8
- {
9
- private DefaultPluginType(final String name)
10
- {
11
- super("default", name);
12
- }
13
-
14
- public static PluginType create(final String name)
15
- {
16
- if (name == null) {
17
- throw new NullPointerException("name must not be null");
18
- }
19
- return new DefaultPluginType(name);
20
- }
21
-
22
- @JsonValue
23
- public final String getJsonValue()
24
- {
25
- return this.getName();
26
- }
27
-
28
- @Override
29
- public final int hashCode()
30
- {
31
- return Objects.hash(getSourceType(), getName());
32
- }
33
-
34
- @Override
35
- public final boolean equals(final Object objectOther)
36
- {
37
- if (!(objectOther instanceof DefaultPluginType)) {
38
- return false;
39
- }
40
- final DefaultPluginType other = (DefaultPluginType) objectOther;
41
- return (this.getSourceType().equals(other.getSourceType()) &&
42
- this.getName().equals(other.getName()));
43
- }
44
-
45
- @Override
46
- public final String toString()
47
- {
48
- return this.getName();
49
- }
50
- }
@@ -1,100 +0,0 @@
1
- package org.embulk.plugin;
2
-
3
- import com.google.inject.Binder;
4
- import com.google.inject.Inject;
5
- import com.google.inject.Injector;
6
- import com.google.inject.Key;
7
- import com.google.inject.name.Names;
8
- import com.google.inject.name.Named;
9
- import com.google.common.base.Preconditions;
10
- import org.embulk.spi.InputPlugin;
11
- import org.embulk.spi.FileInputPlugin;
12
- import org.embulk.spi.FileInputRunner;
13
- import org.embulk.spi.OutputPlugin;
14
- import org.embulk.spi.FileOutputPlugin;
15
- import org.embulk.spi.FileOutputRunner;
16
-
17
- /**
18
- * InjectedPluginSource loads plugins bound by Guice.
19
- * This plugin source is intended to be used in test cases.
20
- * Plugins need to be bound to Binder following:
21
- *
22
- * // Module
23
- * public void configure(Binder binder)
24
- * {
25
- * InjectedPluginSource.registerPluginTo(InputPluginclass, "my", MyInputPlugin.class);
26
- * }
27
- *
28
- */
29
- public class InjectedPluginSource
30
- implements PluginSource
31
- {
32
- private final Injector injector;
33
-
34
- @Inject
35
- public InjectedPluginSource(Injector injector)
36
- {
37
- this.injector = injector;
38
- }
39
-
40
- private static interface PluginFactory <T>
41
- {
42
- public T newPlugin(Injector injector);
43
- }
44
-
45
- public <T> T newPlugin(Class<T> iface, PluginType type) throws PluginSourceNotMatchException
46
- {
47
- if (type.getSourceType() != PluginSource.Type.DEFAULT) {
48
- throw new PluginSourceNotMatchException();
49
- }
50
-
51
- final String name = type.getName();
52
- try {
53
- @SuppressWarnings("unchecked")
54
- PluginFactory<T> factory = (PluginFactory<T>) injector.getInstance(
55
- Key.get(PluginFactory.class, pluginFactoryName(iface, name)));
56
- return factory.newPlugin(injector);
57
- } catch (com.google.inject.ConfigurationException ex) {
58
- throw new PluginSourceNotMatchException();
59
- }
60
- }
61
-
62
- public static <T> void registerPluginTo(Binder binder, Class<T> iface, String name, final Class<?> impl)
63
- {
64
- PluginFactory<T> factory;
65
- if (FileInputPlugin.class.isAssignableFrom(impl)) {
66
- Preconditions.checkArgument(InputPlugin.class.equals(iface));
67
- factory = new PluginFactory<T>() {
68
- @SuppressWarnings("unchecked")
69
- public T newPlugin(Injector injector)
70
- {
71
- return (T) new FileInputRunner((FileInputPlugin) injector.getInstance(impl));
72
- }
73
- };
74
- } else if (FileOutputPlugin.class.isAssignableFrom(impl)) {
75
- Preconditions.checkArgument(OutputPlugin.class.equals(iface));
76
- factory = new PluginFactory<T>() {
77
- @SuppressWarnings("unchecked")
78
- public T newPlugin(Injector injector)
79
- {
80
- return (T) new FileOutputRunner((FileOutputPlugin) injector.getInstance(impl));
81
- }
82
- };
83
- } else {
84
- Preconditions.checkArgument(iface.isAssignableFrom(impl));
85
- factory = new PluginFactory<T>() {
86
- @SuppressWarnings("unchecked")
87
- public T newPlugin(Injector injector)
88
- {
89
- return (T) injector.getInstance(impl);
90
- }
91
- };
92
- }
93
- binder.bind(PluginFactory.class).annotatedWith(pluginFactoryName(iface, name)).toInstance(factory);
94
- }
95
-
96
- private static Named pluginFactoryName(Class<?> iface, String name)
97
- {
98
- return Names.named(iface.getName() + "." + name);
99
- }
100
- }
@@ -1,112 +0,0 @@
1
- package org.embulk.plugin;
2
-
3
- import com.fasterxml.jackson.annotation.JsonProperty;
4
- import com.fasterxml.jackson.annotation.JsonValue;
5
- import java.util.Collections;
6
- import java.util.HashMap;
7
- import java.util.Map;
8
- import java.util.Objects;
9
-
10
- public final class MavenPluginType
11
- extends PluginType
12
- {
13
- private MavenPluginType(final String name, final String group, final String classifier, final String version)
14
- {
15
- super("maven", name);
16
- this.group = group;
17
- this.classifier = classifier;
18
- this.version = version;
19
-
20
- final StringBuilder fullNameBuilder = new StringBuilder();
21
- fullNameBuilder.append("maven:");
22
- fullNameBuilder.append(group);
23
- fullNameBuilder.append(":");
24
- fullNameBuilder.append(name);
25
- fullNameBuilder.append(":");
26
- fullNameBuilder.append(version);
27
- if (classifier != null) {
28
- fullNameBuilder.append(":");
29
- fullNameBuilder.append(classifier);
30
- }
31
- this.fullName = fullNameBuilder.toString();
32
-
33
- final HashMap<String, String> fullMapMutable = new HashMap<String, String>();
34
- fullMapMutable.put("source", "maven");
35
- fullMapMutable.put("name", name);
36
- fullMapMutable.put("group", group);
37
- fullMapMutable.put("version", version);
38
- this.fullMap = Collections.unmodifiableMap(fullMapMutable);
39
- }
40
-
41
- public static MavenPluginType create(
42
- final String name, final String group, final String classifier, final String version)
43
- {
44
- if (name == null || group == null || version == null) {
45
- throw new NullPointerException("\"name\", \"group\" and \"version\" must be present.");
46
- }
47
- return new MavenPluginType(name, group, classifier, version);
48
- }
49
-
50
- @JsonValue
51
- public final Map<String, String> getJsonValue()
52
- {
53
- return this.fullMap;
54
- }
55
-
56
- @JsonProperty("group")
57
- public final String getGroup()
58
- {
59
- return this.group;
60
- }
61
-
62
- @JsonProperty("classifier")
63
- public final String getClassifier()
64
- {
65
- return this.classifier;
66
- }
67
-
68
- @JsonProperty("version")
69
- public final String getVersion()
70
- {
71
- return this.version;
72
- }
73
-
74
- public final String getFullName()
75
- {
76
- return this.fullName;
77
- }
78
-
79
- @Override
80
- public final int hashCode()
81
- {
82
- return Objects.hash(getSourceType(), getName(), this.group, this.classifier, this.version);
83
- }
84
-
85
- @Override
86
- public boolean equals(Object objectOther)
87
- {
88
- if (!(objectOther instanceof MavenPluginType)) {
89
- return false;
90
- }
91
- MavenPluginType other = (MavenPluginType) objectOther;
92
- return (this.getSourceType().equals(other.getSourceType()) &&
93
- this.getName().equals(other.getName()) &&
94
- this.getGroup().equals(other.getGroup()) &&
95
- ((this.getClassifier() == null && other.getClassifier() == null) ||
96
- (this.getClassifier() != null && this.getClassifier().equals(other.getClassifier()))) &&
97
- this.getVersion().equals(other.getVersion()));
98
- }
99
-
100
- @JsonValue
101
- @Override
102
- public String toString()
103
- {
104
- return this.fullName;
105
- }
106
-
107
- private final String group;
108
- private final String classifier; // |classifier| can be null.
109
- private final String version;
110
- private final String fullName;
111
- private final Map<String, String> fullMap;
112
- }
@@ -1,993 +0,0 @@
1
- package org.embulk.plugin;
2
-
3
- import com.google.common.base.Function;
4
- import com.google.common.collect.ImmutableList;
5
- import com.google.common.collect.Iterables;
6
- import com.google.common.collect.Iterators;
7
- import java.io.ByteArrayOutputStream;
8
- import java.io.InputStream;
9
- import java.io.IOException;
10
- import java.net.JarURLConnection;
11
- import java.net.MalformedURLException;
12
- import java.net.URL;
13
- import java.net.URLClassLoader;
14
- import java.net.URLConnection;
15
- import java.net.URLStreamHandler;
16
- import java.nio.file.Path;
17
- import java.security.AccessControlContext;
18
- import java.security.AccessController;
19
- import java.security.CodeSigner;
20
- import java.security.CodeSource;
21
- import java.security.PrivilegedActionException;
22
- import java.security.PrivilegedExceptionAction;
23
- import java.util.ArrayList;
24
- import java.util.Collection;
25
- import java.util.Collections;
26
- import java.util.Enumeration;
27
- import java.util.Iterator;
28
- import java.util.List;
29
- import java.util.Vector;
30
- import java.util.jar.Attributes;
31
- import java.util.jar.JarEntry;
32
- import java.util.jar.JarInputStream;
33
- import java.util.jar.Manifest;
34
-
35
- public class PluginClassLoader
36
- extends URLClassLoader
37
- {
38
- private PluginClassLoader(
39
- final ClassLoader parentClassLoader,
40
- final URL oneNestedJarFileUrl,
41
- final Collection<String> embeddedJarPathsInNestedJar,
42
- final Collection<URL> flatJarUrls,
43
- final Collection<String> parentFirstPackages,
44
- final Collection<String> parentFirstResources)
45
- {
46
- super(combineUrlsToArray(oneNestedJarFileUrl, flatJarUrls == null ? Collections.<URL>emptyList() : flatJarUrls),
47
- parentClassLoader);
48
-
49
- // Given |oneNestedJarFileUrl| should be "file:...". |this.oneNestedJarUrlBase| should be "jar:file:...".
50
- URL oneNestedJarUrlBaseBuilt = null;
51
- if (oneNestedJarFileUrl != null) {
52
- try {
53
- oneNestedJarUrlBaseBuilt = new URL("jar", "", -1, oneNestedJarFileUrl + "!/");
54
- }
55
- catch (MalformedURLException ex) {
56
- // TODO: Notify this to reporters as far as possible.
57
- System.err.println("FATAL: Invalid JAR file URL: " + oneNestedJarFileUrl.toString());
58
- ex.printStackTrace();
59
- }
60
- }
61
- this.oneNestedJarUrlBase = oneNestedJarUrlBaseBuilt;
62
-
63
- if (embeddedJarPathsInNestedJar == null) {
64
- this.embeddedJarPathsInNestedJar = Collections.<String>emptyList();
65
- }
66
- else {
67
- this.embeddedJarPathsInNestedJar = Collections.unmodifiableCollection(embeddedJarPathsInNestedJar);
68
- }
69
- this.parentFirstPackagePrefixes = ImmutableList.copyOf(
70
- Iterables.transform(parentFirstPackages, new Function<String, String>() {
71
- public String apply(String pkg)
72
- {
73
- return pkg + ".";
74
- }
75
- }));
76
- this.parentFirstResourcePrefixes = ImmutableList.copyOf(
77
- Iterables.transform(parentFirstResources, new Function<String, String>() {
78
- public String apply(String pkg)
79
- {
80
- return pkg + "/";
81
- }
82
- }));
83
- this.accessControlContext = AccessController.getContext();
84
- }
85
-
86
- @Deprecated // Constructing directly with the constructor is deprecated (no warnings). Use static creator methods.
87
- public PluginClassLoader(
88
- final Collection<URL> flatJarUrls,
89
- final ClassLoader parentClassLoader,
90
- final Collection<String> parentFirstPackages,
91
- final Collection<String> parentFirstResources)
92
- {
93
- this(parentClassLoader, null, null, flatJarUrls, parentFirstPackages, parentFirstResources);
94
- }
95
-
96
- /**
97
- * Creates PluginClassLoader for plugins with dependency JARs flat on the file system, like Gem-based plugins.
98
- */
99
- public static PluginClassLoader createForFlatJars(
100
- final ClassLoader parentClassLoader,
101
- final Collection<URL> flatJarUrls,
102
- final Collection<String> parentFirstPackages,
103
- final Collection<String> parentFirstResources)
104
- {
105
- return new PluginClassLoader(
106
- parentClassLoader,
107
- null,
108
- null,
109
- flatJarUrls,
110
- parentFirstPackages,
111
- parentFirstResources);
112
- }
113
-
114
- /**
115
- * Creates PluginClassLoader for plugins with dependency JARs embedded in the plugin JAR itself.
116
- *
117
- * @param parentClassLoader the parent ClassLoader of this PluginClassLoader instance
118
- * @param oneNestedJarFileUrl "file:" URL of the plugin JAR file
119
- * @param embeddedJarPathsInNestedJar collection of resource names of embedded dependency JARs in the plugin JAR
120
- * @param parentFirstPackages collection of package names that are to be loaded first before the plugin's
121
- * @param parentFirstResources collection of resource names that are to be loaded first before the plugin's
122
- */
123
- public static PluginClassLoader createForNestedJar(
124
- final ClassLoader parentClassLoader,
125
- final URL oneNestedJarFileUrl,
126
- final Collection<String> embeddedJarPathsInNestedJar,
127
- final Collection<String> parentFirstPackages,
128
- final Collection<String> parentFirstResources)
129
- {
130
- return new PluginClassLoader(
131
- parentClassLoader,
132
- oneNestedJarFileUrl,
133
- embeddedJarPathsInNestedJar,
134
- null,
135
- parentFirstPackages,
136
- parentFirstResources);
137
- }
138
-
139
- /**
140
- * Adds the specified path to the list of URLs (for {@code URLClassLoader}) to search for classes and resources.
141
- *
142
- * It internally calls {@code URLClassLoader#addURL}.
143
- *
144
- * Some plugins (embulk-input-jdbc, for example) are calling this method to load external JAR files.
145
- *
146
- * @see <a href="https://github.com/embulk/embulk-input-jdbc/blob/ebfff0b249d507fc730c87e08b56e6aa492060ca/embulk-input-jdbc/src/main/java/org/embulk/input/jdbc/AbstractJdbcInputPlugin.java#L586-L595">embulk-input-jdbc</a>
147
- */
148
- public void addPath(Path path)
149
- {
150
- try {
151
- addUrl(path.toUri().toURL());
152
- } catch (MalformedURLException ex) {
153
- throw new IllegalArgumentException(ex);
154
- }
155
- }
156
-
157
- public void addUrl(URL url)
158
- {
159
- super.addURL(url);
160
- }
161
-
162
- /**
163
- * Finds a class defined by the given name from given JARs and JARs in the given JAR.
164
- *
165
- * Classes directly inthe given JARs are always prioritized. Only if no such a class is found
166
- * directly in the given JAR, it tries to find the class in JARs in the given JAR.
167
- */
168
- @Override
169
- protected Class<?> findClass(final String className)
170
- throws ClassNotFoundException
171
- {
172
- if (this.oneNestedJarUrlBase == null || this.embeddedJarPathsInNestedJar.isEmpty()) {
173
- // Multiple flat JARs -- Gem-based plugins, or Single JAR (JAR-based plugins) without any embedded JAR
174
- return super.findClass(className);
175
- }
176
- else {
177
- // Single nested JAR -- JAR-based plugins
178
- try {
179
- // Classes directly in the plugin JAR are always prioritized.
180
- return super.findClass(className);
181
- }
182
- catch (ClassNotFoundException directClassNotFoundException) {
183
- try {
184
- return AccessController.doPrivileged(
185
- new PrivilegedExceptionAction<Class<?>>() {
186
- public Class<?> run()
187
- throws ClassNotFoundException
188
- {
189
- try {
190
- return defineClassFromEmbeddedJars(className);
191
- }
192
- catch (ClassNotFoundException | LinkageError | ClassCastException ex) {
193
- throw ex;
194
- }
195
- catch (Throwable ex) {
196
- // Resource found from JARs in the JAR, but failed to load it as a class.
197
- throw new ClassNotFoundException(className, ex);
198
- }
199
- }
200
- }, this.accessControlContext);
201
- } catch (PrivilegedActionException ex) {
202
- final Throwable internalException = ex.getException();
203
- if (internalException instanceof ClassNotFoundException) {
204
- throw (ClassNotFoundException) internalException;
205
- }
206
- if (internalException instanceof LinkageError) {
207
- throw (LinkageError) internalException;
208
- }
209
- if (internalException instanceof ClassCastException) {
210
- throw (ClassCastException) internalException;
211
- }
212
- throw new ClassNotFoundException(className, ex);
213
- }
214
- }
215
- }
216
- }
217
-
218
- /**
219
- * Loads the class with the specified binary name prioritized by the "parent-first" condition.
220
- *
221
- * It copy-cats {@code ClassLoader#loadClass} while the "parent-first" priorities are considered.
222
- *
223
- * If the specified class is "parent-first", it behaves the same as {@code ClassLoader#loadClass} ordered as below.
224
- *
225
- * <ol>
226
- *
227
- * <li><p>Invoke the {@code #findLoadedClass} method to check if the class has already been loaded.</p></li>
228
- *
229
- * <li><p>Invoke the parent's {@code #loadClass} method.
230
- *
231
- * <li><p>Invoke the {@code #findClass} method of this class loader to find the class.</p></li>
232
- *
233
- * </ol>
234
- *
235
- * If the specified class is "NOT parent-first", the 2nd and 3rd actions are swapped.
236
- *
237
- * @see <a href="https://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#loadClass(java.lang.String,%20boolean)">Oracle Java7's ClassLoader#loadClass</a>
238
- * @see <a href="http://hg.openjdk.java.net/jdk7u/jdk7u/jdk/file/jdk7u141-b02/src/share/classes/java/lang/ClassLoader.java">OpenJDK7's ClassLoader</a>
239
- */
240
- @Override
241
- protected Class<?> loadClass(String name, boolean resolve)
242
- throws ClassNotFoundException
243
- {
244
- synchronized (getClassLoadingLock(name)) {
245
- // If the class has already been loaded by this {@code ClassLoader} or the parent's {@code ClassLoader},
246
- // find the loaded class and return it.
247
- final Class<?> loadedClass = findLoadedClass(name);
248
-
249
- if (loadedClass != null) {
250
- return resolveClass(loadedClass, resolve);
251
- }
252
-
253
- final boolean parentFirst = isParentFirstPackage(name);
254
-
255
- // If the class is "not parent-first" (not to be loaded by the parent at first),
256
- // try {@code #findClass} of the child's ({@code PluginClassLoader}'s).
257
- if (!parentFirst) {
258
- try {
259
- return resolveClass(findClass(name), resolve);
260
- } catch (ClassNotFoundException ignored) {
261
- }
262
- }
263
-
264
- // If the class is "parent-first" (to be loaded by the parent at first), try this part at first.
265
- // If the class is "not parent-first" (not to be loaded by the parent at first), the above part runs first.
266
- try {
267
- return resolveClass(getParent().loadClass(name), resolve);
268
- } catch (ClassNotFoundException ignored) {
269
- }
270
-
271
- // If the class is "parent-first" (to be loaded by the parent at first), this part runs after the above.
272
- if (parentFirst) {
273
- return resolveClass(findClass(name), resolve);
274
- }
275
-
276
- throw new ClassNotFoundException(name);
277
- }
278
- }
279
-
280
- private Class<?> resolveClass(Class<?> clazz, boolean resolve)
281
- {
282
- if (resolve) {
283
- resolveClass(clazz);
284
- }
285
- return clazz;
286
- }
287
-
288
- /**
289
- * Finds a resource recognized as the given name from given JARs and JARs in the given JAR.
290
- *
291
- * Resources directly in the given JARs are always prioritized. Only if no such a resource is found
292
- * directly in the given JAR, it tries to find the resource in JARs in the given JAR.
293
- *
294
- * Note that URLClassLoader#findResource is public while ClassLoader#findResource is protected.
295
- */
296
- @Override
297
- public URL findResource(final String resourceName)
298
- {
299
- if (this.oneNestedJarUrlBase == null || this.embeddedJarPathsInNestedJar.isEmpty()) {
300
- // Multiple flat JARs -- Gem-based plugins, or Single JAR (JAR-based plugins) without any embedded JAR
301
- return super.findResource(resourceName);
302
- }
303
- else {
304
- // Single nested JAR -- JAR-based plugins
305
- // Classes directly in the plugin JAR are always prioritized.
306
- final URL rootUrl = super.findResource(resourceName);
307
- if (rootUrl != null) {
308
- return rootUrl;
309
- }
310
-
311
- try {
312
- return AccessController.doPrivileged(
313
- new PrivilegedExceptionAction<URL>() {
314
- public URL run()
315
- {
316
- return findResourceFromEmbeddedJars(resourceName);
317
- }
318
- }, this.accessControlContext);
319
- } catch (PrivilegedActionException ignored) {
320
- }
321
-
322
- return null;
323
- }
324
- }
325
-
326
- /**
327
- * Finds resources recognized as the given name from given JARs and JARs in the given JAR.
328
- *
329
- * Resources directly in the given JARs precede. Resources in JARs in the given JAR follow resources
330
- * directly in the given JARs.
331
- *
332
- * Note that URLClassLoader#findResources is public while ClassLoader#findResources is protected.
333
- */
334
- @Override
335
- public Enumeration<URL> findResources(final String resourceName)
336
- throws IOException
337
- {
338
- if (this.oneNestedJarUrlBase == null || this.embeddedJarPathsInNestedJar.isEmpty()) {
339
- // Multiple flat JARs -- Gem-based plugins, or Single JAR (JAR-based plugins) without any embedded JAR
340
- return super.findResources(resourceName);
341
- }
342
- else {
343
- // Single nested JAR -- JAR-based plugins
344
- final Vector<URL> urls = new Vector<URL>();
345
-
346
- // Classes directly in the plugin JAR are always prioritized.
347
- // Note that |super.findResources| may throw IOException.
348
- for (final Enumeration<URL> rootUrls = super.findResources(resourceName); rootUrls.hasMoreElements(); ) {
349
- urls.add(rootUrls.nextElement());
350
- }
351
-
352
- try {
353
- final List<URL> childUrls = AccessController.doPrivileged(
354
- new PrivilegedExceptionAction<List<URL>>() {
355
- public List<URL> run()
356
- throws IOException
357
- {
358
- return findResourcesFromEmbeddedJars(resourceName);
359
- }
360
- }, this.accessControlContext);
361
- urls.addAll(childUrls);
362
- } catch (PrivilegedActionException ignored) {
363
- }
364
-
365
- return urls.elements();
366
- }
367
- }
368
-
369
- @Override
370
- public URL getResource(String name)
371
- {
372
- boolean childFirst = isParentFirstPath(name);
373
-
374
- if (childFirst) {
375
- URL childUrl = findResource(name);
376
- if (childUrl != null) {
377
- return childUrl;
378
- }
379
- }
380
-
381
- URL parentUrl = getParent().getResource(name);
382
- if (parentUrl != null) {
383
- return parentUrl;
384
- }
385
-
386
- if (!childFirst) {
387
- URL childUrl = findResource(name);
388
- if (childUrl != null) {
389
- return childUrl;
390
- }
391
- }
392
-
393
- return null;
394
- }
395
-
396
- @Override
397
- public InputStream getResourceAsStream(final String resourceName)
398
- {
399
- final boolean childFirst = isParentFirstPath(resourceName);
400
-
401
- if (childFirst) {
402
- final InputStream childInputStream = getResourceAsStreamFromChild(resourceName);
403
- if (childInputStream != null) {
404
- return childInputStream;
405
- }
406
- }
407
-
408
- final InputStream parentInputStream = getParent().getResourceAsStream(resourceName);
409
- if (parentInputStream != null) {
410
- return parentInputStream;
411
- }
412
-
413
- if (!childFirst) {
414
- final InputStream childInputStream = getResourceAsStreamFromChild(resourceName);
415
- if (childInputStream != null) {
416
- return childInputStream;
417
- }
418
- }
419
-
420
- return null;
421
- }
422
-
423
- @Override
424
- public Enumeration<URL> getResources(String name)
425
- throws IOException
426
- {
427
- List<Iterator<URL>> resources = new ArrayList<>();
428
-
429
- boolean parentFirst = isParentFirstPath(name);
430
-
431
- if (!parentFirst) {
432
- Iterator<URL> childResources = Iterators.forEnumeration(findResources(name));
433
- resources.add(childResources);
434
- }
435
-
436
- Iterator<URL> parentResources = Iterators.forEnumeration(getParent().getResources(name));
437
- resources.add(parentResources);
438
-
439
- if (parentFirst) {
440
- Iterator<URL> childResources = Iterators.forEnumeration(findResources(name));
441
- resources.add(childResources);
442
- }
443
-
444
- return Iterators.asEnumeration(Iterators.concat(resources.iterator()));
445
- }
446
-
447
- /**
448
- * URLStreamHandler to handle resources in embedded JARs in the plugin JAR.
449
- */
450
- private static class PluginClassURLStreamHandler
451
- extends URLStreamHandler
452
- {
453
- public PluginClassURLStreamHandler(final String protocol)
454
- {
455
- this.protocol = protocol;
456
- }
457
-
458
- @Override
459
- protected URLConnection openConnection(final URL url)
460
- throws IOException
461
- {
462
- // Note that declaring variables here may cause unexpected behaviors.
463
- // https://stackoverflow.com/questions/9952815/s3-java-client-fails-a-lot-with-premature-end-of-content-length-delimited-messa
464
- return new URLConnection(url) {
465
- @Override
466
- public void connect()
467
- {
468
- }
469
-
470
- @Override
471
- public InputStream getInputStream()
472
- throws IOException
473
- {
474
- final URL embulkPluginJarUrl = getURL();
475
- if (!embulkPluginJarUrl.getProtocol().equals(protocol)) {
476
- return null;
477
- }
478
- final String[] embulkPluginJarUrlSeparate = embulkPluginJarUrl.getPath().split("!!/");
479
- if (embulkPluginJarUrlSeparate.length != 2) {
480
- return null;
481
- }
482
- final URL embeddedJarUrl = new URL(embulkPluginJarUrlSeparate[0]);
483
- final String embeddedResourceName = embulkPluginJarUrlSeparate[1];
484
-
485
- final JarURLConnection embeddedJarURLConnection;
486
- try {
487
- final URLConnection urlConnection = embeddedJarUrl.openConnection();
488
- embeddedJarURLConnection = (JarURLConnection) urlConnection;
489
- }
490
- catch (ClassCastException ex) {
491
- return null;
492
- }
493
-
494
- final JarInputStream embeddedJarInputStream =
495
- new JarInputStream(embeddedJarURLConnection.getInputStream());
496
-
497
- // Note that |JarInputStream.getNextJarEntry| may throw IOException.
498
- JarEntry jarEntry = embeddedJarInputStream.getNextJarEntry();
499
- while (jarEntry != null) {
500
- if (jarEntry.getName().equals(embeddedResourceName)) {
501
- return embeddedJarInputStream; // The InputStream points the specific "JAR entry".
502
- }
503
- // Note that |JarInputStream.getNextJarEntry| may throw IOException.
504
- jarEntry = embeddedJarInputStream.getNextJarEntry();
505
- }
506
- return null;
507
- }
508
- };
509
- }
510
-
511
- public final String protocol;
512
- }
513
-
514
- private static URL[] combineUrlsToArray(final URL oneNestedJarFileUrl, final Collection<URL> flatJarUrls)
515
- {
516
- final int offset;
517
- final URL[] allDirectJarUrls;
518
- if (oneNestedJarFileUrl == null) {
519
- offset = 0;
520
- allDirectJarUrls = new URL[flatJarUrls.size()];
521
- }
522
- else {
523
- offset = 1;
524
- allDirectJarUrls = new URL[flatJarUrls.size() + 1];
525
- allDirectJarUrls[0] = oneNestedJarFileUrl;
526
- }
527
- int i = 0;
528
- for (final URL flatJarUrl : flatJarUrls) {
529
- allDirectJarUrls[i + offset] = flatJarUrl;
530
- ++i;
531
- }
532
- return allDirectJarUrls;
533
- }
534
-
535
- /**
536
- * Defines a class with given class name from JARs embedded in the plugin JAR.
537
- *
538
- * It tries to continue even if Exceptions are throws in one of embedded JARs so that
539
- * it can find the target class without affected from other unrelated JARs.
540
- */
541
- private Class<?> defineClassFromEmbeddedJars(final String className)
542
- throws ClassNotFoundException
543
- {
544
- final String classResourceName = className.replace('.', '/').concat(".class");
545
-
546
- Throwable lastException = null;
547
- // TODO: Speed up class loading by caching?
548
- for (final String embeddedJarPath : this.embeddedJarPathsInNestedJar) {
549
- final URL embeddedJarUrl;
550
- final JarURLConnection embeddedJarUrlConnection;
551
- final JarInputStream embeddedJarInputStream;
552
- try {
553
- embeddedJarUrl = getEmbeddedJarUrl(embeddedJarPath);
554
- embeddedJarUrlConnection = getEmbeddedJarURLConnection(embeddedJarUrl);
555
- embeddedJarInputStream = getEmbeddedJarInputStream(embeddedJarUrlConnection);
556
- }
557
- catch (IOException ex) {
558
- lastException = ex;
559
- continue;
560
- }
561
-
562
- final Manifest manifest;
563
- try {
564
- manifest = embeddedJarUrlConnection.getManifest();
565
- }
566
- catch (IOException ex) {
567
- // TODO: Notify this to reporters as far as possible.
568
- lastException = ex;
569
- System.err.println("Failed to load manifest in embedded JAR: " + embeddedJarPath);
570
- ex.printStackTrace();
571
- continue;
572
- }
573
-
574
- JarEntry jarEntry;
575
- try {
576
- jarEntry = embeddedJarInputStream.getNextJarEntry();
577
- }
578
- catch (IOException ex) {
579
- // TODO: Notify this to reporters as far as possible.
580
- lastException = ex;
581
- System.err.println("Failed to load entry in embedded JAR: " + embeddedJarPath);
582
- ex.printStackTrace();
583
- continue;
584
- }
585
- jarEntries: while (jarEntry != null) {
586
- if (jarEntry.getName().equals(classResourceName)) {
587
- final int lastDotIndexInClassName = className.lastIndexOf('.');
588
- final String packageName;
589
- if (lastDotIndexInClassName != -1) {
590
- packageName = className.substring(0, lastDotIndexInClassName);
591
- }
592
- else {
593
- packageName = null;
594
- }
595
-
596
- final URL codeSourceUrl = embeddedJarUrl;
597
-
598
- // Define the package if the package is not loaded / defined yet.
599
- if (packageName != null) {
600
- // TODO: Consider package sealing.
601
- // https://docs.oracle.com/javase/tutorial/deployment/jar/sealman.html
602
- if (this.getPackage(packageName) == null) {
603
- try {
604
- final Attributes fileAttributes;
605
- final Attributes mainAttributes;
606
- if (manifest != null) {
607
- fileAttributes = manifest.getAttributes(classResourceName);
608
- mainAttributes = manifest.getMainAttributes();
609
- }
610
- else {
611
- fileAttributes = null;
612
- mainAttributes = null;
613
- }
614
-
615
- this.definePackage(
616
- packageName,
617
- getAttributeFromAttributes(mainAttributes, fileAttributes, classResourceName,
618
- Attributes.Name.SPECIFICATION_TITLE),
619
- getAttributeFromAttributes(mainAttributes, fileAttributes, classResourceName,
620
- Attributes.Name.SPECIFICATION_VERSION),
621
- getAttributeFromAttributes(mainAttributes, fileAttributes, classResourceName,
622
- Attributes.Name.SPECIFICATION_VENDOR),
623
- getAttributeFromAttributes(mainAttributes, fileAttributes, classResourceName,
624
- Attributes.Name.IMPLEMENTATION_TITLE),
625
- getAttributeFromAttributes(mainAttributes, fileAttributes, classResourceName,
626
- Attributes.Name.IMPLEMENTATION_VERSION),
627
- getAttributeFromAttributes(mainAttributes, fileAttributes, classResourceName,
628
- Attributes.Name.IMPLEMENTATION_VENDOR),
629
- null);
630
- }
631
- catch (IllegalArgumentException ex) {
632
- // The package duplicates -- in parallel cases
633
- if (getPackage(packageName) == null) {
634
- // TODO: Notify this to reporters as far as possible.
635
- lastException = ex;
636
- System.err.println("FATAL: Should not happen. Package duplicated: " + packageName);
637
- ex.printStackTrace();
638
- continue;
639
- }
640
- }
641
- }
642
- }
643
-
644
- final long classResourceSize = jarEntry.getSize();
645
- final byte[] classResourceBytes;
646
- final long actualSize;
647
-
648
- if (classResourceSize > -1) { // JAR entry size available
649
- classResourceBytes = new byte[(int) classResourceSize];
650
- try {
651
- actualSize = embeddedJarInputStream.read(classResourceBytes, 0, (int) classResourceSize);
652
- }
653
- catch (IOException ex) {
654
- // TODO: Notify this to reporters as far as possible.
655
- lastException = ex;
656
- System.err.println("Failed to load entry in embedded JAR: " + classResourceName);
657
- ex.printStackTrace();
658
- break jarEntries; // Breaking from loading since this JAR looks broken.
659
- }
660
- if (actualSize != classResourceSize) {
661
- // TODO: Notify this to reporters as far as possible.
662
- System.err.println("Broken entry in embedded JAR: " + classResourceName);
663
- break jarEntries; // Breaking from loading since this JAR looks broken.
664
- }
665
- }
666
- else { // JAR entry size unavailable
667
- final ByteArrayOutputStream bytesStream = new ByteArrayOutputStream();
668
- final byte[] buffer = new byte[1024];
669
- long accumulatedSize = 0;
670
- while (true) {
671
- final long readSize;
672
- try {
673
- readSize = embeddedJarInputStream.read(buffer, 0, 1024);
674
- }
675
- catch (IOException ex) {
676
- // TODO: Notify this to reporters as far as possible.
677
- lastException = ex;
678
- System.err.println("Failed to load entry in embedded JAR: " + classResourceName);
679
- ex.printStackTrace();
680
- break jarEntries; // Breaking from loading since this JAR looks broken.
681
- }
682
-
683
- if (readSize < 0) {
684
- break;
685
- }
686
-
687
- bytesStream.write(buffer, 0, (int) readSize);
688
- accumulatedSize += readSize;
689
- }
690
- actualSize = accumulatedSize;
691
- classResourceBytes = bytesStream.toByteArray();
692
- }
693
-
694
- final CodeSource codeSource = new CodeSource(codeSourceUrl, (CodeSigner[]) null);
695
- final Class<?> definedClass;
696
- try {
697
- definedClass = defineClass(className, classResourceBytes, 0, (int) actualSize, codeSource);
698
- }
699
- catch (Throwable ex) {
700
- // TODO: Notify this to reporters as far as possible.
701
- lastException = ex;
702
- System.err.println("Failed to load entry in embedded JAR: " + classResourceName);
703
- ex.printStackTrace();
704
- continue;
705
- }
706
- return definedClass;
707
- }
708
- try {
709
- jarEntry = embeddedJarInputStream.getNextJarEntry();
710
- }
711
- catch (IOException ex) {
712
- // TODO: Notify this to reporters as far as possible.
713
- lastException = ex;
714
- System.err.println("Failed to load entry in embedded JAR: " + classResourceName);
715
- ex.printStackTrace();
716
- break jarEntries; // Breaking from loading since this JAR looks broken.
717
- }
718
- }
719
- }
720
- if (lastException != null) {
721
- throw new ClassNotFoundException(className, lastException);
722
- }
723
- else {
724
- throw new ClassNotFoundException(className);
725
- }
726
- }
727
-
728
- private InputStream getResourceAsStreamFromChild(final String resourceName)
729
- {
730
- if (this.oneNestedJarUrlBase == null || this.embeddedJarPathsInNestedJar.isEmpty()) {
731
- // Multiple flat JARs -- Gem-based plugins, or Single JAR (JAR-based plugins) without any embedded JAR
732
- return super.getResourceAsStream(resourceName);
733
- }
734
- else {
735
- // Single nested JAR -- JAR-based plugins
736
- // Resources directly in the plugin JAR are prioritized.
737
- final InputStream inputStream = super.getResourceAsStream(resourceName);
738
- if (inputStream == null) {
739
- try {
740
- final InputStream childInputStream = AccessController.doPrivileged(
741
- new PrivilegedExceptionAction<InputStream>() {
742
- public InputStream run()
743
- {
744
- return getResourceAsStreamFromEmbeddedJars(resourceName);
745
- }
746
- }, this.accessControlContext);
747
- if (childInputStream != null) {
748
- return childInputStream;
749
- }
750
- } catch (PrivilegedActionException ignored) {
751
- }
752
- }
753
- }
754
- return null;
755
- }
756
-
757
- private InputStream getResourceAsStreamFromEmbeddedJars(final String resourceName)
758
- {
759
- for (final String embeddedJarPath : this.embeddedJarPathsInNestedJar) {
760
- final JarInputStream embeddedJarInputStream;
761
- try {
762
- embeddedJarInputStream = getEmbeddedJarInputStream(embeddedJarPath);
763
- }
764
- catch (IOException ex) {
765
- // TODO: Notify this to reporters as far as possible.
766
- System.err.println("Failed to load entry in embedded JAR: " + resourceName + " / " + embeddedJarPath);
767
- ex.printStackTrace();
768
- continue;
769
- }
770
-
771
- JarEntry jarEntry;
772
- try {
773
- jarEntry = embeddedJarInputStream.getNextJarEntry();
774
- }
775
- catch (IOException ex) {
776
- // TODO: Notify this to reporters as far as possible.
777
- System.err.println("Failed to load entry in embedded JAR: " + resourceName + " / " + embeddedJarPath);
778
- ex.printStackTrace();
779
- continue;
780
- }
781
- while (jarEntry != null) {
782
- if (jarEntry.getName().equals(resourceName)) {
783
- return embeddedJarInputStream; // Pointing the specific "JAR entry"
784
- }
785
- }
786
- }
787
- return null;
788
- }
789
-
790
- private URL findResourceFromEmbeddedJars(final String resourceName)
791
- {
792
- for (final String embeddedJarPath : this.embeddedJarPathsInNestedJar) {
793
- final URL embeddedJarUrl;
794
- final JarURLConnection embeddedJarUrlConnection;
795
- final JarInputStream embeddedJarInputStream;
796
- try {
797
- embeddedJarUrl = getEmbeddedJarUrl(embeddedJarPath);
798
- embeddedJarUrlConnection = getEmbeddedJarURLConnection(embeddedJarUrl);
799
- embeddedJarInputStream = getEmbeddedJarInputStream(embeddedJarUrlConnection);
800
- }
801
- catch (IOException ex) {
802
- // TODO: Notify this to reporters as far as possible.
803
- System.err.println("Failed to load entry in embedded JAR: " +
804
- resourceName + " / " + embeddedJarPath);
805
- ex.printStackTrace();
806
- continue;
807
- }
808
-
809
- JarEntry jarEntry;
810
- try {
811
- jarEntry = embeddedJarInputStream.getNextJarEntry();
812
- }
813
- catch (IOException ex) {
814
- // TODO: Notify this to reporters as far as possible.
815
- System.err.println("Failed to load entry in embedded JAR: " +
816
- resourceName + " / " + embeddedJarPath);
817
- ex.printStackTrace();
818
- continue;
819
- }
820
- jarEntries: while (jarEntry != null) {
821
- if (jarEntry.getName().equals(resourceName)) {
822
- // For resources (not classes) in nested JARs, the schema and the URL should be like:
823
- // "embulk-plugin-jar:jar:file://.../plugin.jar!/classpath/library.jar!!/org.library/resource.txt"
824
- //
825
- // The "embulk-plugin-jar" URL is processed with |PluginClassURLStreamHandler|.
826
- // See also: https://www.ibm.com/developerworks/library/j-onejar/index.html
827
- //
828
- // The URL lives only in the JVM execution.
829
- try {
830
- // The URL lives only in the JVM execution.
831
- return new URL("embulk-plugin-jar", "", -1, embeddedJarUrl + "!!/" + resourceName,
832
- new PluginClassURLStreamHandler("embulk-plugin-jar"));
833
- }
834
- catch (MalformedURLException ex) {
835
- // TODO: Notify this to reporters as far as possible.
836
- System.err.println("Failed to load entry in embedded JAR: " +
837
- resourceName + " / " + embeddedJarPath);
838
- ex.printStackTrace();
839
- break jarEntries;
840
- }
841
- }
842
- try {
843
- jarEntry = embeddedJarInputStream.getNextJarEntry();
844
- }
845
- catch (IOException ex) {
846
- // TODO: Notify this to reporters as far as possible.
847
- System.err.println("Failed to load entry in embedded JAR: " +
848
- resourceName + " / " + embeddedJarPath);
849
- ex.printStackTrace();
850
- break jarEntries;
851
- }
852
- }
853
- }
854
- return null;
855
- }
856
-
857
- private List<URL> findResourcesFromEmbeddedJars(final String resourceName)
858
- throws IOException
859
- {
860
- final ArrayList<URL> resourceUrls = new ArrayList<URL>();
861
- for (final String embeddedJarPath : this.embeddedJarPathsInNestedJar) {
862
- final URL embeddedJarUrl = getEmbeddedJarUrl(embeddedJarPath);
863
- final JarURLConnection embeddedJarUrlConnection = getEmbeddedJarURLConnection(embeddedJarUrl);
864
- final JarInputStream embeddedJarInputStream = getEmbeddedJarInputStream(embeddedJarUrlConnection);
865
-
866
- // Note that |JarInputStream.getNextJarEntry| may throw IOException.
867
- JarEntry jarEntry = embeddedJarInputStream.getNextJarEntry();
868
- while (jarEntry != null) {
869
- if (jarEntry.getName().equals(resourceName)) {
870
- // For resources (not classes) in nested JARs, the schema and the URL should be like:
871
- // "embulk-plugin-jar:jar:file://.../plugin.jar!/classpath/library.jar!/org.library/resource.txt"
872
- //
873
- // The "embulk-plugin-jar" URL is processed with |PluginClassURLStreamHandler|.
874
- // See also: https://www.ibm.com/developerworks/library/j-onejar/index.html
875
- //
876
- // The URL lives only in the JVM execution.
877
- //
878
- // Note that |new URL| may throw MalformedURLException (extending IOException).
879
- resourceUrls.add(new URL("embulk-plugin-jar", "", -1, embeddedJarUrl + "!!/" + resourceName,
880
- new PluginClassURLStreamHandler("embulk-plugin-jar")));
881
- }
882
- // Note that |JarInputStream.getNextJarEntry| may throw IOException.
883
- jarEntry = embeddedJarInputStream.getNextJarEntry();
884
- }
885
- }
886
- return resourceUrls;
887
- }
888
-
889
- private URL getEmbeddedJarUrl(final String embeddedJarPath)
890
- throws MalformedURLException
891
- {
892
- final URL embeddedJarUrl;
893
- try {
894
- embeddedJarUrl = new URL(this.oneNestedJarUrlBase, embeddedJarPath);
895
- }
896
- catch (MalformedURLException ex) {
897
- // TODO: Notify this to reporters as far as possible.
898
- System.err.println("Failed to load entry in embedded JAR: " + embeddedJarPath);
899
- ex.printStackTrace();
900
- throw ex;
901
- }
902
- return embeddedJarUrl;
903
- }
904
-
905
- private JarURLConnection getEmbeddedJarURLConnection(final URL embeddedJarUrl)
906
- throws IOException
907
- {
908
- final JarURLConnection embeddedJarURLConnection;
909
- try {
910
- final URLConnection urlConnection = embeddedJarUrl.openConnection();
911
- embeddedJarURLConnection = (JarURLConnection) urlConnection;
912
- }
913
- catch (IOException ex) {
914
- // TODO: Notify this to reporters as far as possible.
915
- System.err.println("Failed to load entry in embedded JAR: " + embeddedJarUrl.toString());
916
- ex.printStackTrace();
917
- throw ex;
918
- }
919
- return embeddedJarURLConnection;
920
- }
921
-
922
- private JarInputStream getEmbeddedJarInputStream(final JarURLConnection embeddedJarURLConnection)
923
- throws IOException
924
- {
925
- final JarInputStream embeddedJarInputStream;
926
- try {
927
- final InputStream inputStream = embeddedJarURLConnection.getInputStream();
928
- embeddedJarInputStream = new JarInputStream(inputStream);
929
- }
930
- catch (IOException ex) {
931
- // TODO: Notify this to reporters as far as possible.
932
- System.err.println("Failed to load entry in embedded JAR: " + embeddedJarURLConnection.toString());
933
- ex.printStackTrace();
934
- throw ex;
935
- }
936
- return embeddedJarInputStream;
937
- }
938
-
939
- private JarInputStream getEmbeddedJarInputStream(final String embeddedJarPath)
940
- throws IOException
941
- {
942
- final URL embeddedJarUrl = getEmbeddedJarUrl(embeddedJarPath);
943
- final JarURLConnection embeddedJarUrlConnection = getEmbeddedJarURLConnection(embeddedJarUrl);
944
- return getEmbeddedJarInputStream(embeddedJarUrlConnection);
945
- }
946
-
947
- private static String getAttributeFromAttributes(
948
- final Attributes mainAttributes,
949
- final Attributes fileAttributes,
950
- final String classResourceName,
951
- final Attributes.Name attributeName)
952
- {
953
- if (fileAttributes != null) {
954
- final String value = fileAttributes.getValue(attributeName);
955
- if (value != null) {
956
- return value;
957
- }
958
- }
959
- if (mainAttributes != null) {
960
- final String value = mainAttributes.getValue(attributeName);
961
- if (value != null) {
962
- return value;
963
- }
964
- }
965
- return null;
966
- }
967
-
968
- private boolean isParentFirstPackage(String name)
969
- {
970
- for (String pkg : parentFirstPackagePrefixes) {
971
- if (name.startsWith(pkg)) {
972
- return true;
973
- }
974
- }
975
- return false;
976
- }
977
-
978
- private boolean isParentFirstPath(String name)
979
- {
980
- for (String path : parentFirstResourcePrefixes) {
981
- if (name.startsWith(path)) {
982
- return true;
983
- }
984
- }
985
- return false;
986
- }
987
-
988
- private final URL oneNestedJarUrlBase;
989
- private final Collection<String> embeddedJarPathsInNestedJar;
990
- private final List<String> parentFirstPackagePrefixes;
991
- private final List<String> parentFirstResourcePrefixes;
992
- private final AccessControlContext accessControlContext;
993
- }