diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceActivationEditor.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceActivationEditor.java index 378766b0eab..3f2f8174b8a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceActivationEditor.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceActivationEditor.java @@ -16,15 +16,17 @@ package com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling; +import com.evolveum.midpoint.util.logging.Trace; +import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.form.multivalue.MultiValueTextEditPanel; import com.evolveum.midpoint.web.component.util.SimplePanel; import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.MappingEditorDialog; +import com.evolveum.midpoint.web.component.wizard.resource.dto.MappingTypeDto; import com.evolveum.midpoint.web.util.WebMiscUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.AttributeFetchStrategyType; import com.evolveum.midpoint.xml.ns._public.common.common_3.MappingType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceActivationDefinitionType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceBidirectionalMappingType; -import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; import org.apache.wicket.markup.html.form.DropDownChoice; @@ -40,6 +42,8 @@ * */ public class ResourceActivationEditor extends SimplePanel{ + private static final Trace LOGGER = TraceManager.getTrace(ResourceActivationEditor.class); + private static final String ID_EXISTENCE_FS = "existenceFetchStrategy"; private static final String ID_EXISTENCE_OUT = "existenceOutbound"; private static final String ID_EXISTENCE_IN = "existenceInbound"; @@ -120,17 +124,8 @@ protected IModel createTextModel(final IModel model) { @Override public String getObject() { - MappingType mapping = model.getObject(); - - if(mapping == null){ - return null; - } - - if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){ - return mapping.getName(); - } else { - return getString("MultiValueField.nameNotSpecified"); - } + return MappingTypeDto.createMappingLabel(model.getObject(), LOGGER, getPageBase().getPrismContext(), + getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified")); } }; } @@ -156,17 +151,8 @@ protected IModel createTextModel(final IModel model) { @Override public String getObject() { - MappingType mapping = model.getObject(); - - if(mapping == null){ - return null; - } - - if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){ - return mapping.getName(); - } else { - return getString("MultiValueField.nameNotSpecified"); - } + return MappingTypeDto.createMappingLabel(model.getObject(), LOGGER, getPageBase().getPrismContext(), + getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified")); } }; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAssociationEditor.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAssociationEditor.java index 7ce51098326..4f2e25bc41d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAssociationEditor.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAssociationEditor.java @@ -17,7 +17,6 @@ package com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling; import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.match.MatchingRuleRegistry; import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition; import com.evolveum.midpoint.schema.processor.ResourceAttributeDefinition; import com.evolveum.midpoint.schema.processor.ResourceSchema; @@ -32,10 +31,10 @@ import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.LimitationsEditorDialog; import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.MappingEditorDialog; +import com.evolveum.midpoint.web.component.wizard.resource.dto.MappingTypeDto; import com.evolveum.midpoint.web.page.admin.resources.PageResources; import com.evolveum.midpoint.web.util.WebMiscUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.apache.commons.lang.StringUtils; import org.apache.wicket.RestartResponseException; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; @@ -298,7 +297,20 @@ public String getIdValue(QName object, int index) { add(matchingRule); TextField outboundLabel = new TextField<>(ID_OUTBOUND_LABEL, - new PropertyModel(getModel(), "outbound.name")); + new AbstractReadOnlyModel() { + + @Override + public String getObject() { + ResourceObjectAssociationType association = getModel().getObject(); + + if(association == null){ + return null; + } + + return MappingTypeDto.createMappingLabel(association.getOutbound(), LOGGER, getPageBase().getPrismContext(), + getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified")); + } + }); outboundLabel.setOutputMarkupId(true); outboundLabel.setEnabled(false); add(outboundLabel); @@ -322,17 +334,8 @@ protected IModel createTextModel(final IModel model) { @Override public String getObject() { - MappingType mapping = model.getObject(); - - if(mapping == null){ - return null; - } - - if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){ - return mapping.getName(); - } else { - return getString("MultiValueField.nameNotSpecified"); - } + return MappingTypeDto.createMappingLabel(model.getObject(), LOGGER, getPageBase().getPrismContext(), + getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified")); } }; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAssociationEditor.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAssociationEditor.properties index 059e44dfdf0..7d0cadcec86 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAssociationEditor.properties +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAssociationEditor.properties @@ -52,6 +52,6 @@ kind.nullValid=Choose One direction.nullvalid=Choose One associationAttribute.nullValid=Choose One valueAttribute.nullValid=Choose One -fetchSrategy.nullValid=Choose One +fetchStrategy.nullValid=Choose One matchingRule.nullValid=Choose One diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAttributeEditor.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAttributeEditor.java index 915b7126042..d29b54f28dd 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAttributeEditor.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAttributeEditor.java @@ -16,7 +16,6 @@ package com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling; import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.match.MatchingRuleRegistry; import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition; import com.evolveum.midpoint.schema.processor.ResourceAttributeDefinition; import com.evolveum.midpoint.schema.processor.ResourceSchema; @@ -30,10 +29,10 @@ import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.LimitationsEditorDialog; import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.MappingEditorDialog; +import com.evolveum.midpoint.web.component.wizard.resource.dto.MappingTypeDto; import com.evolveum.midpoint.web.page.admin.resources.PageResources; import com.evolveum.midpoint.web.util.WebMiscUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.apache.commons.lang.StringUtils; import org.apache.wicket.RestartResponseException; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; @@ -232,17 +231,8 @@ public String getObject() { return null; } - MappingType outbound = attributeDefinition.getOutbound(); - - if(outbound == null){ - return null; - } - - if(outbound.getName() != null && StringUtils.isNotEmpty(outbound.getName())){ - return outbound.getName(); - } else { - return getString("MultiValueField.nameNotSpecified"); - } + return MappingTypeDto.createMappingLabel(attributeDefinition.getOutbound(), LOGGER, getPageBase().getPrismContext(), + getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified")); } }); outboundLabel.setEnabled(false); @@ -268,17 +258,8 @@ protected IModel createTextModel(final IModel model) { @Override public String getObject() { - MappingType mapping = model.getObject(); - - if(mapping == null){ - return null; - } - - if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){ - return mapping.getName(); - } else { - return getString("MultiValueField.nameNotSpecified"); - } + return MappingTypeDto.createMappingLabel(model.getObject(), LOGGER, getPageBase().getPrismContext(), + getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified")); } }; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAttributeEditor.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAttributeEditor.properties index 19925ed883f..97567cd18a9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAttributeEditor.properties +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceAttributeEditor.properties @@ -32,4 +32,4 @@ ResourceAttributeEditor.message.cantParseSchema=Couldn't parse resource schema AttributeFetchStrategyType.IMPLICIT=Implicit AttributeFetchStrategyType.EXPLICIT=Explicit matchingRule.nullValid=Choose One -fetchStrategy.nulLValid=Choose One +fetchStrategy.nullValid=Choose One diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceCredentialsEditor.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceCredentialsEditor.java index a83f1590ce4..f4dfe75fcd8 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceCredentialsEditor.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/schemahandling/ResourceCredentialsEditor.java @@ -26,9 +26,9 @@ import com.evolveum.midpoint.web.component.form.multivalue.MultiValueTextEditPanel; import com.evolveum.midpoint.web.component.util.SimplePanel; import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.MappingEditorDialog; +import com.evolveum.midpoint.web.component.wizard.resource.dto.MappingTypeDto; import com.evolveum.midpoint.web.util.WebMiscUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; -import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; @@ -89,8 +89,20 @@ protected void initLayout(){ new EnumChoiceRenderer(this)); add(fetchStrategy); - TextField outboundLabel = new TextField<>(ID_OUTBOUND_LABEL, - new PropertyModel(getModel(), "password.outbound.name")); + TextField outboundLabel = new TextField<>(ID_OUTBOUND_LABEL, new AbstractReadOnlyModel() { + + @Override + public String getObject() { + ResourceCredentialsDefinitionType credentials = getModel().getObject(); + + if(credentials == null || credentials.getPassword() == null){ + return null; + } + + return MappingTypeDto.createMappingLabel(credentials.getPassword().getOutbound(), LOGGER, getPageBase().getPrismContext(), + getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified")); + } + }); outboundLabel.setEnabled(false); outboundLabel.setOutputMarkupId(true); add(outboundLabel); @@ -114,17 +126,8 @@ protected IModel createTextModel(final IModel model) { @Override public String getObject() { - MappingType mapping = model.getObject(); - - if(mapping == null){ - return null; - } - - if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){ - return mapping.getName(); - } else { - return getString("MultiValueField.nameNotSpecified"); - } + return MappingTypeDto.createMappingLabel(model.getObject(), LOGGER, getPageBase().getPrismContext(), + getString("MappingType.label.placeholder"), getString("MultiValueField.nameNotSpecified")); } }; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/MappingTypeDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/MappingTypeDto.java index 8c0d97dae62..e5ed0bdbaa3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/MappingTypeDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/MappingTypeDto.java @@ -24,6 +24,7 @@ import com.evolveum.midpoint.web.util.ExpressionUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import com.evolveum.prism.xml.ns._public.types_3.ItemPathType; +import org.apache.commons.lang.StringUtils; import javax.xml.bind.JAXBElement; import java.io.Serializable; @@ -109,30 +110,11 @@ public MappingTypeDto(MappingType mapping, PrismContext prismContext){ } private void loadExpressions(PrismContext context){ - if(mappingObject.getExpression() != null && mappingObject.getExpression().getExpressionEvaluator() != null - && !mappingObject.getExpression().getExpressionEvaluator().isEmpty()){ + expression = ExpressionUtil.loadExpression(mappingObject, context, LOGGER); - try { - if(mappingObject.getExpression().getExpressionEvaluator().size() == 1){ - expression = context.serializeAtomicValue(mappingObject.getExpression().getExpressionEvaluator().get(0), PrismContext.LANG_XML); - } else{ - StringBuilder sb = new StringBuilder(); - for(JAXBElement element: mappingObject.getExpression().getExpressionEvaluator()){ - String subElement = context.serializeAtomicValue(element, PrismContext.LANG_XML); - sb.append(subElement).append("\n"); - } - expression = sb.toString(); - } - - expressionType = ExpressionUtil.getExpressionType(expression); - if(expressionType != null && expressionType.equals(ExpressionUtil.ExpressionEvaluatorType.SCRIPT)){ - expressionLanguage = ExpressionUtil.getExpressionLanguage(expression); - } - } catch (SchemaException e) { - //TODO - how can we show this error to user? - LoggingUtils.logException(LOGGER, "Could not load expressions from mapping.", e, e.getStackTrace()); - expression = e.getMessage(); - } + expressionType = ExpressionUtil.getExpressionType(expression); + if(expressionType != null && expressionType.equals(ExpressionUtil.ExpressionEvaluatorType.SCRIPT)){ + expressionLanguage = ExpressionUtil.getExpressionLanguage(expression); } } @@ -373,4 +355,30 @@ public int hashCode() { result = 31 * result + (conditionPolicyRef != null ? conditionPolicyRef.hashCode() : 0); return result; } + + /** + * TODO - find a better place for this method, it probably shouldn't be here + * */ + public static String createMappingLabel(MappingType mapping, Trace LOGGER, PrismContext context, + String placeholder, String nameNotSpecified ){ + if(mapping == null){ + return placeholder; + } + + StringBuilder sb = new StringBuilder(); + if(mapping.getName() != null && StringUtils.isNotEmpty(mapping.getName())){ + sb.append(mapping.getName()); + } else { + sb.append(nameNotSpecified); + } + + if(mapping.getExpression() != null && mapping.getExpression().getExpressionEvaluator() != null){ + sb.append(" ("); + sb.append(ExpressionUtil.getExpressionType(ExpressionUtil.loadExpression(mapping, context, LOGGER))); + sb.append(")"); + } + + return sb.toString(); + } + } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.properties index bac8df89fe8..266d9c4c52a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.properties +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.properties @@ -538,5 +538,6 @@ operation.com.evolveum.midpoint.model.controller.ModelController.searchObjects=S operation.com.evolveum.midpoint.model.impl.controller.ModelDiagController.repositorySelfTest.user=Repository self test, user (Model) operation.com.evolveum.midpoint.common.crypto.CryptoUtil.securitySelfTest=Security self test +MappingType.label.placeholder=Create new mapping TextField.universal.placeholder=Insert value MultiValueField.nameNotSpecified=(Name not specified) \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ExpressionUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ExpressionUtil.java index 1be5b673bc8..96aad3a7a1d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ExpressionUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/util/ExpressionUtil.java @@ -16,8 +16,15 @@ package com.evolveum.midpoint.web.util; +import com.evolveum.midpoint.prism.PrismContext; +import com.evolveum.midpoint.util.exception.SchemaException; +import com.evolveum.midpoint.util.logging.LoggingUtils; +import com.evolveum.midpoint.util.logging.Trace; +import com.evolveum.midpoint.xml.ns._public.common.common_3.MappingType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; +import javax.xml.bind.JAXBElement; + /** * @author shood * */ @@ -77,6 +84,7 @@ public void setLanguage(String language) { public static final String ELEMENT_SCRIPT = ""; public static final String ELEMENT_GENERATE = ""; + public static final String ELEMENT_GENERATE_WITH_NS = " element: mapping.getExpression().getExpressionEvaluator()){ + String subElement = prismContext.serializeAtomicValue(element, PrismContext.LANG_XML); + sb.append(subElement).append("\n"); + } + expression = sb.toString(); + } + } catch (SchemaException e) { + //TODO - how can we show this error to user? + LoggingUtils.logException(LOGGER, "Could not load expressions from mapping.", e, e.getStackTrace()); + expression = e.getMessage(); + } + } + + return expression; + } }