Class: Operaton::Bpm::Client::Variable::Impl::Mapper::FileValueMapper

Inherits:
AbstractTypedValueMapper show all
Defined in:
lib/operaton/bpm/client/variable/impl/mapper/file_value_mapper.rb

Overview

Mirrors org.operaton.bpm.client.variable.impl.mapper.FileValueMapper

Constant Summary collapse

VALUE_INFO_FILE_NAME =
Engine::Variable::FileValueType::VALUE_INFO_FILE_NAME
VALUE_INFO_FILE_MIME_TYPE =
Engine::Variable::FileValueType::VALUE_INFO_FILE_MIME_TYPE
VALUE_INFO_FILE_ENCODING =
Engine::Variable::FileValueType::VALUE_INFO_FILE_ENCODING

Instance Attribute Summary

Attributes inherited from AbstractTypedValueMapper

#value_type

Instance Method Summary collapse

Methods inherited from AbstractTypedValueMapper

#can_handle_typed_value, #can_handle_typed_value_field, #serialization_dataformat, #type

Methods included from ValueMapper

#can_handle_typed_value, #can_handle_typed_value_field, #serialization_dataformat, #type

Constructor Details

#initialize(engine_client) ⇒ FileValueMapper

Returns a new instance of FileValueMapper.



20
21
22
23
# File 'lib/operaton/bpm/client/variable/impl/mapper/file_value_mapper.rb', line 20

def initialize(engine_client)
  super(Engine::Variable::ValueType::FILE)
  @engine_client = engine_client
end

Instance Method Details

#convert_to_typed_value(_untyped_value) ⇒ Object

Raises:

  • (NotImplementedError)


25
26
27
# File 'lib/operaton/bpm/client/variable/impl/mapper/file_value_mapper.rb', line 25

def convert_to_typed_value(_untyped_value)
  raise NotImplementedError, "Currently no automatic conversation from UntypedValue to FileValue"
end

#read_value(typed_value_field, _deserialize_value = true) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/operaton/bpm/client/variable/impl/mapper/file_value_mapper.rb', line 29

def read_value(typed_value_field, _deserialize_value = true)
  value_info = typed_value_field.value_info || {}
  filename = value_info[VALUE_INFO_FILE_NAME]

  file_value = Value::DeferredFileValueImpl.new(filename, @engine_client)
  mime_type = value_info[VALUE_INFO_FILE_MIME_TYPE]
  file_value.mime_type = mime_type if mime_type
  encoding = value_info[VALUE_INFO_FILE_ENCODING]
  file_value.encoding = encoding if encoding
  file_value
end

#write_value(file_value, typed_value_field) ⇒ Object



41
42
43
44
45
46
47
48
49
# File 'lib/operaton/bpm/client/variable/impl/mapper/file_value_mapper.rb', line 41

def write_value(file_value, typed_value_field)
  value_info = { VALUE_INFO_FILE_NAME => file_value.filename }
  value_info[VALUE_INFO_FILE_ENCODING] = file_value.encoding if file_value.encoding
  value_info[VALUE_INFO_FILE_MIME_TYPE] = file_value.mime_type if file_value.mime_type
  typed_value_field.value_info = value_info

  bytes = file_value.byte_array
  typed_value_field.value = Base64.strict_encode64(bytes) unless bytes.nil?
end