From 9383044d35e4389a5f1c0b84bbdca709a5b8e7ec Mon Sep 17 00:00:00 2001 From: lskublik Date: Wed, 23 Sep 2020 12:38:34 +0200 Subject: [PATCH 1/7] adding composited icon for projection details panel (MID-6462) --- .../gui/api/component/DisplayNamePanel.java | 11 ++- .../gui/api/util/WebComponentUtil.java | 35 +++++++-- .../MultivalueContainerDetailsPanel.java | 6 +- .../component/ProjectionDisplayNamePanel.html | 2 +- .../component/ProjectionDisplayNamePanel.java | 8 +- .../FocusProjectionsTabPanel.java | 73 ++++++++++--------- .../static/less/midpoint/icon-style.less | 4 +- 7 files changed, 87 insertions(+), 52 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/DisplayNamePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/DisplayNamePanel.java index 80e19e9c7fb..2ab6ef2aaec 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/DisplayNamePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/DisplayNamePanel.java @@ -58,9 +58,7 @@ protected void onInitialize() { } private void initLayout() { - WebMarkupContainer typeImage = new WebMarkupContainer(ID_TYPE_IMAGE); - typeImage.setOutputMarkupId(true); - typeImage.add(AttributeModifier.append("class", createImageModel())); + WebMarkupContainer typeImage = createTypeImagePanel(ID_TYPE_IMAGE); add(typeImage); Label name = new Label(ID_DISPLAY_NAME, createHeaderModel()); @@ -117,6 +115,13 @@ protected void populateItem(ListItem item) { // add(new Label(ID_PENDING_OPERATION, getPendingOperationLabelModel())); } + protected WebMarkupContainer createTypeImagePanel(String idTypeImage) { + WebMarkupContainer typeImage = new WebMarkupContainer(idTypeImage); + typeImage.setOutputMarkupId(true); + typeImage.add(AttributeModifier.append("class", createImageModel())); + return typeImage; + } + private boolean isObjectPolicyConfigurationType() { return QNameUtil.match( ObjectPolicyConfigurationType.COMPLEX_TYPE, diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index 1ed3b099e7c..5afd65b4df5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -3495,7 +3495,7 @@ public static DisplayType getDisplayTypeForObject(O obj, //TODO unify createAccountIcon with createCompositeIconForObject public static CompositedIcon createCompositeIconForObject(O obj, OperationResult result, PageBase pageBase) { if (obj instanceof ShadowType) { - return createAccountIcon((ShadowType) obj, pageBase); + return createAccountIcon((ShadowType) obj, pageBase, true); } DisplayType basicIconDisplayType = getDisplayTypeForObject(obj, result, pageBase); @@ -3525,7 +3525,7 @@ public static CompositedIcon createCompositeIconForObject return builder.build(); } - public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageBase) { + public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageBase, boolean isColumn) { List triggerType = shadow.getTrigger(); String iconCssClass = WebComponentUtil.createShadowIcon(shadow.asPrismObject()); CompositedIconBuilder builder = new CompositedIconBuilder(); @@ -3533,14 +3533,23 @@ public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageB if (StringUtils.isNotBlank(title)) { IconType icon = new IconType(); icon.setCssClass("fa fa-clock-o " + GuiStyleConstants.BLUE_COLOR); - builder.appendLayerIcon(icon, IconCssStyle.TOP_RIGHT_FOR_COLUMN_STYLE); + if (isColumn) { + builder.appendLayerIcon(icon, IconCssStyle.TOP_RIGHT_FOR_COLUMN_STYLE); + } else { + builder.appendLayerIcon(icon, IconCssStyle.TOP_RIGHT_STYLE); + } + } builder.setBasicIcon(iconCssClass, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); if (BooleanUtils.isTrue(shadow.isDead())) { IconType icon = new IconType(); icon.setCssClass("fa fa-times-circle " + GuiStyleConstants.RED_COLOR); - builder.appendLayerIcon(icon, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + if (isColumn) { + builder.setBasicIcon(icon, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + } else { + builder.setBasicIcon(icon, IconCssStyle.BOTTOM_RIGHT_STYLE); + } builder.setTitle(pageBase.createStringResource("FocusProjectionsTabPanel.deadShadow").getString() + (StringUtils.isNotBlank(title) ? ("\n" + title) : "")); return builder.build(); @@ -3559,7 +3568,11 @@ public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageB || (lockoutExpirationTimestamp != null && pageBase.getClock().isPast((lockoutExpirationTimestamp)))) { IconType icon = new IconType(); icon.setCssClass("fa fa-lock " + GuiStyleConstants.RED_COLOR); - builder.appendLayerIcon(icon, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + if (isColumn) { + builder.setBasicIcon(icon, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + } else { + builder.setBasicIcon(icon, IconCssStyle.BOTTOM_RIGHT_STYLE); + } builder.setTitle(pageBase.createStringResource("LockoutStatusType.LOCKED").getString() + (StringUtils.isNotBlank(title) ? ("\n" + title) : "")); return builder.build(); @@ -3575,10 +3588,18 @@ public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageB switch (value) { case DISABLED: - appendIcon(builder, "fe fe-slash " + GuiStyleConstants.RED_COLOR, IconCssStyle.CENTER_FOR_COLUMN_STYLE); + if (isColumn) { + appendIcon(builder, "fe fe-slash " + GuiStyleConstants.RED_COLOR, IconCssStyle.CENTER_FOR_COLUMN_STYLE); + } else { + appendIcon(builder, "fe fe-slash " + GuiStyleConstants.RED_COLOR, IconCssStyle.CENTER_STYLE); + } return builder.build(); case ARCHIVED: - appendIcon(builder, "fa fa-archive " + GuiStyleConstants.RED_COLOR, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + if (isColumn) { + appendIcon(builder, "fa fa-archive " + GuiStyleConstants.RED_COLOR, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + } else { + appendIcon(builder, "fa fa-archive " + GuiStyleConstants.RED_COLOR, IconCssStyle.BOTTOM_RIGHT_STYLE); + } return builder.build(); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java index 6e931cedb96..47c860f2fc3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java @@ -47,13 +47,13 @@ protected void onInitialize() { private void initLayout() { + addBasicContainerValuePanel(ID_BASIC_PANEL); + add(getSpecificContainers(ID_SPECIFIC_CONTAINERS_PANEL)); + DisplayNamePanel displayNamePanel = createDisplayNamePanel(ID_DISPLAY_NAME); displayNamePanel.setOutputMarkupId(true); add(displayNamePanel); - - addBasicContainerValuePanel(ID_BASIC_PANEL); - add(getSpecificContainers(ID_SPECIFIC_CONTAINERS_PANEL)); } protected WebMarkupContainer getSpecificContainers(String contentAreaId) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.html index 6aee8dab5c0..916acd64999 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.html @@ -12,7 +12,7 @@
- +
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.java index 6f0d5d11d09..e8af7d8dd46 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.java @@ -9,6 +9,8 @@ import java.util.ArrayList; import java.util.List; +import com.evolveum.midpoint.gui.impl.component.data.column.CompositedIconPanel; + import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.model.IModel; @@ -72,10 +74,10 @@ protected IModel> getDescriptionLabelsModel() { } @Override - protected String createImageModel() { + protected WebMarkupContainer createTypeImagePanel(String idTypeImage) { if (getModelObject() == null) { - return ""; + return super.createTypeImagePanel(idTypeImage); } - return WebComponentUtil.createShadowIcon(getModelObject().asPrismObject()); + return new CompositedIconPanel(idTypeImage, WebComponentUtil.createAccountIcon(getModelObject(), getPageBase(), false)); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java index bfdafd2008c..c353c38aa27 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java @@ -83,8 +83,6 @@ public class FocusProjectionsTabPanel extends AbstractObjec private static final long serialVersionUID = 1L; private static final String ID_SHADOW_TABLE = "shadowTable"; - private static final String ID_SHADOW_PANEL = "shadowPanel"; - protected static final String ID_SPECIFIC_CONTAINERS_FRAGMENT = "specificContainersFragment"; private static final String DOT_CLASS = FocusProjectionsTabPanel.class.getName() + "."; private static final String OPERATION_ADD_ACCOUNT = DOT_CLASS + "addShadow"; @@ -244,9 +242,13 @@ private MultivalueContainerDetailsPanel getMultivalueContainerDetail @Override protected DisplayNamePanel createDisplayNamePanel(String displayNamePanelId) { - ItemRealValueModel displayNameModel = - new ItemRealValueModel<>(item.getModel()); - return new ProjectionDisplayNamePanel(displayNamePanelId, displayNameModel); + IModel shadowModel = new IModel() { + @Override + public ShadowType getObject() { + return createShadowType(item.getModel()); + } + }; + return new ProjectionDisplayNamePanel(displayNamePanelId, shadowModel); } @Override @@ -287,34 +289,8 @@ protected CompositedIcon getCompositedIcon(IModel dead = rowModel.getObject().findProperty(ShadowType.F_DEAD); - if (dead != null && !dead.isEmpty()) { - shadow.setDead(dead.getValue().getRealValue()); - } - } catch (SchemaException e) { - LOGGER.error("Couldn't find property " + ShadowType.F_DEAD); - } - try { - PrismContainerWrapper activation = rowModel.getObject().findContainer(ShadowType.F_ACTIVATION); - if (activation != null && !activation.isEmpty()) { - shadow.setActivation(activation.getValue().getRealValue()); - } - } catch (SchemaException e) { - LOGGER.error("Couldn't find container " + ShadowType.F_ACTIVATION); - } - try { - PrismContainerWrapper triggers = rowModel.getObject().findContainer(ShadowType.F_TRIGGER); - if (triggers != null && !triggers.isEmpty()) { - for (PrismContainerValueWrapper trigger : triggers.getValues()) { - shadow.getTrigger().add(trigger.getRealValue()); - } - } - } catch (SchemaException e) { - LOGGER.error("Couldn't find container " + ShadowType.F_TRIGGER); - } - return WebComponentUtil.createAccountIcon(shadow, getPageBase()); + ShadowType shadow = createShadowType(rowModel); + return WebComponentUtil.createAccountIcon(shadow, getPageBase(), true); } }); @@ -372,6 +348,37 @@ public String getCssClass() { return columns; } + private ShadowType createShadowType(IModel> rowModel) { + ShadowType shadow = rowModel.getObject().getRealValue(); + try { + PrismPropertyWrapper dead = rowModel.getObject().findProperty(ShadowType.F_DEAD); + if (dead != null && !dead.isEmpty()) { + shadow.setDead(dead.getValue().getRealValue()); + } + } catch (SchemaException e) { + LOGGER.error("Couldn't find property " + ShadowType.F_DEAD); + } + try { + PrismContainerWrapper activation = rowModel.getObject().findContainer(ShadowType.F_ACTIVATION); + if (activation != null && !activation.isEmpty()) { + shadow.setActivation(activation.getValue().getRealValue()); + } + } catch (SchemaException e) { + LOGGER.error("Couldn't find container " + ShadowType.F_ACTIVATION); + } + try { + PrismContainerWrapper triggers = rowModel.getObject().findContainer(ShadowType.F_TRIGGER); + if (triggers != null && !triggers.isEmpty()) { + for (PrismContainerValueWrapper trigger : triggers.getValues()) { + shadow.getTrigger().add(trigger.getRealValue()); + } + } + } catch (SchemaException e) { + LOGGER.error("Couldn't find container " + ShadowType.F_TRIGGER); + } + return shadow; + } + private MultivalueContainerListPanelWithDetailsPanel getMultivalueContainerListPanel() { return ((MultivalueContainerListPanelWithDetailsPanel) get(ID_SHADOW_TABLE)); } diff --git a/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less b/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less index d3deb7e4bd4..546ec423cb3 100644 --- a/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less +++ b/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less @@ -209,9 +209,9 @@ } i.center-layer { - font-size: 70% !important; + font-size: 90% !important; position: absolute; - top: 45%; + top: 40%; right: 0; left: 0; } From d97ae376b57700c3a2a370183e8355684d8ca293 Mon Sep 17 00:00:00 2001 From: lskublik Date: Wed, 23 Sep 2020 12:41:06 +0200 Subject: [PATCH 2/7] fix for schrodinger test --- .../testing/schrodinger/labs/M8ExtendingMidPointXMLSchema.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/M8ExtendingMidPointXMLSchema.java b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/M8ExtendingMidPointXMLSchema.java index 054dc46b4c2..3413f6f8894 100644 --- a/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/M8ExtendingMidPointXMLSchema.java +++ b/testing/schrodingertest/src/test/java/com/evolveum/midpoint/testing/schrodinger/labs/M8ExtendingMidPointXMLSchema.java @@ -135,6 +135,6 @@ public void mod08test01ExtendingMidPointXMLSchema() { showShadow(CSV_2_RESOURCE_NAME, "Login", "jsmith"); Assert.assertTrue(accountForm.compareInputAttributeValue("department", "Human Resources")); - Assert.assertTrue(existShadow(CSV_3_RESOURCE_NAME, "dn", "cn=John Smith,ou=0300,ou=ExAmPLE,dc=example,dc=com")); + Assert.assertTrue(existShadow(CSV_3_RESOURCE_NAME, "Distinguished Name", "cn=John Smith,ou=0300,ou=ExAmPLE,dc=example,dc=com")); } } From 3cb7926e5d45dcd3678c74e11ccda8e4d726e2ab Mon Sep 17 00:00:00 2001 From: lskublik Date: Wed, 23 Sep 2020 12:50:29 +0200 Subject: [PATCH 3/7] changing of waiting time for resource test connection from 1 to 2 minutes --- .../schrodinger/component/resource/TestConnectionModal.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/resource/TestConnectionModal.java b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/resource/TestConnectionModal.java index dcc39f46584..0f492f75720 100644 --- a/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/resource/TestConnectionModal.java +++ b/tools/schrodinger/src/main/java/com/evolveum/midpoint/schrodinger/component/resource/TestConnectionModal.java @@ -87,7 +87,7 @@ public FeedbackBox feedbackResourceSchema() { public boolean isTestSuccess() { boolean isSuccess = false; - $(Schrodinger.byDataId("div", "messagesPanel")).waitUntil(Condition.appears, MidPoint.TIMEOUT_LONG_1_M); + $(Schrodinger.byDataId("div", "messagesPanel")).waitUntil(Condition.appears, MidPoint.TIMEOUT_EXTRA_LONG_1_M); // Boolean isSuccess = feedbackConnectorInitialization().isSuccess() // && feedbackConnectorConfiguration().isSuccess() // && feedbackConnectorConnection().isSuccess() @@ -98,7 +98,7 @@ public boolean isTestSuccess() { for (SelenideElement element : detailBoxes) { - element.waitUntil(Condition.appears, MidPoint.TIMEOUT_LONG_1_M); + element.waitUntil(Condition.appears, MidPoint.TIMEOUT_EXTRA_LONG_1_M); String attr = element.attr("class"); From 731e408905650d81ecab410f1f1c4f07a0d8795c Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Wed, 23 Sep 2020 13:30:37 +0200 Subject: [PATCH 4/7] Adding support to get task from remote nodes. If the task runs on different node, some transient information could not be available by getting tasks from local node, e.g. subtasks, .. This fixes MID-6415 --- .../midpoint/schema/GetOperationOptions.java | 11 ++++++ .../rest/impl/ClusterRestController.java | 28 +++++++++++++++ .../midpoint/task/api/TaskConstants.java | 2 ++ .../quartzimpl/TaskManagerQuartzImpl.java | 34 ++++++++++++++++++- 4 files changed, 74 insertions(+), 1 deletion(-) diff --git a/infra/schema/src/main/java/com/evolveum/midpoint/schema/GetOperationOptions.java b/infra/schema/src/main/java/com/evolveum/midpoint/schema/GetOperationOptions.java index 76ebc49d9a4..6f8cfa55d86 100644 --- a/infra/schema/src/main/java/com/evolveum/midpoint/schema/GetOperationOptions.java +++ b/infra/schema/src/main/java/com/evolveum/midpoint/schema/GetOperationOptions.java @@ -1002,6 +1002,17 @@ public static Collection> fromRestOptions(L return rv; } + public static List toRestIncludeOption(Collection> options) { + List> includeOptions = SelectorOptions.filterRetrieveOptions(options); + + List includePaths = new ArrayList<>(); + for (SelectorOptions includeOption : includeOptions) { + UniformItemPath path = includeOption.getSelector().getPath(); + includePaths.add(path.namedSegmentsOnly().toString()); + } + return includePaths; + } + public static GetOperationOptions fromRestOptions(List options, DefinitionProcessingOption definitionProcessing) { if (options == null || options.isEmpty()) { if (definitionProcessing != null) { diff --git a/model/rest-impl/src/main/java/com/evolveum/midpoint/rest/impl/ClusterRestController.java b/model/rest-impl/src/main/java/com/evolveum/midpoint/rest/impl/ClusterRestController.java index 7eb1c412000..fd5cadf7ecd 100644 --- a/model/rest-impl/src/main/java/com/evolveum/midpoint/rest/impl/ClusterRestController.java +++ b/model/rest-impl/src/main/java/com/evolveum/midpoint/rest/impl/ClusterRestController.java @@ -9,8 +9,15 @@ import java.io.File; import java.io.FileInputStream; import java.nio.file.Paths; +import java.util.Collection; import java.util.List; +import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.schema.DefinitionProcessingOption; +import com.evolveum.midpoint.schema.GetOperationOptions; +import com.evolveum.midpoint.schema.SelectorOptions; +import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -62,6 +69,8 @@ public class ClusterRestController extends AbstractRestController { private static final String OPERATION_GET_REPORT_FILE = CLASS_DOT + "getReportFile"; private static final String OPERATION_DELETE_REPORT_FILE = CLASS_DOT + "deleteReportFile"; + private static final String OPERATION_GET_TASK = CLASS_DOT + "getTask"; + private static final String EXPORT_DIR = "export/"; @Autowired private MidpointConfiguration midpointConfiguration; @@ -276,6 +285,25 @@ public ResponseEntity deleteReportFile( return response; } + @GetMapping(value = TaskConstants.GET_TASK_REST_PATH + "{oid}") + public ResponseEntity getTask(@PathVariable("oid") String oid, @RequestParam(value = "include", required = false) List include) { + Task task = initRequest(); + OperationResult result = createSubresult(task, OPERATION_GET_REPORT_FILE); + + ResponseEntity response; + try { + checkNodeAuthentication(); + Collection> options = GetOperationOptions.fromRestOptions(null, include, null, null, DefinitionProcessingOption.ONLY_IF_EXISTS, prismContext); + PrismObject taskType = taskManager.getObject(TaskType.class, oid, options, result); + response = ResponseEntity.ok(taskType); + result.computeStatus(); + } catch (Throwable t) { + response = handleException(null, t); // we don't return the operation result + } + finishRequest(); + return response; + } + static class FileResolution { File file; HttpStatus status; diff --git a/repo/task-api/src/main/java/com/evolveum/midpoint/task/api/TaskConstants.java b/repo/task-api/src/main/java/com/evolveum/midpoint/task/api/TaskConstants.java index 6fb9c0ca6f5..e00e6ac2cab 100644 --- a/repo/task-api/src/main/java/com/evolveum/midpoint/task/api/TaskConstants.java +++ b/repo/task-api/src/main/java/com/evolveum/midpoint/task/api/TaskConstants.java @@ -36,4 +36,6 @@ public class TaskConstants { public static final String START_LOCAL_SCHEDULER_REST_PATH = "/scheduler/start"; public static final String STOP_LOCAL_TASK_REST_PATH_PREFIX = "/tasks/"; public static final String STOP_LOCAL_TASK_REST_PATH_SUFFIX = "/stop"; + + public static final String GET_TASK_REST_PATH = "/tasks/"; } diff --git a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java index 34df87a3315..935451f5cfd 100644 --- a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java +++ b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java @@ -18,9 +18,12 @@ import java.util.stream.Collectors; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; +import javax.ws.rs.core.Response; import javax.xml.datatype.Duration; import javax.xml.datatype.XMLGregorianCalendar; +import com.evolveum.midpoint.util.Holder; + import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; import org.jetbrains.annotations.NotNull; @@ -1328,7 +1331,11 @@ public TaskQuartzImpl getTask(String oid, Collection taskPrism = repositoryService.getObject(TaskType.class, oid, options, result); + PrismObject taskPrism = getTaskInCluster(oid, options, clusterStatusInformation, result); + if (taskPrism == null) { + taskPrism = repositoryService.getObject(TaskType.class, oid, options, result); + } + TaskQuartzImpl task = createTaskInstance(taskPrism, result); addTransientTaskInformation(task, @@ -1351,6 +1358,31 @@ public TaskQuartzImpl getTask(String oid, Collection getTaskInCluster(String oid, Collection> options, + ClusterStatusInformation clusterStatusInformation, OperationResult parentResult) throws SchemaException { + + NodeType runsAt = clusterStatusInformation.findNodeInfoForTask(oid); + if (runsAt == null || isCurrentNode(runsAt.asPrismObject())) { + return null; + } + + final Holder> taskPrism = new Holder<>(); + clusterExecutionHelper.execute((client, node, opResult) -> { + Response response = client.path(TaskConstants.GET_TASK_REST_PATH + oid) + .query("include", GetOperationOptions.toRestIncludeOption(options)) + .get(); + Response.StatusType statusType = response.getStatusInfo(); + if (statusType.getFamily() == Response.Status.Family.SUCCESSFUL) { + TaskType taskType = response.readEntity(TaskType.class); + taskPrism.setValue(taskType.asPrismObject()); + } else { + LOGGER.warn("Cannot get task from {}", node); + } + }, new ClusterExecutionOptions().tryAllNodes(), "load task (cluster)", parentResult); + + return taskPrism.getValue(); + } + private void fillOperationExecutionState(Task task0) { TaskQuartzImpl task = (TaskQuartzImpl) task0; From 1e5ca2e686035136ba6af2f4598e53f047528a20 Mon Sep 17 00:00:00 2001 From: lskublik Date: Wed, 23 Sep 2020 14:46:13 +0200 Subject: [PATCH 5/7] removing of twice base64 encoding of 'template' and 'templateStyle' attributes in testing report XML (MID-6419) --- .../reports/report-audit-csv-legacy.xml | 4 +- .../resources/reports/report-audit-csv.xml | 4 +- .../test/resources/reports/report-sample.xml | 83 ------------ .../resources/reports/report-test-valid.xml | 71 ----------- .../reports/report-test-without-design.xml | 91 -------------- .../test/resources/reports/report-test.xml | 118 ------------------ .../report-user-list-expressions-csv.xml | 4 +- ...r-list-expressions-poisonous-field-csv.xml | 4 +- ...r-list-expressions-poisonous-query-csv.xml | 4 +- .../reports/report-user-list-script.xml | 4 +- .../resources/reports/report-user-list.xml | 1 + 11 files changed, 13 insertions(+), 375 deletions(-) delete mode 100644 model/report-impl/src/test/resources/reports/report-sample.xml delete mode 100644 model/report-impl/src/test/resources/reports/report-test-valid.xml delete mode 100644 model/report-impl/src/test/resources/reports/report-test-without-design.xml delete mode 100644 model/report-impl/src/test/resources/reports/report-test.xml diff --git a/model/report-impl/src/test/resources/reports/report-audit-csv-legacy.xml b/model/report-impl/src/test/resources/reports/report-audit-csv-legacy.xml index e027398e94f..084ea7d8d05 100644 --- a/model/report-impl/src/test/resources/reports/report-audit-csv-legacy.xml +++ b/model/report-impl/src/test/resources/reports/report-audit-csv-legacy.xml @@ -16,8 +16,8 @@ Legacy CSV audit report. It explicitly invokes audit search in the query expression. true - - UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWo4K0RRbzhJVVJQUTFSWlVFVWdhbUZ6Y0dWeVZHVnRjR3hoZEdVTkNpQWdVRlZDVEVsRElDSXRMeTlLWVhOd1pYSlNaWEJ2Y25Sekx5OUVWRVFnVkdWdGNHeGhkR1V2TDBWT0lnMEtJQ0FpYUhSMGNEb3ZMMnBoYzNCbGNuSmxjRzl5ZEhNdWMyOTFjbU5sWm05eVoyVXVibVYwTDJSMFpITXZhbUZ6Y0dWeWRHVnRjR3hoZEdVdVpIUmtJajROQ2p4cVlYTndaWEpVWlcxd2JHRjBaVDROQ2lBZ0lDQWdJQ0FnQ1R4emRIbHNaU0JtYjI1MFRtRnRaVDBpUkdWcVlWWjFJRk5oYm5NaUlHWnZiblJUYVhwbFBTSXhNQ0lnYUVGc2FXZHVQU0pNWldaMElpQnBjMFJsWm1GMWJIUTlJblJ5ZFdVaUlHbHpVR1JtUlcxaVpXUmtaV1E5SW5SeWRXVWlJQTBLQ1FrSkNTQWdJRzVoYldVOUlrSmhjMlVpSUhCa1prVnVZMjlrYVc1blBTSkpaR1Z1ZEdsMGVTMUlJaUJ3WkdaR2IyNTBUbUZ0WlQwaVJHVnFZVloxVTJGdWN5NTBkR1lpSUhaQmJHbG5iajBpVFdsa1pHeGxJajROQ2drSkNUd3ZjM1I1YkdVK0RRb0pDUWs4YzNSNWJHVWdZbUZqYTJOdmJHOXlQU0lqTWpZM09UazBJaUJtYjI1MFUybDZaVDBpTWpZaUlHWnZjbVZqYjJ4dmNqMGlJMFpHUmtaR1JpSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWxScGRHeGxJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBpQU5DZ2tKQ1R4emRIbHNaU0JtYjI1MFUybDZaVDBpTVRJaUlHWnZjbVZqYjJ4dmNqMGlJekF3TURBd01DSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSWdibUZ0WlQwaVVHRm5aU0JvWldGa1pYSWlEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVTlJa0poYzJVaUx6NE5DZ2tKQ1R4emRIbHNaU0JpWVdOclkyOXNiM0k5SWlNek16TXpNek1pSUdadmJuUlRhWHBsUFNJeE1pSWdabTl5WldOdmJHOXlQU0lqUmtaR1JrWkdJaUJvUVd4cFoyNDlJa05sYm5SbGNpSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYzBSbFptRjFiSFE5SW1aaGJITmxJaUJ0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWtOdmJIVnRiaUJvWldGa1pYSWlJSE4wZVd4bFBTSkNZWE5sSWk4K0RRb0pDUWs4YzNSNWJHVWdhWE5DYjJ4a1BTSm1ZV3h6WlNJZ2FYTkVaV1poZFd4MFBTSm1ZV3h6WlNJZ2JtRnRaVDBpUkdWMFlXbHNJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBnMEtJQ0FnSUNBZ0lDQWdJQ0FnUEhOMGVXeGxJR2x6UW05c1pEMGlabUZzYzJVaUlHbHpSR1ZtWVhWc2REMGlabUZzYzJVaUlHNWhiV1U5SWtOdlpHVWlJSE4wZVd4bFBTSkNZWE5sSWlCbWIyNTBVMmw2WlQwaU9TSXZQZzBLQ1FrSlBITjBlV3hsSUdadmJuUlRhWHBsUFNJNUlpQm1iM0psWTI5c2IzSTlJaU13TURBd01EQWlJR2x6UkdWbVlYVnNkRDBpWm1Gc2MyVWlJRzVoYldVOUlsQmhaMlVnWm05dmRHVnlJZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxQU0pDWVhObElpOCtEUW9KQ1R3dmFtRnpjR1Z5VkdWdGNHeGhkR1Ur + + PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8IURPQ1RZUEUgamFzcGVyVGVtcGxhdGUNCiAgUFVCTElDICItLy9KYXNwZXJSZXBvcnRzLy9EVEQgVGVtcGxhdGUvL0VOIg0KICAiaHR0cDovL2phc3BlcnJlcG9ydHMuc291cmNlZm9yZ2UubmV0L2R0ZHMvamFzcGVydGVtcGxhdGUuZHRkIj4NCjxqYXNwZXJUZW1wbGF0ZT4NCiAgICAgICAgCTxzdHlsZSBmb250TmFtZT0iRGVqYVZ1IFNhbnMiIGZvbnRTaXplPSIxMCIgaEFsaWduPSJMZWZ0IiBpc0RlZmF1bHQ9InRydWUiIGlzUGRmRW1iZWRkZWQ9InRydWUiIA0KCQkJCSAgIG5hbWU9IkJhc2UiIHBkZkVuY29kaW5nPSJJZGVudGl0eS1IIiBwZGZGb250TmFtZT0iRGVqYVZ1U2Fucy50dGYiIHZBbGlnbj0iTWlkZGxlIj4NCgkJCTwvc3R5bGU+DQoJCQk8c3R5bGUgYmFja2NvbG9yPSIjMjY3OTk0IiBmb250U2l6ZT0iMjYiIGZvcmVjb2xvcj0iI0ZGRkZGRiIgaXNEZWZhdWx0PSJmYWxzZSINCiAgICAgICAgICAgICAgICAgICBtb2RlPSJPcGFxdWUiIG5hbWU9IlRpdGxlIiBzdHlsZT0iQmFzZSIvPiANCgkJCTxzdHlsZSBmb250U2l6ZT0iMTIiIGZvcmVjb2xvcj0iIzAwMDAwMCIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iUGFnZSBoZWFkZXIiDQogICAgICAgICAgICAgICAgICAgc3R5bGU9IkJhc2UiLz4NCgkJCTxzdHlsZSBiYWNrY29sb3I9IiMzMzMzMzMiIGZvbnRTaXplPSIxMiIgZm9yZWNvbG9yPSIjRkZGRkZGIiBoQWxpZ249IkNlbnRlciINCiAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ9ImZhbHNlIiBtb2RlPSJPcGFxdWUiIG5hbWU9IkNvbHVtbiBoZWFkZXIiIHN0eWxlPSJCYXNlIi8+DQoJCQk8c3R5bGUgaXNCb2xkPSJmYWxzZSIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iRGV0YWlsIiBzdHlsZT0iQmFzZSIvPg0KICAgICAgICAgICAgPHN0eWxlIGlzQm9sZD0iZmFsc2UiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IkNvZGUiIHN0eWxlPSJCYXNlIiBmb250U2l6ZT0iOSIvPg0KCQkJPHN0eWxlIGZvbnRTaXplPSI5IiBmb3JlY29sb3I9IiMwMDAwMDAiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IlBhZ2UgZm9vdGVyIg0KICAgICAgICAgICAgICAgICAgIHN0eWxlPSJCYXNlIi8+DQoJCTwvamFzcGVyVGVtcGxhdGU+ csv JRSwapFileVirtualizer 300 diff --git a/model/report-impl/src/test/resources/reports/report-audit-csv.xml b/model/report-impl/src/test/resources/reports/report-audit-csv.xml index e7aa4869fa5..ca42fb91495 100644 --- a/model/report-impl/src/test/resources/reports/report-audit-csv.xml +++ b/model/report-impl/src/test/resources/reports/report-audit-csv.xml @@ -16,8 +16,8 @@ Report made from audit records, 4.0 style auditSql - - UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWo4K0RRbzhJVVJQUTFSWlVFVWdhbUZ6Y0dWeVZHVnRjR3hoZEdVTkNpQWdVRlZDVEVsRElDSXRMeTlLWVhOd1pYSlNaWEJ2Y25Sekx5OUVWRVFnVkdWdGNHeGhkR1V2TDBWT0lnMEtJQ0FpYUhSMGNEb3ZMMnBoYzNCbGNuSmxjRzl5ZEhNdWMyOTFjbU5sWm05eVoyVXVibVYwTDJSMFpITXZhbUZ6Y0dWeWRHVnRjR3hoZEdVdVpIUmtJajROQ2p4cVlYTndaWEpVWlcxd2JHRjBaVDROQ2lBZ0lDQWdJQ0FnQ1R4emRIbHNaU0JtYjI1MFRtRnRaVDBpUkdWcVlWWjFJRk5oYm5NaUlHWnZiblJUYVhwbFBTSXhNQ0lnYUVGc2FXZHVQU0pNWldaMElpQnBjMFJsWm1GMWJIUTlJblJ5ZFdVaUlHbHpVR1JtUlcxaVpXUmtaV1E5SW5SeWRXVWlJQTBLQ1FrSkNTQWdJRzVoYldVOUlrSmhjMlVpSUhCa1prVnVZMjlrYVc1blBTSkpaR1Z1ZEdsMGVTMUlJaUJ3WkdaR2IyNTBUbUZ0WlQwaVJHVnFZVloxVTJGdWN5NTBkR1lpSUhaQmJHbG5iajBpVFdsa1pHeGxJajROQ2drSkNUd3ZjM1I1YkdVK0RRb0pDUWs4YzNSNWJHVWdZbUZqYTJOdmJHOXlQU0lqTWpZM09UazBJaUJtYjI1MFUybDZaVDBpTWpZaUlHWnZjbVZqYjJ4dmNqMGlJMFpHUmtaR1JpSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWxScGRHeGxJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBpQU5DZ2tKQ1R4emRIbHNaU0JtYjI1MFUybDZaVDBpTVRJaUlHWnZjbVZqYjJ4dmNqMGlJekF3TURBd01DSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSWdibUZ0WlQwaVVHRm5aU0JvWldGa1pYSWlEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVTlJa0poYzJVaUx6NE5DZ2tKQ1R4emRIbHNaU0JpWVdOclkyOXNiM0k5SWlNek16TXpNek1pSUdadmJuUlRhWHBsUFNJeE1pSWdabTl5WldOdmJHOXlQU0lqUmtaR1JrWkdJaUJvUVd4cFoyNDlJa05sYm5SbGNpSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYzBSbFptRjFiSFE5SW1aaGJITmxJaUJ0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWtOdmJIVnRiaUJvWldGa1pYSWlJSE4wZVd4bFBTSkNZWE5sSWk4K0RRb0pDUWs4YzNSNWJHVWdhWE5DYjJ4a1BTSm1ZV3h6WlNJZ2FYTkVaV1poZFd4MFBTSm1ZV3h6WlNJZ2JtRnRaVDBpUkdWMFlXbHNJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBnMEtJQ0FnSUNBZ0lDQWdJQ0FnUEhOMGVXeGxJR2x6UW05c1pEMGlabUZzYzJVaUlHbHpSR1ZtWVhWc2REMGlabUZzYzJVaUlHNWhiV1U5SWtOdlpHVWlJSE4wZVd4bFBTSkNZWE5sSWlCbWIyNTBVMmw2WlQwaU9TSXZQZzBLQ1FrSlBITjBlV3hsSUdadmJuUlRhWHBsUFNJNUlpQm1iM0psWTI5c2IzSTlJaU13TURBd01EQWlJR2x6UkdWbVlYVnNkRDBpWm1Gc2MyVWlJRzVoYldVOUlsQmhaMlVnWm05dmRHVnlJZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxQU0pDWVhObElpOCtEUW9KQ1R3dmFtRnpjR1Z5VkdWdGNHeGhkR1Ur + + PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8IURPQ1RZUEUgamFzcGVyVGVtcGxhdGUNCiAgUFVCTElDICItLy9KYXNwZXJSZXBvcnRzLy9EVEQgVGVtcGxhdGUvL0VOIg0KICAiaHR0cDovL2phc3BlcnJlcG9ydHMuc291cmNlZm9yZ2UubmV0L2R0ZHMvamFzcGVydGVtcGxhdGUuZHRkIj4NCjxqYXNwZXJUZW1wbGF0ZT4NCiAgICAgICAgCTxzdHlsZSBmb250TmFtZT0iRGVqYVZ1IFNhbnMiIGZvbnRTaXplPSIxMCIgaEFsaWduPSJMZWZ0IiBpc0RlZmF1bHQ9InRydWUiIGlzUGRmRW1iZWRkZWQ9InRydWUiIA0KCQkJCSAgIG5hbWU9IkJhc2UiIHBkZkVuY29kaW5nPSJJZGVudGl0eS1IIiBwZGZGb250TmFtZT0iRGVqYVZ1U2Fucy50dGYiIHZBbGlnbj0iTWlkZGxlIj4NCgkJCTwvc3R5bGU+DQoJCQk8c3R5bGUgYmFja2NvbG9yPSIjMjY3OTk0IiBmb250U2l6ZT0iMjYiIGZvcmVjb2xvcj0iI0ZGRkZGRiIgaXNEZWZhdWx0PSJmYWxzZSINCiAgICAgICAgICAgICAgICAgICBtb2RlPSJPcGFxdWUiIG5hbWU9IlRpdGxlIiBzdHlsZT0iQmFzZSIvPiANCgkJCTxzdHlsZSBmb250U2l6ZT0iMTIiIGZvcmVjb2xvcj0iIzAwMDAwMCIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iUGFnZSBoZWFkZXIiDQogICAgICAgICAgICAgICAgICAgc3R5bGU9IkJhc2UiLz4NCgkJCTxzdHlsZSBiYWNrY29sb3I9IiMzMzMzMzMiIGZvbnRTaXplPSIxMiIgZm9yZWNvbG9yPSIjRkZGRkZGIiBoQWxpZ249IkNlbnRlciINCiAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ9ImZhbHNlIiBtb2RlPSJPcGFxdWUiIG5hbWU9IkNvbHVtbiBoZWFkZXIiIHN0eWxlPSJCYXNlIi8+DQoJCQk8c3R5bGUgaXNCb2xkPSJmYWxzZSIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iRGV0YWlsIiBzdHlsZT0iQmFzZSIvPg0KICAgICAgICAgICAgPHN0eWxlIGlzQm9sZD0iZmFsc2UiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IkNvZGUiIHN0eWxlPSJCYXNlIiBmb250U2l6ZT0iOSIvPg0KCQkJPHN0eWxlIGZvbnRTaXplPSI5IiBmb3JlY29sb3I9IiMwMDAwMDAiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IlBhZ2UgZm9vdGVyIg0KICAgICAgICAgICAgICAgICAgIHN0eWxlPSJCYXNlIi8+DQoJCTwvamFzcGVyVGVtcGxhdGU+ csv JRSwapFileVirtualizer 300 diff --git a/model/report-impl/src/test/resources/reports/report-sample.xml b/model/report-impl/src/test/resources/reports/report-sample.xml deleted file mode 100644 index 33320ae459b..00000000000 --- a/model/report-impl/src/test/resources/reports/report-sample.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - Audit logs report - Audit logs report - - Report made from audit records. - - - landscape - pdf - - - true - - - com.evolveum.midpoint.report.QueryApiDataProvider - - - - com.evolveum.midpoint.report.SomeCustomSuperProvider - true - - - true - - - userList - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - src/test/resources/reports/logo.jpg - src/test/resources/styles/midpoint_base_styles.jrtx - - - diff --git a/model/report-impl/src/test/resources/reports/report-test-valid.xml b/model/report-impl/src/test/resources/reports/report-test-valid.xml deleted file mode 100644 index 340335220fe..00000000000 --- a/model/report-impl/src/test/resources/reports/report-test-valid.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - Test report - test report - - TEST Report with DataSource parameter. - - 2013-12-22T17:14:12.867+01:00 - - - PGphc3BlclJlcG9ydCB4bWxucz0iaHR0cDovL2phc3BlcnJlcG9ydHMuc291cmNlZm9yZ2UubmV0L2phc3BlcnJlcG9ydHMiDQogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSINCiAgICAgICAgICAgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9qYXNwZXJyZXBvcnRzLnNvdXJjZWZvcmdlLm5ldC9qYXNwZXJyZXBvcnRzIGh0dHA6Ly9qYXNwZXJyZXBvcnRzLnNvdXJjZWZvcmdlLm5ldC94c2QvamFzcGVycmVwb3J0LnhzZCINCiAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJyZXBvcnRUZXN0Ig0KICAgICAgICAgICAgICAgICAgICAgIHBhZ2VXaWR0aD0iODQyIg0KICAgICAgICAgICAgICAgICAgICAgIHBhZ2VIZWlnaHQ9IjU5NSINCiAgICAgICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbj0iTGFuZHNjYXBlIg0KICAgICAgICAgICAgICAgICAgICAgIHdoZW5Ob0RhdGFUeXBlPSJBbGxTZWN0aW9uc05vRGV0YWlsIg0KICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoPSI4MDIiDQogICAgICAgICAgICAgICAgICAgICAgbGVmdE1hcmdpbj0iMjAiDQogICAgICAgICAgICAgICAgICAgICAgcmlnaHRNYXJnaW49IjIwIg0KICAgICAgICAgICAgICAgICAgICAgIHRvcE1hcmdpbj0iMjAiDQogICAgICAgICAgICAgICAgICAgICAgYm90dG9tTWFyZ2luPSIyMCINCiAgICAgICAgICAgICAgICAgICAgICB1dWlkPSI2N2U0NjVjNS00NmVhLTQwZDItYmVhMC00NjljNmNmMzg5MzciPg0KICAgICAgICAgICAgPHRlbXBsYXRlPjwhW0NEQVRBWyRQe0Jhc2VUZW1wbGF0ZVN0eWxlc31dXT48L3RlbXBsYXRlPg0KICAgICAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJCYXNlVGVtcGxhdGVTdHlsZXMiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nIi8+DQogICAgICAgICAgICA8cGFyYW1ldGVyIG5hbWU9IkxPR09fUEFUSCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciLz4NCiAgICAgICAgICAgIDxmaWVsZCBuYW1lPSJOYW1lIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZyIvPg0KICAgICAgICAgICAgPGZpZWxkIG5hbWU9IkZpcnN0TmFtZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciLz4NCiAgICAgICAgICAgIDxmaWVsZCBuYW1lPSJMYXN0TmFtZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciLz4NCiAgICAgICAgICAgIDxmaWVsZCBuYW1lPSJBY3RpdmF0aW9uIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZyIvPg0KICAgICAgICAgICAgPHNvcnRGaWVsZCBuYW1lPSJOYW1lIi8+DQogICAgICAgICAgICA8YmFja2dyb3VuZD4NCiAgICAgICAgICAgICAgICA8YmFuZCBoZWlnaHQ9IjMwIiBzcGxpdFR5cGU9IlN0cmV0Y2giLz4NCiAgICAgICAgICAgIDwvYmFja2dyb3VuZD4NCiAgICAgICAgICAgIDx0aXRsZT4NCiAgICAgICAgICAgICAgICA8YmFuZCBoZWlnaHQ9IjExMCIgc3BsaXRUeXBlPSJTdHJldGNoIj4NCiAgICAgICAgICAgICAgICAgICAgPGZyYW1lPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9ydEVsZW1lbnQgc3R5bGU9IlRpdGxlIiBtb2RlPSJPcGFxdWUiIHg9IjEiIHk9IjAiIHdpZHRoPSI3OTkiIGhlaWdodD0iNjciIGJhY2tjb2xvcj0iIzI2Nzk5NCIgdXVpZD0iNDRiZWRhY2MtZmEyMy00ZmUxLWI3MWYtZTVhZmE5NDNmNTUzIi8+DQogICAgICAgICAgICAgICAgICAgICAgICA8c3RhdGljVGV4dD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwb3J0RWxlbWVudCBzdHlsZT0iVGl0bGUiIHg9IjEwIiB5PSIxMyIgd2lkdGg9IjI2NiIgaGVpZ2h0PSIzOCIgdXVpZD0iZjJkOTljYWQtOWQ4NC00ZjUwLWI0NTUtNDUzYzg3ZjYyYzRjIi8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRFbGVtZW50IHZlcnRpY2FsQWxpZ25tZW50PSJNaWRkbGUiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dD48IVtDREFUQVtVc2VyIFJlcG9ydF1dPjwvdGV4dD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3RhdGljVGV4dD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWFnZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwb3J0RWxlbWVudCBzdHlsZT0iVGl0bGUiIHg9IjU4OSIgeT0iMTMiIHdpZHRoPSIyMDMiIGhlaWdodD0iNDUiIHV1aWQ9ImIwYTc2ZTZhLThmNjEtNGQ2MC04ZGNkLTNlNTFhZGI0Y2Q0YyIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWFnZUV4cHJlc3Npb24+PCFbQ0RBVEFbJFB7TE9HT19QQVRIfV1dPjwvaW1hZ2VFeHByZXNzaW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9pbWFnZT4NCiAgICAgICAgICAgICAgICAgICAgPC9mcmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN0YXRpY1RleHQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8cmVwb3J0RWxlbWVudCBzdHlsZT0iUGFnZSBoZWFkZXIiIHg9IjQwMCIgeT0iODciIHdpZHRoPSIxNTAiIGhlaWdodD0iMjAiIHV1aWQ9IjNmZjc4ZmJmLThmY2UtNDA3Mi1iNjkxLTdhZjA0N2VhOTJhNyIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRFbGVtZW50IHZlcnRpY2FsQWxpZ25tZW50PSJNaWRkbGUiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0PjwhW0NEQVRBW051bWJlciBvZiByZWNvcmRzOl1dPjwvdGV4dD4NCiAgICAgICAgICAgICAgICAgICAgPC9zdGF0aWNUZXh0Pg0KICAgICAgICAgICAgICAgICAgICA8dGV4dEZpZWxkIHBhdHRlcm49IkVFRUVFIGRkIE1NTU1NIHl5eXksIEhIOm1tOnNzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBvcnRFbGVtZW50IHN0eWxlPSJQYWdlIGhlYWRlciIgeD0iNTUwIiB5PSI2NyIgd2lkdGg9IjI1MCIgaGVpZ2h0PSIyMCIgdXVpZD0iMDlhN2UyNzItMjA0ZS00MDc4LThhNWUtZTQ3Mjc1NzQyNGMxIi8+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dEVsZW1lbnQgdGV4dEFsaWdubWVudD0iUmlnaHQiIHZlcnRpY2FsQWxpZ25tZW50PSJNaWRkbGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGlzQm9sZD0iZmFsc2UiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dEVsZW1lbnQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dEZpZWxkRXhwcmVzc2lvbj48IVtDREFUQVtuZXcgamF2YS51dGlsLkRhdGUoKV1dPjwvdGV4dEZpZWxkRXhwcmVzc2lvbj4NCiAgICAgICAgICAgICAgICAgICAgPC90ZXh0RmllbGQ+DQogICAgICAgICAgICAgICAgICAgIDxzdGF0aWNUZXh0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9ydEVsZW1lbnQgc3R5bGU9IlBhZ2UgaGVhZGVyIiB4PSI0MDAiIHk9IjY3IiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjIwIiB1dWlkPSJiMGI5NzE0Zi05NmY1LTRmNTgtODI0Yi1jODFmZDRkMzIxZjciLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0RWxlbWVudCB2ZXJ0aWNhbEFsaWdubWVudD0iTWlkZGxlIi8+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dD48IVtDREFUQVtSZXBvcnQgZ2VuZXJhdGVkIG9uOl1dPjwvdGV4dD4NCiAgICAgICAgICAgICAgICAgICAgPC9zdGF0aWNUZXh0Pg0KICAgICAgICAgICAgICAgICAgICA8dGV4dEZpZWxkIGV2YWx1YXRpb25UaW1lPSJSZXBvcnQiIGlzQmxhbmtXaGVuTnVsbD0idHJ1ZSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8cmVwb3J0RWxlbWVudCBzdHlsZT0iUGFnZSBoZWFkZXIiIHg9IjU1MCIgeT0iODciIHdpZHRoPSIyNTAiIGhlaWdodD0iMjAiIHV1aWQ9Ijg5MjUxMjExLTNmNDktNDcxZC1iODhkLTU1NjRjMWJkMDRkMSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRFbGVtZW50IHRleHRBbGlnbm1lbnQ9IlJpZ2h0IiB2ZXJ0aWNhbEFsaWdubWVudD0iTWlkZGxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBpc0JvbGQ9ImZhbHNlIi8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RleHRFbGVtZW50Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRGaWVsZEV4cHJlc3Npb24+PCFbQ0RBVEFbJFZ7UkVQT1JUX0NPVU5UfV1dPjwvdGV4dEZpZWxkRXhwcmVzc2lvbj4NCiAgICAgICAgICAgICAgICAgICAgPC90ZXh0RmllbGQ+DQogICAgICAgICAgICAgICAgPC9iYW5kPg0KICAgICAgICAgICAgPC90aXRsZT4NCiAgICAgICAgICAgIDxwYWdlSGVhZGVyPg0KICAgICAgICAgICAgICAgIDxiYW5kIHNwbGl0VHlwZT0iU3RyZXRjaCIvPg0KICAgICAgICAgICAgPC9wYWdlSGVhZGVyPg0KICAgICAgICAgICAgPGNvbHVtbkhlYWRlcj4NCiAgICAgICAgICAgICAgICA8YmFuZCBoZWlnaHQ9IjI0IiBzcGxpdFR5cGU9IlN0cmV0Y2giPg0KICAgICAgICAgICAgICAgICAgICA8ZnJhbWU+DQogICAgICAgICAgICAgICAgICAgICAgICA8cmVwb3J0RWxlbWVudCBzdHlsZT0iQ29sdW1uIGhlYWRlciIgbW9kZT0iVHJhbnNwYXJlbnQiIHg9IjEiIHk9IjUiIHdpZHRoPSI4MDAiIGhlaWdodD0iMTkiIGlzUmVtb3ZlTGluZVdoZW5CbGFuaz0idHJ1ZSIgdXVpZD0iM2U4ZmRkNmQtYTZmZi00NDA3LTlhMWUtNWQ2YjQ3MDYzMDBhIi8+DQogICAgICAgICAgICAgICAgICAgICAgICA8c3RhdGljVGV4dD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwb3J0RWxlbWVudCBzdHlsZT0iQ29sdW1uIGhlYWRlciIgeD0iMCIgeT0iMCIgd2lkdGg9IjExOSIgaGVpZ2h0PSIxOCIgdXVpZD0iODZjNzRiZWItYmRkZC00OGNjLTk0NWEtMTY3YjI2MWIxZTBiIi8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRFbGVtZW50IHZlcnRpY2FsQWxpZ25tZW50PSJNaWRkbGUiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dD48IVtDREFUQVtOYW1lXV0+PC90ZXh0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdGF0aWNUZXh0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHN0YXRpY1RleHQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9ydEVsZW1lbnQgc3R5bGU9IkNvbHVtbiBoZWFkZXIiIHg9IjExOSIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxOCIgdXVpZD0iODZjNzRiZWItYmRkZC00OGNjLTk0NWEtMTY3YjI2MWIxZTBiIi8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRFbGVtZW50IHZlcnRpY2FsQWxpZ25tZW50PSJNaWRkbGUiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dD48IVtDREFUQVtGaXJzdCBuYW1lXV0+PC90ZXh0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdGF0aWNUZXh0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHN0YXRpY1RleHQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9ydEVsZW1lbnQgc3R5bGU9IkNvbHVtbiBoZWFkZXIiIHg9IjIxOSIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxOCIgdXVpZD0iODZjNzRiZWItYmRkZC00OGNjLTk0NWEtMTY3YjI2MWIxZTBiIi8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRFbGVtZW50IHZlcnRpY2FsQWxpZ25tZW50PSJNaWRkbGUiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dD48IVtDREFUQVtMYXN0IG5hbWVdXT48L3RleHQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3N0YXRpY1RleHQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8c3RhdGljVGV4dD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwb3J0RWxlbWVudCBzdHlsZT0iQ29sdW1uIGhlYWRlciIgeD0iMzE5IiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjE4IiB1dWlkPSI4NmM3NGJlYi1iZGRkLTQ4Y2MtOTQ1YS0xNjdiMjYxYjFlMGIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dEVsZW1lbnQgdmVydGljYWxBbGlnbm1lbnQ9Ik1pZGRsZSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0PjwhW0NEQVRBW0FjdGl2YXRpb25dXT48L3RleHQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3N0YXRpY1RleHQ+DQogICAgICAgICAgICAgICAgICAgIDwvZnJhbWU+DQogICAgICAgICAgICAgICAgPC9iYW5kPg0KICAgICAgICAgICAgPC9jb2x1bW5IZWFkZXI+DQogICAgICAgICAgICA8ZGV0YWlsPg0KICAgICAgICAgICAgICAgIDxiYW5kIGhlaWdodD0iMjAiIHNwbGl0VHlwZT0iUHJldmVudCI+DQogICAgICAgICAgICAgICAgICAgIDxmcmFtZT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBvcnRFbGVtZW50IHN0eWxlPSJEZXRhaWwiIHg9IjAiIHk9IjEiIHdpZHRoPSI4MDAiIGhlaWdodD0iMTkiIHV1aWQ9IjNlOGZkZDZkLWE2ZmYtNDQwNy05YTFlLTVkNmI0NzA2MzAwYSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRGaWVsZCBpc1N0cmV0Y2hXaXRoT3ZlcmZsb3c9InRydWUiIGlzQmxhbmtXaGVuTnVsbD0idHJ1ZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9ydEVsZW1lbnQgc3R5bGU9IkRldGFpbCIgeD0iMCIgeT0iMSIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxOCIgdXVpZD0iZWJhZWYxNmQtMjkwMy00MDI5LTlhNmItZDRkMjQ0NTU4YWU5Ii8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRFbGVtZW50IHZlcnRpY2FsQWxpZ25tZW50PSJNaWRkbGUiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dEZpZWxkRXhwcmVzc2lvbj48IVtDREFUQVskRntOYW1lfV1dPjwvdGV4dEZpZWxkRXhwcmVzc2lvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dEZpZWxkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRGaWVsZCBpc1N0cmV0Y2hXaXRoT3ZlcmZsb3c9InRydWUiIGlzQmxhbmtXaGVuTnVsbD0idHJ1ZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9ydEVsZW1lbnQgc3R5bGU9IkRldGFpbCIgeD0iMTIwIiB5PSIxIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjE4IiB1dWlkPSIyOGJiOWI0Ny1hNjljLTQ4ZTEtOTA3My1kNTRkOTI2MjQyZTgiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dEVsZW1lbnQgdmVydGljYWxBbGlnbm1lbnQ9Ik1pZGRsZSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0RmllbGRFeHByZXNzaW9uPjwhW0NEQVRBWyRGe0ZpcnN0TmFtZX1dXT48L3RleHRGaWVsZEV4cHJlc3Npb24+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RleHRGaWVsZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0RmllbGQgaXNTdHJldGNoV2l0aE92ZXJmbG93PSJ0cnVlIiBpc0JsYW5rV2hlbk51bGw9InRydWUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBvcnRFbGVtZW50IHN0eWxlPSJEZXRhaWwiIHg9IjIyMCIgeT0iMSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxOCIgdXVpZD0iMjhiYjliNDctYTY5Yy00OGUxLTkwNzMtZDU0ZDkyNjI0MmU4Ii8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRFbGVtZW50IHZlcnRpY2FsQWxpZ25tZW50PSJNaWRkbGUiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dEZpZWxkRXhwcmVzc2lvbj48IVtDREFUQVskRntMYXN0TmFtZX1dXT48L3RleHRGaWVsZEV4cHJlc3Npb24+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RleHRGaWVsZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0RmllbGQgaXNTdHJldGNoV2l0aE92ZXJmbG93PSJ0cnVlIiBpc0JsYW5rV2hlbk51bGw9InRydWUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBvcnRFbGVtZW50IHN0eWxlPSJEZXRhaWwiIHg9IjMyMCIgeT0iMSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxOCIgdXVpZD0iMjhiYjliNDctYTY5Yy00OGUxLTkwNzMtZDU0ZDkyNjI0MmU4Ii8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRFbGVtZW50IHZlcnRpY2FsQWxpZ25tZW50PSJNaWRkbGUiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dEZpZWxkRXhwcmVzc2lvbj48IVtDREFUQVskRntBY3RpdmF0aW9ufV1dPjwvdGV4dEZpZWxkRXhwcmVzc2lvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dEZpZWxkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9ydEVsZW1lbnQgcG9zaXRpb25UeXBlPSJGaXhSZWxhdGl2ZVRvQm90dG9tIiB4PSIwIiB5PSIxNyIgd2lkdGg9IjgwMCIgaGVpZ2h0PSIxIiB1dWlkPSJhNTkxZDRjMS0xY2FkLTRkYTItOWY5ZC0wODFmNTM5ZTkwNDMiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JhcGhpY0VsZW1lbnQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwZW4gbGluZVdpZHRoPSIwLjUiIGxpbmVDb2xvcj0iIzk5OTk5OSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JhcGhpY0VsZW1lbnQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2xpbmU+DQogICAgICAgICAgICAgICAgICAgIDwvZnJhbWU+DQogICAgICAgICAgICAgICAgPC9iYW5kPg0KICAgICAgICAgICAgPC9kZXRhaWw+DQogICAgICAgICAgICA8Y29sdW1uRm9vdGVyPg0KICAgICAgICAgICAgICAgIDxiYW5kIGhlaWdodD0iNyIgc3BsaXRUeXBlPSJTdHJldGNoIj4NCiAgICAgICAgICAgICAgICAgICAgPGxpbmU+DQogICAgICAgICAgICAgICAgICAgICAgICA8cmVwb3J0RWxlbWVudCBwb3NpdGlvblR5cGU9IkZpeFJlbGF0aXZlVG9Cb3R0b20iIHg9IjAiIHk9IjMiIHdpZHRoPSI4MDAiIGhlaWdodD0iMSIgdXVpZD0iYTU5MWQ0YzEtMWNhZC00ZGEyLTlmOWQtMDgxZjUzOWU5MDQzIi8+DQogICAgICAgICAgICAgICAgICAgICAgICA8Z3JhcGhpY0VsZW1lbnQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlbiBsaW5lV2lkdGg9IjAuNSIgbGluZUNvbG9yPSIjOTk5OTk5Ii8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2dyYXBoaWNFbGVtZW50Pg0KICAgICAgICAgICAgICAgICAgICA8L2xpbmU+DQogICAgICAgICAgICAgICAgPC9iYW5kPg0KICAgICAgICAgICAgPC9jb2x1bW5Gb290ZXI+DQogICAgICAgICAgICA8cGFnZUZvb3Rlcj4NCiAgICAgICAgICAgICAgICA8YmFuZCBoZWlnaHQ9IjMyIiBzcGxpdFR5cGU9IlN0cmV0Y2giPg0KICAgICAgICAgICAgICAgICAgICA8ZnJhbWU+DQogICAgICAgICAgICAgICAgICAgICAgICA8cmVwb3J0RWxlbWVudCBzdHlsZT0iUGFnZSBmb290ZXIiIG1vZGU9IlRyYW5zcGFyZW50IiB4PSIwIiB5PSIxIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjI0IiB1dWlkPSJmYmU4YWFlNC02NTAwLTQ2OGEtYjFlOC03MDBiNTY5MTM5YTEiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0RmllbGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9ydEVsZW1lbnQgc3R5bGU9IlBhZ2UgZm9vdGVyIiB4PSI2ODAiIHk9IjEiIHdpZHRoPSI4MCIgaGVpZ2h0PSIyMCIgdXVpZD0iNWMwNjJjNjYtYmE0NS00Mjg4LTlkY2QtMjQ2ZTI4YzVhZjc1Ii8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRFbGVtZW50IHRleHRBbGlnbm1lbnQ9IlJpZ2h0IiB2ZXJ0aWNhbEFsaWdubWVudD0iTWlkZGxlIi8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRGaWVsZEV4cHJlc3Npb24+PCFbQ0RBVEFbIlBhZ2UgIiskVntQQUdFX05VTUJFUn0rIiBvZiJdXT48L3RleHRGaWVsZEV4cHJlc3Npb24+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RleHRGaWVsZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0RmllbGQgcGF0dGVybj0iRUVFRUUgZGQgTU1NTU0geXl5eSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcG9ydEVsZW1lbnQgc3R5bGU9IlBhZ2UgZm9vdGVyIiB4PSIyIiB5PSIxIiB3aWR0aD0iMTk3IiBoZWlnaHQ9IjIwIiB1dWlkPSIyOGJiOWI0Ny1hNjljLTQ4ZTEtOTA3My1kNTRkOTI2MjQyZTgiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dEVsZW1lbnQgdmVydGljYWxBbGlnbm1lbnQ9Ik1pZGRsZSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0RmllbGRFeHByZXNzaW9uPjwhW0NEQVRBW25ldyBqYXZhLnV0aWwuRGF0ZSgpXV0+PC90ZXh0RmllbGRFeHByZXNzaW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZXh0RmllbGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dEZpZWxkIGV2YWx1YXRpb25UaW1lPSJSZXBvcnQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBvcnRFbGVtZW50IHN0eWxlPSJQYWdlIGZvb3RlciIgeD0iNzYwIiB5PSIxIiB3aWR0aD0iNDAiIGhlaWdodD0iMjAiIHV1aWQ9IjkzNGIxNmU4LWMzZWItNDAxNy04NjZhLTBiNzczNWJmMjkxNyIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0RWxlbWVudCB2ZXJ0aWNhbEFsaWdubWVudD0iTWlkZGxlIi8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRGaWVsZEV4cHJlc3Npb24+PCFbQ0RBVEFbIiAiICsgJFZ7UEFHRV9OVU1CRVJ9XV0+PC90ZXh0RmllbGRFeHByZXNzaW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZXh0RmllbGQ+DQogICAgICAgICAgICAgICAgICAgIDwvZnJhbWU+DQogICAgICAgICAgICAgICAgPC9iYW5kPg0KICAgICAgICAgICAgPC9wYWdlRm9vdGVyPg0KICAgICAgICA8L2phc3BlclJlcG9ydD4= - PGphc3BlclRlbXBsYXRlIHhtbG5zPSJodHRwOi8vamFzcGVycmVwb3J0cy5zb3VyY2Vmb3JnZS5uZXQvamFzcGVycmVwb3J0cyINCiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiDQogICAgICAgICAgICAgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9qYXNwZXJyZXBvcnRzLnNvdXJjZWZvcmdlLm5ldC9qYXNwZXJyZXBvcnRzIGh0dHA6Ly9qYXNwZXJyZXBvcnRzLnNvdXJjZWZvcmdlLm5ldC94c2QvamFzcGVycmVwb3J0LnhzZCI+DQogICAgICAgICAgICA8c3R5bGUgZm9udFNpemU9IjEwIiBoQWxpZ249IkxlZnQiIGlzRGVmYXVsdD0idHJ1ZSIgaXNQZGZFbWJlZGRlZD0iZmFsc2UiIG5hbWU9IkJhc2UiDQogICAgICAgICAgICAgICAgICAgcGRmRW5jb2Rpbmc9IkNwMTI1MiINCiAgICAgICAgICAgICAgICAgICBwZGZGb250TmFtZT0iSGVsdmV0aWNhIg0KICAgICAgICAgICAgICAgICAgIHZBbGlnbj0iTWlkZGxlIj4NCiAgICAgICAgICAgIDwvc3R5bGU+DQogICAgICAgICAgICA8c3R5bGUgYmFja2NvbG9yPSIjMjY3OTk0IiBmb250U2l6ZT0iMjYiIGZvcmVjb2xvcj0iI0ZGRkZGRiIgaXNEZWZhdWx0PSJmYWxzZSINCiAgICAgICAgICAgICAgICAgICBtb2RlPSJPcGFxdWUiDQogICAgICAgICAgICAgICAgICAgbmFtZT0iVGl0bGUiDQogICAgICAgICAgICAgICAgICAgc3R5bGU9IkJhc2UiLz4NCiAgICAgICAgICAgIDxzdHlsZSBmb250U2l6ZT0iMTIiIGZvcmVjb2xvcj0iIzAwMDAwMCIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iUGFnZSBoZWFkZXIiDQogICAgICAgICAgICAgICAgICAgc3R5bGU9IkJhc2UiLz4NCiAgICAgICAgICAgIDxzdHlsZSBiYWNrY29sb3I9IiMzMzMzMzMiIGZvbnRTaXplPSIxMiIgZm9yZWNvbG9yPSIjRkZGRkZGIiBoQWxpZ249IkNlbnRlciINCiAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ9ImZhbHNlIg0KICAgICAgICAgICAgICAgICAgIG1vZGU9Ik9wYXF1ZSINCiAgICAgICAgICAgICAgICAgICBuYW1lPSJDb2x1bW4gaGVhZGVyIg0KICAgICAgICAgICAgICAgICAgIHN0eWxlPSJCYXNlIi8+DQogICAgICAgICAgICA8c3R5bGUgaXNCb2xkPSJmYWxzZSIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iRGV0YWlsIiBzdHlsZT0iQmFzZSIvPg0KICAgICAgICAgICAgPHN0eWxlIGZvbnRTaXplPSI5IiBmb3JlY29sb3I9IiMwMDAwMDAiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IlBhZ2UgZm9vdGVyIg0KICAgICAgICAgICAgICAgICAgIHN0eWxlPSJCYXNlIi8+DQogICAgICAgIDwvamFzcGVyVGVtcGxhdGU+ - landscape - csv - - UserType - - Name - Name - c:name - 1 - ascending - 25 - t:PolyStringType - - - FirstName - First Name - c:givenName - 25 - t:PolyStringType - - - LastName - Last Name - c:familyName - 25 - t:PolyStringType - - - Activation - Activation - c:activation/c:administrativeStatus - 25 - c:ActivationStatusType - - - LOGO_PATH - src/test/resources/reports/logo.jpg - xsd:string - - - BaseTemplateStyles - src/test/resources/styles/midpoint_base_styles.jrtx - xsd:string - - - diff --git a/model/report-impl/src/test/resources/reports/report-test-without-design.xml b/model/report-impl/src/test/resources/reports/report-test-without-design.xml deleted file mode 100644 index 71202e3d052..00000000000 --- a/model/report-impl/src/test/resources/reports/report-test-without-design.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - Test report - task - TEST Report without design. - - landscape - csv - - - name - Name - c:name - 1 - ascending - 10 - xsd:string - - - firstName - First Name - c:givenName - 10 - xsd:string - - - lastName - Last Name - c:familyName - 10 - xsd:string - - - activation - Activation - c:activation/c:administrativeStatus - 10 - c:ActivationStatusType - - - - src/test/resources/reports/logo.jpg - UserType - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/model/report-impl/src/test/resources/reports/report-test.xml b/model/report-impl/src/test/resources/reports/report-test.xml deleted file mode 100644 index 0e5025936ef..00000000000 --- a/model/report-impl/src/test/resources/reports/report-test.xml +++ /dev/null @@ -1,118 +0,0 @@ - - - - Test report - test report - - TEST Report with DataSource parameter. - - - true - - UENGRVQwTlVXVkJGSUdwaGMzQmxjbFJsYlhCc1lYUmxEUW9nSUZCVlFreEpReUFpTFM4dlNtRnpjR1Z5VW1Wd2IzSjBjeTh2UkZSRUlGUmxiWEJzWVhSbEx5OUZUaUlOQ2lBZ0ltaDBkSEE2THk5cVlYTndaWEp5WlhCdmNuUnpMbk52ZFhKalpXWnZjbWRsTG01bGRDOWtkR1J6TDJwaGMzQmxjblJsYlhCc1lYUmxMbVIwWkNJK0RRb05DanhxWVhOd1pYSlVaVzF3YkdGMFpUNE5DZzBLSUNBZ0lEeHpkSGxzWlNCdVlXMWxQU0pDWVhObElpQnBjMFJsWm1GMWJIUTlJblJ5ZFdVaUlHaEJiR2xuYmowaVRHVm1kQ0lnZGtGc2FXZHVQU0pOYVdSa2JHVWlEUW9KQ1FsbWIyNTBVMmw2WlQwaU1UQWlJSEJrWmtadmJuUk9ZVzFsUFNKSVpXeDJaWFJwWTJFaUlIQmtaa1Z1WTI5a2FXNW5QU0pEY0RFeU5USWlJR2x6VUdSbVJXMWlaV1JrWldROUltWmhiSE5sSWo0TkNnazhMM04wZVd4bFBnMEtDUTBLQ1EwS0NUeHpkSGxzWlNCdVlXMWxQU0pVYVhSc1pTSWdjM1I1YkdVOUlrSmhjMlVpSUcxdlpHVTlJazl3WVhGMVpTSWdZbUZqYTJOdmJHOXlQU0lqTWpZM09UazBJZzBLQ1FsbWIzSmxZMjlzYjNJOUlpTkdSa1pHUmtZaUlHWnZiblJUYVhwbFBTSXlOaUl2UGcwS0NRa05DZ2s4YzNSNWJHVWdibUZ0WlQwaVVHRm5aU0JvWldGa1pYSWlJSE4wZVd4bFBTSkNZWE5sSWlBTkNna0pabTl5WldOdmJHOXlQU0lqTURBd01EQXdJaUJtYjI1MFUybDZaVDBpTVRJaUx6NE5DZ2tKRFFvSlBITjBlV3hsSUc1aGJXVTlJa052YkhWdGJpQm9aV0ZrWlhJaUlITjBlV3hsUFNKQ1lYTmxJaUJvUVd4cFoyNDlJa05sYm5SbGNpSU5DZ2tKYlc5a1pUMGlUM0JoY1hWbElpQm1iM0psWTI5c2IzSTlJaU5HUmtaR1JrWWlJR0poWTJ0amIyeHZjajBpSXpNek16TXpNeUlnWm05dWRGTnBlbVU5SWpFeUlpOCtEUW9KQ1EwS0NUeHpkSGxzWlNCdVlXMWxQU0pFWlhSaGFXd2lJSE4wZVd4bFBTSkNZWE5sSWcwS0NRbHBjMEp2YkdROUltWmhiSE5sSWk4K0RRb0pDUTBLQ1R4emRIbHNaU0J1WVcxbFBTSlFZV2RsSUdadmIzUmxjaUlnYzNSNWJHVTlJa0poYzJVaUlBMEtDUWxtYjNKbFkyOXNiM0k5SWlNd01EQXdNREFpSUdadmJuUlRhWHBsUFNJNUlpOCtEUW9KRFFvOEwycGhjM0JsY2xSbGJYQnNZWFJsUGc9PQ== - landscape - csv - - - - - - - name - Name - c:name - 1 - ascending - 10 - t:PolyStringType - - - firstName - First Name - c:givenName - 10 - t:PolyStringType - - - lastName - Last Name - c:familyName - 10 - t:PolyStringType - - - activation - Activation - c:activation/c:administrativeStatus - 10 - c:ActivationStatusType - - - - src/test/resources/reports/logo.jpg - c:UserType - - - - normIgnoreCase - c:name - user - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/model/report-impl/src/test/resources/reports/report-user-list-expressions-csv.xml b/model/report-impl/src/test/resources/reports/report-user-list-expressions-csv.xml index fbfa0584dd6..33ebabb7c12 100644 --- a/model/report-impl/src/test/resources/reports/report-user-list-expressions-csv.xml +++ b/model/report-impl/src/test/resources/reports/report-user-list-expressions-csv.xml @@ -15,8 +15,8 @@ true - - UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWo4K0RRbzhJVVJQUTFSWlVFVWdhbUZ6Y0dWeVZHVnRjR3hoZEdVTkNpQWdVRlZDVEVsRElDSXRMeTlLWVhOd1pYSlNaWEJ2Y25Sekx5OUVWRVFnVkdWdGNHeGhkR1V2TDBWT0lnMEtJQ0FpYUhSMGNEb3ZMMnBoYzNCbGNuSmxjRzl5ZEhNdWMyOTFjbU5sWm05eVoyVXVibVYwTDJSMFpITXZhbUZ6Y0dWeWRHVnRjR3hoZEdVdVpIUmtJajROQ2p4cVlYTndaWEpVWlcxd2JHRjBaVDROQ2lBZ0lDQWdJQ0FnQ1R4emRIbHNaU0JtYjI1MFRtRnRaVDBpUkdWcVlWWjFJRk5oYm5NaUlHWnZiblJUYVhwbFBTSXhNQ0lnYUVGc2FXZHVQU0pNWldaMElpQnBjMFJsWm1GMWJIUTlJblJ5ZFdVaUlHbHpVR1JtUlcxaVpXUmtaV1E5SW5SeWRXVWlJQTBLQ1FrSkNTQWdJRzVoYldVOUlrSmhjMlVpSUhCa1prVnVZMjlrYVc1blBTSkpaR1Z1ZEdsMGVTMUlJaUJ3WkdaR2IyNTBUbUZ0WlQwaVJHVnFZVloxVTJGdWN5NTBkR1lpSUhaQmJHbG5iajBpVFdsa1pHeGxJajROQ2drSkNUd3ZjM1I1YkdVK0RRb0pDUWs4YzNSNWJHVWdZbUZqYTJOdmJHOXlQU0lqTWpZM09UazBJaUJtYjI1MFUybDZaVDBpTWpZaUlHWnZjbVZqYjJ4dmNqMGlJMFpHUmtaR1JpSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWxScGRHeGxJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBpQU5DZ2tKQ1R4emRIbHNaU0JtYjI1MFUybDZaVDBpTVRJaUlHWnZjbVZqYjJ4dmNqMGlJekF3TURBd01DSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSWdibUZ0WlQwaVVHRm5aU0JvWldGa1pYSWlEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVTlJa0poYzJVaUx6NE5DZ2tKQ1R4emRIbHNaU0JpWVdOclkyOXNiM0k5SWlNek16TXpNek1pSUdadmJuUlRhWHBsUFNJeE1pSWdabTl5WldOdmJHOXlQU0lqUmtaR1JrWkdJaUJvUVd4cFoyNDlJa05sYm5SbGNpSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYzBSbFptRjFiSFE5SW1aaGJITmxJaUJ0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWtOdmJIVnRiaUJvWldGa1pYSWlJSE4wZVd4bFBTSkNZWE5sSWk4K0RRb0pDUWs4YzNSNWJHVWdhWE5DYjJ4a1BTSm1ZV3h6WlNJZ2FYTkVaV1poZFd4MFBTSm1ZV3h6WlNJZ2JtRnRaVDBpUkdWMFlXbHNJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBnMEtJQ0FnSUNBZ0lDQWdJQ0FnUEhOMGVXeGxJR2x6UW05c1pEMGlabUZzYzJVaUlHbHpSR1ZtWVhWc2REMGlabUZzYzJVaUlHNWhiV1U5SWtOdlpHVWlJSE4wZVd4bFBTSkNZWE5sSWlCbWIyNTBVMmw2WlQwaU9TSXZQZzBLQ1FrSlBITjBlV3hsSUdadmJuUlRhWHBsUFNJNUlpQm1iM0psWTI5c2IzSTlJaU13TURBd01EQWlJR2x6UkdWbVlYVnNkRDBpWm1Gc2MyVWlJRzVoYldVOUlsQmhaMlVnWm05dmRHVnlJZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxQU0pDWVhObElpOCtEUW9KQ1R3dmFtRnpjR1Z5VkdWdGNHeGhkR1Ur + + PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8IURPQ1RZUEUgamFzcGVyVGVtcGxhdGUNCiAgUFVCTElDICItLy9KYXNwZXJSZXBvcnRzLy9EVEQgVGVtcGxhdGUvL0VOIg0KICAiaHR0cDovL2phc3BlcnJlcG9ydHMuc291cmNlZm9yZ2UubmV0L2R0ZHMvamFzcGVydGVtcGxhdGUuZHRkIj4NCjxqYXNwZXJUZW1wbGF0ZT4NCiAgICAgICAgCTxzdHlsZSBmb250TmFtZT0iRGVqYVZ1IFNhbnMiIGZvbnRTaXplPSIxMCIgaEFsaWduPSJMZWZ0IiBpc0RlZmF1bHQ9InRydWUiIGlzUGRmRW1iZWRkZWQ9InRydWUiIA0KCQkJCSAgIG5hbWU9IkJhc2UiIHBkZkVuY29kaW5nPSJJZGVudGl0eS1IIiBwZGZGb250TmFtZT0iRGVqYVZ1U2Fucy50dGYiIHZBbGlnbj0iTWlkZGxlIj4NCgkJCTwvc3R5bGU+DQoJCQk8c3R5bGUgYmFja2NvbG9yPSIjMjY3OTk0IiBmb250U2l6ZT0iMjYiIGZvcmVjb2xvcj0iI0ZGRkZGRiIgaXNEZWZhdWx0PSJmYWxzZSINCiAgICAgICAgICAgICAgICAgICBtb2RlPSJPcGFxdWUiIG5hbWU9IlRpdGxlIiBzdHlsZT0iQmFzZSIvPiANCgkJCTxzdHlsZSBmb250U2l6ZT0iMTIiIGZvcmVjb2xvcj0iIzAwMDAwMCIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iUGFnZSBoZWFkZXIiDQogICAgICAgICAgICAgICAgICAgc3R5bGU9IkJhc2UiLz4NCgkJCTxzdHlsZSBiYWNrY29sb3I9IiMzMzMzMzMiIGZvbnRTaXplPSIxMiIgZm9yZWNvbG9yPSIjRkZGRkZGIiBoQWxpZ249IkNlbnRlciINCiAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ9ImZhbHNlIiBtb2RlPSJPcGFxdWUiIG5hbWU9IkNvbHVtbiBoZWFkZXIiIHN0eWxlPSJCYXNlIi8+DQoJCQk8c3R5bGUgaXNCb2xkPSJmYWxzZSIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iRGV0YWlsIiBzdHlsZT0iQmFzZSIvPg0KICAgICAgICAgICAgPHN0eWxlIGlzQm9sZD0iZmFsc2UiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IkNvZGUiIHN0eWxlPSJCYXNlIiBmb250U2l6ZT0iOSIvPg0KCQkJPHN0eWxlIGZvbnRTaXplPSI5IiBmb3JlY29sb3I9IiMwMDAwMDAiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IlBhZ2UgZm9vdGVyIg0KICAgICAgICAgICAgICAgICAgIHN0eWxlPSJCYXNlIi8+DQoJCTwvamFzcGVyVGVtcGxhdGU+ csv JRSwapFileVirtualizer 300 diff --git a/model/report-impl/src/test/resources/reports/report-user-list-expressions-poisonous-field-csv.xml b/model/report-impl/src/test/resources/reports/report-user-list-expressions-poisonous-field-csv.xml index 82fef21803c..ba44d922796 100644 --- a/model/report-impl/src/test/resources/reports/report-user-list-expressions-poisonous-field-csv.xml +++ b/model/report-impl/src/test/resources/reports/report-user-list-expressions-poisonous-field-csv.xml @@ -15,8 +15,8 @@ true - - UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWo4K0RRbzhJVVJQUTFSWlVFVWdhbUZ6Y0dWeVZHVnRjR3hoZEdVTkNpQWdVRlZDVEVsRElDSXRMeTlLWVhOd1pYSlNaWEJ2Y25Sekx5OUVWRVFnVkdWdGNHeGhkR1V2TDBWT0lnMEtJQ0FpYUhSMGNEb3ZMMnBoYzNCbGNuSmxjRzl5ZEhNdWMyOTFjbU5sWm05eVoyVXVibVYwTDJSMFpITXZhbUZ6Y0dWeWRHVnRjR3hoZEdVdVpIUmtJajROQ2p4cVlYTndaWEpVWlcxd2JHRjBaVDROQ2lBZ0lDQWdJQ0FnQ1R4emRIbHNaU0JtYjI1MFRtRnRaVDBpUkdWcVlWWjFJRk5oYm5NaUlHWnZiblJUYVhwbFBTSXhNQ0lnYUVGc2FXZHVQU0pNWldaMElpQnBjMFJsWm1GMWJIUTlJblJ5ZFdVaUlHbHpVR1JtUlcxaVpXUmtaV1E5SW5SeWRXVWlJQTBLQ1FrSkNTQWdJRzVoYldVOUlrSmhjMlVpSUhCa1prVnVZMjlrYVc1blBTSkpaR1Z1ZEdsMGVTMUlJaUJ3WkdaR2IyNTBUbUZ0WlQwaVJHVnFZVloxVTJGdWN5NTBkR1lpSUhaQmJHbG5iajBpVFdsa1pHeGxJajROQ2drSkNUd3ZjM1I1YkdVK0RRb0pDUWs4YzNSNWJHVWdZbUZqYTJOdmJHOXlQU0lqTWpZM09UazBJaUJtYjI1MFUybDZaVDBpTWpZaUlHWnZjbVZqYjJ4dmNqMGlJMFpHUmtaR1JpSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWxScGRHeGxJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBpQU5DZ2tKQ1R4emRIbHNaU0JtYjI1MFUybDZaVDBpTVRJaUlHWnZjbVZqYjJ4dmNqMGlJekF3TURBd01DSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSWdibUZ0WlQwaVVHRm5aU0JvWldGa1pYSWlEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVTlJa0poYzJVaUx6NE5DZ2tKQ1R4emRIbHNaU0JpWVdOclkyOXNiM0k5SWlNek16TXpNek1pSUdadmJuUlRhWHBsUFNJeE1pSWdabTl5WldOdmJHOXlQU0lqUmtaR1JrWkdJaUJvUVd4cFoyNDlJa05sYm5SbGNpSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYzBSbFptRjFiSFE5SW1aaGJITmxJaUJ0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWtOdmJIVnRiaUJvWldGa1pYSWlJSE4wZVd4bFBTSkNZWE5sSWk4K0RRb0pDUWs4YzNSNWJHVWdhWE5DYjJ4a1BTSm1ZV3h6WlNJZ2FYTkVaV1poZFd4MFBTSm1ZV3h6WlNJZ2JtRnRaVDBpUkdWMFlXbHNJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBnMEtJQ0FnSUNBZ0lDQWdJQ0FnUEhOMGVXeGxJR2x6UW05c1pEMGlabUZzYzJVaUlHbHpSR1ZtWVhWc2REMGlabUZzYzJVaUlHNWhiV1U5SWtOdlpHVWlJSE4wZVd4bFBTSkNZWE5sSWlCbWIyNTBVMmw2WlQwaU9TSXZQZzBLQ1FrSlBITjBlV3hsSUdadmJuUlRhWHBsUFNJNUlpQm1iM0psWTI5c2IzSTlJaU13TURBd01EQWlJR2x6UkdWbVlYVnNkRDBpWm1Gc2MyVWlJRzVoYldVOUlsQmhaMlVnWm05dmRHVnlJZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxQU0pDWVhObElpOCtEUW9KQ1R3dmFtRnpjR1Z5VkdWdGNHeGhkR1Ur + + PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8IURPQ1RZUEUgamFzcGVyVGVtcGxhdGUNCiAgUFVCTElDICItLy9KYXNwZXJSZXBvcnRzLy9EVEQgVGVtcGxhdGUvL0VOIg0KICAiaHR0cDovL2phc3BlcnJlcG9ydHMuc291cmNlZm9yZ2UubmV0L2R0ZHMvamFzcGVydGVtcGxhdGUuZHRkIj4NCjxqYXNwZXJUZW1wbGF0ZT4NCiAgICAgICAgCTxzdHlsZSBmb250TmFtZT0iRGVqYVZ1IFNhbnMiIGZvbnRTaXplPSIxMCIgaEFsaWduPSJMZWZ0IiBpc0RlZmF1bHQ9InRydWUiIGlzUGRmRW1iZWRkZWQ9InRydWUiIA0KCQkJCSAgIG5hbWU9IkJhc2UiIHBkZkVuY29kaW5nPSJJZGVudGl0eS1IIiBwZGZGb250TmFtZT0iRGVqYVZ1U2Fucy50dGYiIHZBbGlnbj0iTWlkZGxlIj4NCgkJCTwvc3R5bGU+DQoJCQk8c3R5bGUgYmFja2NvbG9yPSIjMjY3OTk0IiBmb250U2l6ZT0iMjYiIGZvcmVjb2xvcj0iI0ZGRkZGRiIgaXNEZWZhdWx0PSJmYWxzZSINCiAgICAgICAgICAgICAgICAgICBtb2RlPSJPcGFxdWUiIG5hbWU9IlRpdGxlIiBzdHlsZT0iQmFzZSIvPiANCgkJCTxzdHlsZSBmb250U2l6ZT0iMTIiIGZvcmVjb2xvcj0iIzAwMDAwMCIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iUGFnZSBoZWFkZXIiDQogICAgICAgICAgICAgICAgICAgc3R5bGU9IkJhc2UiLz4NCgkJCTxzdHlsZSBiYWNrY29sb3I9IiMzMzMzMzMiIGZvbnRTaXplPSIxMiIgZm9yZWNvbG9yPSIjRkZGRkZGIiBoQWxpZ249IkNlbnRlciINCiAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ9ImZhbHNlIiBtb2RlPSJPcGFxdWUiIG5hbWU9IkNvbHVtbiBoZWFkZXIiIHN0eWxlPSJCYXNlIi8+DQoJCQk8c3R5bGUgaXNCb2xkPSJmYWxzZSIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iRGV0YWlsIiBzdHlsZT0iQmFzZSIvPg0KICAgICAgICAgICAgPHN0eWxlIGlzQm9sZD0iZmFsc2UiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IkNvZGUiIHN0eWxlPSJCYXNlIiBmb250U2l6ZT0iOSIvPg0KCQkJPHN0eWxlIGZvbnRTaXplPSI5IiBmb3JlY29sb3I9IiMwMDAwMDAiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IlBhZ2UgZm9vdGVyIg0KICAgICAgICAgICAgICAgICAgIHN0eWxlPSJCYXNlIi8+DQoJCTwvamFzcGVyVGVtcGxhdGU+ csv JRSwapFileVirtualizer 300 diff --git a/model/report-impl/src/test/resources/reports/report-user-list-expressions-poisonous-query-csv.xml b/model/report-impl/src/test/resources/reports/report-user-list-expressions-poisonous-query-csv.xml index de66aafe2e3..74bff95a4a3 100644 --- a/model/report-impl/src/test/resources/reports/report-user-list-expressions-poisonous-query-csv.xml +++ b/model/report-impl/src/test/resources/reports/report-user-list-expressions-poisonous-query-csv.xml @@ -16,8 +16,8 @@ true - - UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWo4K0RRbzhJVVJQUTFSWlVFVWdhbUZ6Y0dWeVZHVnRjR3hoZEdVTkNpQWdVRlZDVEVsRElDSXRMeTlLWVhOd1pYSlNaWEJ2Y25Sekx5OUVWRVFnVkdWdGNHeGhkR1V2TDBWT0lnMEtJQ0FpYUhSMGNEb3ZMMnBoYzNCbGNuSmxjRzl5ZEhNdWMyOTFjbU5sWm05eVoyVXVibVYwTDJSMFpITXZhbUZ6Y0dWeWRHVnRjR3hoZEdVdVpIUmtJajROQ2p4cVlYTndaWEpVWlcxd2JHRjBaVDROQ2lBZ0lDQWdJQ0FnQ1R4emRIbHNaU0JtYjI1MFRtRnRaVDBpUkdWcVlWWjFJRk5oYm5NaUlHWnZiblJUYVhwbFBTSXhNQ0lnYUVGc2FXZHVQU0pNWldaMElpQnBjMFJsWm1GMWJIUTlJblJ5ZFdVaUlHbHpVR1JtUlcxaVpXUmtaV1E5SW5SeWRXVWlJQTBLQ1FrSkNTQWdJRzVoYldVOUlrSmhjMlVpSUhCa1prVnVZMjlrYVc1blBTSkpaR1Z1ZEdsMGVTMUlJaUJ3WkdaR2IyNTBUbUZ0WlQwaVJHVnFZVloxVTJGdWN5NTBkR1lpSUhaQmJHbG5iajBpVFdsa1pHeGxJajROQ2drSkNUd3ZjM1I1YkdVK0RRb0pDUWs4YzNSNWJHVWdZbUZqYTJOdmJHOXlQU0lqTWpZM09UazBJaUJtYjI1MFUybDZaVDBpTWpZaUlHWnZjbVZqYjJ4dmNqMGlJMFpHUmtaR1JpSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWxScGRHeGxJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBpQU5DZ2tKQ1R4emRIbHNaU0JtYjI1MFUybDZaVDBpTVRJaUlHWnZjbVZqYjJ4dmNqMGlJekF3TURBd01DSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSWdibUZ0WlQwaVVHRm5aU0JvWldGa1pYSWlEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVTlJa0poYzJVaUx6NE5DZ2tKQ1R4emRIbHNaU0JpWVdOclkyOXNiM0k5SWlNek16TXpNek1pSUdadmJuUlRhWHBsUFNJeE1pSWdabTl5WldOdmJHOXlQU0lqUmtaR1JrWkdJaUJvUVd4cFoyNDlJa05sYm5SbGNpSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYzBSbFptRjFiSFE5SW1aaGJITmxJaUJ0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWtOdmJIVnRiaUJvWldGa1pYSWlJSE4wZVd4bFBTSkNZWE5sSWk4K0RRb0pDUWs4YzNSNWJHVWdhWE5DYjJ4a1BTSm1ZV3h6WlNJZ2FYTkVaV1poZFd4MFBTSm1ZV3h6WlNJZ2JtRnRaVDBpUkdWMFlXbHNJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBnMEtJQ0FnSUNBZ0lDQWdJQ0FnUEhOMGVXeGxJR2x6UW05c1pEMGlabUZzYzJVaUlHbHpSR1ZtWVhWc2REMGlabUZzYzJVaUlHNWhiV1U5SWtOdlpHVWlJSE4wZVd4bFBTSkNZWE5sSWlCbWIyNTBVMmw2WlQwaU9TSXZQZzBLQ1FrSlBITjBlV3hsSUdadmJuUlRhWHBsUFNJNUlpQm1iM0psWTI5c2IzSTlJaU13TURBd01EQWlJR2x6UkdWbVlYVnNkRDBpWm1Gc2MyVWlJRzVoYldVOUlsQmhaMlVnWm05dmRHVnlJZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxQU0pDWVhObElpOCtEUW9KQ1R3dmFtRnpjR1Z5VkdWdGNHeGhkR1Ur + + PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8IURPQ1RZUEUgamFzcGVyVGVtcGxhdGUNCiAgUFVCTElDICItLy9KYXNwZXJSZXBvcnRzLy9EVEQgVGVtcGxhdGUvL0VOIg0KICAiaHR0cDovL2phc3BlcnJlcG9ydHMuc291cmNlZm9yZ2UubmV0L2R0ZHMvamFzcGVydGVtcGxhdGUuZHRkIj4NCjxqYXNwZXJUZW1wbGF0ZT4NCiAgICAgICAgCTxzdHlsZSBmb250TmFtZT0iRGVqYVZ1IFNhbnMiIGZvbnRTaXplPSIxMCIgaEFsaWduPSJMZWZ0IiBpc0RlZmF1bHQ9InRydWUiIGlzUGRmRW1iZWRkZWQ9InRydWUiIA0KCQkJCSAgIG5hbWU9IkJhc2UiIHBkZkVuY29kaW5nPSJJZGVudGl0eS1IIiBwZGZGb250TmFtZT0iRGVqYVZ1U2Fucy50dGYiIHZBbGlnbj0iTWlkZGxlIj4NCgkJCTwvc3R5bGU+DQoJCQk8c3R5bGUgYmFja2NvbG9yPSIjMjY3OTk0IiBmb250U2l6ZT0iMjYiIGZvcmVjb2xvcj0iI0ZGRkZGRiIgaXNEZWZhdWx0PSJmYWxzZSINCiAgICAgICAgICAgICAgICAgICBtb2RlPSJPcGFxdWUiIG5hbWU9IlRpdGxlIiBzdHlsZT0iQmFzZSIvPiANCgkJCTxzdHlsZSBmb250U2l6ZT0iMTIiIGZvcmVjb2xvcj0iIzAwMDAwMCIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iUGFnZSBoZWFkZXIiDQogICAgICAgICAgICAgICAgICAgc3R5bGU9IkJhc2UiLz4NCgkJCTxzdHlsZSBiYWNrY29sb3I9IiMzMzMzMzMiIGZvbnRTaXplPSIxMiIgZm9yZWNvbG9yPSIjRkZGRkZGIiBoQWxpZ249IkNlbnRlciINCiAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ9ImZhbHNlIiBtb2RlPSJPcGFxdWUiIG5hbWU9IkNvbHVtbiBoZWFkZXIiIHN0eWxlPSJCYXNlIi8+DQoJCQk8c3R5bGUgaXNCb2xkPSJmYWxzZSIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iRGV0YWlsIiBzdHlsZT0iQmFzZSIvPg0KICAgICAgICAgICAgPHN0eWxlIGlzQm9sZD0iZmFsc2UiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IkNvZGUiIHN0eWxlPSJCYXNlIiBmb250U2l6ZT0iOSIvPg0KCQkJPHN0eWxlIGZvbnRTaXplPSI5IiBmb3JlY29sb3I9IiMwMDAwMDAiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IlBhZ2UgZm9vdGVyIg0KICAgICAgICAgICAgICAgICAgIHN0eWxlPSJCYXNlIi8+DQoJCTwvamFzcGVyVGVtcGxhdGU+ csv JRSwapFileVirtualizer 300 diff --git a/model/report-impl/src/test/resources/reports/report-user-list-script.xml b/model/report-impl/src/test/resources/reports/report-user-list-script.xml index 100415301c7..19a66adb138 100644 --- a/model/report-impl/src/test/resources/reports/report-user-list-script.xml +++ b/model/report-impl/src/test/resources/reports/report-user-list-script.xml @@ -26,8 +26,8 @@ true - - UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWo4K0RRbzhJVVJQUTFSWlVFVWdhbUZ6Y0dWeVZHVnRjR3hoZEdVTkNpQWdVRlZDVEVsRElDSXRMeTlLWVhOd1pYSlNaWEJ2Y25Sekx5OUVWRVFnVkdWdGNHeGhkR1V2TDBWT0lnMEtJQ0FpYUhSMGNEb3ZMMnBoYzNCbGNuSmxjRzl5ZEhNdWMyOTFjbU5sWm05eVoyVXVibVYwTDJSMFpITXZhbUZ6Y0dWeWRHVnRjR3hoZEdVdVpIUmtJajROQ2p4cVlYTndaWEpVWlcxd2JHRjBaVDROQ2lBZ0lDQWdJQ0FnQ1R4emRIbHNaU0JtYjI1MFRtRnRaVDBpUkdWcVlWWjFJRk5oYm5NaUlHWnZiblJUYVhwbFBTSXhNQ0lnYUVGc2FXZHVQU0pNWldaMElpQnBjMFJsWm1GMWJIUTlJblJ5ZFdVaUlHbHpVR1JtUlcxaVpXUmtaV1E5SW5SeWRXVWlJQTBLQ1FrSkNTQWdJRzVoYldVOUlrSmhjMlVpSUhCa1prVnVZMjlrYVc1blBTSkpaR1Z1ZEdsMGVTMUlJaUJ3WkdaR2IyNTBUbUZ0WlQwaVJHVnFZVloxVTJGdWN5NTBkR1lpSUhaQmJHbG5iajBpVFdsa1pHeGxJajROQ2drSkNUd3ZjM1I1YkdVK0RRb0pDUWs4YzNSNWJHVWdZbUZqYTJOdmJHOXlQU0lqTWpZM09UazBJaUJtYjI1MFUybDZaVDBpTWpZaUlHWnZjbVZqYjJ4dmNqMGlJMFpHUmtaR1JpSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWxScGRHeGxJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBpQU5DZ2tKQ1R4emRIbHNaU0JtYjI1MFUybDZaVDBpTVRJaUlHWnZjbVZqYjJ4dmNqMGlJekF3TURBd01DSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSWdibUZ0WlQwaVVHRm5aU0JvWldGa1pYSWlEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVTlJa0poYzJVaUx6NE5DZ2tKQ1R4emRIbHNaU0JpWVdOclkyOXNiM0k5SWlNek16TXpNek1pSUdadmJuUlRhWHBsUFNJeE1pSWdabTl5WldOdmJHOXlQU0lqUmtaR1JrWkdJaUJvUVd4cFoyNDlJa05sYm5SbGNpSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYzBSbFptRjFiSFE5SW1aaGJITmxJaUJ0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWtOdmJIVnRiaUJvWldGa1pYSWlJSE4wZVd4bFBTSkNZWE5sSWk4K0RRb0pDUWs4YzNSNWJHVWdhWE5DYjJ4a1BTSm1ZV3h6WlNJZ2FYTkVaV1poZFd4MFBTSm1ZV3h6WlNJZ2JtRnRaVDBpUkdWMFlXbHNJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBnMEtJQ0FnSUNBZ0lDQWdJQ0FnUEhOMGVXeGxJR2x6UW05c1pEMGlabUZzYzJVaUlHbHpSR1ZtWVhWc2REMGlabUZzYzJVaUlHNWhiV1U5SWtOdlpHVWlJSE4wZVd4bFBTSkNZWE5sSWlCbWIyNTBVMmw2WlQwaU9TSXZQZzBLQ1FrSlBITjBlV3hsSUdadmJuUlRhWHBsUFNJNUlpQm1iM0psWTI5c2IzSTlJaU13TURBd01EQWlJR2x6UkdWbVlYVnNkRDBpWm1Gc2MyVWlJRzVoYldVOUlsQmhaMlVnWm05dmRHVnlJZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxQU0pDWVhObElpOCtEUW9KQ1R3dmFtRnpjR1Z5VkdWdGNHeGhkR1Ur + + PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8IURPQ1RZUEUgamFzcGVyVGVtcGxhdGUNCiAgUFVCTElDICItLy9KYXNwZXJSZXBvcnRzLy9EVEQgVGVtcGxhdGUvL0VOIg0KICAiaHR0cDovL2phc3BlcnJlcG9ydHMuc291cmNlZm9yZ2UubmV0L2R0ZHMvamFzcGVydGVtcGxhdGUuZHRkIj4NCjxqYXNwZXJUZW1wbGF0ZT4NCiAgICAgICAgCTxzdHlsZSBmb250TmFtZT0iRGVqYVZ1IFNhbnMiIGZvbnRTaXplPSIxMCIgaEFsaWduPSJMZWZ0IiBpc0RlZmF1bHQ9InRydWUiIGlzUGRmRW1iZWRkZWQ9InRydWUiIA0KCQkJCSAgIG5hbWU9IkJhc2UiIHBkZkVuY29kaW5nPSJJZGVudGl0eS1IIiBwZGZGb250TmFtZT0iRGVqYVZ1U2Fucy50dGYiIHZBbGlnbj0iTWlkZGxlIj4NCgkJCTwvc3R5bGU+DQoJCQk8c3R5bGUgYmFja2NvbG9yPSIjMjY3OTk0IiBmb250U2l6ZT0iMjYiIGZvcmVjb2xvcj0iI0ZGRkZGRiIgaXNEZWZhdWx0PSJmYWxzZSINCiAgICAgICAgICAgICAgICAgICBtb2RlPSJPcGFxdWUiIG5hbWU9IlRpdGxlIiBzdHlsZT0iQmFzZSIvPiANCgkJCTxzdHlsZSBmb250U2l6ZT0iMTIiIGZvcmVjb2xvcj0iIzAwMDAwMCIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iUGFnZSBoZWFkZXIiDQogICAgICAgICAgICAgICAgICAgc3R5bGU9IkJhc2UiLz4NCgkJCTxzdHlsZSBiYWNrY29sb3I9IiMzMzMzMzMiIGZvbnRTaXplPSIxMiIgZm9yZWNvbG9yPSIjRkZGRkZGIiBoQWxpZ249IkNlbnRlciINCiAgICAgICAgICAgICAgICAgICBpc0RlZmF1bHQ9ImZhbHNlIiBtb2RlPSJPcGFxdWUiIG5hbWU9IkNvbHVtbiBoZWFkZXIiIHN0eWxlPSJCYXNlIi8+DQoJCQk8c3R5bGUgaXNCb2xkPSJmYWxzZSIgaXNEZWZhdWx0PSJmYWxzZSIgbmFtZT0iRGV0YWlsIiBzdHlsZT0iQmFzZSIvPg0KICAgICAgICAgICAgPHN0eWxlIGlzQm9sZD0iZmFsc2UiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IkNvZGUiIHN0eWxlPSJCYXNlIiBmb250U2l6ZT0iOSIvPg0KCQkJPHN0eWxlIGZvbnRTaXplPSI5IiBmb3JlY29sb3I9IiMwMDAwMDAiIGlzRGVmYXVsdD0iZmFsc2UiIG5hbWU9IlBhZ2UgZm9vdGVyIg0KICAgICAgICAgICAgICAgICAgIHN0eWxlPSJCYXNlIi8+DQoJCTwvamFzcGVyVGVtcGxhdGU+ pdf JRSwapFileVirtualizer 300 diff --git a/model/report-impl/src/test/resources/reports/report-user-list.xml b/model/report-impl/src/test/resources/reports/report-user-list.xml index 38f71d99fa9..aacbcd0c79c 100644 --- a/model/report-impl/src/test/resources/reports/report-user-list.xml +++ b/model/report-impl/src/test/resources/reports/report-user-list.xml @@ -27,6 +27,7 @@ true + UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWo4K0RRbzhJVVJQUTFSWlVFVWdhbUZ6Y0dWeVZHVnRjR3hoZEdVTkNpQWdVRlZDVEVsRElDSXRMeTlLWVhOd1pYSlNaWEJ2Y25Sekx5OUVWRVFnVkdWdGNHeGhkR1V2TDBWT0lnMEtJQ0FpYUhSMGNEb3ZMMnBoYzNCbGNuSmxjRzl5ZEhNdWMyOTFjbU5sWm05eVoyVXVibVYwTDJSMFpITXZhbUZ6Y0dWeWRHVnRjR3hoZEdVdVpIUmtJajROQ2p4cVlYTndaWEpVWlcxd2JHRjBaVDROQ2lBZ0lDQWdJQ0FnQ1R4emRIbHNaU0JtYjI1MFRtRnRaVDBpUkdWcVlWWjFJRk5oYm5NaUlHWnZiblJUYVhwbFBTSXhNQ0lnYUVGc2FXZHVQU0pNWldaMElpQnBjMFJsWm1GMWJIUTlJblJ5ZFdVaUlHbHpVR1JtUlcxaVpXUmtaV1E5SW5SeWRXVWlJQTBLQ1FrSkNTQWdJRzVoYldVOUlrSmhjMlVpSUhCa1prVnVZMjlrYVc1blBTSkpaR1Z1ZEdsMGVTMUlJaUJ3WkdaR2IyNTBUbUZ0WlQwaVJHVnFZVloxVTJGdWN5NTBkR1lpSUhaQmJHbG5iajBpVFdsa1pHeGxJajROQ2drSkNUd3ZjM1I1YkdVK0RRb0pDUWs4YzNSNWJHVWdZbUZqYTJOdmJHOXlQU0lqTWpZM09UazBJaUJtYjI1MFUybDZaVDBpTWpZaUlHWnZjbVZqYjJ4dmNqMGlJMFpHUmtaR1JpSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWxScGRHeGxJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBpQU5DZ2tKQ1R4emRIbHNaU0JtYjI1MFUybDZaVDBpTVRJaUlHWnZjbVZqYjJ4dmNqMGlJekF3TURBd01DSWdhWE5FWldaaGRXeDBQU0ptWVd4elpTSWdibUZ0WlQwaVVHRm5aU0JvWldGa1pYSWlEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVTlJa0poYzJVaUx6NE5DZ2tKQ1R4emRIbHNaU0JpWVdOclkyOXNiM0k5SWlNek16TXpNek1pSUdadmJuUlRhWHBsUFNJeE1pSWdabTl5WldOdmJHOXlQU0lqUmtaR1JrWkdJaUJvUVd4cFoyNDlJa05sYm5SbGNpSU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYzBSbFptRjFiSFE5SW1aaGJITmxJaUJ0YjJSbFBTSlBjR0Z4ZFdVaUlHNWhiV1U5SWtOdmJIVnRiaUJvWldGa1pYSWlJSE4wZVd4bFBTSkNZWE5sSWk4K0RRb0pDUWs4YzNSNWJHVWdhWE5DYjJ4a1BTSm1ZV3h6WlNJZ2FYTkVaV1poZFd4MFBTSm1ZV3h6WlNJZ2JtRnRaVDBpUkdWMFlXbHNJaUJ6ZEhsc1pUMGlRbUZ6WlNJdlBnMEtJQ0FnSUNBZ0lDQWdJQ0FnUEhOMGVXeGxJR2x6UW05c1pEMGlabUZzYzJVaUlHbHpSR1ZtWVhWc2REMGlabUZzYzJVaUlHNWhiV1U5SWtOdlpHVWlJSE4wZVd4bFBTSkNZWE5sSWlCbWIyNTBVMmw2WlQwaU9TSXZQZzBLQ1FrSlBITjBlV3hsSUdadmJuUlRhWHBsUFNJNUlpQm1iM0psWTI5c2IzSTlJaU13TURBd01EQWlJR2x6UkdWbVlYVnNkRDBpWm1Gc2MyVWlJRzVoYldVOUlsQmhaMlVnWm05dmRHVnlJZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGVXeGxQU0pDWVhObElpOCtEUW9KQ1R3dmFtRnpjR1Z5VkdWdGNHeGhkR1Ur pdf From 78e05b46631a82ae6a86a9d74091910506f1a0d0 Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Wed, 23 Sep 2020 16:16:29 +0200 Subject: [PATCH 6/7] fixing NPE when getting task with noFetch option --- .../midpoint/task/quartzimpl/TaskManagerQuartzImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java index 935451f5cfd..3534b07f4be 100644 --- a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java +++ b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java @@ -1331,7 +1331,7 @@ public TaskQuartzImpl getTask(String oid, Collection taskPrism = getTaskInCluster(oid, options, clusterStatusInformation, result); + PrismObject taskPrism = getTaskFromRemoteNode(oid, options, clusterStatusInformation, result); if (taskPrism == null) { taskPrism = repositoryService.getObject(TaskType.class, oid, options, result); } @@ -1358,9 +1358,13 @@ public TaskQuartzImpl getTask(String oid, Collection getTaskInCluster(String oid, Collection> options, + private PrismObject getTaskFromRemoteNode(String oid, Collection> options, ClusterStatusInformation clusterStatusInformation, OperationResult parentResult) throws SchemaException { + if (clusterStatusInformation == null) { // in case no fetch was used... + return null; + } + NodeType runsAt = clusterStatusInformation.findNodeInfoForTask(oid); if (runsAt == null || isCurrentNode(runsAt.asPrismObject())) { return null; From 673c70a08acaaab5a8d1f8c7cb9202c429a77cf7 Mon Sep 17 00:00:00 2001 From: Richard Richter Date: Wed, 23 Sep 2020 18:56:38 +0200 Subject: [PATCH 7/7] MID-6522 fix: "Document builder factory... initialized log" as DEBUG now --- .../util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java b/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java index ac3e0bf5796..5bfd373e9f5 100644 --- a/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java +++ b/infra/util/src/main/java/com/evolveum/midpoint/util/DOMUtil.java @@ -163,7 +163,7 @@ public class DOMUtil { documentBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); documentBuilderFactory.setXIncludeAware(false); documentBuilderFactory.setExpandEntityReferences(false); - LOGGER.info("Document builder factory for thread {} initialized in {} ms", + LOGGER.debug("Document builder factory for thread {} initialized in {} ms", Thread.currentThread().getName(), System.currentTimeMillis() - ms); return documentBuilderFactory.newDocumentBuilder(); } catch (ParserConfigurationException e) {