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
katkav committed Feb 6, 2015
2 parents 63e5ce9 + 453a5fa commit 3d28144
Show file tree
Hide file tree
Showing 88 changed files with 1,349 additions and 545 deletions.
Expand Up @@ -18,11 +18,13 @@

import com.evolveum.midpoint.common.StaticExpressionUtil;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MappingType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectFactory;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceAttributeDefinitionType;
import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;
import com.evolveum.prism.xml.ns._public.types_3.RawType;

import org.apache.commons.lang.StringUtils;
Expand Down Expand Up @@ -129,7 +131,7 @@ public ResourceAttributeDefinitionType getConstruction() throws SchemaException
}

ResourceAttributeDefinitionType attrConstruction = new ResourceAttributeDefinitionType();
attrConstruction.setRef(definition.getName());
attrConstruction.setRef(new ItemPathType(new ItemPath(definition.getName())));
MappingType outbound = construction != null && construction.getOutbound() != null ? construction.getOutbound().clone() : new MappingType();
attrConstruction.setOutbound(outbound);

Expand Down
Expand Up @@ -20,6 +20,7 @@
import com.evolveum.midpoint.common.refinery.RefinedResourceSchema;
import com.evolveum.midpoint.model.api.ModelService;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.EqualFilter;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
Expand All @@ -42,6 +43,7 @@
import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
Expand Down Expand Up @@ -629,7 +631,7 @@ private ResourceAttributeDefinitionType findOrCreateValueConstruction(PrismPrope
}

ResourceAttributeDefinitionType construction = new ResourceAttributeDefinitionType();
construction.setRef(attrDef.getName());
construction.setRef(new ItemPathType(new ItemPath(attrDef.getName())));

return construction;
}
Expand Down
Expand Up @@ -20,6 +20,7 @@
import com.evolveum.midpoint.model.api.ModelService;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.util.ItemPathUtil;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
Expand All @@ -39,8 +40,8 @@
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.web.util.WebModelUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

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

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand All @@ -63,6 +64,7 @@
import org.apache.wicket.util.string.Strings;

import javax.xml.namespace.QName;

import java.util.*;

/**
Expand Down Expand Up @@ -369,7 +371,7 @@ public String getObject() {
StringBuilder sb = new StringBuilder();

if(model.getObject().getRef() != null){
sb.append(model.getObject().getRef().getLocalPart());
sb.append(ItemPathUtil.getOnlySegmentQName(model.getObject().getRef()).getLocalPart());
} else {
return null;
}
Expand Down Expand Up @@ -420,7 +422,7 @@ public String getObject() {
StringBuilder sb = new StringBuilder();

if(model.getObject().getRef() != null){
sb.append(model.getObject().getRef().getLocalPart());
sb.append(ItemPathUtil.getOnlySegmentQName(model.getObject().getRef()).getLocalPart());
} else {
return null;
}
Expand Down
Expand Up @@ -17,6 +17,7 @@
package com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.util.ItemPathUtil;
import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceAttributeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceSchema;
Expand All @@ -37,6 +38,7 @@
import com.evolveum.midpoint.web.util.InfoTooltipBehavior;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
Expand All @@ -50,6 +52,7 @@
import org.w3c.dom.Element;

import javax.xml.namespace.QName;

import java.util.ArrayList;
import java.util.List;

Expand Down Expand Up @@ -122,7 +125,7 @@ public String getObject() {
if(association.getDisplayName() == null && association.getRef() == null){
return getString("ResourceAssociationEditor.label.new");
} else {
return getString("ResourceAssociationEditor.label.edit", association.getRef().getLocalPart());
return getString("ResourceAssociationEditor.label.edit", ItemPathUtil.getOnlySegmentQName(association.getRef()).getLocalPart());
}
}
});
Expand Down
Expand Up @@ -16,6 +16,7 @@
package com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.util.ItemPathUtil;
import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceAttributeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceSchema;
Expand All @@ -36,6 +37,7 @@
import com.evolveum.midpoint.web.util.InfoTooltipBehavior;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
Expand All @@ -52,6 +54,7 @@
import org.w3c.dom.Element;

import javax.xml.namespace.QName;

import java.util.ArrayList;
import java.util.List;

Expand Down Expand Up @@ -117,7 +120,7 @@ public String getObject() {
if(attribute.getDisplayName() == null && attribute.getRef() == null){
return getString("ResourceAttributeEditor.label.new");
} else {
return getString("ResourceAttributeEditor.label.edit", attribute.getRef().getLocalPart());
return getString("ResourceAttributeEditor.label.edit", ItemPathUtil.getOnlySegmentQName(attribute.getRef()).getLocalPart());
}
}
});
Expand Down
Expand Up @@ -52,6 +52,7 @@ <h3><wicket:message key="PageInternals.title.internalsConfig"/></h3>
<div class="form-group" wicket:id="consistencyChecks"/>
<div class="form-group" wicket:id="encryptionChecks"/>
<div class="form-group" wicket:id="readEncryptionChecks"/>
<div class="form-group" wicket:id="tolerateUndeclaredPrefixes"/>

<div class="main-button-bar">
<a class="btn btn-primary" wicket:id="updateInternalsConfig"/>
Expand Down
Expand Up @@ -39,6 +39,7 @@ public class PageInternals extends PageAdminConfiguration {
private static final String ID_CONSISTENCY_CHECKS = "consistencyChecks";
private static final String ID_ENCRYPTION_CHECKS = "encryptionChecks";
private static final String ID_READ_ENCRYPTION_CHECKS = "readEncryptionChecks";
private static final String ID_TOLERATE_UNDECLARED_PREFIXES = "tolerateUndeclaredPrefixes";
private static final String ID_DETAILED_DEBUG_DUMP = "detailedDebugDump";

private static final String LABEL_SIZE = "col-md-4";
Expand Down Expand Up @@ -145,6 +146,10 @@ private void initInternalsConfigForm() {
new PropertyModel<Boolean>(internalsModel, InternalsConfigDto.F_READ_ENCRYPTION_CHECKS),
createStringResource("PageInternals.checkReadEncrypion"), LABEL_SIZE, INPUT_SIZE);
form.add(encryptionRead);
CheckFormGroup tolerateUndeclaredPrefixes = new CheckFormGroup(ID_TOLERATE_UNDECLARED_PREFIXES,
new PropertyModel<Boolean>(internalsModel, InternalsConfigDto.F_TOLERATE_UNDECLARED_PREFIXES),
createStringResource("PageInternals.tolerateUndeclaredPrefixes"), LABEL_SIZE, INPUT_SIZE);
form.add(tolerateUndeclaredPrefixes);

AjaxSubmitButton update = new AjaxSubmitButton(ID_UPDATE_INTERNALS_CONFIG,
createStringResource("PageBase.button.update")) {
Expand Down
Expand Up @@ -23,6 +23,7 @@ PageInternals.title.timeChange=Time change
PageInternals.checkConsistency=Check consistency
PageInternals.checkEncryption=Check encryption
PageInternals.checkReadEncrypion=Check read encryption
PageInternals.tolerateUndeclaredPrefixes=Tolerate undeclared prefixes in QNames and paths
PageInternals.detailedDebugDump=Detailed debug dump


Expand Up @@ -17,6 +17,7 @@
package com.evolveum.midpoint.web.page.admin.configuration.dto;

import com.evolveum.midpoint.common.InternalsConfig;
import com.evolveum.midpoint.util.DOMUtil;
import com.evolveum.midpoint.util.DebugUtil;

import java.io.Serializable;
Expand All @@ -30,21 +31,25 @@ public class InternalsConfigDto implements Serializable {
public static final String F_ENCRYPTION_CHECKS = "encryptionChecks";
public static final String F_READ_ENCRYPTION_CHECKS = "readEncryptionChecks";
public static final String F_DETAILED_DEBUG_DUMP = "detailedDebugDump";
public static final String F_TOLERATE_UNDECLARED_PREFIXES = "tolerateUndeclaredPrefixes";

//internals config
private boolean consistencyChecks;
private boolean encryptionChecks;
private boolean readEncryptionChecks;
//debug util
private boolean detailedDebugDump;

//DOM util
private boolean tolerateUndeclaredPrefixes;

public InternalsConfigDto() {
consistencyChecks = InternalsConfig.consistencyChecks;
encryptionChecks = InternalsConfig.encryptionChecks;
readEncryptionChecks = InternalsConfig.readEncryptionChecks;

detailedDebugDump = DebugUtil.isDetailedDebugDump();

tolerateUndeclaredPrefixes = DOMUtil.isTolerateUndeclaredPrefixes();
}

public boolean isConsistencyChecks() {
Expand Down Expand Up @@ -79,10 +84,20 @@ public void setDetailedDebugDump(boolean detailedDebugDump) {
this.detailedDebugDump = detailedDebugDump;
}

public boolean isTolerateUndeclaredPrefixes() {
return tolerateUndeclaredPrefixes;
}

public void setTolerateUndeclaredPrefixes(boolean tolerateUndeclaredPrefixes) {
this.tolerateUndeclaredPrefixes = tolerateUndeclaredPrefixes;
}

// undeclared prefixes is also handled here
public void saveInternalsConfig() {
InternalsConfig.consistencyChecks = consistencyChecks;
InternalsConfig.encryptionChecks = encryptionChecks;
InternalsConfig.readEncryptionChecks = readEncryptionChecks;
DOMUtil.setTolerateUndeclaredPrefixes(tolerateUndeclaredPrefixes);
}

public void saveDebugUtil() {
Expand Down
Expand Up @@ -63,4 +63,6 @@ public interface MidpointConfiguration {
* @return
*/
Document getXmlConfigAsDocument();

boolean isSafeMode();
}
Expand Up @@ -19,6 +19,7 @@

import org.apache.commons.lang.BooleanUtils;

import com.evolveum.midpoint.prism.util.ItemPathUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MappingType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceObjectAssociationDirectionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceObjectAssociationType;
Expand Down Expand Up @@ -50,7 +51,7 @@ public void setAssociationTarget(RefinedObjectClassDefinition associationTarget)
}

public QName getName() {
return resourceObjectAssociationType.getRef();
return ItemPathUtil.getOnlySegmentQName(resourceObjectAssociationType.getRef());
}

public ShadowKindType getKind() {
Expand Down
Expand Up @@ -22,6 +22,7 @@
import com.evolveum.midpoint.prism.PrismObjectDefinition;
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.constants.MidPointConstants;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.processor.*;
Expand All @@ -40,6 +41,7 @@
import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.CountObjectsCapabilityType;
import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.PagedSearchCapabilityType;
import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType;
import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;

import javax.xml.namespace.QName;

Expand Down Expand Up @@ -374,6 +376,11 @@ public void add(RefinedAttributeDefinition refinedAttributeDefinition) {
attributeDefinitions.add(refinedAttributeDefinition);
}

public boolean containsAttributeDefinition(ItemPathType pathType) {
QName segmentQName = ItemPathUtil.getOnlySegmentQName(pathType);
return containsAttributeDefinition(segmentQName);
}

public boolean containsAttributeDefinition(QName attributeName) {
for (RefinedAttributeDefinition rAttributeDef : attributeDefinitions) {
if (QNameUtil.match(rAttributeDef.getName(), attributeName)) {
Expand Down Expand Up @@ -592,11 +599,12 @@ private static ResourceAttributeDefinitionType findAttributeDefinitionType(QName
ResourceAttributeDefinitionType foundAttrDefType = null;
for (ResourceAttributeDefinitionType attrDefType : rOcDefType.getAttribute()) {
if (attrDefType.getRef() != null) {
if (QNameUtil.match(attrDefType.getRef(), attrName)) {
QName ref = ItemPathUtil.getOnlySegmentQName(attrDefType.getRef());
if (QNameUtil.match(ref, attrName)) {
if (foundAttrDefType == null) {
foundAttrDefType = attrDefType;
} else {
throw new SchemaException("Duplicate definition of attribute " + attrDefType.getRef() + " in "+typeDesc+" type "
throw new SchemaException("Duplicate definition of attribute " + ref + " in "+typeDesc+" type "
+ rOcDefType.getIntent() + ", in " + contextDescription);
}
}
Expand Down
Expand Up @@ -417,7 +417,23 @@ private EventResult validateObjectInternal(Element objectElement, OperationResul
}
objectResult.recordFatalError(ex);
return EventResult.skipObject();
}
} catch (RuntimeException ex) {
validatorResult.recordFatalError("Couldn't parse object: " + ex.getMessage(), ex);
if (verbose) {
ex.printStackTrace();
}
if (handler != null) {
try {
handler.handleGlobalError(validatorResult);
} catch (RuntimeException e) {
// Make sure that unhandled exceptions are recorded in object result before they are rethrown
objectResult.recordFatalError("Internal error: handleGlobalError call failed: "+e.getMessage(), e);
throw e;
}
}
objectResult.recordFatalError(ex);
return EventResult.skipObject();
}

}

Expand Down
Expand Up @@ -128,12 +128,20 @@ public Class<Objectable> getTargetTypeCompileTimeClass() {
}
}

public void setTargetType(QName targetType) {
public void setTargetType(QName targetType) {
setTargetType(targetType, false);
}

/**
* @param targetType
* @param allowEmptyNamespace This is an ugly hack. See comment in DOMUtil.validateNonEmptyQName.
*/
public void setTargetType(QName targetType, boolean allowEmptyNamespace) {
// Null value is OK
if (targetType != null) {
// But non-empty is not ..
Itemable item = getParent();
DOMUtil.validateNonEmptyQName(targetType, " in target type in reference "+ (item == null ? "(unknown)" : item.getElementName()));
DOMUtil.validateNonEmptyQName(targetType, " in target type in reference "+ (item == null ? "(unknown)" : item.getElementName()), allowEmptyNamespace);
}
this.targetType = targetType;
}
Expand Down
Expand Up @@ -256,8 +256,9 @@ private <T> void serializeFromPrimitive(PrimitiveXNode<T> primitive, QName nodeN
}

T value = primitive.getValue();
if ( value == null){
if (value == null) {
value = (T) primitive.getStringValue();
// TODO write also namespace declarations!
}
if (nodeName == null) {
generator.writeObject(value);
Expand Down

0 comments on commit 3d28144

Please sign in to comment.