@DomainNode(searchQueryName = "searchComponentVersions")
@Authorization(name = "READ", allowFromRelated = ["component", "includingProjects"])
@Authorization(name = "ADMIN", allowFromRelated = ["component"])
@Authorization(name = "RELATE_FROM_COMPONENT", allowFromRelated = ["component"])
@Authorization(name = "ADD_TO_PROJECTS", allowFromRelated = ["component"])
@Authorization(name = "AFFECT_ENTITIES_WITH_ISSUES", allowFromRelated = ["component"])
@Authorization(name = "RELATED_ISSUE_AFFECTED_ENTITY", allowFromRelated = ["component"])
@Authorization(name = "PART_OF_PROJECT", allowFromRelated = ["includingProjects"])
class ComponentVersion(var version: String, var tags: List<String>, val templatedFields: MutableMap<String, String>) : RelationPartner, Versioned, MutableTemplatedNode

Version of a component. Can specifies visible/invisible InterfaceSpecifications. Can be used in Relations, affected by issues and included by Projects. READ is granted if READ is granted on `component`.

Constructors

Link copied to clipboard
constructor(version: String, tags: List<String>, templatedFields: MutableMap<String, String>)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
@NodeRelationship(type = "AFFECTS", direction = Direction.INCOMING)
@FilterProperty
val affectingIssues: LazyLoadingDelegate<Issue, NodeSetPropertyDelegate.NodeSetProperty>

The issues which affect this entity

Link copied to clipboard
@NodeRelationship(type = "AGGREGATED_ISSUE", direction = Direction.OUTGOING)
@FilterProperty
val aggregatedIssues: LazyLoadingDelegate<AggregatedIssue, NodeSetPropertyDelegate.NodeSetProperty>

AggregatedIssues on this RelationPartner.

Link copied to clipboard
@NodeRelationship(type = "VERSION", direction = Direction.INCOMING)
@FilterProperty
val component: LazyLoadingDelegate<Component, NodePropertyDelegate.NodeProperty>

The Component which defines this ComponentVersions

Link copied to clipboard
internal var fieldCache: MutableMap<String, Any?>
Link copied to clipboard
val graphQLId: ID

The unique id of this node

Link copied to clipboard
@Id
@GeneratedValue(generatorRef = "nodeIdGenerator")
internal var id: String?
Link copied to clipboard
@NodeRelationship(type = "COMPONENT", direction = Direction.INCOMING)
@FilterProperty
val includingProjects: LazyLoadingDelegate<Project, NodeSetPropertyDelegate.NodeSetProperty>

Projects which include this ComponentVersion

Link copied to clipboard
@NodeRelationship(type = "INCOMING_RELATION", direction = Direction.OUTGOING)
@FilterProperty
val incomingRelations: LazyLoadingDelegate<Relation, NodeSetPropertyDelegate.NodeSetProperty>

Relations which use this as the end of the Relation.

Link copied to clipboard
@NodeRelationship(type = "COMPONENT_VERSION", direction = Direction.INCOMING)
@FilterProperty
val interfaceDefinitions: LazyLoadingDelegate<InterfaceDefinition, NodeSetPropertyDelegate.NodeSetProperty>

InterfaceDefinitions on this ComponentVersion.

Link copied to clipboard
@NodeRelationship(type = "INTRA_COMPONENT_DEPENDENCY_SPECIFICATION", direction = Direction.OUTGOING)
@FilterProperty
val intraComponentDependencySpecifications: LazyLoadingDelegate<IntraComponentDependencySpecification, NodeSetPropertyDelegate.NodeSetProperty>

IntraComponentDependencySpecifications associated with this ComponentVersion

Link copied to clipboard
Link copied to clipboard
internal var isSaved: Boolean
Link copied to clipboard
@NodeRelationship(type = "LAYOUT", direction = Direction.OUTGOING)
val layouts: LazyLoadingDelegate<RelationPartnerLayout, NodeSetPropertyDelegate.NodeSetProperty>
Link copied to clipboard
@ConvertWith(converter = LazyLoadingContextConverter::class)
internal var lazyLoadingContext: LazyLoadingContext?
Link copied to clipboard
@Version
private var nodeVersion: Long

Version used for optimistic locking

Link copied to clipboard
internal var orderFields: MutableMap<String, Any?>?
Link copied to clipboard
@NodeRelationship(type = "OUTGOING_RELATION", direction = Direction.OUTGOING)
@FilterProperty
val outgoingRelations: LazyLoadingDelegate<Relation, NodeSetPropertyDelegate.NodeSetProperty>

Relations which use this as the start of the Relation.

Link copied to clipboard
internal val propertyLookup: MutableMap<String, PropertyDelegate<*>>
Link copied to clipboard
Link copied to clipboard
@SearchProperty
open override var tags: List<String>

The tags of this ComponentVersion

Link copied to clipboard
@NodeRelationship(type = "USED_IN", direction = Direction.INCOMING)
@FilterProperty
@OrderProperty
open override val template: LazyLoadingDelegate<ComponentVersionTemplate, NodePropertyDelegate.NodeProperty>

Template associated with the TemplatedNode

Link copied to clipboard

The values for all templated fields. The schema is defined by the Template of this node

Link copied to clipboard
@FilterProperty
@SearchProperty
@OrderProperty
open override var version: String

The version of this ComponentVersion

Functions

Link copied to clipboard
operator override fun equals(other: Any?): Boolean
Link copied to clipboard
internal suspend fun getFromGraphQL(@Autowired nodeQueryParser: NodeQueryParser, dataFetchingEnvironment: DataFetchingEnvironment): Any?
Link copied to clipboard
internal fun <T : PropertyDelegate<*>> getProperty(property: KProperty1<*, *>): T
Link copied to clipboard

Dummy function to avoid GraphQL kotlin optimization weirdness

Link copied to clipboard
override fun hashCode(): Int
Link copied to clipboard
internal suspend fun <T : Node?> loadNodesOfRelationship(property: KProperty1<*, *>, loader: LazyLoadingSubqueryGenerator<T>.() -> Unit?)
Link copied to clipboard
protected fun <T : Node?> NodeProperty(): PropertyDelegateProvider<Node, NodePropertyDelegate<T>>
Link copied to clipboard
protected fun <T : Node> NodeSetProperty(): PropertyDelegateProvider<Node, NodeSetPropertyDelegate<T>>
Link copied to clipboard
internal fun registerQueryResult(entry: NodeQueryEntry<*>, queryResult: Any?)
Link copied to clipboard
open suspend override fun relationPartnerTemplate(cache: NodeCache? = null): RelationPartnerTemplate<*, *>

Helper function to get the associated RelationPartnerTemplate

Link copied to clipboard
open fun templatedField(name: String, @Autowired objectMapper: ObjectMapper): JsonNode?

Value of a field defined by the template. Error if such a field is not defined.

Link copied to clipboard
open fun templatedFields(names: List<String>?, prefixMatching: Boolean?, @Autowired objectMapper: ObjectMapper): List<JSONField>

All templatedFields If `names` is provided, only those matching the name. If `prefixMatching` is true, matching is done by prefix, otherwise by full name.

Link copied to clipboard
open override fun toString(): String