public class

EntityUtils

extends Object
java.lang.Object
   ↳ com.atlassian.jira.entity.EntityUtils

Class Overview

Has some utility methods for working with Entity Engine.

This originally lived in atlassian-core, but got moved to JIRA in v4.3 and moved to the com.atlassian.jira package in v5.1

Summary

Public Constructors
EntityUtils()
Public Methods
static <E> List<GenericValue> convertToGenericValues(EntityFactory<E> entityFactory, List<E> entityList)
static GenericValue createValue(String entityName, Map<StringObject> fields)
Create a new entity.
static String getNextStringId(String entityName)
Calculate a new entity ID (by basically taking one more than the max integer that exists).
static boolean identical(GenericValue v1, GenericValue v2)
Compare two GenericValues based on their content.
static void internStringFieldValue(GenericValue value, String fieldName)
Forcibly interns the contents of a String field in a GenericValue.
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public EntityUtils ()

Public Methods

public static List<GenericValue> convertToGenericValues (EntityFactory<E> entityFactory, List<E> entityList)

public static GenericValue createValue (String entityName, Map<StringObject> fields)

Create a new entity.

If there is no "id" in the parameter list, one is created using the entity sequence.

Parameters
entityName the entity name.
fields field values
Returns
  • The new GenericValue.
Throws
DataAccessException if an error occurs in the Database layer

public static String getNextStringId (String entityName)

Calculate a new entity ID (by basically taking one more than the max integer that exists). If there are string IDs here, they will not be affected.

Parameters
entityName The entity name
Returns
  • the next ID for a String ID column.

public static boolean identical (GenericValue v1, GenericValue v2)

Compare two GenericValues based on their content.

This method will check the keys and values of both GenericValues.

There is only a single difference between this method and GenericValue.equals(gv2), that is that if one GV has no key of a certain type, and the other has a null value for that key, they are still deemed to be identical (as GenericValue.get(key) always returns null if the key exists or not).

Parameters
v1 the first GenericValue
v2 the second GenericValue
Returns
  • true if the issues are the same, false if they are different

public static void internStringFieldValue (GenericValue value, String fieldName)

Forcibly interns the contents of a String field in a GenericValue. This is a horrible, hackish thing to do and should be avoided if at all possible. However, if you are required to support an API that still uses GenericValues and need to cache them, it may make sense to use this method to avoid keeping excessive duplicate copies of their values.

Caveats:

  • This should be considered both a smell and a last resort.
  • GenericValue is mutable and not thread-safe. Caching them is less than ideal. Consider doing something else if you can.