module Kril::SchemaExtractor
Extracts schemas from avro generated java files.
Public Class Methods
extract(source_dir:, output_dir:)
click to toggle source
Parse schemas from avro generated java files and load them into the schema repository.
source_dir - root directory of java files [String] output_dir - schema repository [String] returns - [nil]
# File lib/kril/schema_extractor.rb, line 12 def self.extract(source_dir:, output_dir:) find_java_files(source_dir) do |file| schema = parse_avro_java_class(file) SchemaHandler.new(schemas_path: output_dir).process(schema) end nil end
Public Instance Methods
dejavafy(java_string)
click to toggle source
# File lib/kril/schema_extractor.rb, line 33 def dejavafy(java_string) java_string.split('","').join.gsub(/\\?\\"/, '"') end
find_java_files(root_dir) { |file| ... }
click to toggle source
# File lib/kril/schema_extractor.rb, line 22 def find_java_files(root_dir) old_dir = Dir.pwd Dir.chdir(root_dir) java_files = File.join('**', '*.java') Dir.glob(java_files) do |file| yield File.new(file) end ensure Dir.chdir(old_dir) end
parse_avro_java_class(file)
click to toggle source
# File lib/kril/schema_extractor.rb, line 37 def parse_avro_java_class(file) result = file.each_line do |line| extraction = line[/SCHEMA.*parse\("(.*)"\);/, 1] break dejavafy(extraction) if extraction end result.is_a?(File) ? nil : result end