...
Code Block | ||
---|---|---|
| ||
@Override public Collection<Property<Layout,?>> getProperties() { return Arrays.asList(nameProperty, descriptionProperty, layoutProjectsProperty); } |
A
...
property for the
...
description
Let us look into the property that represents the description.
...
In some cases, after changing the property of an object, additional action must be taken to persist the change. This is required for Layout, as the method
LayoutService.update(Layout layout)
must be invoked to persist any change to a layout. This is specified in the above code, passing a lambda argument topersistingPostOp()
.A way to convert from the type of the property internal value to the String that will be exported in the XML and back must be provided. This is specified by the
typeValueConverter(TypeValueConverter<W> typeValueConverter)
method, whereW
is the type of the internal value. Several predefinedTypeValueConverter
instances are provided by the factorycom.awnaba.projectconfigurator.extensionpoints.customentities.converters.ConverterFactory
converts between different classes and String, and from a String to the original value of the class.A
Property
must also specify if it will be set during object creation. Looking at the methodLayoutEntity.createNew(ObjectDescriptor<Layout> objectDescriptor)
above, it is clear that the layout description is set when aLayout
is created. This is the default assumption used byPropertyBuilder
, so no special action is needed in this case. Otherwise, you would invokesetInCreation(false)
on the builder.
A property for the associated
...
profield
ReferenceProperty
Often, a Property of an object consists of a reference to another object or a collection of objects in Jira. These referred objects might be built-in Jira objects (issue types, statuses, filters, etc) or other objects that are supported by a PCJ extension. This is relevant for the migration, so there is a specific sub-interface, ReferenceProperty,
that must be implemented for any Property
that references other objects.
...
There are two flavors of Identifiers
. They can be InstanceIndependentIdentifier
if the mapping would be the same in any instance of Jira. For example, given the key of a project in Jira, it is possible to find the corresponding project. We expect that the equivalent project in a different Jira instance will have the same key, so this mapping does not depend on a particular Jira instance. On the other hand, we can also map projects to their ID strings (like "10202") and vice versa. However, it is most likely that equivalent projects in different Jira instances will have completely unrelated IDs. Therefore, this mapping changes whenever we look at a different instance. This would be an InstanceSpecificIdentifier
. Any Identifier
has also a report name like "ID", "name", or "key", typically derived from the property they are based on.
Cross-instance
...
identifiers
Every CustomEntity
must have at least one InstanceIndependentIdentifier
returned by the method getCrossInstanceIdentifier()
. This Identifier
will be used to map equivalent objects in different instances.
...