Module: Oscal::V1_2_1
- Extended by:
- Versioned
- Defined in:
- lib/oscal/v1_2_1.rb,
lib/oscal/v1_2_1/all_models.rb
Overview
OSCAL 1.2.1 version module.
Contains all model classes for OSCAL version 1.2.1. Classes are pre-generated from the OSCAL metaschema and loaded from lib/oscal/v1_2_1/*.rb.
Defined Under Namespace
Classes: Action, Activity, ActivityDescription, ActivityStep, ActivityTitle, AddrLine, Address, AdjustmentJustification, AssessmentAssets, AssessmentAssetsAssessmentPlatform, AssessmentMethod, AssessmentMethodDescription, AssessmentPart, AssessmentPartProse, AssessmentPartTitle, AssessmentPlan, AssessmentPlanLocalDefinitions, AssessmentPlanTermsAndConditions, AssessmentResults, AssessmentResultsLocalDefinitions, AssessmentSubject, AssessmentSubjectDescription, AssessmentSubjectPlaceholder, AssessmentSubjectPlaceholderDescription, AssessmentSubjectPlaceholderSource, AssociatedRisk, AuthorizationBoundary, AuthorizationBoundaryDescription, AuthorizedPrivilege, AuthorizedPrivilegeDescription, AuthorizedPrivilegeTitle, BackMatter, BackMatterResource, Base, Base64InBackMatter, BaseField, ByComponent, ByComponentDescription, ByComponentExport, ByComponentInherited, ByComponentSatisfied, Capability, CapabilityDescription, Catalog, Characterization, CharacterizationFacet, ComponentDefinition, ConfidenceScore, Control, ControlImplementation, ControlImplementationDescription, ControlTitle, Coverage, DataFlow, DataFlowDescription, DateAuthorized, DefinedComponent, DefinedComponentDescription, DefinedComponentPurpose, DefinedComponentTitle, Diagram, DiagramCaption, DiagramDescription, DocumentId, EmailAddress, ExternalIdInMetadata, Finding, FindingDescription, FindingTarget, FindingTargetDescription, FindingTargetStatus, FindingTargetTitle, FindingTitle, FunctionPerformed, GapSummary, Group, GroupTitle, HashField, Impact, ImplementationStatus, ImplementedRequirement, ImplementedRequirementDescription, Import, ImportAp, ImportComponentDefinition, ImportProfile, ImportSsp, IncludeAll, IncorporatesComponent, IncorporatesComponentDescription, InsertControls, InventoryItem, InventoryItemDescription, InventoryItemImplementedComponent, LastModified, Link, LinkText, LocalDefinitions, LocalObjective, LocalObjectiveDescription, LocationUuid, LoggedBy, Map, Mapping, MappingCollection, MappingDescription, MappingItem, MappingProvenance, MappingResourceReference, Matching, Merge, MergeCombine, MergeCustom, MergeFlat, Metadata, MetadataLocation, MetadataParty, MetadataRevision, MetadataRole, MetadataTitle, Modify, ModifyAlter, ModifySetParameter, NetworkArchitecture, NetworkArchitectureDescription, Observation, ObservationDescription, ObservationRelevantEvidence, ObservationTitle, Origin, OriginActor, OscalVersion, Parameter, ParameterConstraint, ParameterConstraintDescription, ParameterConstraintTest, ParameterGuideline, ParameterGuidelineProse, ParameterLabel, ParameterSelection, ParameterSelectionChoice, ParameterUsage, ParameterValue, Part, PartProse, PartTitle, PartyUuid, Percentage, PlanOfActionAndMilestones, PoamItem, PoamItemDescription, PoamItemOrigin, PoamItemRelatedFinding, PoamItemTitle, PortRange, Profile, Property, Protocol, ProtocolTitle, Published, QualifierItem, QualifierItemDescription, RelatedObservation, RelatedTask, RelatedTaskIdentifiedSubject, Remarks, Response, ResponseDescription, ResponseRequiredAsset, ResponseTitle, ResponsibleParty, ResponsibleRole, Result, ResultAssessmentLog, ResultAttestation, ResultDescription, ResultLocalDefinitions, ResultTitle, ReviewedControls, ReviewedControlsControlObjectiveSelection, ReviewedControlsControlSelection, ReviewedControlsDescription, Risk, RiskDescription, RiskMitigatingFactor, RiskRiskLog, RiskStatement, RiskStatus, RiskTitle, RoleId, SecurityImpactLevel, SelectControlById, SelectObjectiveById, SelectSubjectById, Selected, SetParameter, Statement, StatementDescription, Status, SubjectReference, SubjectReferenceTitle, SystemCharacteristics, SystemCharacteristicsDescription, SystemComponent, SystemComponentDescription, SystemComponentPurpose, SystemComponentStatus, SystemComponentTitle, SystemId, SystemImplementation, SystemImplementationLeveragedAuthorization, SystemInformation, SystemInformationInformationType, SystemSecurityPlan, SystemUser, SystemUserDescription, SystemUserTitle, Task, TaskAssociatedActivity, TaskDependency, TaskDescription, TaskTiming, TaskTitle, TelephoneNumber, ThreatId, Version, WithId
Constant Summary collapse
- ROOT_CLASS_KEYS =
Maps clean class names to ModelGenerator keys.
{ "Catalog" => "Assembly_catalog", "Profile" => "Assembly_profile", "ComponentDefinition" => "Assembly_component_definition", "SystemSecurityPlan" => "Assembly_system_security_plan", "AssessmentPlan" => "Assembly_assessment_plan", "AssessmentResults" => "Assembly_assessment_results", "PlanOfActionAndMilestones" => "Assembly_plan_of_action_and_milestones", "MappingCollection" => "Assembly_mapping_collection", }.freeze
Class Method Summary collapse
- .class_key_to_const_name(key) ⇒ Object
- .fallback_registers ⇒ Object
- .find_metaschema(filename) ⇒ Object
-
.generate_runtime ⇒ Object
Generate classes at runtime from the OSCAL metaschema.
-
.load_pre_generated ⇒ Object
Load pre-generated model files from lib/oscal/v1_2_1/.
- .oscal_version ⇒ Object
-
.register_all_classes ⇒ Object
Register all loaded classes with this version’s register.
- .register_id ⇒ Object
- .register_models! ⇒ Object
-
.resolve_class(name) ⇒ Object
Resolve a class by clean name or ModelGenerator key.
Methods included from Versioned
create_register, extended, fallback_registers, init_models!, initialized?, oscal_version, register, register_id, register_models!
Class Method Details
.class_key_to_const_name(key) ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/oscal/v1_2_1.rb', line 99 def self.class_key_to_const_name(key) parts = key.sub(/\A(Assembly|Field|Flag)_/, "").split("_") name = parts.map(&:capitalize).join # Avoid conflicts with Ruby built-ins name = "#{name}Field" if %w[Hash Method Object Class Module].include?(name) name end |
.fallback_registers ⇒ Object
22 23 24 |
# File 'lib/oscal/v1_2_1.rb', line 22 def self.fallback_registers %i[oscal_common default] end |
.find_metaschema(filename) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/oscal/v1_2_1.rb', line 87 def self.(filename) paths = [ # Local submodule first File.("../../fixtures/oscal/src/metaschema/#{filename}", __dir__), # Sibling metaschema repo File.("../../../metaschema/spec/fixtures/oscal/src/metaschema/#{filename}", __dir__), File.("../../../../metaschema/spec/fixtures/oscal/src/metaschema/#{filename}", __dir__), ] paths.find { |p| File.exist?(p) } end |
.generate_runtime ⇒ Object
Generate classes at runtime from the OSCAL metaschema.
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/oscal/v1_2_1.rb', line 57 def self.generate_runtime = ("oscal_complete_metaschema.xml") return unless @runtime_classes = Metaschema::ModelGenerator.generate_from_file() # Expose as constants on this module @runtime_classes.each do |key, klass| const_name = class_key_to_const_name(key) const_set(const_name, klass) unless const_defined?(const_name) end end |
.load_pre_generated ⇒ Object
Load pre-generated model files from lib/oscal/v1_2_1/
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/oscal/v1_2_1.rb', line 43 def self.load_pre_generated dir = File.join(__dir__, "v1_2_1") if Dir.exist?(dir) && !Dir.empty?(dir) Dir[File.join(dir, "*.rb")].sort.each { |f| require f } else # Fall back to runtime generation if pre-generated files don't exist generate_runtime end # Register all classes with the version register register_all_classes end |
.oscal_version ⇒ Object
18 19 20 |
# File 'lib/oscal/v1_2_1.rb', line 18 def self.oscal_version "1.2.1" end |
.register_all_classes ⇒ Object
Register all loaded classes with this version’s register.
71 72 73 74 75 76 77 78 |
# File 'lib/oscal/v1_2_1.rb', line 71 def self.register_all_classes constants.each do |const_name| klass = const_get(const_name) next unless klass.is_a?(Class) && klass < Lutaml::Model::Serializable register.register_model(klass) end end |
.register_id ⇒ Object
14 15 16 |
# File 'lib/oscal/v1_2_1.rb', line 14 def self.register_id :oscal_1_2_1 end |
.register_models! ⇒ Object
38 39 40 |
# File 'lib/oscal/v1_2_1.rb', line 38 def self.register_models! load_pre_generated end |
.resolve_class(name) ⇒ Object
Resolve a class by clean name or ModelGenerator key.
81 82 83 |
# File 'lib/oscal/v1_2_1.rb', line 81 def self.resolve_class(name) const_get(name) if const_defined?(name) end |