Class: Oscal::V1_2_1::Risk

Inherits:
Base
  • Object
show all
Defined in:
lib/oscal/v1_2_1/all_models.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

lutaml_default_register

Class Method Details

.metaschema_constraintsObject



15182
15183
15184
# File 'lib/oscal/v1_2_1/all_models.rb', line 15182

def self.metaschema_constraints
  @metaschema_constraints
end

Instance Method Details

#json_assembly_soa_from_risk_log_risk_log(instance, value) ⇒ Object



15172
15173
15174
15175
15176
15177
15178
15179
15180
# File 'lib/oscal/v1_2_1/all_models.rb', line 15172

def json_assembly_soa_from_risk_log_risk_log(instance, value)
  items = case value
          when Hash then [value]
          when Array then value
          else return
          end
  parsed = items.map { |item| Oscal::V1_2_1::RiskRiskLog.of_json(item.is_a?(Hash) ? item : {}) }
  instance.instance_variable_set(:@risk_log, parsed)
end

#json_assembly_soa_to_risk_log_risk_log(instance, doc) ⇒ Object



15158
15159
15160
15161
15162
15163
15164
15165
15166
15167
15168
15169
15170
# File 'lib/oscal/v1_2_1/all_models.rb', line 15158

def json_assembly_soa_to_risk_log_risk_log(instance, doc)
  current = instance.instance_variable_get(:@risk_log)
  if current.is_a?(Array)
    result = current.map do |item|
      if item.is_a?(Lutaml::Model::Serializable)
        Oscal::V1_2_1::RiskRiskLog.as_json(item)
      else
        item
      end
    end
    doc["risk-log"] = result.length == 1 ? result.first : result
  end
end

#json_from_risk_status_status(instance, value) ⇒ Object



15097
15098
15099
15100
15101
15102
15103
15104
15105
15106
15107
15108
15109
15110
15111
# File 'lib/oscal/v1_2_1/all_models.rb', line 15097

def json_from_risk_status_status(instance, value)
  if value.is_a?(Array)
    parsed = value.map { |v| Oscal::V1_2_1::RiskStatus.of_json(v) }
    instance.instance_variable_set(:@risk_status, parsed)
  elsif value.is_a?(Hash)
    if value.empty?
      inst = Oscal::V1_2_1::RiskStatus.new(content: "")
      instance.instance_variable_set(:@risk_status, inst)
    else
      instance.instance_variable_set(:@risk_status, Oscal::V1_2_1::RiskStatus.of_json(value))
    end
  elsif value
    instance.instance_variable_set(:@risk_status, Oscal::V1_2_1::RiskStatus.of_json(value))
  end
end

#json_soa_from_threat_id_threat_ids(instance, value) ⇒ Object



15127
15128
15129
15130
15131
15132
15133
15134
15135
15136
15137
15138
15139
15140
15141
15142
# File 'lib/oscal/v1_2_1/all_models.rb', line 15127

def json_soa_from_threat_id_threat_ids(instance, value)
  items = case value
          when Hash then [value]
          when Array then value
          when String then [value]
          else return
          end
  parsed = items.map do |item|
    case item
    when Hash then Oscal::V1_2_1::ThreatId.of_json(item)
    when String then Oscal::V1_2_1::ThreatId.of_json(item)
    else item
    end
  end
  instance.instance_variable_set(:@threat_id, parsed)
end

#json_soa_to_threat_id_threat_ids(instance, doc) ⇒ Object



15144
15145
15146
15147
15148
15149
15150
15151
15152
15153
15154
15155
15156
# File 'lib/oscal/v1_2_1/all_models.rb', line 15144

def json_soa_to_threat_id_threat_ids(instance, doc)
  current = instance.instance_variable_get(:@threat_id)
  if current.is_a?(Array)
    result = current.map do |item|
      if item.is_a?(Lutaml::Model::Serializable)
        Oscal::V1_2_1::ThreatId.as_json(item)
      else
        item
      end
    end
    doc["threat-ids"] = result.length == 1 ? result.first : result
  end
end

#json_to_risk_status_status(instance, doc) ⇒ Object



15113
15114
15115
15116
15117
15118
15119
15120
15121
15122
15123
15124
15125
# File 'lib/oscal/v1_2_1/all_models.rb', line 15113

def json_to_risk_status_status(instance, doc)
  current = instance.instance_variable_get(:@risk_status)
  if current.is_a?(Array)
    doc["status"] = current.map { |item| item.respond_to?(:content) ? item.content : item }
  elsif current
    if current.is_a?(Lutaml::Model::Serializable)
      doc["status"] = Oscal::V1_2_1::RiskStatus.as_json(current)
    else
      val = current.respond_to?(:content) ? current.content : current
      doc["status"] = val
    end
  end
end

#validate_constraintsObject



15186
15187
15188
15189
# File 'lib/oscal/v1_2_1/all_models.rb', line 15186

def validate_constraints
  validator = Metaschema::ConstraintValidator.new
  validator.validate(self, self.class.metaschema_constraints)
end

#validate_occurrencesObject



15191
15192
15193
# File 'lib/oscal/v1_2_1/all_models.rb', line 15191

def validate_occurrences
  Metaschema::ConstraintValidator.validate_occurrences(self, self.class.instance_variable_get(:@occurrence_constraints))
end