com.atlassian.jira.issue.customfields.impl
Class AbstractCustomFieldType<T,S>

java.lang.Object
  extended by com.atlassian.jira.issue.customfields.impl.AbstractCustomFieldType<T,S>
All Implemented Interfaces:
CustomFieldType<T,S>
Direct Known Subclasses:
AbstractMultiCFType, AbstractMultiSettableCFType, AbstractSingleFieldType, CalculatedCFType, CascadingSelectCFType, LabelsCFType

@PublicSpi
public abstract class AbstractCustomFieldType<T,S>
extends Object
implements CustomFieldType<T,S>


Nested Class Summary
static interface AbstractCustomFieldType.Visitor<X>
          Visitor interface for AbstractCustomFieldType.
static interface AbstractCustomFieldType.VisitorBase<X>
          Marker interface for visitors of AbstractCustomFieldType (acyclic visitor).
 
Field Summary
 
Fields inherited from interface com.atlassian.jira.issue.customfields.CustomFieldType
DEFAULT_VALUE_TYPE, RESOURCE_PREVIEW
 
Constructor Summary
AbstractCustomFieldType()
           
 
Method Summary
 Object accept(AbstractCustomFieldType.VisitorBase visitor)
           
protected  void assertObjectImplementsType(Class<?> clazz, Object o)
           
 String availableForBulkEdit(BulkEditBean bulkEditBean)
          Allow the custom field type perform a specific check as to its availability for bulk editing.
 String getChangelogString(CustomField field, T value)
          Returns a String of representing values to be stored in the change log, an example is the name of a version field that a version id will resolve to within JIRA.
 List<FieldConfigItemType> getConfigurationItemTypes()
          Returns a List of FieldConfigItemType objects.
 String getDescription()
           
 CustomFieldTypeModuleDescriptor getDescriptor()
           
protected  I18nHelper getI18nBean()
           
 String getKey()
          Returns the full key of the CustomFieldType.
 String getName()
           
 List<FieldIndexer> getRelatedIndexers(CustomField customField)
          Returns a list of indexers that will be used for the field.
 Map getVelocityParameters(Issue issue)
          Implementers should override the 3-param version of this.
 Map<String,Object> getVelocityParameters(Issue issue, CustomField field, FieldLayoutItem fieldLayoutItem)
          The custom field may wish to pass parameters to the velocity context beyond the getValueFromIssue methods (eg managers).
 void init(CustomFieldTypeModuleDescriptor descriptor)
          Initialises the CustomFieldType with the given descriptor.
 boolean isRenderable()
          This is a mirror of the method from the RenderableField interface and is needed to bridge the gap between CustomFields and CustomFieldTypes.
 boolean valuesEqual(T v1, T v2)
          Used to compare 2 field values and work out whether a change item should be generated
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.atlassian.jira.issue.customfields.CustomFieldType
createValue, getChangelogValue, getDefaultValue, getSingularObjectFromString, getStringFromSingularObject, getStringValueFromCustomFieldParams, getValueFromCustomFieldParams, getValueFromIssue, remove, setDefaultValue, updateValue, validateFromParams
 

Constructor Detail

AbstractCustomFieldType

public AbstractCustomFieldType()
Method Detail

init

public void init(CustomFieldTypeModuleDescriptor descriptor)
Description copied from interface: CustomFieldType
Initialises the CustomFieldType with the given descriptor.

Specified by:
init in interface CustomFieldType<T,S>
Parameters:
descriptor - CustomFieldTypeModuleDescriptor

getKey

public final String getKey()
Description copied from interface: CustomFieldType
Returns the full key of the CustomFieldType. Typically, this will be prefixed with "com.atlassian.jira.plugin.system.customfieldtypes:"

Specified by:
getKey in interface CustomFieldType<T,S>
Returns:
CustomFieldType Key prefixed with the Package

getName

public final String getName()
Specified by:
getName in interface CustomFieldType<T,S>

getDescription

public final String getDescription()
Specified by:
getDescription in interface CustomFieldType<T,S>

getDescriptor

public final CustomFieldTypeModuleDescriptor getDescriptor()
Specified by:
getDescriptor in interface CustomFieldType<T,S>

getVelocityParameters

@Nonnull
public Map<String,Object> getVelocityParameters(Issue issue,
                                                        CustomField field,
                                                        FieldLayoutItem fieldLayoutItem)
Description copied from interface: CustomFieldType
The custom field may wish to pass parameters to the velocity context beyond the getValueFromIssue methods (eg managers).

The values are added to the context for all velocity views (edit, search, view, xml)

Specified by:
getVelocityParameters in interface CustomFieldType<T,S>
Parameters:
issue - The issue currently in context (Note: this will be null in cases like 'default value')
field - CustomField
fieldLayoutItem - FieldLayoutItem
Returns:
A Map of parameters to add to the velocity context, or an empty Map otherwise (never null)

getVelocityParameters

public final Map getVelocityParameters(Issue issue)
                                throws IllegalAccessException
Implementers should override the 3-param version of this. We want to make attempts to use this version a compile error so plugin developers must add the extra params.

Throws:
IllegalAccessException
See Also:
getVelocityParameters(Issue, CustomField, FieldLayoutItem)

getConfigurationItemTypes

@Nonnull
public List<FieldConfigItemType> getConfigurationItemTypes()
Description copied from interface: CustomFieldType
Returns a List of FieldConfigItemType objects. Can not be immutable. This opens up possibilities for configurable custom fields.

Specified by:
getConfigurationItemTypes in interface CustomFieldType<T,S>
Returns:
List of FieldConfigItemType

getRelatedIndexers

public List<FieldIndexer> getRelatedIndexers(CustomField customField)
Description copied from interface: CustomFieldType
Returns a list of indexers that will be used for the field.

Specified by:
getRelatedIndexers in interface CustomFieldType<T,S>
Parameters:
customField - the custom field to get the related indexers of.
Returns:
List of instantiated and initialised FieldIndexer objects. Null if no related indexers.

isRenderable

public boolean isRenderable()
Description copied from interface: CustomFieldType
This is a mirror of the method from the RenderableField interface and is needed to bridge the gap between CustomFields and CustomFieldTypes.

Specified by:
isRenderable in interface CustomFieldType<T,S>
Returns:
true if the field is configurable for use with the renderers, a text based field, false otherwise.

valuesEqual

public boolean valuesEqual(T v1,
                           T v2)
Description copied from interface: CustomFieldType
Used to compare 2 field values and work out whether a change item should be generated

Specified by:
valuesEqual in interface CustomFieldType<T,S>
Parameters:
v1 - current value
v2 - new value
Returns:
true if the change item should be generated, false otherwise

getChangelogString

public String getChangelogString(CustomField field,
                                 T value)
Description copied from interface: CustomFieldType
Returns a String of representing values to be stored in the change log, an example is the name of a version field that a version id will resolve to within JIRA.

Specified by:
getChangelogString in interface CustomFieldType<T,S>
Parameters:
field - CustomField that the value belongs to
value - Transport Object representing the value instance of the CustomField
Returns:
Change log string.

assertObjectImplementsType

protected void assertObjectImplementsType(Class<?> clazz,
                                          Object o)

availableForBulkEdit

public String availableForBulkEdit(BulkEditBean bulkEditBean)
Description copied from interface: CustomFieldType
Allow the custom field type perform a specific check as to its availability for bulk editing.

Specified by:
availableForBulkEdit in interface CustomFieldType<T,S>
Parameters:
bulkEditBean - BulkEditBean
Returns:
null if available for bulk edit or appropriate unavailable message

getI18nBean

protected I18nHelper getI18nBean()

accept

public Object accept(AbstractCustomFieldType.VisitorBase visitor)


Copyright © 2002-2014 Atlassian. All Rights Reserved.