From 47bc4e6e27b22cb70bb6956a5fc8a047d5936912 Mon Sep 17 00:00:00 2001 From: Erik Suta Date: Thu, 2 Oct 2014 14:23:36 +0200 Subject: [PATCH] Resource Wizard bugFix - Synchronization Editor - fix for correlation filterClause serialization and deserialization --- .../component/input/SearchFilterPanel.html | 2 +- .../input/dto/SearchFilterTypeDto.java | 13 ++++------ .../ns/_public/query_3/SearchFilterType.java | 25 +++++++++++++++++++ 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/SearchFilterPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/SearchFilterPanel.html index 3df821c4095..6fbfa9a6b01 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/SearchFilterPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/SearchFilterPanel.html @@ -42,7 +42,7 @@
- +
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/dto/SearchFilterTypeDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/dto/SearchFilterTypeDto.java index 7ef5804debc..cc78730dfb8 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/dto/SearchFilterTypeDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/dto/SearchFilterTypeDto.java @@ -56,13 +56,12 @@ public SearchFilterTypeDto(SearchFilterType filter, PrismContext prismContext){ } private String loadFilterClause(PrismContext prismContext){ - MapXNode clause = filterObject.getFilterClauseXNode(); String fClause; try { - //TODO - fix the problem with RootElement - RootXNode rootClause = new RootXNode(new QName("fixMe"), clause); - fClause = prismContext.serializeXNodeToString(rootClause, PrismContext.LANG_XML); + RootXNode clause = filterObject.getFilterClauseAsRootXNode(); + + fClause = prismContext.serializeXNodeToString(clause, PrismContext.LANG_XML); } catch (SchemaException e){ LoggingUtils.logException(LOGGER, "Could not load filterClause from SearchFilterType object.", e); @@ -84,11 +83,9 @@ public void updateFilterClause(PrismContext context) throws SchemaException{ LOGGER.trace("Filter Clause to serialize: " + filterClause); } - XNode filterClauseNode = context.parseToXNode(filterClause, PrismContext.LANG_XML); + RootXNode filterClauseNode = (RootXNode) context.parseToXNode(filterClause, PrismContext.LANG_XML); - MapXNode newClause = new MapXNode(); - newClause.setParent(filterClauseNode); - filterObject.setFilterClauseXNode(newClause); + filterObject.setFilterClauseXNode(filterClauseNode); } } diff --git a/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/query_3/SearchFilterType.java b/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/query_3/SearchFilterType.java index 51a3cdb91fc..7846eae9180 100644 --- a/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/query_3/SearchFilterType.java +++ b/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/query_3/SearchFilterType.java @@ -46,6 +46,7 @@ import com.evolveum.midpoint.prism.util.PrismUtil; import com.evolveum.midpoint.prism.xnode.MapXNode; import com.evolveum.midpoint.prism.xnode.PrimitiveXNode; +import com.evolveum.midpoint.prism.xnode.RootXNode; import com.evolveum.midpoint.prism.xnode.XNode; import com.evolveum.midpoint.util.DOMUtil; import com.evolveum.midpoint.util.DebugDumpable; @@ -126,6 +127,15 @@ public void setFilterClauseXNode(MapXNode filterClauseXNode) { this.filterClauseXNode = filterClauseXNode; } + public void setFilterClauseXNode(RootXNode filterClauseNode) { + if (filterClauseNode == null) { + this.filterClauseXNode = null; + } else { + this.filterClauseXNode = new MapXNode(); + this.filterClauseXNode.put(filterClauseNode.getRootElementName(), filterClauseNode.getSubnode()); + } + } + @Deprecated // use the version without prismContext instead public MapXNode getFilterClauseXNode(PrismContext prismContext) throws SchemaException { return getFilterClauseXNode(); @@ -139,6 +149,20 @@ public MapXNode getFilterClauseXNode() { } } + public RootXNode getFilterClauseAsRootXNode() throws SchemaException { + MapXNode clause = getFilterClauseXNode(); + if (clause == null) { + return null; + } + + Entry singleEntry = clause.getSingleSubEntry("getFilterClauseAsRootXNode"); + if (singleEntry == null) { + return null; + } + + return new RootXNode(singleEntry.getKey(), singleEntry.getValue()); + } + public Element getFilterClauseAsElement() throws SchemaException { if (filterClauseXNode == null) { return null; @@ -672,4 +696,5 @@ public String debugDump(int indent) { } return sb.toString(); } + }