diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.java index 16b36e2f93b..21966aff72e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResource.java @@ -12,6 +12,7 @@ import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.model.api.util.ResourceUtils; import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.schema.CapabilityUtil; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.SelectorOptions; import com.evolveum.midpoint.schema.result.OperationResult; @@ -31,8 +32,10 @@ import com.evolveum.midpoint.web.page.admin.configuration.PageDebugView; import com.evolveum.midpoint.web.page.admin.resources.component.TestConnectionResultPanel; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; +import com.evolveum.midpoint.xml.ns._public.common.common_3.CapabilitiesType; 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.resource.capabilities_3.SchemaCapabilityType; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; @@ -175,7 +178,7 @@ public void onClick(AjaxRequestTarget target) { private static final long serialVersionUID = 1L; @Override public boolean isVisible() { - return canEdit(resourceModel); + return isVisibleRefresSchemaButton(resourceModel); } }); add(refreshSchema); @@ -253,6 +256,24 @@ public void onClick(AjaxRequestTarget target) { } + private boolean isVisibleRefresSchemaButton(LoadableModel> resourceModel) { + ResourceType resource = resourceModel.getObject().asObjectable(); + if (!resource.getAdditionalConnector().isEmpty()) { + if (resource.getCapabilities() == null) { + return false; + } + if (resource.getCapabilities().getConfigured() != null) { + SchemaCapabilityType configuredCapability = CapabilityUtil.getCapability(resource.getCapabilities().getConfigured().getAny(), SchemaCapabilityType.class); + if (configuredCapability == null) { + return false; + } + return configuredCapability.isEnabled(); + } + return false; + } + return true; + } + private boolean canEdit(LoadableModel> resourceModel) { ResourceType resource = resourceModel.getObject().asObjectable(); if (!resource.getAdditionalConnector().isEmpty()) {