diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java index 3921d836411..e4c458543dd 100755 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java @@ -32,6 +32,7 @@ import com.evolveum.midpoint.web.security.util.SecurityUtils; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.Component; import org.apache.wicket.Page; @@ -407,7 +408,7 @@ public int getRefreshInterval() { } protected void initOperationalButtons(RepeatingView repeatingView){ - if (getObjectArchetypeRef() != null) { + if (getObjectArchetypeRef() != null && CollectionUtils.isNotEmpty(getArchetypeOidsListToAssign())) { AjaxButton changeArchetype = new AjaxButton(repeatingView.newChildId(), createStringResource("PageAdminObjectDetails.button.changeArchetype")) { @Override public void onClick(AjaxRequestTarget target) { @@ -526,7 +527,7 @@ protected ObjectQuery addFilterToContentQuery(ObjectQuery query){ if (query == null) { query = getPrismContext().queryFactory().createQuery(); } - List archetypeOidsList = getFilteredArchetypeOidsList(); + List archetypeOidsList = getArchetypeOidsListToAssign(); ObjectFilter filter = getPrismContext().queryFor(ArchetypeType.class) .id(archetypeOidsList.toArray(new String[0])) .buildFilter(); @@ -545,6 +546,18 @@ protected ObjectQuery addFilterToContentQuery(ObjectQuery query){ } + private List getArchetypeOidsListToAssign(){ + List archetypeOidsList = getFilteredArchetypeOidsList(); + + ObjectReferenceType archetypeRef = getObjectArchetypeRef(); + if (archetypeRef != null && StringUtils.isNotEmpty(archetypeRef.getOid())){ + if (archetypeOidsList.contains(archetypeRef.getOid())){ + archetypeOidsList.remove(archetypeRef.getOid()); + } + } + return archetypeOidsList; + } + private List getFilteredArchetypeOidsList(){ OperationResult result = new OperationResult(OPERATION_LOAD_FILTERED_ARCHETYPES); PrismObject obj = getObjectWrapper().getObject(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/AbstractShoppingCartTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/AbstractShoppingCartTabPanel.java index 06c8d9bc268..dc5f4761176 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/AbstractShoppingCartTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/AbstractShoppingCartTabPanel.java @@ -14,6 +14,7 @@ import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.schema.constants.ObjectTypes; +import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectQueryUtil; import com.evolveum.midpoint.task.api.Task; @@ -247,7 +248,11 @@ private void initRelationPanel(WebMarkupContainer parametersPanel){ List assignableRelationsList = getAvailableRelationsList(); if (CollectionUtils.isNotEmpty(assignableRelationsList)){ - getRoleCatalogStorage().setSelectedRelation(assignableRelationsList.get(0)); + if (assignableRelationsList.contains(SchemaConstants.ORG_DEFAULT)){ + getRoleCatalogStorage().setSelectedRelation(SchemaConstants.ORG_DEFAULT); + } else { + getRoleCatalogStorage().setSelectedRelation(assignableRelationsList.get(0)); + } } relationContainer.add(new RelationDropDownChoicePanel(ID_RELATION, getRoleCatalogStorage().getSelectedRelation(), assignableRelationsList, false){