Class: Reactor::Versioner::Slave
- Inherits:
-
Object
- Object
- Reactor::Versioner::Slave
- Defined in:
- lib/reactor/tools/versioner.rb
Overview
Slave class used by Versioner class to load and store migrated files inside the CM. It uses separate object type named “version_store” and stores data as base64’ed YAML inside recordSetCallback (Versionszuweisungsfunktion). Theoretically you could use any class for this purpose, but you would lose the ability to set recordSetCallback for this class. Other than that, it does not affect the object class in any way!
Maybe the future version won’t disrupt even this fuction.
Instance Method Summary collapse
- #base_name ⇒ Object
- #create ⇒ Object
- #exists? ⇒ Boolean
- #load ⇒ Object
- #name ⇒ Object
- #store(data) ⇒ Object
Instance Method Details
#base_name ⇒ Object
25 26 27 |
# File 'lib/reactor/tools/versioner.rb', line 25 def base_name "objClass" end |
#create ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/reactor/tools/versioner.rb', line 69 def create request = Reactor::Cm::XmlRequest.prepare do |xml| xml.create_tag!(base_name) do xml.tag!('name') do xml.text!(name) end xml.tag!('objType') do xml.text!('document') end end end response = request.execute! response.ok? end |
#exists? ⇒ Boolean
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/reactor/tools/versioner.rb', line 29 def exists? begin request = Reactor::Cm::XmlRequest.prepare do |xml| xml.where_key_tag!(base_name, 'name', name) xml.get_key_tag!(base_name, 'name') end response = request.execute! return response.ok? rescue return false end end |
#load ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/reactor/tools/versioner.rb', line 42 def load create if not exists? request = Reactor::Cm::XmlRequest.prepare do |xml| xml.where_key_tag!(base_name, 'name', name) xml.get_key_tag!(base_name, 'recordSetCallback') end response = request.execute! base64 = response.xpath("//recordSetCallback").text.to_s yaml = Base64::decode64(base64) data = YAML::load(yaml) return [] if data.nil? or data == false return data.to_a end |
#name ⇒ Object
21 22 23 |
# File 'lib/reactor/tools/versioner.rb', line 21 def name "version_store" end |
#store(data) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/reactor/tools/versioner.rb', line 56 def store(data) create if not exists? yaml = data.to_yaml base64 = Base64::encode64(yaml).gsub("\n", '').gsub("\r", '') content = '#' + base64 request = Reactor::Cm::XmlRequest.prepare do |xml| xml.where_key_tag!(base_name, 'name', name) xml.set_key_tag!(base_name, 'recordSetCallback', content) end response = request.execute! response.ok? end |