@DomainNode(searchQueryName = "searchInterfaceSpecifications")
@Authorization(name = "READ", allowFromRelated = ["component", "versions"])
@Authorization(name = "ADMIN", allowFromRelated = ["component"])
@Authorization(name = "AFFECT_ENTITIES_WITH_ISSUES", allowFromRelated = ["component"])
@Authorization(name = "RELATED_ISSUE_AFFECTED_ENTITY", allowFromRelated = ["versions", "component"])
class InterfaceSpecification(name: String, description: String, val templatedFields: MutableMap<String, String>) : NamedAffectedByIssue, MutableTemplatedNode

Specification of an Interface. Defined on a Component, but can be visible and invisible on different ComponentVersions. Can be affected by Issues, and be used as start / end of ServiceEffectSpecifications. Defines InterfaceParts, but active parts depend on the InterfaceSpecificationVersion. READ is granted if READ is granted on `component`, or any InterfaceSpecificationVersion in `versions`.

Constructors

Link copied to clipboard
constructor(name: String, description: 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 = "COMPONENT", direction = Direction.OUTGOING)
@FilterProperty
val component: LazyLoadingDelegate<Component, NodePropertyDelegate.NodeProperty>

The Component this InterfaceSpecification is part of.

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

The description of this entity.

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
Link copied to clipboard
internal var isSaved: Boolean
Link copied to clipboard
@ConvertWith(converter = LazyLoadingContextConverter::class)
internal var lazyLoadingContext: LazyLoadingContext?
Link copied to clipboard
@FilterProperty
@OrderProperty
@SearchProperty
open override var name: String

The name of this entity.

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
internal val propertyLookup: MutableMap<String, PropertyDelegate<*>>
Link copied to clipboard
Link copied to clipboard
@NodeRelationship(type = "USED_IN", direction = Direction.INCOMING)
@FilterProperty
@OrderProperty
open override val template: LazyLoadingDelegate<InterfaceSpecificationTemplate, 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
@NodeRelationship(type = "VERSION", direction = Direction.OUTGOING)
@FilterProperty
val versions: LazyLoadingDelegate<InterfaceSpecificationVersion, NodeSetPropertyDelegate.NodeSetProperty>

Versions of this InterfaceSpecification.

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 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