@@ -95,6 +95,7 @@ data class InsightReference(
9595 * Holds the actual data value(s)
9696 */
9797@Schema(
98+ discriminatorProperty = " type" , // improves compatibility with Gson serialization
9899 oneOf = [
99100 InsightAttribute .Text ::class ,
100101 InsightAttribute .Integer ::class ,
@@ -121,7 +122,8 @@ data class InsightReference(
121122sealed class InsightAttribute (
122123 @get:JvmName("getAttributeId")
123124 @field:NotNull val attributeId : InsightAttributeId ,
124- val schema : ObjectTypeSchemaAttribute ?
125+ val schema : ObjectTypeSchemaAttribute ? ,
126+ @field:NotNull val type : AttributeTypeEnum
125127) {
126128 val isValueAttribute: Boolean by lazy {
127129 when (this ) {
@@ -149,33 +151,33 @@ sealed class InsightAttribute(
149151 }
150152 }
151153
152- class Text (attributeId : InsightAttributeId , val value : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
153- class Integer (attributeId : InsightAttributeId ,val value : Int? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
154- class Bool (attributeId : InsightAttributeId ,val value : Boolean? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
155- class DoubleNumber (attributeId : InsightAttributeId ,val value : Double? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
156- class Date (attributeId : InsightAttributeId ,val value : LocalDate ? , val displayValue : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
154+ class Text (attributeId : InsightAttributeId , val value : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Text )
155+ class Integer (attributeId : InsightAttributeId ,val value : Int? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Integer )
156+ class Bool (attributeId : InsightAttributeId ,val value : Boolean? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Bool )
157+ class DoubleNumber (attributeId : InsightAttributeId ,val value : Double? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . DoubleNumber )
158+ class Date (attributeId : InsightAttributeId ,val value : LocalDate ? , val displayValue : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Date )
157159 /* *
158160 * Note that time is part of the Enum inside the SDK, but is not selectable through the Insight GUI
159161 */
160- class Time (attributeId : InsightAttributeId ,val value : LocalTime ? , val displayValue : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
161- class DateTime (attributeId : InsightAttributeId ,val value : ZonedDateTime ? , val displayValue : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
162- class Email (attributeId : InsightAttributeId ,val value : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
163- class Textarea (attributeId : InsightAttributeId ,val value : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
164- class Ipaddress (attributeId : InsightAttributeId ,val value : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
162+ class Time (attributeId : InsightAttributeId ,val value : LocalTime ? , val displayValue : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Time )
163+ class DateTime (attributeId : InsightAttributeId ,val value : ZonedDateTime ? , val displayValue : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . DateTime )
164+ class Email (attributeId : InsightAttributeId ,val value : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Email )
165+ class Textarea (attributeId : InsightAttributeId ,val value : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Textarea )
166+ class Ipaddress (attributeId : InsightAttributeId ,val value : String? , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Ipaddress )
165167
166168 // cardinality > 1
167- class Url (attributeId : InsightAttributeId ,val values : List <String >, schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
168- class Select (attributeId : InsightAttributeId ,val values : List <String >, schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
169+ class Url (attributeId : InsightAttributeId ,val values : List <String >, schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Url )
170+ class Select (attributeId : InsightAttributeId ,val values : List <String >, schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Select )
169171
170172 // non default types
171- class Reference (attributeId : InsightAttributeId ,@field:NotNull val referencedObjects : List <ReferencedObject >, schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
172- class User (attributeId : InsightAttributeId ,@field:NotNull val users : List <InsightUser >, schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
173- class Confluence (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema) // A value that describes a page in Confluence
174- class Group (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema) // The Insight Group type
175- class Version (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema) // Value describing a version in Jira
176- class Project (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ): InsightAttribute(attributeId, schema) // Value that represents a Jira project
177- class Status (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema) // An Insight status type that can be associated with objects Cardinality:0-1
178- class Unknown (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema)
173+ class Reference (attributeId : InsightAttributeId ,@field:NotNull val referencedObjects : List <ReferencedObject >, schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Reference )
174+ class User (attributeId : InsightAttributeId ,@field:NotNull val users : List <InsightUser >, schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . User )
175+ class Confluence (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Confluence ) // A value that describes a page in Confluence
176+ class Group (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Group ) // The Insight Group type
177+ class Version (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Version ) // Value describing a version in Jira
178+ class Project (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ): InsightAttribute(attributeId, schema, AttributeTypeEnum . Project ) // Value that represents a Jira project
179+ class Status (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Status ) // An Insight status type that can be associated with objects Cardinality:0-1
180+ class Unknown (attributeId : InsightAttributeId , schema : ObjectTypeSchemaAttribute ? ) : InsightAttribute(attributeId, schema, AttributeTypeEnum . Unknown )
179181
180182 override fun toString (): String = when (this ) {
181183 is Text -> value ? : " "
@@ -260,6 +262,29 @@ sealed class InsightAttribute(
260262
261263}
262264
265+ enum class AttributeTypeEnum {
266+ Text ,
267+ Integer ,
268+ Bool ,
269+ DoubleNumber ,
270+ Select ,
271+ Date ,
272+ Time ,
273+ DateTime ,
274+ Url ,
275+ Email ,
276+ Textarea ,
277+ Ipaddress ,
278+ Reference ,
279+ User ,
280+ Confluence ,
281+ Group ,
282+ Version ,
283+ Project ,
284+ Status ,
285+ Unknown ,
286+ }
287+
263288// region InsightObjectTypeOperator
264289data class ObjectTypeSchema (
265290 @get:JvmName("getId")
@@ -271,6 +296,7 @@ data class ObjectTypeSchema(
271296)
272297
273298@Schema(
299+ discriminatorProperty = " type" ,
274300 oneOf = [
275301 ObjectTypeSchemaAttribute .TextSchema ::class ,
276302 ObjectTypeSchemaAttribute .IntegerSchema ::class ,
@@ -300,7 +326,8 @@ sealed class ObjectTypeSchemaAttribute(
300326 @field:NotNull val name : String , // attributeName
301327 @field:NotNull val minimumCardinality : Int ,
302328 @field:NotNull val maximumCardinality : Int ,
303- @field:NotNull val includeChildObjectTypes : Boolean
329+ @field:NotNull val includeChildObjectTypes : Boolean ,
330+ @field:NotNull val type : AttributeTypeEnum
304331) {
305332
306333 val isValueAttribute: Boolean by lazy {
@@ -336,7 +363,7 @@ sealed class ObjectTypeSchemaAttribute(
336363 maximumCardinality : Int ,
337364 includeChildObjectTypes : Boolean ,
338365 @field:NotNull val options : List <String >,
339- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
366+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Select )
340367
341368 class ReferenceSchema (
342369 id : InsightAttributeId ,
@@ -347,7 +374,7 @@ sealed class ObjectTypeSchemaAttribute(
347374 @get:JvmName("getReferenceObjectTypeId")
348375 @field:NotNull val referenceObjectTypeId : InsightObjectTypeId , // objectTypeId of the referenced object
349376 @field:NotNull val referenceKind : ReferenceKind
350- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
377+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Reference )
351378
352379 class UnknownSchema (
353380 id : InsightAttributeId ,
@@ -356,7 +383,7 @@ sealed class ObjectTypeSchemaAttribute(
356383 maximumCardinality : Int ,
357384 includeChildObjectTypes : Boolean ,
358385 @field:NotNull val debugDescription : String
359- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
386+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Unknown )
360387
361388 // region types having just the superclass attributes
362389 class TextSchema (
@@ -365,120 +392,120 @@ sealed class ObjectTypeSchemaAttribute(
365392 minimumCardinality : Int ,
366393 maximumCardinality : Int ,
367394 includeChildObjectTypes : Boolean ,
368- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
395+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Text )
369396 class IntegerSchema (
370397 id : InsightAttributeId ,
371398 name : String ,
372399 minimumCardinality : Int ,
373400 maximumCardinality : Int ,
374401 includeChildObjectTypes : Boolean ,
375- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
402+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Integer )
376403 class BoolSchema (
377404 id : InsightAttributeId ,
378405 name : String ,
379406 minimumCardinality : Int ,
380407 maximumCardinality : Int ,
381408 includeChildObjectTypes : Boolean ,
382- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
409+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Bool )
383410 class DoubleNumberSchema (
384411 id : InsightAttributeId ,
385412 name : String ,
386413 minimumCardinality : Int ,
387414 maximumCardinality : Int ,
388415 includeChildObjectTypes : Boolean ,
389- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
416+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . DoubleNumber )
390417 class DateSchema (
391418 id : InsightAttributeId ,
392419 name : String ,
393420 minimumCardinality : Int ,
394421 maximumCardinality : Int ,
395422 includeChildObjectTypes : Boolean ,
396- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
423+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Date )
397424 class TimeSchema (
398425 id : InsightAttributeId ,
399426 name : String ,
400427 minimumCardinality : Int ,
401428 maximumCardinality : Int ,
402429 includeChildObjectTypes : Boolean ,
403- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
430+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Time )
404431 class DateTimeSchema (
405432 id : InsightAttributeId ,
406433 name : String ,
407434 minimumCardinality : Int ,
408435 maximumCardinality : Int ,
409436 includeChildObjectTypes : Boolean ,
410- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
437+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . DateTime )
411438 class UrlSchema (
412439 id : InsightAttributeId ,
413440 name : String ,
414441 minimumCardinality : Int ,
415442 maximumCardinality : Int ,
416443 includeChildObjectTypes : Boolean ,
417- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
444+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Url )
418445 class EmailSchema (
419446 id : InsightAttributeId ,
420447 name : String ,
421448 minimumCardinality : Int ,
422449 maximumCardinality : Int ,
423450 includeChildObjectTypes : Boolean ,
424- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
451+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Email )
425452 class TextareaSchema (
426453 id : InsightAttributeId ,
427454 name : String ,
428455 minimumCardinality : Int ,
429456 maximumCardinality : Int ,
430457 includeChildObjectTypes : Boolean ,
431- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
458+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Textarea )
432459 class IpaddressSchema (
433460 id : InsightAttributeId ,
434461 name : String ,
435462 minimumCardinality : Int ,
436463 maximumCardinality : Int ,
437464 includeChildObjectTypes : Boolean ,
438- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
465+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Ipaddress )
439466
440467 class UserSchema (
441468 id : InsightAttributeId ,
442469 name : String ,
443470 minimumCardinality : Int ,
444471 maximumCardinality : Int ,
445472 includeChildObjectTypes : Boolean ,
446- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
473+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . User )
447474 class ConfluenceSchema (
448475 id : InsightAttributeId ,
449476 name : String ,
450477 minimumCardinality : Int ,
451478 maximumCardinality : Int ,
452479 includeChildObjectTypes : Boolean ,
453- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
480+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Confluence )
454481 class GroupSchema (
455482 id : InsightAttributeId ,
456483 name : String ,
457484 minimumCardinality : Int ,
458485 maximumCardinality : Int ,
459486 includeChildObjectTypes : Boolean ,
460- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
487+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Group )
461488 class VersionSchema (
462489 id : InsightAttributeId ,
463490 name : String ,
464491 minimumCardinality : Int ,
465492 maximumCardinality : Int ,
466493 includeChildObjectTypes : Boolean ,
467- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
494+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Version )
468495 class ProjectSchema (
469496 id : InsightAttributeId ,
470497 name : String ,
471498 minimumCardinality : Int ,
472499 maximumCardinality : Int ,
473500 includeChildObjectTypes : Boolean ,
474- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
501+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Project )
475502 class StatusSchema (
476503 id : InsightAttributeId ,
477504 name : String ,
478505 minimumCardinality : Int ,
479506 maximumCardinality : Int ,
480507 includeChildObjectTypes : Boolean ,
481- ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes)
508+ ) : ObjectTypeSchemaAttribute(id, name, minimumCardinality, maximumCardinality, includeChildObjectTypes, AttributeTypeEnum . Status )
482509
483510 // endregion types having just the superclass attributes
484511}
0 commit comments