[midPoint-git] [Evolveum/prism] 19ee8a: Reduce cloning for estimated old values in deltas

mederly noreply at github.com
Fri Mar 21 22:11:13 CET 2025


  Branch: refs/heads/master
  Home:   https://github.com/Evolveum/prism
  Commit: 19ee8a673f32ac8ba4cef6f0c333098b3608bea2
      https://github.com/Evolveum/prism/commit/19ee8a673f32ac8ba4cef6f0c333098b3608bea2
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2025-03-07 (Fri, 07 Mar 2025)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/CloneStrategy.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/delta/ItemDelta.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/CloneUtil.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/delta/ObjectDeltaImpl.java

  Log Message:
  -----------
  Reduce cloning for estimated old values in deltas

Now we store immutable values there "as is" (even with a parent). To
utilize this feature, even more aggressive freezing in the projector was
introduced.

(May break some tests; we'll see.)


  Commit: 08bbfbb3e0511fb448cd4ed91a16f38ecd70b541
      https://github.com/Evolveum/prism/commit/08bbfbb3e0511fb448cd4ed91a16f38ecd70b541
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2025-03-12 (Wed, 12 Mar 2025)

  Changed paths:
    M infra/axiom/src/main/antlr4/com/evolveum/axiom/lang/antlr/query/AxiomQueryLexer.g4

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/master' into feature/less-cloning


  Commit: 67fcdbe3ee21eff4a1d516f3ff33eabb9f2aabb3
      https://github.com/Evolveum/prism/commit/67fcdbe3ee21eff4a1d516f3ff33eabb9f2aabb3
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2025-03-13 (Thu, 13 Mar 2025)

  Changed paths:
    A infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/EmbeddedPrismObjectImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/ItemImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/binding/AbstractMutableObjectable.java

  Log Message:
  -----------
  Improve support for embedded prism objects

These are used e.g. in identities/identity/data. Their support is still
fragile; however, this commit improves it a bit by supporting
asContainerable() calls in more cases.

It was needed when optimizing # of cloning operations in Projector by
freezing objectNew. It fixes TestIdentities.


  Commit: d756ce2f8b3e8e6c7906f8ef50fe2567e8328f23
      https://github.com/Evolveum/prism/commit/d756ce2f8b3e8e6c7906f8ef50fe2567e8328f23
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2025-03-14 (Fri, 14 Mar 2025)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/CloneStrategy.java
    A infra/prism-api/src/main/java/com/evolveum/midpoint/prism/ComplexCopyable.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/Item.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismContainer.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismObject.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismProperty.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismReference.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismValueCollectionsUtil.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/deleg/ItemDelegator.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/deleg/PrismContainerDelegator.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/deleg/PrismObjectDelegator.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/deleg/PrismPropertyDelegator.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/deleg/PrismReferenceDelegator.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/delta/ItemDelta.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/lazy/FlyweightClonedItem.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/lazy/FlyweightClonedValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/CloneUtil.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/ItemDeltaItem.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/ItemImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismContainerImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismContainerValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismObjectImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismObjectValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismPropertyImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismPropertyValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismReferenceImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismReferenceValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyContainerImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyPropertyImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyReferenceImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lazy/LazyPrismContainerValue.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/metadata/ValueMetadataAdapter.java

  Log Message:
  -----------
  Optimize PCV.asSingleValuedContainer

This method no longer clones the value that is to be presented
as a container.

Related changes:

- clone() is gradually being replaced by copy/mutableCopy/immutableCopy
tripled (currently for Item and its subtypes). In particular, flyweights
now correctly implement clone/mutableCopy methods, producing fully
mutable objects at output.

- CloneStrategy was extended to support the above.


  Commit: 0eb89b5ef1fc11c85bd1c807527fa210081ad3c3
      https://github.com/Evolveum/prism/commit/0eb89b5ef1fc11c85bd1c807527fa210081ad3c3
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2025-03-14 (Fri, 14 Mar 2025)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismContainerValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismObjectValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismPropertyValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismReferenceValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/lazy/FlyweightClonedValue.java

  Log Message:
  -----------
  Fix creating of FlyweightClonedValue

Originally, clone() method was used for construction from pre-existing
flyweight, but it now does a real, deep clone. Instead, copy() is
introduced in this commit, and it creates a lightweight copy.


  Commit: 3ce6873cbec5972f1f6134b17169f7f7e3b79b75
      https://github.com/Evolveum/prism/commit/3ce6873cbec5972f1f6134b17169f7f7e3b79b75
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2025-03-16 (Sun, 16 Mar 2025)

  Changed paths:
    A infra/prism-api/src/main/java/com/evolveum/midpoint/prism/lazy/GenericLazyPrismContainerValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/ItemDeltaItem.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/PrismUtil.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismContainerValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lazy/LazyPrismContainerValue.java

  Log Message:
  -----------
  Add support for lazily evaluated magic assignments

See GenericLazyPrismContainerValue.


  Commit: ff9d82014dd2d19736cc0ceb936ad6f643c83332
      https://github.com/Evolveum/prism/commit/ff9d82014dd2d19736cc0ceb936ad6f643c83332
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2025-03-18 (Tue, 18 Mar 2025)

  Changed paths:
    M infra/util/src/main/java/com/evolveum/midpoint/util/MiscUtil.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/statistics/SingleOperationPerformanceInformation.java

  Log Message:
  -----------
  Improve op. result performance reporting

For optional data, we now use long instead of Long values.
PoC quality. To be reviewed.


  Commit: cfef0d82a9ffcdceb3b27c5814d7a4bdbdabd356
      https://github.com/Evolveum/prism/commit/cfef0d82a9ffcdceb3b27c5814d7a4bdbdabd356
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2025-03-19 (Wed, 19 Mar 2025)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/Freezable.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismObject.java

  Log Message:
  -----------
  Add some auxiliary methods


  Commit: 959352808299260bccb9af2c216d460a7104237c
      https://github.com/Evolveum/prism/commit/959352808299260bccb9af2c216d460a7104237c
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2025-03-21 (Fri, 21 Mar 2025)

  Changed paths:
    A infra/util/src/main/java/com/evolveum/midpoint/util/CanBeNone.java
    A infra/util/src/main/java/com/evolveum/midpoint/util/NoValueUtil.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/aspect/MethodUsageStatistics.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/aspect/MidpointInterceptor.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/aspect/ProfilingDataLog.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/statistics/OperationInvocationRecord.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/statistics/SingleOperationPerformanceInformation.java

  Log Message:
  -----------
  Review long vs. Long in performance information

This is a refinement of ff9d82014dd2d19736cc0ceb936ad6f643c83332
that introduces long instead of Long for low-level performance
information (because of higher efficiency).

It introduces NoValueUtil#NONE_LONG constant as well as @CanBeNone
annotation for respective long fields, variables, parameters,
and return values.


  Commit: 568362093de89729981da8007d9098209850bf5f
      https://github.com/Evolveum/prism/commit/568362093de89729981da8007d9098209850bf5f
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2025-03-21 (Fri, 21 Mar 2025)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/Item.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/PrismUtil.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismContainerValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismObjectValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismReferenceValueImpl.java

  Log Message:
  -----------
  Do cosmetic changes

Just a few notes in docs, a couple of annotations, and minor code
simplification.


  Commit: 4d552c8db842147b47065918543c6de3426533d9
      https://github.com/Evolveum/prism/commit/4d552c8db842147b47065918543c6de3426533d9
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2025-03-21 (Fri, 21 Mar 2025)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/CloneStrategy.java
    A infra/prism-api/src/main/java/com/evolveum/midpoint/prism/ComplexCopyable.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/Freezable.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/Item.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismContainer.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismContainerValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismObject.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismObjectValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismProperty.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismPropertyValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismReference.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismReferenceValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/PrismValueCollectionsUtil.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/deleg/ItemDelegator.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/deleg/PrismContainerDelegator.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/deleg/PrismObjectDelegator.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/deleg/PrismPropertyDelegator.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/deleg/PrismReferenceDelegator.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/delta/ItemDelta.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/lazy/FlyweightClonedItem.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/lazy/FlyweightClonedValue.java
    A infra/prism-api/src/main/java/com/evolveum/midpoint/prism/lazy/GenericLazyPrismContainerValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/CloneUtil.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/ItemDeltaItem.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/PrismUtil.java
    A infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/EmbeddedPrismObjectImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/ItemImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismContainerImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismContainerValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismObjectImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismObjectValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismPropertyImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismPropertyValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismReferenceImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismReferenceValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/binding/AbstractMutableObjectable.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/delta/ObjectDeltaImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyContainerImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyPropertyImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/item/DummyReferenceImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lazy/LazyPrismContainerValue.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/metadata/ValueMetadataAdapter.java
    A infra/util/src/main/java/com/evolveum/midpoint/util/CanBeNone.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/MiscUtil.java
    A infra/util/src/main/java/com/evolveum/midpoint/util/NoValueUtil.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/aspect/MethodUsageStatistics.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/aspect/MidpointInterceptor.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/aspect/ProfilingDataLog.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/statistics/OperationInvocationRecord.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/statistics/SingleOperationPerformanceInformation.java

  Log Message:
  -----------
  Merge branch 'feature/less-cloning'

# Conflicts:
#	infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismReferenceValueImpl.java


Compare: https://github.com/Evolveum/prism/compare/e760360bf99c...4d552c8db842

To unsubscribe from these emails, change your notification settings at https://github.com/Evolveum/prism/settings/notifications


More information about the midPoint-svn mailing list