From 80311d6b7234a1d831b594a97af412b367b06f09 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Mon, 22 Aug 2016 09:28:31 +0200 Subject: [PATCH] Fixed MID-3344: "Access denied" exceptions when approver opens its work items and fixed reporting of ObjectNotFoundExceptions when viewing changes-to-be-approved for (yet) non-existing users. --- .../midpoint/gui/api/util/WebModelServiceUtils.java | 5 +++++ .../midpoint/web/page/admin/workflow/PageWorkItem.java | 2 +- .../midpoint/model/impl/visualizer/Resolver.java | 5 ++++- .../midpoint/model/impl/visualizer/Visualizer.java | 9 +++++---- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java index e327d080b48..f08ff5299d7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebModelServiceUtils.java @@ -244,6 +244,11 @@ public static PrismObject loadObject(Class type, St LOGGER.debug("User {} is not authorized to read {} {}", task.getOwner() != null ? task.getOwner().getName() : null, type.getSimpleName(), oid); return null; + } catch (ObjectNotFoundException e) { + // Object does not exist. It was deleted in the meanwhile, or not created yet. This could happen quite often. + subResult.recordHandledError(e); + LOGGER.debug("{} {} does not exist", type.getSimpleName(), oid, e); + return null; } catch (Exception ex) { subResult.recordFatalError("WebModelUtils.couldntLoadObject", ex); LoggingUtils.logUnexpectedException(LOGGER, "Couldn't load object", ex); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/workflow/PageWorkItem.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/workflow/PageWorkItem.java index bcccf38a4a4..ef47e3e5751 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/workflow/PageWorkItem.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/workflow/PageWorkItem.java @@ -141,7 +141,7 @@ private WorkItemDto loadWorkItemDtoIfNecessary() { LoggingUtils.logExceptionOnDebugLevel(LOGGER, "Access to the task {} was denied", e, taskOid); } - if (taskType != null) { + if (taskType != null && taskType.getParent() != null) { final ObjectQuery relatedTasksQuery = QueryBuilder.queryFor(TaskType.class, getPrismContext()) .item(F_PARENT).eq(taskType.getParent()) .build(); diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/visualizer/Resolver.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/visualizer/Resolver.java index cc2e1ae79bb..9c04d1caadf 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/visualizer/Resolver.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/visualizer/Resolver.java @@ -128,7 +128,10 @@ public void resolve(ObjectDelta objectDelta, Task task if (!originalObjectFetched && oid != null) { try { originalObject = modelService.getObject(clazz, oid, createCollection(createNoFetch()), task, result); - } catch (RuntimeException | SchemaException | ConfigurationException | CommunicationException | SecurityViolationException | ObjectNotFoundException e) { + } catch (ObjectNotFoundException e) { + result.recordHandledError(e); + LoggingUtils.logExceptionOnDebugLevel(LOGGER, "Object {} does not exist", e, oid); + } catch (RuntimeException | SchemaException | ConfigurationException | CommunicationException | SecurityViolationException e) { LoggingUtils.logUnexpectedException(LOGGER, "Couldn't resolve object {}", e, oid); warn(result, "Couldn't resolve object " + oid + ": " + e.getMessage(), e); } diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/visualizer/Visualizer.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/visualizer/Visualizer.java index 77bfbc3b0e6..ea233f6ab33 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/visualizer/Visualizer.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/visualizer/Visualizer.java @@ -231,11 +231,12 @@ private PrismObject getObject(String oid, Class