[midPoint-git] [Evolveum/midpoint] 4fe8f7: Optimize hashcode computation for query cache keys

mederly noreply at github.com
Thu Jan 23 10:41:04 UTC 2020


  Branch: refs/heads/tmp/support-4.0-thread-safety-and-performance
  Home:   https://github.com/Evolveum/midpoint
  Commit: 4fe8f766be215005a3d1049e934402d5bd0f4df8
      https://github.com/Evolveum/midpoint/commit/4fe8f766be215005a3d1049e934402d5bd0f4df8
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M repo/repo-cache/src/main/java/com/evolveum/midpoint/repo/cache/QueryKey.java

  Log Message:
  -----------
  Optimize hashcode computation for query cache keys

(cherry picked from commit e3cef06595fa9873302041530e58714f24c927b7)


  Commit: 298bdea746087f51610cda3f95a5202c4a34a480
      https://github.com/Evolveum/midpoint/commit/298bdea746087f51610cda3f95a5202c4a34a480
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M repo/repo-cache/src/main/java/com/evolveum/midpoint/repo/cache/QueryKey.java

  Log Message:
  -----------
  Fix NPE in QueryKey

(cherry picked from commit 57a7ccfcdbe4e0d8e3551d5534e676d086c8232c)


  Commit: 30e9120ffaf9f440b48de388e8e9549f4915bd3e
      https://github.com/Evolveum/midpoint/commit/30e9120ffaf9f440b48de388e8e9549f4915bd3e
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd
    M repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerConfiguration.java
    M repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java
    M repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/execution/JobExecutor.java
    M repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/work/WorkStateManager.java

  Log Message:
  -----------
  Add checking for concurrent task execution

It has been reported that in some environments a task started
concurrently on two nodes. This is an optional check for such
situations.

(cherry picked from commit 955f1a93b69d177483a99b8fdc8a2fe335afec32)


  Commit: 1b465135a127d151e7c2a0e58ac4633a2e723400
      https://github.com/Evolveum/midpoint/commit/1b465135a127d151e7c2a0e58ac4633a2e723400
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    A repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/ThreadTestExecutor.java
    A testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestManyThreads.java
    A testing/story/src/test/resources/threads/resource-dummy.xml

  Log Message:
  -----------
  Add TestManyThreads story test

(Also adding experimental TestThreadExecutor for testing executions
in multiple threads.)

(cherry picked from commit 20cbf34c041d7d14e03e480e82a47eea6bfe5f3a)


  Commit: dc084b825a1331208311143e64cac8c209641b97
      https://github.com/Evolveum/midpoint/commit/dc084b825a1331208311143e64cac8c209641b97
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestManyThreads.java

  Log Message:
  -----------
  Adapt TestManyThreads story test

It still founds no issues, though.

(cherry picked from commit 77b0eb73b3f1751969609c9cae4e3d469578ab21)


  Commit: d5dc643531b7b9473aa01a6af7a8d4c87ccb3383
      https://github.com/Evolveum/midpoint/commit/d5dc643531b7b9473aa01a6af7a8d4c87ccb3383
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismObjectImpl.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ProvisioningServiceImpl.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceCache.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceManager.java

  Log Message:
  -----------
  Improve thread safety of ResourceManager

This is the first step in the process of making ResourceManager
and ConnectorManager more thread-safe (MID-5954).

Here we only change ResourceCache to implement Cacheable, in order
to receive invalidation requests. Also some minor refactorings in
ResourceManager were done, mainly regarding (im)mutability of resource
objects being worked with.

(cherry picked from commit 4a773f1d6c11d9cab712fdd409baad524e8d02fb)


  Commit: 5be4dc9460940f2135f9e557cf41bb5865bc7e62
      https://github.com/Evolveum/midpoint/commit/5be4dc9460940f2135f9e557cf41bb5865bc7e62
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/SchemaStep.java
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.java
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResourceWizard.java
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedConnectorSchemaImpl.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedResourceSchemaImpl.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/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/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/delta/ItemDelta.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/delta/ObjectDelta.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/PrismPropertyImpl.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/PrismValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/delta/ItemDeltaImpl.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/schema/src/main/resources/default-caching-profile.xml
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/TestImmutable.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/Clockwork.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensContext.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensElementContext.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensProjectionContext.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/ContextLoader.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/VariablesUtil.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConfiguredConnectorCacheKey.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConnectorManager.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceCache.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceManager.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCache.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/errorhandling/CommunicationExceptionHandler.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/errorhandling/ErrorHandler.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/AbstractProvisioningIntegrationTest.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/AbstractBasicDummyTest.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/TestDummy.java
    M provisioning/provisioning-impl/src/test/java/com/evolveum/midpoint/provisioning/impl/dummy/TestDummyResourceAndSchemaCaching.java
    M provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/connectors/AbstractManagedConnectorInstance.java
    M repo/repo-cache/src/main/java/com/evolveum/midpoint/repo/cache/RepositoryCache.java
    M repo/repo-test-util/src/main/java/com/evolveum/midpoint/test/AbstractIntegrationTest.java

  Log Message:
  -----------
  Remove all immutable->mutable transitions

This is to ensure "once immutable, always immutable" policy.

Specifically:
1) Removed modifyUnfrozen methods (used for resources and connectors)
2) Changed setImmutable(true/false) to one-way setImmutable().

Induced and related changes:
- Setting resource availability state does NOT change in-memory resource
  object any more.
- Cleaned up and simplified caching of connector objects (also improving
  invalidation code).
- Enabled global repo caching of resources and connectors by default.
- Removed expansion of resource objects to resourceRefs in model preview
  operations.

(cherry picked from commit 0462088822e156fa81588904ff56121283a65602)


  Commit: b125f10f8424002a35fe3d7d1cf587354caa5fd3
      https://github.com/Evolveum/midpoint/commit/b125f10f8424002a35fe3d7d1cf587354caa5fd3
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceManager.java

  Log Message:
  -----------
  Fix compilation error (after cherry-pick)


  Commit: dde4f06fe5d01e3d2a2dd8988853a1e9e8a9b8c6
      https://github.com/Evolveum/midpoint/commit/dde4f06fe5d01e3d2a2dd8988853a1e9e8a9b8c6
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceManager.java

  Log Message:
  -----------
  Remove all immutable->mutable transitions

This is to ensure "once immutable, always immutable" policy.

Specifically:
1) Removed modifyUnfrozen methods (used for resources and connectors)
2) Changed setImmutable(true/false) to one-way setImmutable().

Induced and related changes:
- Setting resource availability state does NOT change in-memory resource
  object any more.
- Cleaned up and simplified caching of connector objects (also improving
  invalidation code).
- Enabled global repo caching of resources and connectors by default.
- Removed expansion of resource objects to resourceRefs in model preview
  operations.

(cherry picked from commit 0462088822e156fa81588904ff56121283a65602)


  Commit: cf190e480205cb51244402adf45b811f4effdce1
      https://github.com/Evolveum/midpoint/commit/cf190e480205cb51244402adf45b811f4effdce1
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismContainerValueImpl.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ProvisioningServiceImpl.java

  Log Message:
  -----------
  Fix setImmutable on PCVs w.r.t. asContainerable

asContainerable() method uses lazy initialization approach. So we have
to call it before freezing the PCV.

This commit also fixes operation result handling in provisioning
getObject method.

(cherry picked from commit ed9789234a4c2a5e5809595f538498f5a7a0d875)


  Commit: 50d32d396dfc4b6207b38d186406417718e83433
      https://github.com/Evolveum/midpoint/commit/50d32d396dfc4b6207b38d186406417718e83433
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestResources.java

  Log Message:
  -----------
  Adapt TestResources to changes in ResourceManager

There is a slight increase in resource object clone counts
(most probably harmless) and a re-arrangement in schema parsing
operations.

(cherry picked from commit 39752b69d4abb4b5111bd0dc4831ff4cb54bafcb)


  Commit: f903d00d1858c96e7198d2517c88a5cad5708056
      https://github.com/Evolveum/midpoint/commit/f903d00d1858c96e7198d2517c88a5cad5708056
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java

  Log Message:
  -----------
  Adapt tests to resourceRef resolution disablement

(cherry picked from commit 23c3ae7502428336d0d1a7912f50801bed786f8a)


  Commit: bb3f9a316ca127b0e0167fcbb5943085d98fe94f
      https://github.com/Evolveum/midpoint/commit/bb3f9a316ca127b0e0167fcbb5943085d98fe94f
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M build-system/pom.xml
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedResourceSchemaImpl.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/ExpressionWrapper.java
    A infra/prism-api/src/main/java/com/evolveum/midpoint/prism/Freezable.java
    A infra/prism-api/src/main/java/com/evolveum/midpoint/prism/ImmutableUtil.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/PrismValue.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/xml/XmlTypeConverter.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/xnode/ListXNode.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/xnode/ValueParser.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/xnode/XNode.java
    M infra/prism-api/src/main/java/com/evolveum/prism/xml/ns/_public/query_3/SearchFilterType.java
    M infra/prism-impl/pom.xml
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismPropertyValueImpl.java
    A infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/AttributeValueParser.java
    A infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLessValueParser.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLexicalProcessor.java
    A infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/ElementValueParser.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/json/JsonNullValueParser.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/json/JsonValueParser.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/marshaller/ItemPathHolder.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/ListXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/MapXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/PrimitiveXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/RootXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/XNodeImpl.java
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseObjectTemplate.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/negative/TestModelWebServiceNegative.java
    M tools/xjc-plugin/src/main/java/com/evolveum/midpoint/schema/xjc/schema/SchemaProcessor.java

  Log Message:
  -----------
  Fix DOM parsing thread safety

DOM value parsers are walking across DOM trees (when looking for
namespace declarations) so their use is thread safe even when
synchronized. So they are now replaced by DomLessValueParsed that uses
extracts of relevant information do to the parsing.

Related and other changes:
- added immutability to XNode trees,
- fixed JaxbVisitable implementation in generated code,
- RefinedResourceSchemaImpl.getExistingRefinedSchema method.

(cherry picked from commit b09f61929035cbac215024a71da70d7825b01382)


  Commit: 5cd58a63deb923f6126b5000af58f43633bb8adc
      https://github.com/Evolveum/midpoint/commit/5cd58a63deb923f6126b5000af58f43633bb8adc
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/schema/src/test/resources/performance/user-jack.xml

  Log Message:
  -----------
  Adapt schema performance test

(cherry picked from commit 7444df81d2fe18d8de5857f9a0fc4d655c4f12d5)


  Commit: 797415ffb18cabb36ffa09ce68e63bab209d6a97
      https://github.com/Evolveum/midpoint/commit/797415ffb18cabb36ffa09ce68e63bab209d6a97
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLessValueParser.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLexicalProcessor.java
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/performance/AbstractSchemaPerformanceTest.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java

  Log Message:
  -----------
  Add minor DOM parsing performance improvements

These are just cosmetics.

The only one functional change is dropping support for xsi:nil
attribute. It was not used by midPoint XML serialization anyway.

(cherry picked from commit 6b2dab1ba5e6320497cf00031d06a776358cb827)


  Commit: 19751f5674b3fa755900202af49c91466498617f
      https://github.com/Evolveum/midpoint/commit/19751f5674b3fa755900202af49c91466498617f
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ExpressionUtil.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/polystring/PolyString.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/xnode/MapXNode.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/HacksImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLexicalProcessor.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/json/AbstractJsonLexicalProcessor.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/marshaller/BeanMarshaller.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/marshaller/BeanUnmarshaller.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/util/PrismUtilInternal.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/MapXNodeImpl.java
    M infra/prism-impl/src/test/resources/common/xml/account-barbossa.xml
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/util/ValueDisplayUtil.java
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/performance/AbstractSchemaPerformanceTest.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/QNameUtil.java

  Log Message:
  -----------
  Improve performance of MapXNodeImpl

- Replaced List<Entry> by LinkedHashMap, in a way similar to how
  PrismContainerValueImpl is implemented.
- Removed support for the whole Map interface, making the code simpler
  and more efficient.

(cherry picked from commit b16151da95d74528f2cbc3153351297d8ffd897a)


  Commit: 7641627b5d1d87ae0310d91cea328a0d6b9dc0d0
      https://github.com/Evolveum/midpoint/commit/7641627b5d1d87ae0310d91cea328a0d6b9dc0d0
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/xnode/XNode.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/ListXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/MapXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/PrimitiveXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/RootXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/XNodeImpl.java

  Log Message:
  -----------
  Do minor code cleanup (cosmetics)

(cherry picked from commit 269e003d439c634c907a2a83c125431a178711e4)


  Commit: 01544b0cf44be6c553d2b20bc8730f647d25781f
      https://github.com/Evolveum/midpoint/commit/01544b0cf44be6c553d2b20bc8730f647d25781f
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/schema/SchemaRegistry.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/xml/XmlTypeConverter.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/xml/XsdTypeMapper.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/ComplexTypeDefinitionImpl.java
    A infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/DummyPrismObjectDefinition.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismContextImpl.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/lex/dom/AttributeValueParser.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLessValueParser.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLexicalProcessor.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/DomLexicalWriter.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/lex/dom/ElementValueParser.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/marshaller/BeanMarshaller.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/marshaller/BeanUnmarshaller.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/marshaller/PrismUnmarshaller.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/schema/SchemaRegistryImpl.java
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/TestSerialization.java
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/performance/AbstractSchemaPerformanceTest.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java
    A infra/util/src/main/java/com/evolveum/midpoint/util/TransientCache.java

  Log Message:
  -----------
  Do various prism performance optimizations

These are related mainly to schema lookups, using hash maps and caches:
- SchemaRegistry.findObjectDefinitionByCompileTimeClass (cache),
- SchemaRegistry.findObjectDefinitionByType (cache),
- SchemaRegistry.determineClassForType (cache),
- SchemaRegistry.determineCompileTimeClass (cache),
- SchemaRegistry.isList for type or element QName (cache),
- BeanMarshaller.canProcess for type QName (cache),
- ComplexTypeDefinition.findLocalItemDefinition for item QName (cache),
- XsdTypeMapper.getJavaToXsdMapping, determineQNameWithNs,
  getXsdToJavaMapping (hash maps)

Functional change:
- When parsing, we no longer check for allowed values. Currently this
  seems to be used only for enums; and for them it's redundant.

There are some other minor optimizations as well.

(cherry picked from commit e91e476a52f2fd005bdb6539f0cd6edbd5ce5810)


  Commit: 0d0a743817b1299f5598427806a6f9defe14c281
      https://github.com/Evolveum/midpoint/commit/0d0a743817b1299f5598427806a6f9defe14c281
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/util/pom.xml

  Log Message:
  -----------
  Add missing dependency

(cherry picked from commit fec70a5addd95573636afe9a85c5e894869b7509)


  Commit: 3fdbb0b9b413aef36184881438853a6a4d33782f
      https://github.com/Evolveum/midpoint/commit/3fdbb0b9b413aef36184881438853a6a4d33782f
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/marshaller/PrismUnmarshaller.java

  Log Message:
  -----------
  Re-add allowable values check (partially)

In some cases (runtime-defined enums) this check should
really be executed.

(cherry picked from commit 385f160c5db4222822157f8ab26a81b13742defe)


  Commit: abd65a2e54b8cb14aee5ab50fd649da3c7a9d6ac
      https://github.com/Evolveum/midpoint/commit/abd65a2e54b8cb14aee5ab50fd649da3c7a9d6ac
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapComplex.java

  Log Message:
  -----------
  Fix compilation error

(cherry picked from commit 2546a8f4fc0b3588bc7066ca8c14060181b460ee)


  Commit: 04d7c4eaf54c85f87effacd2515865a4a6e00924
      https://github.com/Evolveum/midpoint/commit/04d7c4eaf54c85f87effacd2515865a4a6e00924
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/ExpressionWrapper.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/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/PrismValue.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/delta/ObjectDelta.java
    M infra/prism-api/src/main/java/com/evolveum/prism/xml/ns/_public/query_3/SearchFilterType.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/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/PrismPropertyValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismValueImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/delta/ItemDeltaImpl.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/xnode/ListXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/MapXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/PrimitiveXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/RootXNodeImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xnode/XNodeImpl.java
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/TestImmutable.java
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseObjectTemplate.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensElementContext.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/ContextLoader.java
    M repo/repo-cache/src/main/java/com/evolveum/midpoint/repo/cache/RepositoryCache.java

  Log Message:
  -----------
  Change setImmutable() method to freeze()

It is to emphasize one-way nature of this change and to consolidate
it with the name of the interface (Freezable).

This might be not the last terminological twist here, however.

(cherry picked from commit 7b10132facd1efc863c721cab7625e4876fd999a)


  Commit: 29f7bd8de6fc501fbc744e3a5c38acd3cb458207
      https://github.com/Evolveum/midpoint/commit/29f7bd8de6fc501fbc744e3a5c38acd3cb458207
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedObjectClassDefinitionImpl.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensUtil.java

  Log Message:
  -----------
  Add diagnostics for missing schema handling parts

(cherry picked from commit 219818ba3094837f6cda7eb88f61cc9edad40e16)


  Commit: fda6772a1aea1728e4e1b10b9fa16a3115d9daa3
      https://github.com/Evolveum/midpoint/commit/fda6772a1aea1728e4e1b10b9fa16a3115d9daa3
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/result/OperationResult.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/statistics/OperationInvocationRecord.java

  Log Message:
  -----------
  Make OperationInvocationRecord serializable

(With minor performance improvement.)


  Commit: cb41e57de6fdffb63054196aaab7119eba966382
      https://github.com/Evolveum/midpoint/commit/cb41e57de6fdffb63054196aaab7119eba966382
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensElementContext.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/ContextLoader.java

  Log Message:
  -----------
  Add re-freezing of primary deltas

After old values are set, the new delta - i.e. a clone of (immutable)
primary delta - was left mutable.

This led to mistakenly overwriting primary delta OID in some cases e.g.
TestConsistencyMechanism.test142ModifyObjectNotFoundAssignedAccount.

Now the deltas are correctly re-frozen after any such changes.

(cherry picked from commit 4ba7c95a39aaa37419d9dde7d96291477ef01576)


  Commit: 60c5b8b2806d83ee65fd6825feb05e714e90d588
      https://github.com/Evolveum/midpoint/commit/60c5b8b2806d83ee65fd6825feb05e714e90d588
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/ComplexTypeDefinitionImpl.java

  Log Message:
  -----------
  Skip trimming of shared definitions (MID-5304)

These are quite rare. They are present e.g. in task extension
containers. We have changed midPoint to simply skip them from trimming
process, while issuing a warning. To be resolved later.

(cherry picked from commit ff1054987dbbd634202d6d5a19300eacc88b0b04)


  Commit: d7fd147ffa6d66e7a7225f06715ad86e71d95cba
      https://github.com/Evolveum/midpoint/commit/d7fd147ffa6d66e7a7225f06715ad86e71d95cba
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/prism/xml/ns/_public/types_3/ItemType.java

  Log Message:
  -----------
  Fix writing traces with dynamically-defined PCs

ItemType couldn't be created for PrismContainers with no compile time
class, as .getRealValues() obviously cannot be executed.

TODO This situation probably occurs at more places in the code. Review.

(cherry picked from commit 8c93b31886fdf6283bcf8600b11ea72e356f975b)


  Commit: ee1e304259ea5ab739b17ba445b4813476cd89ac
      https://github.com/Evolveum/midpoint/commit/ee1e304259ea5ab739b17ba445b4813476cd89ac
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemWrapperImpl.java
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerWrapperImpl.java
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismObjectWrapperImpl.java
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismPropertyWrapperImpl.java
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismReferenceWrapperImpl.java
    M gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/handlers/dto/GenericHandlerDto.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/CompositeRefinedObjectClassDefinitionImpl.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/LayerRefinedAttributeDefinitionImpl.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/LayerRefinedObjectClassDefinitionImpl.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/LayerRefinedResourceSchemaImpl.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedAssociationDefinition.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedAttributeDefinitionImpl.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedConnectorSchemaImpl.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedObjectClassDefinition.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedObjectClassDefinitionImpl.java
    M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedResourceSchemaImpl.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/ComplexTypeDefinition.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/Definition.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/DefinitionFactory.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/ItemDefinition.java
    A infra/prism-api/src/main/java/com/evolveum/midpoint/prism/ItemDefinitionTestAccess.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/MutableComplexTypeDefinition.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/MutablePrismContainerDefinition.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/MutableTypeDefinition.java
    A infra/prism-api/src/main/java/com/evolveum/midpoint/prism/SmartVisitable.java
    A infra/prism-api/src/main/java/com/evolveum/midpoint/prism/SmartVisitation.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/schema/MutablePrismSchema.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/schema/PrismSchema.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/schema/SchemaDescription.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/schema/SchemaFactory.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/PrismAsserts.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/xml/DynamicNamespacePrefixMapper.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/ComplexTypeDefinitionImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/DefinitionFactoryImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/DefinitionImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/DummyPrismObjectDefinition.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/ItemDefinitionImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismContainerDefinitionImpl.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/PrismPropertyDefinitionImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismReferenceDefinitionImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/SimpleTypeDefinitionImpl.java
    A infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/SmartVisitationImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/TypeDefinitionImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/marshaller/PrismUnmarshaller.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/schema/PrismSchemaImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/schema/SchemaDescriptionImpl.java
    A infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/schema/SchemaDescriptionParser.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/schema/SchemaFactoryImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/schema/SchemaRegistryImpl.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/util/JaxbTestUtil.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xml/GlobalDynamicNamespacePrefixMapper.java
    M infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/TestExtraSchema.java
    M infra/prism-impl/src/test/java/com/evolveum/midpoint/prism/TestPrismContext.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/MidPointPrismContextFactory.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ConnectorSchemaImpl.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/MutableObjectClassComplexTypeDefinition.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ObjectClassComplexTypeDefinitionImpl.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceAttributeDefinitionImpl.java
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/processor/ResourceSchemaImpl.java
    A infra/schema/src/test/java/com/evolveum/midpoint/schema/TestSchemaImmutability.java
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/processor/SchemaProcessorTest.java
    M infra/schema/src/test/java/com/evolveum/midpoint/schema/processor/TestResourceSchema.java
    A infra/schema/src/test/resources/schema-immutability/resource-dummy-vault.xml
    M infra/schema/testng-unit.xml
    M infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/importer/ObjectImporter.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestStrangeCases.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceManager.java
    M provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/UcfUtil.java
    M repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/QueryInterpreter2Test.java
    M repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/RAnyConverterStaticTest.java

  Log Message:
  -----------
  Make schemas and definitions freezable

The following types are now freezable: Definition, PrismSchema,
SchemaDescription. They are frozen on prismContext initialization and
(for those that are added later) when they are added to schema registry.

Also:
1. Definition is now SmartVisitable - normal visitation does not work
   because of cycles in definitions.
2. Slightly changed initialization of PrismSchema and SchemaDescription
   (as some attributes were changed to final).
3. Removed unused features: DynamicNamespacePrefixMapper.alwaysExplicit,
   SchemaDescription.xsdTypeTocompileTimeClassMap.
4. Fixed deepCloneDefinition to reach globally-defined items in
   xsd:anyType containers (e.g. resource capabilities).


  Commit: 30bd1a79e9c6b1a87c1b931e606475aadfbb2063
      https://github.com/Evolveum/midpoint/commit/30bd1a79e9c6b1a87c1b931e606475aadfbb2063
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/execution/JobExecutor.java

  Log Message:
  -----------
  Fix NPE in task tests


Compare: https://github.com/Evolveum/midpoint/compare/4fe8f766be21%5E...30bd1a79e9c6


More information about the midPoint-svn mailing list