Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Sep 9, 2015
2 parents 44f053e + cc01de8 commit 5a45c64
Show file tree
Hide file tree
Showing 49 changed files with 265 additions and 172 deletions.
Expand Up @@ -16,10 +16,11 @@

package com.evolveum.midpoint.web.component.progress;

import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.web.component.util.SimplePanel;
import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusIcon;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultStatusType;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
Expand Down
Expand Up @@ -16,9 +16,9 @@

package com.evolveum.midpoint.web.component.progress;

import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.model.api.ProgressInformation;
import com.evolveum.midpoint.prism.delta.ChangeType;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.result.OperationResultStatus;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultStatusType;

Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismObjectDefinition;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceAttributeContainer;
import com.evolveum.midpoint.schema.processor.ResourceAttributeContainerDefinition;
Expand Down
Expand Up @@ -23,6 +23,7 @@
import com.evolveum.midpoint.prism.parser.QueryConvertor;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.util.ItemPathUtil;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.constants.MidPointConstants;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.processor.*;
Expand Down
Expand Up @@ -34,6 +34,7 @@
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismObjectDefinition;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceSchema;
import com.evolveum.midpoint.schema.util.MiscSchemaUtil;
Expand Down
Expand Up @@ -28,6 +28,7 @@
import com.evolveum.midpoint.prism.delta.PropertyDelta;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType;

/**
Expand Down
Expand Up @@ -1417,25 +1417,30 @@ public String debugDump(int indent) {
DebugUtil.indentDebugDump(sb, indent);
sb.append(debugName());
sb.append("<").append(objectTypeClass.getSimpleName()).append(">(");
sb.append(debugIdentifiers()).append(",").append(changeType).append("):\n");
if (objectToAdd == null) {
if (changeType == ChangeType.ADD) {
DebugUtil.indentDebugDump(sb, indent + 1);
sb.append("null");
}
sb.append(debugIdentifiers()).append(",").append(changeType);
if (changeType == ChangeType.DELETE) {
// Nothing to print for delete
sb.append(")");
} else {
sb.append(objectToAdd.debugDump(indent + 1));
}
if (modifications != null) {
Iterator<? extends ItemDelta> i = modifications.iterator();
while (i.hasNext()) {
sb.append(i.next().debugDump(indent + 1));
if (i.hasNext()) {
sb.append("\n");
}
}
sb.append("):\n");
if (objectToAdd == null) {
if (changeType == ChangeType.ADD) {
DebugUtil.indentDebugDump(sb, indent + 1);
sb.append("null");
}
} else {
sb.append(objectToAdd.debugDump(indent + 1));
}
if (modifications != null) {
Iterator<? extends ItemDelta> i = modifications.iterator();
while (i.hasNext()) {
sb.append(i.next().debugDump(indent + 1));
if (i.hasNext()) {
sb.append("\n");
}
}
}
}
// Nothing to print for delete
return sb.toString();
}

Expand Down
Expand Up @@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.evolveum.midpoint.common.refinery;
package com.evolveum.midpoint.schema;

import java.io.Serializable;

Expand Down Expand Up @@ -229,7 +229,7 @@ public boolean equivalent(Object obj) {
if (intent == null) {
if (other.intent != null)
return false;
} else if (!equalsAccountType(this.intent, other.intent))
} else if (!equalsIntent(this.intent, other.intent))
return false;
if (resourceOid == null) {
if (other.resourceOid != null)
Expand All @@ -241,7 +241,7 @@ public boolean equivalent(Object obj) {
return true;
}

public static boolean equalsAccountType(String a, String b) {
public static boolean equalsIntent(String a, String b) {
if (a == null || b == null) {
return false;
}
Expand Down
Expand Up @@ -16,6 +16,7 @@
package com.evolveum.midpoint.schema.util;

import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceAttribute;
import com.evolveum.midpoint.schema.processor.ResourceAttributeContainer;
Expand Down Expand Up @@ -409,6 +410,25 @@ public static boolean matches(ShadowType shadowType, String resourceOid, ShadowK
}
return MiscUtil.equals(intent, shadowType.getIntent());
}

public static boolean matches(PrismObject<ShadowType> shadow, ResourceShadowDiscriminator discr) {
return matches(shadow.asObjectable(), discr);
}

public static boolean matches(ShadowType shadowType, ResourceShadowDiscriminator discr) {
if (shadowType == null) {
return false;
}
if (!discr.getResourceOid().equals(shadowType.getResourceRef().getOid())) {
return false;
}
if (!MiscUtil.equals(discr.getKind(), shadowType.getKind())) {
return false;
}
return ResourceShadowDiscriminator.equalsIntent(shadowType.getIntent(), discr.getIntent());
}



public static String getHumanReadableName(PrismObject<? extends ShadowType> shadow) {
if (shadow == null) {
Expand Down
Expand Up @@ -16,7 +16,7 @@

package com.evolveum.midpoint.model.api;

import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.DebugDumpable;

Expand Down
Expand Up @@ -18,11 +18,11 @@
import java.io.Serializable;
import java.util.Collection;

import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.model.api.ProgressInformation;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.DeltaSetTriple;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.util.DebugDumpable;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationType;
Expand Down
Expand Up @@ -15,8 +15,8 @@
*/
package com.evolveum.midpoint.model.api.context;

import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType;

Expand Down
Expand Up @@ -18,7 +18,6 @@
import com.evolveum.midpoint.common.refinery.RefinedAttributeDefinition;
import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition;
import com.evolveum.midpoint.common.refinery.RefinedResourceSchema;
import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.model.api.context.ModelContext;
import com.evolveum.midpoint.model.api.context.SynchronizationPolicyDecision;
import com.evolveum.midpoint.model.api.expr.MidpointFunctions;
Expand All @@ -39,6 +38,7 @@
import com.evolveum.midpoint.repo.api.RepositoryService;
import com.evolveum.midpoint.schema.DeltaConvertor;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.ResultHandler;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
Expand Down
Expand Up @@ -22,7 +22,6 @@
import static com.evolveum.midpoint.model.api.ProgressInformation.StateType.ENTERING;

import com.evolveum.midpoint.common.Clock;
import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.model.api.ModelAuthorizationAction;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.api.ProgressInformation;
Expand Down Expand Up @@ -58,6 +57,7 @@
import com.evolveum.midpoint.repo.api.RepositoryService;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.ObjectDeltaOperation;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
Expand Down
Expand Up @@ -15,7 +15,6 @@
*/
package com.evolveum.midpoint.model.impl.lens;

import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.api.ProgressInformation;
import com.evolveum.midpoint.model.api.ProgressListener;
Expand All @@ -26,6 +25,7 @@
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.provisioning.api.ProvisioningService;
import com.evolveum.midpoint.schema.ObjectDeltaOperation;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.DebugUtil;
import com.evolveum.midpoint.util.QNameUtil;
Expand Down
Expand Up @@ -17,7 +17,6 @@

import java.util.Collection;

import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.model.common.expression.ObjectDeltaObject;
import com.evolveum.midpoint.prism.Objectable;
import com.evolveum.midpoint.prism.PrismContainer;
Expand All @@ -33,6 +32,7 @@
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.path.NameItemPathSegment;
import com.evolveum.midpoint.schema.ObjectDeltaOperation;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.DebugUtil;
Expand Down
Expand Up @@ -28,19 +28,19 @@
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.schema.DeltaConvertor;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.exception.*;
import com.evolveum.midpoint.xml.ns._public.model.model_context_3.LensProjectionContextType;

import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType;

import org.apache.commons.lang.StringUtils;
import org.jvnet.jaxb2_commons.lang.Validate;

import com.evolveum.midpoint.common.crypto.CryptoUtil;
import com.evolveum.midpoint.common.refinery.RefinedAttributeDefinition;
import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition;
import com.evolveum.midpoint.common.refinery.RefinedResourceSchema;
import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.model.api.context.ModelProjectionContext;
import com.evolveum.midpoint.model.api.context.SynchronizationPolicyDecision;
import com.evolveum.midpoint.prism.delta.ChangeType;
Expand Down
Expand Up @@ -28,13 +28,13 @@
import javax.xml.namespace.QName;

import com.evolveum.midpoint.schema.util.ObjectResolver;

import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.mutable.MutableBoolean;

import com.evolveum.midpoint.common.ActivationComputer;
import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition;
import com.evolveum.midpoint.common.refinery.RefinedResourceSchema;
import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.model.api.PolicyViolationException;
import com.evolveum.midpoint.model.api.context.SynchronizationPolicyDecision;
import com.evolveum.midpoint.model.common.expression.Expression;
Expand Down Expand Up @@ -65,6 +65,7 @@
import com.evolveum.midpoint.provisioning.api.ProvisioningService;
import com.evolveum.midpoint.repo.api.RepositoryService;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.constants.ExpressionConstants;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
Expand Down Expand Up @@ -615,66 +616,6 @@ public static <V extends PrismValue, F extends ObjectType> void evaluateScript(
}
}

public static <F extends ObjectType> void loadFullAccount(LensContext<F> context, LensProjectionContext accCtx, ProvisioningService provisioningService,
OperationResult result) throws ObjectNotFoundException, CommunicationException, SchemaException, ConfigurationException, SecurityViolationException {
if (accCtx.isFullShadow()) {
// already loaded
return;
}
if (accCtx.isAdd() && accCtx.getOid() == null) {
// nothing to load yet
return;
}
ResourceShadowDiscriminator discr = accCtx.getResourceShadowDiscriminator();
if (discr != null && discr.getOrder() > 0) {
// It may be just too early to load the projection
if (LensUtil.hasLowerOrderContext(context, accCtx) && (context.getExecutionWave() < accCtx.getWave())) {
// We cannot reliably load the context now
return;
}
}


GetOperationOptions getOptions = GetOperationOptions.createAllowNotFound();
if (SchemaConstants.CHANGE_CHANNEL_DISCOVERY.equals(context.getChannel())) {
LOGGER.trace("Loading full resource object {} from provisioning - with doNotDiscover to avoid loops", accCtx);
getOptions.setDoNotDiscovery(true);
} else {
LOGGER.trace("Loading full resource object {} from provisioning (discovery enabled)", accCtx);
}
try {
Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(getOptions);
PrismObject<ShadowType> objectOld = provisioningService.getObject(ShadowType.class,
accCtx.getOid(), options,
null, result);
// TODO: use setLoadedObject() instead?
accCtx.setObjectCurrent(objectOld);
ShadowType oldShadow = objectOld.asObjectable();
accCtx.determineFullShadowFlag(oldShadow.getFetchResult());

} catch (ObjectNotFoundException ex) {
LOGGER.trace("Load of full resource object {} ended with ObjectNotFoundException (options={})", accCtx, getOptions);
if (accCtx.isDelete()){
//this is OK, shadow was deleted, but we will continue in processing with old shadow..and set it as full so prevent from other full loading
accCtx.setFullShadow(true);
} else {
accCtx.setSynchronizationPolicyDecision(SynchronizationPolicyDecision.BROKEN);
if (GetOperationOptions.isDoNotDiscovery(getOptions)) {
LOGGER.error("Load of full resource object {} resulted in ObjectNotFoundException (discovery disabled to avoid loops)", accCtx, getOptions);
throw ex;
} else {
// Setting the context to broken should be enough here.
}
}
}

accCtx.recompute();


if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Loaded full resource object:\n{}", accCtx.debugDump());
}
}

public static Object getIterationVariableValue(LensProjectionContext accCtx) {
Integer iterationOld = null;
Expand Down
Expand Up @@ -35,7 +35,6 @@
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.common.ActivationComputer;
import com.evolveum.midpoint.common.refinery.ResourceShadowDiscriminator;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.api.PolicyViolationException;
import com.evolveum.midpoint.model.api.context.EvaluatedAssignment;
Expand Down Expand Up @@ -86,6 +85,7 @@
import com.evolveum.midpoint.prism.xml.XsdTypeMapper;
import com.evolveum.midpoint.provisioning.api.ProvisioningService;
import com.evolveum.midpoint.repo.api.RepositoryService;
import com.evolveum.midpoint.schema.ResourceShadowDiscriminator;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.result.OperationResultStatus;
Expand Down

0 comments on commit 5a45c64

Please sign in to comment.