Uploaded image for project: 'MidPoint'
  1. MidPoint
  2. MID-5970

Not possible to delete value

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 4.0
    • Fix Version/s: 4.1
    • Component/s: Model
    • Labels:
    • Subscription:
      Active subscription
    • Milestone:
      M2

      Description

      2019-12-10 16:42:11,032 [PROVISIONING] [pool-6-thread-5] ERROR (com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl): Neither value, expression nor raw element specified in property value PPV(null) (attributes/description in PropertyDeltaImpl(attributes / {.../resource/instance-3}description, DELETE))
      2019-12-10 16:42:11,032 [PROVISIONING] [pool-6-thread-5] ERROR (com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl): Neither value, expression nor raw element specified in property value PPV(null) (attributes/description in PropertyDeltaImpl(attributes / {.../resource/instance-3}description, DELETE))
      java.lang.IllegalStateException: Neither value, expression nor raw element specified in property value PPV(null) (attributes/description in PropertyDeltaImpl(attributes / {.../resource/instance-3}description, DELETE))
       at com.evolveum.midpoint.prism.impl.PrismPropertyValueImpl.checkConsistenceInternal(PrismPropertyValueImpl.java:290)
       at com.evolveum.midpoint.prism.impl.delta.ItemDeltaImpl.assertSetConsistence(ItemDeltaImpl.java:1029)
       at com.evolveum.midpoint.prism.impl.delta.ItemDeltaImpl.checkConsistence(ItemDeltaImpl.java:1008)
       at com.evolveum.midpoint.prism.delta.ItemDeltaCollectionsUtil.checkConsistence(ItemDeltaCollectionsUtil.java:127)
       at com.evolveum.midpoint.prism.impl.delta.ObjectDeltaImpl.checkConsistence(ObjectDeltaImpl.java:884)
       at com.evolveum.midpoint.prism.impl.delta.ObjectDeltaImpl.checkConsistence(ObjectDeltaImpl.java:854)
       at com.evolveum.midpoint.prism.impl.delta.ObjectDeltaImpl.checkConsistence(ObjectDeltaImpl.java:850) 
       at com.evolveum.midpoint.provisioning.api.ResourceOperationDescription.checkConsistence(ResourceOperationDescription.java:136) 
       at com.evolveum.midpoint.provisioning.impl.ChangeNotificationDispatcherImpl.notifySuccess(ChangeNotificationDispatcherImpl.java:224) 
       at com.evolveum.midpoint.provisioning.impl.ShadowCache.notifyAfterModify(ShadowCache.java:1034) 
       at com.evolveum.midpoint.provisioning.impl.ShadowCache.modifyShadowAttempt(ShadowCache.java:1010) 
       at com.evolveum.midpoint.provisioning.impl.ShadowCache.modifyShadow(ShadowCache.java:940) 
       at com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl.modifyObject(ProvisioningServiceImpl.java:707) 
       at com.evolveum.midpoint.model.impl.lens.ChangeExecutor.modifyProvisioningObject(ChangeExecutor.java:1657) 
       at com.evolveum.midpoint.model.impl.lens.ChangeExecutor.executeModification(ChangeExecutor.java:1521)
       at com.evolveum.midpoint.model.impl.lens.ChangeExecutor.executeDelta(ChangeExecutor.java:954)
       at com.evolveum.midpoint.model.impl.lens.ChangeExecutor.executeChanges(ChangeExecutor.java:335)
       at com.evolveum.midpoint.model.impl.lens.Clockwork.lambda$processSecondary$0(Clockwork.java:801)
       at com.evolveum.midpoint.model.impl.lens.ClockworkMedic.partialExecute(ClockworkMedic.java:217)
       at com.evolveum.midpoint.model.impl.lens.ClockworkMedic.partialExecute(ClockworkMedic.java:163)
       at com.evolveum.midpoint.model.impl.lens.Clockwork.processSecondary(Clockwork.java:799)
       at com.evolveum.midpoint.model.impl.lens.Clockwork.click(Clockwork.java:623)
       at com.evolveum.midpoint.model.impl.lens.Clockwork.run(Clockwork.java:209)
       at com.evolveum.midpoint.model.impl.controller.ModelController.executeChanges(ModelController.java:565)
       at com.evolveum.midpoint.web.component.progress.ProgressPanel$14.callWithContextPrepared(ProgressPanel.java:601)
       at com.evolveum.midpoint.web.component.progress.ProgressPanel$14.callWithContextPrepared(ProgressPanel.java:587)
       at com.evolveum.midpoint.web.component.SecurityContextAwareCallable.call(SecurityContextAwareCallable.java:59)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
       at java.lang.Thread.run(Thread.java:745)
      2019-12-10 16:42:11,032 [MODEL] [pool-6-thread-5] ERROR (com.evolveum.midpoint.model.impl.lens.ChangeExecutor): Error executing changes for (entitlement (SOME_DOM...) on resource:d0811790-1d80-11e4-86b2-3c970e467875(XXXXXXX)): Neither value, expression nor raw element specified in property value PPV(null) (attributes/description in PropertyDeltaImpl(attributes / {.../resource/instance-3}description, DELETE))java.lang.IllegalStateException: Neither value, expression nor raw element specified in property value PPV(null) (attributes/description in PropertyDeltaImpl(attributes / {.../resource/instance-3}description, DELETE))
       at com.evolveum.midpoint.prism.impl.PrismPropertyValueImpl.checkConsistenceInternal(PrismPropertyValueImpl.java:290)
       at com.evolveum.midpoint.prism.impl.delta.ItemDeltaImpl.assertSetConsistence(ItemDeltaImpl.java:1029)
       at com.evolveum.midpoint.prism.impl.delta.ItemDeltaImpl.checkConsistence(ItemDeltaImpl.java:1008)
       at com.evolveum.midpoint.prism.delta.ItemDeltaCollectionsUtil.checkConsistence(ItemDeltaCollectionsUtil.java:127)
       at com.evolveum.midpoint.prism.impl.delta.ObjectDeltaImpl.checkConsistence(ObjectDeltaImpl.java:884)
       at com.evolveum.midpoint.prism.impl.delta.ObjectDeltaImpl.checkConsistence(ObjectDeltaImpl.java:854)
       at com.evolveum.midpoint.prism.impl.delta.ObjectDeltaImpl.checkConsistence(ObjectDeltaImpl.java:850)
       at com.evolveum.midpoint.provisioning.api.ResourceOperationDescription.checkConsistence(ResourceOperationDescription.java:136)
       at com.evolveum.midpoint.provisioning.impl.ChangeNotificationDispatcherImpl.notifySuccess(ChangeNotificationDispatcherImpl.java:224)
       at com.evolveum.midpoint.provisioning.impl.ShadowCache.notifyAfterModify(ShadowCache.java:1034)
       at com.evolveum.midpoint.provisioning.impl.ShadowCache.modifyShadowAttempt(ShadowCache.java:1010)
       at com.evolveum.midpoint.provisioning.impl.ShadowCache.modifyShadow(ShadowCache.java:940)
       at com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl.modifyObject(ProvisioningServiceImpl.java:707)
       at com.evolveum.midpoint.model.impl.lens.ChangeExecutor.modifyProvisioningObject(ChangeExecutor.java:1657)
       at com.evolveum.midpoint.model.impl.lens.ChangeExecutor.executeModification(ChangeExecutor.java:1521)
       at com.evolveum.midpoint.model.impl.lens.ChangeExecutor.executeDelta(ChangeExecutor.java:954)
       at com.evolveum.midpoint.model.impl.lens.ChangeExecutor.executeChanges(ChangeExecutor.java:335)
       at com.evolveum.midpoint.model.impl.lens.Clockwork.lambda$processSecondary$0(Clockwork.java:801)
       at com.evolveum.midpoint.model.impl.lens.ClockworkMedic.partialExecute(ClockworkMedic.java:217)
       at com.evolveum.midpoint.model.impl.lens.ClockworkMedic.partialExecute(ClockworkMedic.java:163)
       at com.evolveum.midpoint.model.impl.lens.Clockwork.processSecondary(Clockwork.java:799)
       at com.evolveum.midpoint.model.impl.lens.Clockwork.click(Clockwork.java:623)
       at com.evolveum.midpoint.model.impl.lens.Clockwork.run(Clockwork.java:209)
       at com.evolveum.midpoint.model.impl.controller.ModelController.executeChanges(ModelController.java:565)
       at com.evolveum.midpoint.web.component.progress.ProgressPanel$14.callWithContextPrepared(ProgressPanel.java:601)
       at com.evolveum.midpoint.web.component.progress.ProgressPanel$14.callWithContextPrepared(ProgressPanel.java:587)
       at com.evolveum.midpoint.web.component.SecurityContextAwareCallable.call(SecurityContextAwareCallable.java:59)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
       at java.lang.Thread.run(Thread.java:745)
      

      LDAP resource contains configuration for ri:description:

      <icfcldap:languageTagAttributes>description</icfcldap:languageTagAttributes> 

      and mapping:

      <attribute>
          <ref>ri:description</ref>
          <tolerant>false</tolerant>
          <limitations>
              <maxOccurs>1</maxOccurs>
          </limitations>
          <matchingRule>mr:polyStringStrict</matchingRule>
          <outbound>
              <strength>strong</strength>
              <source>
                  <path>description</path>
              </source>
              <source>
                  <path>extension/SOME_ATTRIBUTE</path>
              </source>
              <expression>
                  <script>
                      <relativityMode>absolute</relativityMode>
                      <code>
                          import com.evolveum.midpoint.prism.*
                          import com.evolveum.midpoint.prism.polystring.PolyString
                          import javax.xml.namespace.QName
      
                          if (description == null) {
                              return null
                          }
      
                          PolyString ps = new PolyString(description)
                          if (SOME_ATTRIBUTE == null) {
                              return PolyString.toPolyStringType(ps)
                          }
      
                          final String NS = "http://XXXXX"
                          final QName lang = new QName(NS, "lang")
                          final QName description = new QName(NS, "description")
      
                          Map langs = [:]
                          for (PrismContainerValue value : SOME_ATTRIBUTE.getValues()) {
                              String l = value.getPropertyRealValue(lang, String.class)
                              String t = value.getPropertyRealValue(description, String.class)
      
                              if (l == null || t == null) {
                                  continue
                              }
      
                              langs.put(l, t)
                          }
      
                          ps.setLang(langs)
      
                          return PolyString.toPolyStringType(ps)
                      </code>
                  </script>
              </expression>
          </outbound>
      </attribute> 

      SOME_ATTRIBUTE extension:

      <xsd:element name="SOME_ATTRIBUTE" type="tns:SOME_ATTRIBUTEType" minOccurs="0" maxOccurs="unbounded"/> 
      
      <xsd:complexType name="SOME_ATTRIBUTEType">
          <xsd:annotation>
              <xsd:appinfo>
                  <a:displayName>SOME_ATTRIBUTE description</a:displayName>
                  <a:container/>
              </xsd:appinfo>
          </xsd:annotation>
          <xsd:sequence>
              <xsd:element name="lang" type="xsd:string" minOccurs="0"/>
              <xsd:element name="description" type="xsd:string" minOccurs="0"/>
          </xsd:sequence>
      </xsd:complexType>

      Ldap contained attribute values:

      description;lang-sk=asdf

      description;lang-cz=asdf

      (no value for "description" without lang variant)

      MP tried to delete it.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              lazyman Viliam Repan
              Reporter:
              lazyman Viliam Repan
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: