From f6b8bdb1def21d9e30833acaaa2a896ca2d9d0f0 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Mon, 25 Sep 2017 06:40:05 +0200 Subject: [PATCH] Tentative fix for MID-4145. --- .../model/impl/lens/ChangeExecutor.java | 2 +- .../credentials/CredentialsProcessor.java | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/ChangeExecutor.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/ChangeExecutor.java index 834c11784d6..daae3f404aa 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/ChangeExecutor.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/ChangeExecutor.java @@ -187,7 +187,7 @@ public boolean executeChanges(LensContext context, Tas try { // Will remove credential deltas or hash them - focusDelta = credentialsProcessor.transformFocusExectionDelta(context, focusDelta); + focusDelta = credentialsProcessor.transformFocusExecutionDelta(context, focusDelta); } catch (EncryptionException e) { recordFatalError(subResult, result, null, e); result.computeStatus(); diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/credentials/CredentialsProcessor.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/credentials/CredentialsProcessor.java index 95b2f29b3e7..b847264d3db 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/credentials/CredentialsProcessor.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/credentials/CredentialsProcessor.java @@ -22,14 +22,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import com.evolveum.midpoint.model.common.mapping.MappingFactory; import com.evolveum.midpoint.model.common.stringpolicy.ValuePolicyProcessor; import com.evolveum.midpoint.model.impl.ModelObjectResolver; import com.evolveum.midpoint.model.impl.lens.LensContext; import com.evolveum.midpoint.model.impl.lens.LensFocusContext; import com.evolveum.midpoint.model.impl.lens.OperationalDataManager; -import com.evolveum.midpoint.model.impl.lens.projector.MappingEvaluator; -import com.evolveum.midpoint.model.impl.security.SecurityHelper; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismProperty; import com.evolveum.midpoint.prism.PrismPropertyValue; @@ -55,7 +52,6 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; import com.evolveum.midpoint.xml.ns._public.common.common_3.SecurityPolicyType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ValuePolicyType; import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType; @@ -153,7 +149,7 @@ private void processFocusSecurityQuestions(LensContext context, XMLGre /** * Called from ChangeExecutor. Will modify the execution deltas to hash or remove credentials if needed. */ - public ObjectDelta transformFocusExectionDelta(LensContext context, ObjectDelta focusDelta) throws SchemaException, EncryptionException { + public ObjectDelta transformFocusExecutionDelta(LensContext context, ObjectDelta focusDelta) throws SchemaException, EncryptionException { LensFocusContext focusContext = context.getFocusContext(); SecurityPolicyType securityPolicy = focusContext.getSecurityPolicy(); if (securityPolicy == null) { @@ -164,13 +160,13 @@ public ObjectDelta transformFocusExectionDelta(LensCon return focusDelta; } ObjectDelta transformedDelta = focusDelta.clone(); - transformFocusExectionDeltaCredential(context, credsType, credsType.getPassword(), SchemaConstants.PATH_PASSWORD_VALUE, transformedDelta); + transformFocusExecutionDeltaCredential(context, credsType, credsType.getPassword(), SchemaConstants.PATH_PASSWORD_VALUE, transformedDelta); // TODO: nonce and others return transformedDelta; } - private void transformFocusExectionDeltaCredential(LensContext context, + private void transformFocusExecutionDeltaCredential(LensContext context, CredentialsPolicyType credsType, CredentialPolicyType credPolicyType, ItemPath valuePropertyPath, ObjectDelta delta) throws SchemaException, EncryptionException { if (delta.isDelete()) { @@ -186,10 +182,11 @@ private void transformFocusExectionDeltaCredential(LensCo if (storageType == null || storageType == CredentialsStorageTypeType.ENCRYPTION) { return; } else if (storageType == CredentialsStorageTypeType.HASHING) { - PrismPropertyValue pval = null; if (delta.isAdd()) { PrismProperty prop = delta.getObjectToAdd().findProperty(valuePropertyPath); - hashValues(prop.getValues(), storageMethod); + if (prop != null) { + hashValues(prop.getValues(), storageMethod); + } } else { PropertyDelta propDelta = delta.findPropertyDelta(valuePropertyPath); if (propDelta != null) { @@ -209,9 +206,8 @@ private void transformFocusExectionDeltaCredential(LensCo } } } else { - throw new SchemaException("Unkwnon storage type "+storageType); + throw new SchemaException("Unknown storage type "+storageType); } - } private void hashValues(Collection> values,