embulk 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +5 -13
  2. data/.travis.yml +16 -0
  3. data/Gemfile +0 -1
  4. data/README.md +37 -19
  5. data/Rakefile +5 -37
  6. data/bin/embulk +1 -1
  7. data/build.gradle +178 -95
  8. data/embulk-core/build.gradle +1 -1
  9. data/embulk-core/src/main/java/org/embulk/command/Runner.java +11 -10
  10. data/embulk-core/src/main/java/org/embulk/config/ConfigDiff.java +26 -0
  11. data/embulk-core/src/main/java/org/embulk/config/ConfigInject.java +14 -0
  12. data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +2 -2
  13. data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +4 -3
  14. data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +5 -3
  15. data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +1 -0
  16. data/embulk-core/src/main/java/org/embulk/exec/ExecutionResult.java +6 -6
  17. data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +19 -19
  18. data/embulk-core/src/main/java/org/embulk/exec/LocalExecutor.java +61 -36
  19. data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +4 -0
  20. data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +16 -1
  21. data/embulk-core/src/main/java/org/embulk/spi/Column.java +1 -1
  22. data/embulk-core/src/main/java/org/embulk/spi/{SchemaVisitor.java → ColumnVisitor.java} +1 -1
  23. data/embulk-core/src/main/java/org/embulk/spi/Exec.java +3 -3
  24. data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +2 -2
  25. data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +3 -3
  26. data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +3 -3
  27. data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +3 -3
  28. data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +3 -3
  29. data/embulk-core/src/main/java/org/embulk/spi/FilterPlugin.java +1 -1
  30. data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +2 -2
  31. data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +3 -3
  32. data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +3 -3
  33. data/embulk-core/src/main/java/org/embulk/spi/PluginClassLoader.java +80 -0
  34. data/embulk-core/src/main/java/org/embulk/spi/Schema.java +1 -1
  35. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +2 -2
  36. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +2 -2
  37. data/embulk-core/src/main/java/org/embulk/spi/util/Filters.java +1 -1
  38. data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +2 -2
  39. data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +6 -6
  40. data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +6 -6
  41. data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +1 -1
  42. data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +1 -0
  43. data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +2 -2
  44. data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +1 -1
  45. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +3 -3
  46. data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +4 -4
  47. data/embulk-docs/Makefile +178 -0
  48. data/embulk-docs/build.gradle +20 -0
  49. data/embulk-docs/make.bat +243 -0
  50. data/embulk-docs/push-gh-pages.sh +29 -0
  51. data/embulk-docs/src/conf.py +260 -0
  52. data/embulk-docs/src/index.rst +19 -0
  53. data/embulk-docs/src/release.rst +14 -0
  54. data/embulk-docs/src/release/release-0.1.0.rst +8 -0
  55. data/embulk-docs/src/release/release-0.2.0.rst +16 -0
  56. data/embulk-docs/src/release/release-0.2.1.rst +19 -0
  57. data/embulk-docs/src/release/release-0.3.0.rst +34 -0
  58. data/embulk-docs/src/release/release-0.3.1.rst +11 -0
  59. data/embulk-docs/src/release/release-0.3.2.rst +15 -0
  60. data/embulk-docs/src/release/release-0.4.0.rst +74 -0
  61. data/embulk-standards/build.gradle +0 -1
  62. data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +2 -2
  63. data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +12 -3
  64. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +2 -2
  65. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +49 -26
  66. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +16 -17
  67. data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +4 -4
  68. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +0 -1
  69. data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +5 -5
  70. data/gradle/wrapper/gradle-wrapper.jar +0 -0
  71. data/gradle/wrapper/gradle-wrapper.properties +2 -2
  72. data/lib/embulk/buffer.rb +2 -2
  73. data/lib/embulk/column.rb +6 -6
  74. data/lib/embulk/command/embulk_example.rb +1 -1
  75. data/lib/embulk/command/embulk_new_plugin.rb +87 -0
  76. data/lib/embulk/command/embulk_run.rb +84 -26
  77. data/lib/embulk/data/bundle/Gemfile +12 -20
  78. data/lib/embulk/data/bundle/embulk/{filter_example.rb → filter/example.rb} +3 -3
  79. data/lib/embulk/data/bundle/embulk/{input_example.rb → input/example.rb} +3 -3
  80. data/lib/embulk/data/bundle/embulk/{output_example.rb → output/example.rb} +3 -3
  81. data/lib/embulk/data/new/LICENSE.txt +21 -0
  82. data/lib/embulk/data/new/README.md.erb +75 -0
  83. data/lib/embulk/data/new/gitignore.erb +12 -0
  84. data/lib/embulk/data/new/java/build.gradle.erb +57 -0
  85. data/lib/embulk/data/new/java/decoder.java.erb +40 -0
  86. data/lib/embulk/data/new/java/encoder.java.erb +40 -0
  87. data/lib/embulk/data/new/java/file_input.java.erb +64 -0
  88. data/lib/embulk/data/new/java/file_output.java.erb +66 -0
  89. data/lib/embulk/data/new/java/filter.java.erb +47 -0
  90. data/lib/embulk/data/new/java/formatter.java.erb +45 -0
  91. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.jar +0 -0
  92. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.properties +6 -0
  93. data/lib/embulk/data/new/java/gradlew +164 -0
  94. data/lib/embulk/data/new/java/gradlew.bat +90 -0
  95. data/lib/embulk/data/new/java/input.java.erb +69 -0
  96. data/lib/embulk/data/new/java/output.java.erb +65 -0
  97. data/lib/embulk/data/new/java/parser.java.erb +51 -0
  98. data/lib/embulk/data/new/java/plugin_loader.rb.erb +3 -0
  99. data/lib/embulk/data/new/java/test.java.erb +5 -0
  100. data/lib/embulk/data/new/ruby/Gemfile +2 -0
  101. data/lib/embulk/data/new/ruby/Rakefile +1 -0
  102. data/lib/embulk/data/new/ruby/filter.rb.erb +39 -0
  103. data/lib/embulk/data/new/ruby/gemspec.erb +19 -0
  104. data/lib/embulk/data/new/ruby/input.rb.erb +47 -0
  105. data/lib/embulk/data/new/ruby/output.rb.erb +59 -0
  106. data/lib/embulk/data/package_data.rb +64 -0
  107. data/lib/embulk/data_source.rb +2 -2
  108. data/lib/embulk/decoder_plugin.rb +27 -0
  109. data/lib/embulk/encoder_plugin.rb +27 -0
  110. data/lib/embulk/error.rb +3 -0
  111. data/lib/embulk/file_input_plugin.rb +27 -0
  112. data/lib/embulk/file_output_plugin.rb +27 -0
  113. data/lib/embulk/filter_plugin.rb +28 -9
  114. data/lib/embulk/formatter_plugin.rb +105 -0
  115. data/lib/embulk/guess_csv.rb +10 -1
  116. data/lib/embulk/guess_plugin.rb +22 -27
  117. data/lib/embulk/input_plugin.rb +34 -20
  118. data/lib/embulk/java/bootstrap.rb +5 -0
  119. data/lib/embulk/java/imports.rb +7 -0
  120. data/lib/embulk/java_plugin.rb +84 -0
  121. data/lib/embulk/output_plugin.rb +35 -19
  122. data/lib/embulk/page.rb +1 -1
  123. data/lib/embulk/page_builder.rb +1 -1
  124. data/lib/embulk/parser_plugin.rb +76 -0
  125. data/lib/embulk/plugin.rb +130 -65
  126. data/lib/embulk/plugin_registry.rb +19 -8
  127. data/lib/embulk/schema.rb +4 -4
  128. data/lib/embulk/version.rb +1 -1
  129. data/settings.gradle +1 -0
  130. metadata +123 -90
  131. data/ChangeLog +0 -46
  132. data/embulk-cli/pom.xml +0 -94
  133. data/embulk-core/pom.xml +0 -148
  134. data/embulk-core/src/main/java/org/embulk/config/NextConfig.java +0 -26
  135. data/embulk-standards/pom.xml +0 -68
  136. data/embulk-standards/src/main/java/org/embulk/standards/S3FileInputPlugin.java +0 -250
  137. data/embulk-standards/src/test/java/org/embulk/standards/TestS3FileInputPlugin.java +0 -43
  138. data/pom.xml +0 -541
@@ -0,0 +1,64 @@
1
+ module Embulk
2
+
3
+ class PackageData
4
+ if __FILE__ =~ /^classpath:/ || __FILE__.include?('!/')
5
+ # data is in embulk-core jar
6
+ resource_class = org.embulk.command.Runner.java_class
7
+ JAVA_RESOURCE = true
8
+ RESOURCE_URL = resource_class.resource("/embulk/data")
9
+ else
10
+ JAVA_RESOURCE = false
11
+ FILE_BASE_PATH = File.join(Embulk.home('lib'), 'embulk', 'data')
12
+ end
13
+
14
+ def initialize(base_name, dest_dir, erb_binding=nil)
15
+ require 'fileutils'
16
+ @base_name = base_name
17
+ @dest_dir = dest_dir
18
+ @erb_binding = erb_binding
19
+ end
20
+
21
+ def path(src)
22
+ if JAVA_RESOURCE
23
+ "#{RESOURCE_URL}/#{@base_name}/#{src}"
24
+ else
25
+ File.join(FILE_BASE_PATH, @base_name, src)
26
+ end
27
+ end
28
+
29
+ def content(src)
30
+ File.read(path(src))
31
+ end
32
+
33
+ def erb(src)
34
+ require 'erb'
35
+ ERB.new(content(src), nil, '%').result(@erb_binding)
36
+ end
37
+
38
+ def cp(src, dest_name)
39
+ path = dest_path_message(dest_name)
40
+ FileUtils.cp path(src), path
41
+ end
42
+
43
+ def cp_erb(src, dest_name)
44
+ path = dest_path_message(dest_name)
45
+ File.open(path, "w") {|f| f.write erb(src) }
46
+ end
47
+
48
+ def dest_path(dest_name)
49
+ File.join(@dest_dir, *dest_name.split('/'))
50
+ end
51
+
52
+ def dest_path_message(dest_name)
53
+ path = dest_path(dest_name)
54
+ puts " Creating #{path}"
55
+ FileUtils.mkdir_p File.dirname(path)
56
+ path
57
+ end
58
+
59
+ def set_executable(dest_name)
60
+ File.chmod(0755, dest_path(dest_name))
61
+ end
62
+ end
63
+
64
+ end
@@ -39,7 +39,7 @@ module Embulk
39
39
  end
40
40
 
41
41
  if Embulk.java?
42
- def self.from_java_object(java_data_source_impl)
42
+ def self.from_java(java_data_source_impl)
43
43
  json = java_data_source_impl.toString
44
44
  new.merge!(JSON.parse(json))
45
45
  end
@@ -48,7 +48,7 @@ module Embulk
48
48
  new.merge!(hash)
49
49
  end
50
50
 
51
- def java_object
51
+ def to_java
52
52
  json = to_json
53
53
  Java::Injected::ModelManager.readObject(Java::DataSourceImpl.java_class, json.to_java)
54
54
  end
@@ -0,0 +1,27 @@
1
+ module Embulk
2
+
3
+ require 'embulk/data_source'
4
+
5
+ class DecoderPlugin
6
+ def self.transaction(config, &control)
7
+ raise NotImplementedError, "DecoderPlugin.transaction(config, &control) must be implemented"
8
+ end
9
+
10
+ # TODO
11
+
12
+ if Embulk.java?
13
+ # TODO new_java
14
+
15
+ def self.from_java(java_class)
16
+ JavaPlugin.ruby_adapter_class(java_class, DecoderPlugin, RubyAdapter)
17
+ end
18
+
19
+ module RubyAdapter
20
+ module ClassMethods
21
+ end
22
+ # TODO
23
+ end
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ module Embulk
2
+
3
+ require 'embulk/data_source'
4
+
5
+ class EncoderPlugin
6
+ def self.transaction(config, &control)
7
+ raise NotImplementedError, "EncoderPlugin.transaction(config, &control) must be implemented"
8
+ end
9
+
10
+ # TODO
11
+
12
+ if Embulk.java?
13
+ # TODO new_java
14
+
15
+ def self.from_java(java_class)
16
+ JavaPlugin.ruby_adapter_class(java_class, EncoderPlugin, RubyAdapter)
17
+ end
18
+
19
+ module RubyAdapter
20
+ module ClassMethods
21
+ end
22
+ # TODO
23
+ end
24
+ end
25
+ end
26
+
27
+ end
data/lib/embulk/error.rb CHANGED
@@ -2,4 +2,7 @@
2
2
  module Embulk
3
3
  class ConfigError < StandardError
4
4
  end
5
+
6
+ class PluginLoadError < StandardError
7
+ end
5
8
  end
@@ -0,0 +1,27 @@
1
+ module Embulk
2
+
3
+ class FileInputPlugin
4
+ # TODO transaction, resume, cleanup
5
+ # TODO run
6
+
7
+ if Embulk.java?
8
+ # TODO to_java
9
+
10
+ def self.from_java(java_class)
11
+ JavaPlugin.ruby_adapter_class(java_class, FileInputPlugin, RubyAdapter)
12
+ end
13
+
14
+ module RubyAdapter
15
+ module ClassMethods
16
+ def new_java
17
+ Java::FileInputRunner.new(Java.injector.getInstance(java_class))
18
+ end
19
+ # TODO transaction, resume, cleanup
20
+ end
21
+
22
+ # TODO run
23
+ end
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ module Embulk
2
+
3
+ class FileOutputPlugin
4
+ # TODO transaction, resume, cleanup
5
+ # TODO add, finish, close, abort, commit
6
+
7
+ if Embulk.java?
8
+ # TODO to_java
9
+
10
+ def self.from_java(java_class)
11
+ JavaPlugin.ruby_adapter_class(java_class, FileOutputPlugin, RubyAdapter)
12
+ end
13
+
14
+ module RubyAdapter
15
+ module ClassMethods
16
+ def new_java
17
+ Java::FileOutputRunner.new(Java.injector.getInstance(java_class))
18
+ end
19
+ # TODO transaction, resume, cleanup
20
+ end
21
+
22
+ # TODO add, finish, close, abort, commit
23
+ end
24
+ end
25
+ end
26
+
27
+ end
@@ -1,5 +1,10 @@
1
1
  module Embulk
2
2
 
3
+ require 'embulk/data_source'
4
+ require 'embulk/schema'
5
+ require 'embulk/page'
6
+ require 'embulk/page_builder'
7
+
3
8
  class FilterPlugin
4
9
  def self.transaction(config, in_schema, &control)
5
10
  yield(config)
@@ -11,10 +16,14 @@ module Embulk
11
16
  @in_schema = in_schema
12
17
  @out_schema = out_schema
13
18
  @page_builder = page_builder
19
+ init
14
20
  end
15
21
 
16
22
  attr_reader :task, :in_schema, :out_schema, :page_builder
17
23
 
24
+ def init
25
+ end
26
+
18
27
  def add(page)
19
28
  raise NotImplementedError, "FilterPlugin#add(page) must be implemented"
20
29
  end
@@ -26,7 +35,7 @@ module Embulk
26
35
  end
27
36
 
28
37
  if Embulk.java?
29
- def self.java_object
38
+ def self.new_java
30
39
  JavaAdapter.new(self)
31
40
  end
32
41
 
@@ -38,20 +47,20 @@ module Embulk
38
47
  end
39
48
 
40
49
  def transaction(java_config, java_in_schema, java_control)
41
- config = DataSource.from_java_object(java_config)
42
- in_schema = Schema.from_java_object(java_in_schema)
50
+ config = DataSource.from_java(java_config)
51
+ in_schema = Schema.from_java(java_in_schema)
43
52
  @ruby_class.transaction(config, in_schema) do |task_source_hash, out_columns|
44
- java_task_source = DataSource.from_ruby_hash(task_source_hash).java_object
45
- java_out_schemas = Schema.new(out_columns).java_object
53
+ java_task_source = DataSource.from_ruby_hash(task_source_hash).to_java
54
+ java_out_schemas = Schema.new(out_columns).to_java
46
55
  java_control.run(java_task_source, java_out_schemas)
47
56
  end
48
57
  nil
49
58
  end
50
59
 
51
60
  def open(java_task_source, java_in_schema, java_out_schema, java_output)
52
- task_source = DataSource.from_java_object(java_task_source)
53
- in_schema = Schema.from_java_object(java_in_schema)
54
- out_schema = Schema.from_java_object(java_out_schema)
61
+ task_source = DataSource.from_java(java_task_source)
62
+ in_schema = Schema.from_java(java_in_schema)
63
+ out_schema = Schema.from_java(java_out_schema)
55
64
  page_builder = PageBuilder.new(out_schema, java_output)
56
65
  ruby_object = @ruby_class.new(task_source, in_schema, out_schema, page_builder)
57
66
  return OutputAdapter.new(ruby_object, in_schema, page_builder)
@@ -77,10 +86,20 @@ module Embulk
77
86
  def close
78
87
  @ruby_object.close
79
88
  ensure
80
- @page_builder.close
89
+ @page_builder.close
81
90
  end
82
91
  end
83
92
  end
93
+
94
+ def self.from_java(java_class)
95
+ JavaPlugin.ruby_adapter_class(java_class, FilterPlugin, RubyAdapter)
96
+ end
97
+
98
+ module RubyAdapter
99
+ module ClassMethods
100
+ end
101
+ # TODO
102
+ end
84
103
  end
85
104
  end
86
105
  end
@@ -0,0 +1,105 @@
1
+ module Embulk
2
+
3
+ require 'embulk/data_source'
4
+ require 'embulk/schema'
5
+ require 'embulk/page'
6
+ #require 'embulk/file_output' TODO not implemented
7
+
8
+ class FormatterPlugin
9
+ def self.transaction(config, schema, &control)
10
+ yield(config)
11
+ return {}
12
+ end
13
+
14
+ def initialize(task, schema, file_output)
15
+ @task = task
16
+ @schema = schema
17
+ @file_output
18
+ init
19
+ end
20
+
21
+ attr_reader :task, :schema, :file_output
22
+
23
+ def init
24
+ end
25
+
26
+ def add(page)
27
+ raise NotImplementedError, "FormatterPlugin#add(page) must be implemented"
28
+ end
29
+
30
+ def finish
31
+ end
32
+
33
+ def close
34
+ end
35
+
36
+ if Embulk.java?
37
+ def self.new_java
38
+ JavaAdapter.new(self)
39
+ end
40
+
41
+ class JavaAdapter
42
+ include Java::FormatterPlugin
43
+
44
+ def initialize(ruby_class)
45
+ @ruby_class = ruby_class
46
+ end
47
+
48
+ def transaction(java_config, java_schema, java_control)
49
+ config = DataSource.from_java(java_config)
50
+ schema = Schema.from_java(java_schema)
51
+ @ruby_class.transaction(config, schema) do |task_source_hash|
52
+ java_task_source = DataSource.from_ruby_hash(task_source_hash).to_java
53
+ java_control.run(java_task_source)
54
+ end
55
+ nil
56
+ end
57
+
58
+ def open(java_task_source, java_schema, java_file_output)
59
+ task_source = DataSource.from_java(java_task_source)
60
+ schema = Schema.from_java(java_schema)
61
+ file_output = FileOutput.from_java(java_file_output)
62
+ ruby_object = @ruby_class.new(task_source, schema, file_output)
63
+ return OutputAdapter.new(ruby_object, schema, file_output)
64
+ end
65
+
66
+ class OutputAdapter
67
+ include Java::TransactionalPageOutput
68
+
69
+ def initialize(ruby_object, schema, file_output)
70
+ @ruby_object = ruby_object
71
+ @schema = schema
72
+ @file_output = file_output
73
+ end
74
+
75
+ def add(java_page)
76
+ # TODO reuse page reader
77
+ @ruby_object.add Page.new(java_page, @schema)
78
+ end
79
+
80
+ def finish
81
+ @ruby_object.finish
82
+ end
83
+
84
+ def close
85
+ @ruby_object.close
86
+ ensure
87
+ @file_output.close
88
+ end
89
+ end
90
+ end
91
+
92
+ def self.from_java(java_class)
93
+ JavaPlugin.ruby_adapter_class(java_class, FormatterPlugin, RubyAdapter)
94
+ end
95
+
96
+ module RubyAdapter
97
+ module ClassMethods
98
+ # TODO transaction, resume, cleanup
99
+ end
100
+ # TODO add, finish, close
101
+ end
102
+ end
103
+ end
104
+
105
+ end
@@ -12,6 +12,15 @@ module Embulk
12
12
  "\"", "'"
13
13
  ]
14
14
 
15
+ # CsvParserPlugin.TRUE_STRINGS
16
+ TRUE_STRINGS = Hash[*%w[
17
+ true True TRUE
18
+ yes Yes YES
19
+ y Y
20
+ on On ON
21
+ 1
22
+ ].map {|k| [k, true] }]
23
+
15
24
  def guess_lines(config, sample_lines)
16
25
  delim = guess_delimiter(sample_lines)
17
26
  unless delim
@@ -152,7 +161,7 @@ module Embulk
152
161
  end
153
162
 
154
163
  def guess_type(str)
155
- if ["true", "false"].include?(str)
164
+ if TRUE_STRINGS[str]
156
165
  return "boolean"
157
166
  end
158
167
 
@@ -6,43 +6,38 @@ module Embulk
6
6
  end
7
7
 
8
8
  if Embulk.java?
9
- def self.java_object
9
+ def self.new_java
10
10
  JavaAdapter.new(new)
11
11
  end
12
12
 
13
- def self.from_java_object(java_guess)
14
- RubyAdapter.new(java_guess)
15
- end
16
-
17
- class RubyAdapter < Embulk::GuessPlugin
18
- def initialized(java_guess)
19
- @java_guess = java_guess
20
- end
13
+ class JavaAdapter
14
+ include Java::GuessPlugin
21
15
 
22
- def guess(config, sample)
23
- java_config = config.java_object
24
- java_sample = sample.java_object
25
- java_next_config = @java_guess.guess(java_config, java_sample)
26
- return DataSource.from_java_object(java_next_config)
16
+ def initialize(ruby_guess)
17
+ @ruby_guess = ruby_guess
27
18
  end
28
19
 
29
- def java_object
30
- @java_guess
20
+ def guess(java_config, java_sample)
21
+ config = DataSource.from_java(java_config)
22
+ sample = Buffer.from_java(java_sample)
23
+ config_diff_hash = @ruby_guess.guess(config, sample)
24
+ return DataSource.from_ruby_hash(config_diff_hash).to_java
31
25
  end
32
26
  end
33
27
 
34
- class JavaAdapter
35
- include Java::GuessPlugin
28
+ def self.from_java(java_class)
29
+ JavaPlugin.ruby_adapter(java_class, GuessPlugin, RubyAdapter)
30
+ end
36
31
 
37
- def initialize(ruby_guess)
38
- @ruby_guess = ruby_guess
32
+ module RubyAdapter
33
+ module ClassMethods
39
34
  end
40
35
 
41
- def guess(java_config, java_sample)
42
- config = DataSource.from_java_object(java_config)
43
- sample = Buffer.from_java_object(java_sample)
44
- next_config_hash = @ruby_guess.guess(config, sample)
45
- return DataSource.from_ruby_hash(next_config_hash).java_object
36
+ def guess(config, sample)
37
+ java_config = config.to_java
38
+ java_sample = sample.to_java
39
+ java_config_diff = java_object.guess(java_config, java_sample)
40
+ return DataSource.from_java(java_config_diff)
46
41
  end
47
42
  end
48
43
  end
@@ -60,7 +55,7 @@ module Embulk
60
55
  return DataSource.new
61
56
  end
62
57
 
63
- decoder = Java::LineDecoder.new(Java::ListFileInput.new([[sample.java_object]]), task)
58
+ decoder = Java::LineDecoder.new(Java::ListFileInput.new([[sample.to_java]]), task)
64
59
  sample_text = ''
65
60
  while decoder.nextFile
66
61
  first = true
@@ -94,7 +89,7 @@ module Embulk
94
89
  return DataSource.new
95
90
  end
96
91
 
97
- decoder = Java::LineDecoder.new(Java::ListFileInput.new([[sample.java_object]]), task)
92
+ decoder = Java::LineDecoder.new(Java::ListFileInput.new([[sample.to_java]]), task)
98
93
  sample_lines = []
99
94
  while decoder.nextFile
100
95
  while line = decoder.poll