Package io.jmix.core.impl.metadata
Class MetadataSessionCloneSupport
java.lang.Object
io.jmix.core.impl.metadata.MetadataSessionCloneSupport
@Component("core_MetadataSessionCloneSupport")
public class MetadataSessionCloneSupport
extends Object
Creates detached clones of the metadata session graph for generation-based publication.
Intended for code that needs to prepare a new metadata generation without mutating the
currently published Session, MetaClass, and MetaProperty objects.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classResult of cloning a metadata session together with the mappings needed to continue updating the cloned graph. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected MetaClasscloneMetaClassSkeleton(Session targetSession, MetaClass sourceMetaClass) protected MetaPropertycloneMetaPropertySkeleton(MetaProperty sourceMetaProperty, IdentityHashMap<MetaClass, MetaClass> metaClassMap) protected RangecloneRange(Range sourceRange, IdentityHashMap<MetaClass, MetaClass> metaClassMap) cloneSession(MetadataGeneration generation) Clones metadata session state of the specified generation into a detached snapshot that can be safely mutated.cloneSession(Session sourceSession, ExtendedEntities.ExtendedEntitiesState extendedEntitiesState) Clones the given metadata session together with its extended-entities state.protected voidcopyMetaPropertyState(MetaProperty sourceMetaProperty, MetaProperty targetMetaProperty, IdentityHashMap<MetaClass, MetaClass> metaClassMap, IdentityHashMap<MetaProperty, MetaProperty> metaPropertyMap) protected MetadataSessionCloneMetaPropertyHandlerfindMetaPropertyHandler(MetaProperty sourceMetaProperty) mapMetaClasses(Collection<MetaClass> sourceMetaClasses, IdentityHashMap<MetaClass, MetaClass> metaClassMap) mapMetaClassMap(Map<K, MetaClass> source, IdentityHashMap<MetaClass, MetaClass> metaClassMap) protected MetaPropertymapMetaProperty(MetaProperty sourceMetaProperty, IdentityHashMap<MetaProperty, MetaProperty> metaPropertyMap) protected List<MetaProperty> mapProperties(Collection<MetaProperty> sourceProperties, IdentityHashMap<MetaProperty, MetaProperty> metaPropertyMap) remapAnnotations(Map<String, Object> sourceAnnotations, IdentityHashMap<MetaClass, MetaClass> metaClassMap, IdentityHashMap<MetaProperty, MetaProperty> metaPropertyMap) protected ObjectremapAnnotationValue(Object value, IdentityHashMap<MetaClass, MetaClass> metaClassMap, IdentityHashMap<MetaProperty, MetaProperty> metaPropertyMap)
-
Field Details
-
metaPropertyHandlers
@Autowired(required=false) protected List<MetadataSessionCloneMetaPropertyHandler> metaPropertyHandlers
-
-
Constructor Details
-
MetadataSessionCloneSupport
public MetadataSessionCloneSupport()
-
-
Method Details
-
cloneSession
Clones metadata session state of the specified generation into a detached snapshot that can be safely mutated.- Parameters:
generation- source generation- Returns:
- cloned session data and remapped metadata objects
-
cloneSession
public MetadataSessionCloneSupport.SessionCloneResult cloneSession(Session sourceSession, ExtendedEntities.ExtendedEntitiesState extendedEntitiesState) Clones the given metadata session together with its extended-entities state.- Parameters:
sourceSession- source session to copyextendedEntitiesState- extended-entities state aligned with the source session- Returns:
- cloned session data and remapped metadata objects
-
cloneMetaClassSkeleton
-
cloneMetaPropertySkeleton
protected MetaProperty cloneMetaPropertySkeleton(MetaProperty sourceMetaProperty, IdentityHashMap<MetaClass, MetaClass> metaClassMap) -
copyMetaPropertyState
protected void copyMetaPropertyState(MetaProperty sourceMetaProperty, MetaProperty targetMetaProperty, IdentityHashMap<MetaClass, MetaClass> metaClassMap, IdentityHashMap<MetaProperty, MetaProperty> metaPropertyMap) -
cloneRange
-
mapProperties
protected List<MetaProperty> mapProperties(Collection<MetaProperty> sourceProperties, IdentityHashMap<MetaProperty, MetaProperty> metaPropertyMap) -
mapMetaClasses
protected List<MetaClass> mapMetaClasses(Collection<MetaClass> sourceMetaClasses, IdentityHashMap<MetaClass, MetaClass> metaClassMap) -
mapMetaClassMap
-
remapAnnotations
protected Map<String,Object> remapAnnotations(Map<String, Object> sourceAnnotations, IdentityHashMap<MetaClass, MetaClass> metaClassMap, IdentityHashMap<MetaProperty, MetaProperty> metaPropertyMap) -
remapAnnotationValue
protected Object remapAnnotationValue(Object value, IdentityHashMap<MetaClass, MetaClass> metaClassMap, IdentityHashMap<MetaProperty, MetaProperty> metaPropertyMap) -
mapMetaProperty
protected MetaProperty mapMetaProperty(MetaProperty sourceMetaProperty, IdentityHashMap<MetaProperty, MetaProperty> metaPropertyMap) -
findMetaPropertyHandler
protected MetadataSessionCloneMetaPropertyHandler findMetaPropertyHandler(MetaProperty sourceMetaProperty)
-