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 May 25, 2016
2 parents 00a407d + 566755e commit 3fc94be
Show file tree
Hide file tree
Showing 101 changed files with 1,639 additions and 794 deletions.
Expand Up @@ -31,7 +31,7 @@
*
* @author mederly
*/
public abstract class NonEmptyLoadableModel<T> extends LoadableModel<T> {
public abstract class NonEmptyLoadableModel<T> extends LoadableModel<T> implements NonEmptyModel<T> {

public NonEmptyLoadableModel(boolean alwaysReload) {
super(alwaysReload);
Expand Down
@@ -0,0 +1,35 @@
/*
* Copyright (c) 2010-2016 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.evolveum.midpoint.gui.api.model;

import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;

import java.io.Serializable;

/**
* @author mederly
*/
public interface NonEmptyModel<T> extends IModel<T> {

@Override
@NotNull
T getObject();

@Override
void setObject(@NotNull T object);
}
Expand Up @@ -28,6 +28,8 @@
import javax.management.ObjectName;

import com.evolveum.midpoint.prism.match.MatchingRuleRegistry;
import com.evolveum.midpoint.util.exception.SecurityViolationException;
import com.evolveum.midpoint.web.page.admin.workflow.*;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
import org.apache.wicket.AttributeModifier;
Expand Down Expand Up @@ -150,11 +152,6 @@
import com.evolveum.midpoint.web.page.admin.users.PageOrgUnit;
import com.evolveum.midpoint.web.page.admin.users.PageUser;
import com.evolveum.midpoint.web.page.admin.users.PageUsers;
import com.evolveum.midpoint.web.page.admin.workflow.PageProcessInstancesAll;
import com.evolveum.midpoint.web.page.admin.workflow.PageProcessInstancesRequestedBy;
import com.evolveum.midpoint.web.page.admin.workflow.PageProcessInstancesRequestedFor;
import com.evolveum.midpoint.web.page.admin.workflow.PageWorkItems;
import com.evolveum.midpoint.web.page.admin.workflow.PageWorkItemsClaimable;
import com.evolveum.midpoint.web.page.login.PageLogin;
import com.evolveum.midpoint.web.page.self.PageRequestRole;
import com.evolveum.midpoint.web.page.self.PageSelfCredentials;
Expand Down Expand Up @@ -295,7 +292,7 @@ protected Integer load() {
.item(WorkItemType.F_ASSIGNEE_REF).ref(getPrincipal().getOid())
.build();
return modelService.countContainers(WorkItemType.class, query, null, task, task.getResult());
} catch (SchemaException e) {
} catch (SchemaException|SecurityViolationException e) {
LoggingUtils.logExceptionAsWarning(LOGGER, "Couldn't load work item count", e);
return null;
}
Expand Down Expand Up @@ -922,8 +919,8 @@ protected List<SideBarMenuItem> createMenuItems() {
items.add(createResourcesItems());
}

if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_WORK_ITEMS_URL,
AuthorizationConstants.AUTZ_UI_WORK_ITEMS_ALL_URL, AuthorizationConstants.AUTZ_GUI_ALL_URL,
if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_MY_WORK_ITEMS_URL,
AuthorizationConstants.AUTZ_UI_APPROVALS_ALL_URL, AuthorizationConstants.AUTZ_GUI_ALL_URL,
AuthorizationConstants.AUTZ_GUI_ALL_DEPRECATED_URL)) {
if (getWorkflowManager().isEnabled()) {
items.add(createWorkItemsItems());
Expand Down Expand Up @@ -984,21 +981,23 @@ public String getBubbleLabel() {

List<MenuItem> submenu = item.getItems();

MenuItem menu = new MenuItem(createStringResource("PageAdmin.menu.top.workItems.list"), PageWorkItems.class);
MenuItem menu = new MenuItem(createStringResource("PageAdmin.menu.top.workItems.list"), PageWorkItemsAllocatedToMe.class);
submenu.add(menu);
menu = new MenuItem(createStringResource("PageAdmin.menu.top.workItems.listClaimable"),
PageWorkItemsClaimable.class);
submenu.add(menu);

menu = new MenuItem(createStringResource("PageAdmin.menu.top.workItems.listProcessInstancesAll"),
PageProcessInstancesAll.class);
menu = new MenuItem(createStringResource("PageAdmin.menu.top.workItems.listAll"), PageWorkItemsAll.class);
submenu.add(menu);

menu = new MenuItem(createStringResource("PageAdmin.menu.top.workItems.listProcessInstancesRequestedBy"),
PageProcessInstancesRequestedBy.class);
submenu.add(menu);
menu = new MenuItem(createStringResource("PageAdmin.menu.top.workItems.listProcessInstancesRequestedFor"),
PageProcessInstancesRequestedFor.class);
submenu.add(menu);
menu = new MenuItem(createStringResource("PageAdmin.menu.top.workItems.listProcessInstancesAll"),
PageProcessInstancesAll.class);
submenu.add(menu);

return item;
}
Expand Down
Expand Up @@ -39,6 +39,7 @@

import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.match.*;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
import org.apache.wicket.Component;
Expand Down Expand Up @@ -125,35 +126,6 @@
import com.evolveum.midpoint.web.security.SecurityUtils;
import com.evolveum.midpoint.web.util.InfoTooltipBehavior;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationStatusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AuthorizationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AvailabilityStatusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CredentialsType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MisfireActionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationalStateType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.PasswordType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ScheduleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ServiceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskBindingType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskExecutionStatusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskRecurrenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ThreadStopActionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import com.evolveum.prism.xml.ns._public.query_3.QueryType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType;
Expand Down Expand Up @@ -918,6 +890,7 @@ public static <T extends ObjectType> String createDefaultIcon(PrismObject<T> obj
return "";
}

// TODO reconcile with ObjectTypeGuiDescriptor
public static <T extends ObjectType> String createDefaultColoredIcon(QName objectType) {
if (QNameUtil.match(UserType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_USER_ICON_COLORED;
Expand All @@ -931,6 +904,41 @@ public static <T extends ObjectType> String createDefaultColoredIcon(QName objec
return GuiStyleConstants.CLASS_OBJECT_TASK_ICON_COLORED;
} else if (QNameUtil.match(ResourceType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_RESOURCE_ICON_COLORED;
} else if (QNameUtil.match(AccessCertificationCampaignType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_CERT_CAMPAIGN_ICON_COLORED;
} else if (QNameUtil.match(AccessCertificationDefinitionType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_CERT_DEF_ICON_COLORED;
} else if (QNameUtil.match(WorkItemType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_WORK_ITEM_ICON_COLORED;
} else if (QNameUtil.match(ShadowType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_SHADOW_ICON_COLORED;
} else {
return "";
}
}

// TODO reconcile with ObjectTypeGuiDescriptor
public static <T extends ObjectType> String createDefaultBlackIcon(QName objectType) {
if (QNameUtil.match(UserType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_USER_ICON;
} else if (QNameUtil.match(RoleType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_ROLE_ICON;
} else if (QNameUtil.match(OrgType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_ORG_ICON;
} else if (QNameUtil.match(ServiceType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_SERVICE_ICON;
} else if (QNameUtil.match(TaskType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_TASK_ICON;
} else if (QNameUtil.match(ResourceType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_RESOURCE_ICON;
} else if (QNameUtil.match(AccessCertificationCampaignType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_CERT_CAMPAIGN_ICON;
} else if (QNameUtil.match(AccessCertificationDefinitionType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_CERT_DEF_ICON;
} else if (QNameUtil.match(WorkItemType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_WORK_ITEM_ICON;
} else if (QNameUtil.match(ShadowType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_OBJECT_SHADOW_ICON;
} else {
return "";
}
Expand Down
Expand Up @@ -32,6 +32,7 @@
import com.evolveum.midpoint.web.application.AuthorizationAction;
import com.evolveum.midpoint.web.application.PageDescriptor;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.page.admin.PageAdmin;
import com.evolveum.midpoint.web.page.admin.home.PageDashboard;
import com.evolveum.midpoint.web.page.admin.workflow.PageAdminWorkItems;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
Expand All @@ -49,14 +50,8 @@
/**
* @author mederly
*/
@PageDescriptor(url = "/admin/workItem", encoder = OnePageParameterEncoder.class, action = {
@AuthorizationAction(actionUri = PageAdminWorkItems.AUTH_WORK_ITEMS_ALL,
label = PageAdminWorkItems.AUTH_WORK_ITEMS_ALL_LABEL,
description = PageAdminWorkItems.AUTH_WORK_ITEMS_ALL_DESCRIPTION),
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_WORK_ITEM_URL,
label = "PageWorkItem.auth.workItem.label",
description = "PageWorkItem.auth.workItem.description")})
public class PagePreviewChanges extends PageAdminWorkItems { // TODO extends
@PageDescriptor(url = "/admin/previewChanges", encoder = OnePageParameterEncoder.class)
public class PagePreviewChanges extends PageAdmin {

private static final String ID_PRIMARY_DELTAS_SCENE = "primaryDeltas";
private static final String ID_SECONDARY_DELTAS_SCENE = "secondaryDeltas";
Expand Down
Expand Up @@ -103,7 +103,7 @@ private class IconModel extends AbstractReadOnlyModel<String> {
@Override
public String getObject() {
ObjectTypeGuiDescriptor guiDescriptor = getObjectTypeDescriptor();
return guiDescriptor != null ? guiDescriptor.getIcon() : ObjectTypeGuiDescriptor.ERROR_ICON;
return guiDescriptor != null ? guiDescriptor.getBlackIcon() : ObjectTypeGuiDescriptor.ERROR_ICON;
}
}

Expand Down
Expand Up @@ -19,6 +19,7 @@
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.web.component.data.column.LinkIconPanel;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand All @@ -44,12 +45,12 @@ public class AutoRefreshPanel extends BasePanel<AutoRefreshDto> {

private AbstractAjaxTimerBehavior refreshingBehavior; // this behavior is attached to some component (defined by owning page/panel)

public AutoRefreshPanel(String id, IModel<AutoRefreshDto> model, Refreshable refreshable) {
public AutoRefreshPanel(String id, IModel<AutoRefreshDto> model, Refreshable refreshable, boolean inSummaryPanel) {
super(id, model);
initLayout(refreshable);
initLayout(refreshable, inSummaryPanel);
}

private void initLayout(final Refreshable refreshable) {
private void initLayout(final Refreshable refreshable, boolean inSummaryPanel) {

final LinkIconPanel refreshNow = new LinkIconPanel(ID_REFRESH_NOW, new Model("fa fa-refresh"), createStringResource("autoRefreshPanel.refreshNow")) {
@Override
Expand Down Expand Up @@ -107,6 +108,10 @@ public String getObject() {
});
status.setRenderBodyOnly(true);
add(status);

if (inSummaryPanel) {
add(new AttributeModifier("class", "summary-tag"));
}
}

public void startRefreshing(final Refreshable refreshable) {
Expand Down
Expand Up @@ -17,7 +17,6 @@
package com.evolveum.midpoint.web.component.wf;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
Expand Down Expand Up @@ -133,7 +132,7 @@ public Date getObject() {
@NotNull
private AbstractColumn<WorkItemDto, String> createNameColumn() {
AbstractColumn<WorkItemDto, String> nameColumn;
if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_WORK_ITEMS_ALL_URL,
if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_APPROVALS_ALL_URL,
AuthorizationConstants.AUTZ_UI_WORK_ITEM_URL)) {
nameColumn = new LinkColumn<WorkItemDto>(createStringResource("WorkItemsPanel.name"), WorkItemDto.F_NAME,
WorkItemDto.F_NAME) {
Expand Down Expand Up @@ -205,14 +204,20 @@ public IColumn<WorkItemDto, String> createTypeIconColumn(final boolean object) {
return new IconColumn<WorkItemDto>(createStringResource("")) {
@Override
protected IModel<String> createIconModel(IModel<WorkItemDto> rowModel) {
if (getObjectType(rowModel) == null) {
return null;
}
ObjectTypeGuiDescriptor guiDescriptor = getObjectTypeDescriptor(rowModel);
String icon = guiDescriptor != null ? guiDescriptor.getIcon() : ObjectTypeGuiDescriptor.ERROR_ICON;
String icon = guiDescriptor != null ? guiDescriptor.getBlackIcon() : ObjectTypeGuiDescriptor.ERROR_ICON;
return new Model<>(icon);
}

private ObjectTypeGuiDescriptor getObjectTypeDescriptor(IModel<WorkItemDto> rowModel) {
QName type = object ? rowModel.getObject().getObjectType() : rowModel.getObject().getTargetType();
return ObjectTypeGuiDescriptor.getDescriptor(ObjectTypes.getObjectTypeFromTypeQName(type));
return ObjectTypeGuiDescriptor.getDescriptor(ObjectTypes.getObjectTypeFromTypeQName(getObjectType(rowModel)));
}

private QName getObjectType(IModel<WorkItemDto> rowModel) {
return object ? rowModel.getObject().getObjectType() : rowModel.getObject().getTargetType();
}

@Override
Expand Down
Expand Up @@ -42,6 +42,8 @@
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/**
* @author lazyman
Expand Down Expand Up @@ -112,9 +114,9 @@ protected String createComponentPath(String... components) {
return StringUtils.join(components, ":");
}

@NotNull
protected List<QName> loadResourceObjectClassList(IModel<PrismObject<ResourceType>> model, Trace LOGGER, String message){
List<QName> list = new ArrayList<>();

try {
ResourceSchema schema = RefinedResourceSchema.getResourceSchema(model.getObject(), getPageBase().getPrismContext());
if (schema != null) {
Expand All @@ -126,7 +128,6 @@ protected List<QName> loadResourceObjectClassList(IModel<PrismObject<ResourceTyp
LoggingUtils.logUnexpectedException(LOGGER, message, e);
error(message + " " + e.getMessage());
}

return list;
}

Expand Down
Expand Up @@ -158,7 +158,7 @@ public static CapabilityType fillDefaults(CapabilityType capability) {

protected void initLayout() {
final ListDataProvider<CapabilityDto<CapabilityType>> capabilityProvider = new ListDataProvider<>(this,
new PropertyModel<List<CapabilityDto<CapabilityType>>>(dtoModel.getObject(), CapabilityStepDto.F_CAPABILITIES));
new PropertyModel<List<CapabilityDto<CapabilityType>>>(dtoModel, CapabilityStepDto.F_CAPABILITIES));

WebMarkupContainer tableBody = new WebMarkupContainer(ID_CAPABILITY_TABLE);
tableBody.setOutputMarkupId(true);
Expand Down Expand Up @@ -392,10 +392,8 @@ private void savePerformed() {
oldResource = WebModelServiceUtils.loadObject(ResourceType.class, resource.getOid(), getPageBase(), task, result);
if (oldResource != null) {
ObjectDelta<ResourceType> delta = parentPage.computeDiff(oldResource, resourceObject);
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(delta.debugDump());
}
if (!delta.isEmpty()) {
parentPage.logDelta(delta);
@SuppressWarnings("unchecked") Collection<ObjectDelta<? extends ObjectType>> deltas = WebComponentUtil
.createDeltaCollection(delta);
modelService.executeChanges(deltas, null, getPageBase().createSimpleTask(OPERATION_SAVE_CAPABILITIES), result);
Expand Down
Expand Up @@ -262,10 +262,10 @@ private void saveChanges() {
wrapper.collectModifications(delta);
}
if (!delta.isEmpty()) {
LOGGER.info("Applying delta:\n{}", delta.debugDump());
parentPage.logDelta(delta);
WebModelServiceUtils.save(delta, result, parentPage);
parentPage.resetModels();
}
parentPage.resetModels();
} catch (Exception ex) {
LoggingUtils.logUnexpectedException(LOGGER, "Error occurred during saving changes", ex);
result.recordFatalError("Couldn't save configuration changes.", ex);
Expand Down
Expand Up @@ -458,14 +458,14 @@ public void applyState() {
delta = i.asObjectDelta(oid);
}
if (!delta.isEmpty()) {
LOGGER.info("Applying delta:\n{}", delta.debugDump());
parentPage.logDelta(delta);
WebModelServiceUtils.save(delta, ModelExecuteOptions.createRaw(), result, parentPage);
parentPage.resetModels();
}

if (isNew) {
parentPage.setEditedResourceOid(delta.getOid());
}
parentPage.resetModels();

} catch (RuntimeException|SchemaException ex) {
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't save resource", ex);
Expand Down

0 comments on commit 3fc94be

Please sign in to comment.