Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Sep 28, 2021
2 parents 831e59e + 71a14c9 commit 843dfd8
Show file tree
Hide file tree
Showing 110 changed files with 3,802 additions and 1,687 deletions.
8 changes: 3 additions & 5 deletions dist/javadoc/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,10 @@
<name>midPoint JavaDoc</name>

<properties>
<!-- see notes in main midPoint POM -->
<!-- MID-5666: For some reason deploying of javadoc was disabled -->
<!--
<!-- Don't set maven.deploy.skip to true, we want Jenkins to publish artifacts, see MID-5666. -->
<!-- See notes in main midPoint POM, install skip allows for -Dmaven.javadoc.skip, see MID-7242. -->
<maven.install.skip>true</maven.install.skip>
<maven.deploy.skip>true</maven.deploy.skip>
-->
<!-- This enables build without -DskipTests option (e.g. full build). -->
<maven.test.skip>true</maven.test.skip>
</properties>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,33 +11,30 @@
import java.util.*;
import javax.annotation.PostConstruct;

import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.prism.polystring.PolyString;

import com.evolveum.midpoint.schema.util.MiscSchemaUtil;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType;

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

import org.apache.commons.lang3.BooleanUtils;
import org.apache.wicket.markup.html.panel.Panel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.model.api.AdminGuiConfigurationMergeManager;
import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.model.api.authentication.GuiProfileCompilable;
import com.evolveum.midpoint.model.api.authentication.GuiProfileCompilerRegistry;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.util.MiscSchemaUtil;
import com.evolveum.midpoint.util.ClassPathUtil;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.web.application.*;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

@Component
public class DefaultGuiConfigurationCompiler implements GuiProfileCompilable {
Expand All @@ -46,40 +43,39 @@ public class DefaultGuiConfigurationCompiler implements GuiProfileCompilable {
@Autowired private PrismContext prismContext;
@Autowired private AdminGuiConfigurationMergeManager adminGuiConfigurationMergeManager;

@SuppressWarnings("SpellCheckingInspection")
private static final String[] PANEL_PACKAGES_TO_SCAN = {
"com.evolveum.midpoint.web.component.objectdetails", //Old panels
"com.evolveum.midpoint.web.component.assignment", //Assignments
"com.evolveum.midpoint.gui.impl.page.admin",
"com.evolveum.midpoint.gui.impl.page.admin.component",
"com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.component",
"com.evolveum.midpoint.gui.impl.page.admin.abstractrole.component",
"com.evolveum.midpoint.gui.impl.page.admin.focus.component",
"com.evolveum.midpoint.gui.impl.page.admin.resource.component",
"com.evolveum.midpoint.gui.impl.page.admin.task.component",
"com.evolveum.midpoint.gui.impl.component.assignment",
"com.evolveum.midpoint.gui.impl.page.admin.archetype.component",
"com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.component",
"com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.component.assignmentType.assignment",
"com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.component.assignmentType.inducement",
"com.evolveum.midpoint.gui.impl.page.admin.org.component",
"com.evolveum.midpoint.gui.impl.page.admin.cases.component",
"com.evolveum.midpoint.gui.impl.page.admin.user.component",
"com.evolveum.midpoint.gui.impl.page.admin.component",
"com.evolveum.midpoint.gui.impl.page.admin.focus.component",
"com.evolveum.midpoint.gui.impl.page.admin.objectcollection.component",
"com.evolveum.midpoint.gui.impl.page.admin.objecttemplate.component",
"com.evolveum.midpoint.gui.impl.page.admin.archetype.component",
"com.evolveum.midpoint.gui.impl.page.admin.report.component"
"com.evolveum.midpoint.gui.impl.page.admin.org.component",
"com.evolveum.midpoint.gui.impl.page.admin.report.component",
"com.evolveum.midpoint.gui.impl.page.admin.resource.component",
"com.evolveum.midpoint.gui.impl.page.admin.task.component",
"com.evolveum.midpoint.gui.impl.page.admin.user.component",
"com.evolveum.midpoint.web.component.assignment", //Assignments
"com.evolveum.midpoint.web.component.objectdetails" //Old panels
};

private static final String[] COLLECTION_PACKAGES_TO_SCAN = {
"com.evolveum.midpoint.web.page.admin.users",
"com.evolveum.midpoint.web.page.admin.services",
"com.evolveum.midpoint.web.page.admin.tasks",
"com.evolveum.midpoint.web.page.admin.roles",
"com.evolveum.midpoint.web.page.admin.resources",
"com.evolveum.midpoint.web.page.admin.reports",
"com.evolveum.midpoint.web.page.admin.orgs",
"com.evolveum.midpoint.web.page.admin.objectTemplate",
"com.evolveum.midpoint.web.page.admin.objectCollection",
"com.evolveum.midpoint.web.page.admin.archetype",
"com.evolveum.midpoint.web.page.admin.cases",
"com.evolveum.midpoint.web.page.admin.archetype"
"com.evolveum.midpoint.web.page.admin.objectCollection",
"com.evolveum.midpoint.web.page.admin.objectTemplate",
"com.evolveum.midpoint.web.page.admin.orgs",
"com.evolveum.midpoint.web.page.admin.reports",
"com.evolveum.midpoint.web.page.admin.resources",
"com.evolveum.midpoint.web.page.admin.roles",
"com.evolveum.midpoint.web.page.admin.services",
"com.evolveum.midpoint.web.page.admin.users"
};

private final Map<String, Class<? extends Panel>> panelsMap = new HashMap<>();
Expand Down Expand Up @@ -217,6 +213,7 @@ private void fillInPanelsMap(Set<Class<?>> classes) {
if (isNotPanelTypeDefinition(clazz, panelType)) {
continue;
}
//noinspection unchecked
panelsMap.put(panelType.name(), (Class<? extends Panel>) clazz);
}
}
Expand Down Expand Up @@ -335,7 +332,7 @@ private boolean isNotApplicableFor(Class<? extends ObjectType> objectType, Panel
}

if (panelInstance.excludeTypes() != null && panelInstance.excludeTypes().length > 0) {
return Arrays.stream(panelInstance.excludeTypes()).anyMatch(o -> o.equals(objectType));
return Arrays.asList(panelInstance.excludeTypes()).contains(objectType);
}

return !panelInstance.applicableForType().isAssignableFrom(objectType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4730,6 +4730,12 @@ public static AssignmentHolderType getObjectFromAddDeltyForCase(CaseType aCase)
return null;
}

public static boolean isResourceRelatedTask(TaskType task) {
return WebComponentUtil.hasArchetypeAssignment(task, SystemObjectsType.ARCHETYPE_RECONCILIATION_TASK.value())
|| WebComponentUtil.hasArchetypeAssignment(task, SystemObjectsType.ARCHETYPE_LIVE_SYNC_TASK.value())
|| WebComponentUtil.hasArchetypeAssignment(task, SystemObjectsType.ARCHETYPE_IMPORT_TASK.value());
}

public static boolean isRefreshEnabled(PageBase pageBase, QName type) {
CompiledGuiProfile cup = pageBase.getCompiledGuiProfile();
if (cup == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,17 @@
import java.util.Collections;
import java.util.Iterator;
import javax.annotation.PostConstruct;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.prism.wrapper.*;
import com.evolveum.midpoint.prism.Referencable;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.extensions.ajax.markup.html.autocomplete.StringAutoCompleteRenderer;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteTextPanel;
import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.api.util.WebPrismUtil;
Expand All @@ -27,9 +31,6 @@
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.web.component.prism.InputPanel;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;

//FIXME serializable?
@Component
Expand All @@ -47,7 +48,11 @@ protected InputPanel getPanel(PrismPropertyPanelContext<String> panelCtx) {
@Override
public Iterator<String> getIterator(String input) {
PrismPropertyWrapper<String> itemWrapper = panelCtx.unwrapWrapperModel();
PrismReferenceValue objectRef = WebPrismUtil.findSingleReferenceValue(itemWrapper, ItemPath.create(TaskType.F_OBJECT_REF));
PrismReferenceValue objectRef = findResourceReference(itemWrapper);

if (objectRef == null || objectRef.getOid() == null) {
return Collections.emptyIterator();
}

Task task = panelCtx.getPageBase().createSimpleTask("load resource");
PrismObject<ResourceType> resourceType = WebModelServiceUtils.loadObject(objectRef, ResourceType.COMPLEX_TYPE, panelCtx.getPageBase(), task, task.getResult());
Expand All @@ -56,7 +61,7 @@ public Iterator<String> getIterator(String input) {
return Collections.emptyIterator();
}

PrismPropertyValue<ShadowKindType> kindPropValue = WebPrismUtil.findSinglePropertyValue(itemWrapper, ItemPath.create(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_KIND));
PrismPropertyValue<ShadowKindType> kindPropValue = findKind(itemWrapper);
if (kindPropValue == null) {
return Collections.emptyIterator();
}
Expand All @@ -67,7 +72,57 @@ public Iterator<String> getIterator(String input) {

@Override
public <IW extends ItemWrapper<?, ?>> boolean match(IW wrapper) {
return wrapper.getPath().equivalent(ItemPath.create(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_INTENT));
PrismObjectWrapper<?> objectWrapper = wrapper.findObjectWrapper();
if (objectWrapper == null) {
return false;
}

ObjectType object = objectWrapper.getObject().asObjectable();
if (!(object instanceof TaskType)) {
return false;
}

TaskType task = (TaskType) object;
if (WebComponentUtil.isResourceRelatedTask(task) && wrapper.getPath().startsWith(ItemPath.create(TaskType.F_ACTIVITY, ActivityDefinitionType.F_WORK)) && wrapper.getPath().lastName().equivalent(ResourceObjectSetType.F_INTENT)) {
return true;
}
return false;
}

//TODO coppied from TaskObjectClassFactory
private PrismReferenceValue findResourceReference(PrismPropertyWrapper<String> itemWrapper) {
PrismContainerValueWrapper<?> parent = itemWrapper.getParent();
if (parent == null) {
return null;
}
try {
PrismReferenceWrapper<Referencable> resourceRefWrapper = parent.findReference(ResourceObjectSetType.F_RESOURCE_REF);
if (resourceRefWrapper == null) {
return null;
}

return resourceRefWrapper.getValue().getNewValue();
} catch (SchemaException e) {
return null;
}
// WebPrismUtil.findSingleReferenceValue(itemWrapper, ItemPath.create(TaskType.F_OBJECT_REF))
}

private PrismPropertyValue<ShadowKindType> findKind(PrismPropertyWrapper<String> itemWrapper) {
PrismContainerValueWrapper<?> parent = itemWrapper.getParent();
if (parent == null) {
return null;
}
try {
PrismPropertyWrapper<ShadowKindType> kindWrapper = parent.findProperty(ResourceObjectSetType.F_KIND);
if (kindWrapper == null) {
return null;
}

return kindWrapper.getValue().getNewValue();
} catch (SchemaException e) {
return null;
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,17 @@
import javax.annotation.PostConstruct;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.prism.wrapper.*;

import com.evolveum.midpoint.prism.PrismReference;
import com.evolveum.midpoint.prism.Referencable;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.springframework.stereotype.Component;

import com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteQNamePanel;
import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.api.util.WebPrismUtil;
Expand All @@ -26,8 +32,6 @@
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.web.component.prism.InputPanel;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;

//FIXME serializable
@Component
Expand All @@ -40,13 +44,18 @@ public void register() {

@Override
protected InputPanel getPanel(PrismPropertyPanelContext<QName> panelCtx) {
return new AutoCompleteQNamePanel<QName>(panelCtx.getComponentId(), panelCtx.getRealValueModel()) {
return new AutoCompleteQNamePanel<>(panelCtx.getComponentId(), panelCtx.getRealValueModel()) {

@Override
public Collection<QName> loadChoices() {

PrismPropertyWrapper<QName> itemWrapper = panelCtx.unwrapWrapperModel();
PrismReferenceValue objectRef = WebPrismUtil.findSingleReferenceValue(itemWrapper, ItemPath.create(TaskType.F_OBJECT_REF));
PrismReferenceValue objectRef = findResourceReference(itemWrapper);

if (objectRef == null || objectRef.getOid() == null) {
return Collections.emptyList();
}

Task task = panelCtx.getPageBase().createSimpleTask("load resource");
PrismObject<ResourceType> resourceType = WebModelServiceUtils.loadObject(objectRef, ResourceType.COMPLEX_TYPE, panelCtx.getPageBase(), task, task.getResult());

Expand All @@ -65,7 +74,40 @@ protected boolean alwaysReload() {

@Override
public <IW extends ItemWrapper<?, ?>> boolean match(IW wrapper) {
return wrapper.getPath().equivalent(ItemPath.create(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_OBJECTCLASS));
PrismObjectWrapper<?> objectWrapper = wrapper.findObjectWrapper();
if (objectWrapper == null) {
return false;
}

ObjectType object = objectWrapper.getObject().asObjectable();
if (!(object instanceof TaskType)) {
return false;
}

TaskType task = (TaskType) object;
if (WebComponentUtil.isResourceRelatedTask(task) && wrapper.getPath().startsWith(ItemPath.create(TaskType.F_ACTIVITY, ActivityDefinitionType.F_WORK)) && wrapper.getPath().lastName().equivalent(ResourceObjectSetType.F_OBJECTCLASS)) {
return true;
}
return false;
// return wrapper.getPath().equivalent(ItemPath.create(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_OBJECTCLASS));
}

private PrismReferenceValue findResourceReference(PrismPropertyWrapper<QName> itemWrapper) {
PrismContainerValueWrapper<?> parent = itemWrapper.getParent();
if (parent == null) {
return null;
}
try {
PrismReferenceWrapper<Referencable> resourceRefWrapper = parent.findReference(ResourceObjectSetType.F_RESOURCE_REF);
if (resourceRefWrapper == null) {
return null;
}

return resourceRefWrapper.getValue().getNewValue();
} catch (SchemaException e) {
return null;
}
// WebPrismUtil.findSingleReferenceValue(itemWrapper, ItemPath.create(TaskType.F_OBJECT_REF))
}

@Override
Expand Down

0 comments on commit 843dfd8

Please sign in to comment.