@DomainNode(topLevelQueryName = "imss", searchQueryName = "searchIMSs")
@Authorization(name = "READ", allow = [Rule(beanRef = "relatedToNodePermissionRule")])
@Authorization(name = "ADMIN", allow = [Rule(beanRef = "relatedToNodePermissionRule")])
@Authorization(name = "SYNC_TRACKABLES", allow = [Rule(beanRef = "relatedToNodePermissionRule", options = ["ADMIN"])])
class IMS(name: String, description: String, val templatedFields: MutableMap<String, String>) : SyncPermissionTarget, MutableTemplatedNode, NodeWithPermissions<IMSPermission>

Entity which represents an issue management system (like GitHub, Jira, Redmine, ...). Trackables can be added to this via an IMSProject, so that their issues are synced to this IMS. READ is granted via an associated IMSPermission.

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
@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
@NodeRelationship(type = "NODE", direction = Direction.INCOMING)
@FilterProperty
open override val permissions: LazyLoadingDelegate<IMSPermission, NodeSetPropertyDelegate.NodeSetProperty>

Permissions associated with the NodeWithPermissions

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

Projects which are synced to this IMS.

Link copied to clipboard
internal val propertyLookup: MutableMap<String, PropertyDelegate<*>>
Link copied to clipboard
Link copied to clipboard
@NodeRelationship(type = "CAN_SYNC_OTHERS", direction = Direction.INCOMING)
@FilterProperty
val syncOthersAllowedBy: LazyLoadingDelegate<GropiusUser, NodeSetPropertyDelegate.NodeSetProperty>

The users which allow to sync the data of other users to this target.

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

The users which allow to sync their data to this target.

Link copied to clipboard
@NodeRelationship(type = "USED_IN", direction = Direction.INCOMING)
@FilterProperty
@OrderProperty
open override val template: LazyLoadingDelegate<IMSTemplate, 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 = "USER", direction = Direction.OUTGOING)
@FilterProperty
val users: LazyLoadingDelegate<IMSUser, NodeSetPropertyDelegate.NodeSetProperty>

Users of this IMS.

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