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
1azyman committed Oct 13, 2022
2 parents 18e3a04 + 1e74214 commit f191b0b
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@

import com.evolveum.midpoint.gui.api.prism.ItemStatus;
import com.evolveum.midpoint.gui.api.util.ModelServiceLocator;
import com.evolveum.midpoint.prism.Item;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.prism.Revivable;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.util.DebugDumpable;
Expand Down Expand Up @@ -93,4 +90,6 @@ public interface ItemWrapper<I extends Item, VW extends PrismValueWrapper> exten

boolean isProcessProvenanceMetadata();
void setProcessProvenanceMetadata(boolean processProvenanceMetadata);

<C extends Containerable> PrismContainerValueWrapper<C> getParentContainerValue(Class<? extends C> parentClass);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.io.Serializable;

import com.evolveum.midpoint.gui.impl.prism.wrapper.ValueMetadataWrapperImpl;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.prism.delta.ItemDelta;
Expand Down Expand Up @@ -44,4 +45,6 @@ public interface PrismValueWrapper<T> extends Serializable, DebugDumpable {

String toShortString();

<C extends Containerable> PrismContainerValueWrapper<C> getParentContainerValue(Class<? extends C> parentClass);

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,39 +9,32 @@
import com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteTextPanel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.wrapper.*;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebPrismUtil;
import com.evolveum.midpoint.gui.impl.component.input.AutoCompleteDisplayableValueConverter;
import com.evolveum.midpoint.gui.impl.page.admin.resource.ResourceDetailsModel;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.processor.ResourceAssociationDefinition;
import com.evolveum.midpoint.schema.processor.ResourceAttributeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceSchema;
import com.evolveum.midpoint.util.DOMUtil;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.web.component.input.DropDownChoicePanel;
import com.evolveum.midpoint.web.component.input.QNameObjectTypeChoiceRenderer;
import com.evolveum.midpoint.web.component.input.TextPanel;
import com.evolveum.midpoint.web.component.prism.InputPanel;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnChangeAjaxFormUpdatingBehavior;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;
import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.ActivationCapabilityType;

import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.ActivationStatusCapabilityType;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.extensions.ajax.markup.html.autocomplete.AbstractAutoCompleteRenderer;
import org.apache.wicket.extensions.ajax.markup.html.autocomplete.IAutoCompleteRenderer;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.Response;
import org.apache.wicket.util.convert.IConverter;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.xml.namespace.QName;
import java.io.Serializable;
import java.util.ArrayList;
Expand All @@ -53,21 +46,22 @@
* @author katkav
*/
@Component
public class AssociationAttributePanelFactory extends DropDownChoicePanelFactory implements Serializable{
public class QNameAttributePanelFactory extends DropDownChoicePanelFactory implements Serializable{

@Override
public <IW extends ItemWrapper<?, ?>> boolean match(IW wrapper) {
return (ResourceObjectAssociationType.F_ASSOCIATION_ATTRIBUTE.equals(wrapper.getItemName())
|| ResourceObjectAssociationType.F_VALUE_ATTRIBUTE.equals(wrapper.getItemName())
|| ResourceObjectAssociationType.F_SHORTCUT_ASSOCIATION_ATTRIBUTE.equals(wrapper.getItemName())
|| ResourceObjectAssociationType.F_SHORTCUT_VALUE_ATTRIBUTE.equals(wrapper.getItemName()))
|| ResourceObjectAssociationType.F_SHORTCUT_VALUE_ATTRIBUTE.equals(wrapper.getItemName())
|| ActivationStatusCapabilityType.F_ATTRIBUTE.equivalent(wrapper.getItemName()))
&& DOMUtil.XSD_QNAME.equals(wrapper.getTypeName());
}

@Override
protected InputPanel getPanel(PrismPropertyPanelContext<QName> panelCtx) {
PrismObjectWrapper<ResourceType> objectWrapper = panelCtx.unwrapWrapperModel().findObjectWrapper();
if (objectWrapper != null) {
PrismObjectWrapper<ObjectType> objectWrapper = panelCtx.unwrapWrapperModel().findObjectWrapper();
if (objectWrapper != null && ResourceType.class.isAssignableFrom(objectWrapper.getTypeClass())) {

IModel<List<DisplayableValue<QName>>> values = new LoadableDetachableModel<>() {
@Override
Expand Down Expand Up @@ -216,6 +210,12 @@ private ResourceObjectTypeDefinitionType getResourceObjectType(PrismValueWrapper
}
return resourceObjectType;
}

PrismContainerValueWrapper<ResourceObjectTypeDefinitionType> parentValue =
propertyWrapper.getParentContainerValue(ResourceObjectTypeDefinitionType.class);
if (parentValue != null) {
return parentValue.getRealValue();
}
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -796,4 +796,13 @@ public void setProcessProvenanceMetadata(boolean processProvenanceMetadata) {
public Optional<ComplexTypeDefinition> structuredType() {
return getItemDefinition().structuredType();
}

@Override
public <C extends Containerable> PrismContainerValueWrapper<C> getParentContainerValue(Class<? extends C> parentClass) {
PrismContainerValueWrapper<?> parent = getParent();
if (parent == null) {
return null;
}
return parent.getParentContainerValue(parentClass);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@
*/
package com.evolveum.midpoint.gui.impl.prism.wrapper;

import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismValueWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.*;
import com.evolveum.midpoint.gui.api.util.WebPrismUtil;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.delta.ContainerDelta;
Expand All @@ -22,6 +20,8 @@
import com.evolveum.midpoint.web.security.MidPointApplication;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ValueMetadataType;

import org.jetbrains.annotations.NotNull;

import javax.xml.namespace.QName;

/**
Expand Down Expand Up @@ -192,4 +192,16 @@ public String toShortString() {
}
return getRealValue().toString();
}

@Override
public <C extends Containerable> PrismContainerValueWrapper<C> getParentContainerValue(@NotNull Class<? extends C> parentClass) {
ItemWrapper parent = getParent();
if (parent == null || parent instanceof PrismObjectWrapper) {
return null;
}
if (parent instanceof PrismContainerWrapper && parentClass.equals(parent.getTypeClass())) {
return (PrismContainerValueWrapper<C>) this;
}
return parent.getParentContainerValue(parentClass);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,14 @@ public void setProcessProvenanceMetadata(boolean processProvenanceMetadata) {

}

@Override
public <C extends Containerable> PrismContainerValueWrapper<C> getParentContainerValue(Class<? extends C> parentClass) {
if (metadataValueWrapper.getParent() != null) {
return metadataValueWrapper.getParent().getParentContainerValue(parentClass);
}
return null;
}

@Override
public String debugDump(int indent) {
return metadataValueWrapper.debugDump(indent);
Expand Down

0 comments on commit f191b0b

Please sign in to comment.