Package com.evolveum.midpoint.prism.util
Class CloneUtil
- java.lang.Object
-
- com.evolveum.midpoint.prism.util.CloneUtil
-
public class CloneUtil extends Object
- Author:
- semancik
-
-
Constructor Summary
Constructors Constructor Description CloneUtil()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T> T
clone(T orig)
static <T extends Cloneable>
TcloneCloneable(T cloneable)
static <T> List<T>
cloneCollectionMembers(Collection<T> collection)
static <T> List<T>
cloneCollectionMembersWithoutIds(Collection<T> collection)
static <C extends Containerable>
CcloneIfImmutable(C value)
static <T> void
cloneMembersToCollection(Collection<T> target, Collection<T> source)
static <CF extends Cloneable & Freezable>
CFtoImmutable(CF input)
Provides an immutable version of the input: - If the input is immutable, returns it as is.static <C extends Containerable>
CtoImmutableContainerable(C input)
Provides an immutable version of the input: - If the input is immutable, returns it as is.
-
-
-
Method Detail
-
clone
@Contract("null -> null; !null -> !null") public static <T> T clone(T orig)
-
cloneCloneable
public static <T extends Cloneable> T cloneCloneable(T cloneable)
-
cloneCollectionMembers
@Contract("!null -> !null; null -> null") public static <T> List<T> cloneCollectionMembers(Collection<T> collection)
- Returns:
- List that can be freely used.
-
cloneMembersToCollection
public static <T> void cloneMembersToCollection(Collection<T> target, Collection<T> source)
-
cloneCollectionMembersWithoutIds
@Experimental @Contract("!null -> !null; null -> null") public static <T> List<T> cloneCollectionMembersWithoutIds(Collection<T> collection)
- Returns:
- List that contains its members clones. For members that are Containerable the IDs are cleared.
FIXME: BEWARE - UNFINISHED
- does not clear IDs if members are PCVs; does it only for Containerables
- should be named maybe "copyForReuse" and use complexClone with the strategy of REUSE for all prism data
See
Containerable.cloneWithoutId()
and its TODOs.
-
cloneIfImmutable
@Contract("null -> null; !null -> !null") @Nullable public static <C extends Containerable> C cloneIfImmutable(@Nullable C value)
-
toImmutable
@Contract("null -> null; !null -> !null") public static <CF extends Cloneable & Freezable> CF toImmutable(@Nullable CF input)
Provides an immutable version of the input: - If the input is immutable, returns it as is. - If the input is mutable, creates an immutable clone.
-
toImmutableContainerable
@Contract("null -> null; !null -> !null") public static <C extends Containerable> C toImmutableContainerable(@Nullable C input)
Provides an immutable version of the input: - If the input is immutable, returns it as is. - If the input is mutable, creates an immutable clone. This method is needed (in addition totoImmutable(Cloneable)
) becauseContainerable
is notFreezable
.
-
-