Better help message for JEXL mapping transformers, remarking that only 'value' shall be used
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/251c267a Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/251c267a Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/251c267a Branch: refs/heads/2_1_X Commit: 251c267a7ef5b6b7b9c9336f1303642375525b25 Parents: d59627f Author: Francesco Chicchiriccò <[email protected]> Authored: Tue Jul 10 09:47:26 2018 +0200 Committer: Francesco Chicchiriccò <[email protected]> Committed: Tue Jul 10 09:47:43 2018 +0200 ---------------------------------------------------------------------- .../client/console/commons/Constants.java | 26 ++++++++++++++------ .../markup/html/form/AjaxTextFieldPanel.java | 8 +++++- .../resources/JEXLTransformersTogglePanel.java | 4 +-- .../java/data/JEXLItemTransformerImpl.java | 2 -- 4 files changed, 28 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/251c267a/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java index 01ea08a..2fceb73 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java @@ -200,15 +200,27 @@ public final class Constants { public static final String GUARDED_BYTE_ARRAY = "org.identityconnectors.common.security.GuardedByteArray"; public static Component getJEXLPopover(final Component caller, final TooltipConfig.Placement placement) { + return getJEXLPopover(caller, placement, caller.getString("jexl_ex1"), caller.getString("jexl_ex2")); + } + + public static Component getJEXLPopover( + final Component caller, + final TooltipConfig.Placement placement, + final String... jexlExamples) { + + StringBuilder body = new StringBuilder(caller.getString("jexl_info")). + append("<ul>"); + for (String jexlExample : jexlExamples) { + body.append("<li>").append(jexlExample).append("</li>"); + } + body.append("</ul>"). + append("<a href='https://commons.apache.org/proper/commons-jexl/reference/' target='_blank'>"). + append(caller.getString("jexl_syntax_url")). + append("</a>"); + return new Label("jexlInfo", Model.of()).add(new PopoverBehavior( Model.<String>of(), - Model.of(caller.getString("jexl_info") - + "<ul>" - + "<li>" + caller.getString("jexl_ex1") + "</li>" - + "<li>" + caller.getString("jexl_ex2") + "</li>" - + "</ul>" - + "<a href='https://commons.apache.org/proper/commons-jexl/reference/index.html' " - + "target='_blank'>" + caller.getString("jexl_syntax_url") + "</a>"), + Model.of(body.toString()), new PopoverConfig().withHtml(true).withPlacement(placement)) { private static final long serialVersionUID = -7867802555691605021L; http://git-wip-us.apache.org/repos/asf/syncope/blob/251c267a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.java index 8d0c665..4396a7e 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxTextFieldPanel.java @@ -40,7 +40,7 @@ public class AjaxTextFieldPanel extends FieldPanel<String> implements Cloneable private static final long serialVersionUID = 238940918106696068L; - private final Component questionMarkJexlHelp; + private Component questionMarkJexlHelp; private List<String> choices = Collections.emptyList(); @@ -113,6 +113,12 @@ public class AjaxTextFieldPanel extends FieldPanel<String> implements Cloneable return this; } + public FieldPanel<String> enableJexlHelp(final String... jexlExamples) { + questionMarkJexlHelp = Constants.getJEXLPopover(this, TooltipConfig.Placement.bottom, jexlExamples); + addOrReplace(questionMarkJexlHelp.setVisible(true)); + return this; + } + protected Iterator<String> getChoices(final String input) { Pattern pattern = Pattern.compile(".*" + Pattern.quote(input) + ".*", Pattern.CASE_INSENSITIVE); return choices.stream().filter(choice -> pattern.matcher(choice).matches()).iterator(); http://git-wip-us.apache.org/repos/asf/syncope/blob/251c267a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/JEXLTransformersTogglePanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/JEXLTransformersTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/JEXLTransformersTogglePanel.java index fdbab71..f375a68 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/JEXLTransformersTogglePanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/JEXLTransformersTogglePanel.java @@ -49,13 +49,13 @@ public class JEXLTransformersTogglePanel extends TogglePanel<Serializable> { "propagationJEXLTransformer", "Propagation", Model.of("")); - form.add(propagationJEXLTransformer.enableJexlHelp()); + form.add(propagationJEXLTransformer.enableJexlHelp("value.toLowecase()", "'PREFIX' + value")); pullJEXLTransformer = new AjaxTextFieldPanel( "pullJEXLTransformer", "Pull", Model.of("")); - form.add(pullJEXLTransformer.enableJexlHelp()); + form.add(pullJEXLTransformer.enableJexlHelp("value.toLowecase()", "'PREFIX' + value")); form.add(new AjaxSubmitLink("submit", form) { http://git-wip-us.apache.org/repos/asf/syncope/blob/251c267a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java index 67c3439..4ed7477 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java @@ -94,7 +94,6 @@ public class JEXLItemTransformerImpl implements JEXLItemTransformer { JexlUtils.addAttrTOsToContext(((AnyTO) entityTO).getVirAttrs(), jexlContext); } else if (entityTO instanceof RealmTO) { JexlUtils.addFieldsToContext((RealmTO) entityTO, jexlContext); - newValues.add(JexlUtils.evaluate(pullJEXL, jexlContext)); } newValues.add(JexlUtils.evaluate(pullJEXL, jexlContext)); @@ -105,5 +104,4 @@ public class JEXLItemTransformerImpl implements JEXLItemTransformer { return JEXLItemTransformer.super.beforePull(item, entityTO, values); } - }
