You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2022/06/08 04:59:34 UTC
[syncope] branch master updated: Changes to simplify Console customizations
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new fd2646ff0c Changes to simplify Console customizations
fd2646ff0c is described below
commit fd2646ff0c67fd4c2f06db9c171c275dcc19cdd4
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Tue Jun 7 16:49:36 2022 +0200
Changes to simplify Console customizations
---
.../commons/layout/AbstractAnyFormBaseLayout.java | 4 +--
.../commons/markup/html/form/AjaxPalettePanel.java | 36 ++++++++++----------
.../console/wizards/any/AnyObjectDetails.java | 6 ++--
.../wizards/any/AnyObjectWizardBuilder.java | 7 ++--
.../client/console/wizards/any/GroupDetails.java | 6 ++--
.../console/wizards/any/GroupWizardBuilder.java | 7 ++--
.../syncope/client/console/wizards/any/Groups.java | 39 +++++++++++-----------
.../syncope/client/enduser/panels/any/Groups.java | 12 +++----
.../apache/syncope/core/logic/SyncopeLogic.java | 9 +----
9 files changed, 60 insertions(+), 66 deletions(-)
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormBaseLayout.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormBaseLayout.java
index cdf465ecf5..ce8d6b03f8 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormBaseLayout.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormBaseLayout.java
@@ -26,7 +26,7 @@ public abstract class AbstractAnyFormBaseLayout<A extends AnyTO, F extends AnyFo
private static final long serialVersionUID = -6061683026789976508L;
- private Class<F> formClass;
+ private Class<? extends F> formClass;
private boolean auxClasses = true;
@@ -46,7 +46,7 @@ public abstract class AbstractAnyFormBaseLayout<A extends AnyTO, F extends AnyFo
return formClass == null ? getDefaultFormClass() : formClass;
}
- public void setFormClass(final Class<F> formClass) {
+ public void setFormClass(final Class<? extends F> formClass) {
this.formClass = formClass;
}
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxPalettePanel.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxPalettePanel.java
index 8806ce2c61..1e27e6cad5 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxPalettePanel.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxPalettePanel.java
@@ -49,6 +49,7 @@ import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.util.string.Strings;
+import org.danekja.java.util.function.serializable.SerializableFunction;
public class AjaxPalettePanel<T extends Serializable> extends AbstractFieldPanel<List<T>> {
@@ -130,7 +131,7 @@ public class AjaxPalettePanel<T extends Serializable> extends AbstractFieldPanel
protected Palette<T> buildPalette(final IModel<List<T>> model, final Builder<T> builder) {
return new NonI18nPalette<>(
- "paletteField", model, choicesModel, builder.renderer, 8, builder.allowOrder, builder.allowMoveAll) {
+ "paletteField", model, choicesModel, builder.renderer, 8, builder.allowOrder, builder.allowMoveAll) {
private static final long serialVersionUID = -3074655279011678437L;
@@ -173,7 +174,7 @@ public class AjaxPalettePanel<T extends Serializable> extends AbstractFieldPanel
// reduce number of method calls by building a lookup table
Map<T, String> idForChoice = choices.stream().collect(Collectors.toMap(
- Function.identity(), choice -> renderer.getIdValue(choice, 0), (c1, c2) -> c1));
+ Function.identity(), choice -> renderer.getIdValue(choice, 0), (c1, c2) -> c1));
List<T> selected = new ArrayList<>(choices.size());
builder.idExtractor.apply(getValue()).forEach(id -> {
@@ -205,8 +206,8 @@ public class AjaxPalettePanel<T extends Serializable> extends AbstractFieldPanel
@Override
protected Map<String, String> getAdditionalAttributes(final Object choice) {
return builder.additionalAttributes == null
- ? super.getAdditionalAttributes(choice)
- : builder.additionalAttributes.apply(choice);
+ ? super.getAdditionalAttributes(choice)
+ : builder.additionalAttributes.apply(choice);
}
};
}
@@ -267,12 +268,12 @@ public class AjaxPalettePanel<T extends Serializable> extends AbstractFieldPanel
protected boolean warnIfEmptyFilter = true;
- protected Function<String, Stream<String>> idExtractor =
- (Function<String, Stream<String>> & Serializable) input -> Stream.of(Strings.split(input, ','));
+ protected SerializableFunction<String, Stream<String>> idExtractor =
+ input -> Stream.of(Strings.split(input, ','));
- protected Function<AjaxRequestTarget, Boolean> event;
+ protected SerializableFunction<AjaxRequestTarget, Boolean> event;
- protected Function<Object, Map<String, String>> additionalAttributes;
+ protected SerializableFunction<Object, Map<String, String>> additionalAttributes;
public Builder<T> setName(final String name) {
this.name = name;
@@ -320,17 +321,19 @@ public class AjaxPalettePanel<T extends Serializable> extends AbstractFieldPanel
return this;
}
- public Builder<T> idExtractor(final Function<String, Stream<String>> idExtractor) {
+ public Builder<T> idExtractor(final SerializableFunction<String, Stream<String>> idExtractor) {
this.idExtractor = idExtractor;
return this;
}
- public Builder<T> event(final Function<AjaxRequestTarget, Boolean> event) {
+ public Builder<T> event(final SerializableFunction<AjaxRequestTarget, Boolean> event) {
this.event = event;
return this;
}
- public Builder<T> additionalAttributes(final Function<Object, Map<String, String>> additionalAttributes) {
+ public Builder<T> additionalAttributes(
+ final SerializableFunction<Object, Map<String, String>> additionalAttributes) {
+
this.additionalAttributes = additionalAttributes;
return this;
}
@@ -404,14 +407,9 @@ public class AjaxPalettePanel<T extends Serializable> extends AbstractFieldPanel
Pattern pattern = Pattern.compile(filter, Pattern.CASE_INSENSITIVE);
- List<T> filtered = new ArrayList<>(choices.size());
- choices.forEach(choice -> {
- if (pattern.matcher(idForChoice.get(choice)).matches()) {
- filtered.add(choice);
- }
- });
-
- return filtered;
+ return choices.stream().
+ filter(choice -> pattern.matcher(idForChoice.get(choice)).matches()).
+ collect(Collectors.toList());
}
}
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java
index 0f2458f79b..e5de64e735 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java
@@ -29,6 +29,8 @@ public class AnyObjectDetails extends Details<AnyObjectTO> {
private static final long serialVersionUID = 855618618337931784L;
+ protected final AjaxTextFieldPanel name;
+
public AnyObjectDetails(
final AnyWrapper<AnyObjectTO> wrapper,
final boolean templateMode,
@@ -37,7 +39,7 @@ public class AnyObjectDetails extends Details<AnyObjectTO> {
super(wrapper, templateMode, includeStatusPanel, pageRef);
- AjaxTextFieldPanel name = new AjaxTextFieldPanel(
+ name = new AjaxTextFieldPanel(
Constants.NAME_FIELD_NAME, Constants.NAME_FIELD_NAME,
new PropertyModel<>(wrapper.getInnerObject(), Constants.NAME_FIELD_NAME), false);
if (templateMode) {
@@ -45,6 +47,6 @@ public class AnyObjectDetails extends Details<AnyObjectTO> {
} else {
name.addRequiredLabel();
}
- this.add(name);
+ add(name);
}
}
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
index 30ad682f07..30830f9556 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectWizardBuilder.java
@@ -46,8 +46,8 @@ public class AnyObjectWizardBuilder extends AnyWizardBuilder<AnyObjectTO> implem
final AnyObjectFormLayoutInfo formLayoutInfo,
final PageReference pageRef) {
- super(Optional.ofNullable(anyObjectTO).map(AnyObjectWrapper::new)
- .orElse(null), anyTypeClasses, formLayoutInfo, pageRef);
+ super(Optional.ofNullable(anyObjectTO).map(AnyObjectWrapper::new).
+ orElse(null), anyTypeClasses, formLayoutInfo, pageRef);
}
/**
@@ -100,6 +100,7 @@ public class AnyObjectWizardBuilder extends AnyWizardBuilder<AnyObjectTO> implem
return Optional.of(new AnyObjectDetails(
modelObject,
mode == AjaxWizard.Mode.TEMPLATE,
- modelObject.getInnerObject().getKey() != null, pageRef));
+ modelObject.getInnerObject().getKey() != null,
+ pageRef));
}
}
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java
index 3ae8889acc..52b5166677 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupDetails.java
@@ -28,6 +28,8 @@ public class GroupDetails extends Details<GroupTO> {
private static final long serialVersionUID = 855618618337931784L;
+ protected final AjaxTextFieldPanel name;
+
public GroupDetails(
final GroupWrapper wrapper,
final boolean templateMode,
@@ -36,7 +38,7 @@ public class GroupDetails extends Details<GroupTO> {
super(wrapper, templateMode, includeStatusPanel, pageRef);
- AjaxTextFieldPanel name = new AjaxTextFieldPanel(
+ name = new AjaxTextFieldPanel(
Constants.NAME_FIELD_NAME, Constants.NAME_FIELD_NAME,
new PropertyModel<>(wrapper.getInnerObject(), Constants.NAME_FIELD_NAME), false);
if (templateMode) {
@@ -44,6 +46,6 @@ public class GroupDetails extends Details<GroupTO> {
} else {
name.addRequiredLabel();
}
- this.add(name);
+ add(name);
}
}
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java
index e6a9da90a6..2b87ac8de3 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWizardBuilder.java
@@ -49,8 +49,8 @@ public class GroupWizardBuilder extends AnyWizardBuilder<GroupTO> implements Gro
final GroupFormLayoutInfo formLayoutInfo,
final PageReference pageRef) {
- super(Optional.ofNullable(groupTO).map(GroupWrapper::new)
- .orElse(null), anyTypeClasses, formLayoutInfo, pageRef);
+ super(Optional.ofNullable(groupTO).map(GroupWrapper::new).
+ orElse(null), anyTypeClasses, formLayoutInfo, pageRef);
}
/**
@@ -131,6 +131,7 @@ public class GroupWizardBuilder extends AnyWizardBuilder<GroupTO> implements Gro
return Optional.of(new GroupDetails(
GroupWrapper.class.cast(modelObject),
mode == AjaxWizard.Mode.TEMPLATE,
- modelObject.getInnerObject().getKey() != null, pageRef));
+ modelObject.getInnerObject().getKey() != null,
+ pageRef));
}
}
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java
index b4d88faf04..852d606265 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java
@@ -68,6 +68,8 @@ public class Groups extends AbstractGroups {
protected final ConsoleGroupsModel groupsModel;
+ protected AjaxPalettePanel.Builder<MembershipTO> groups;
+
public <T extends AnyTO> Groups(final AnyWrapper<T> modelObject, final boolean templateMode) {
super(modelObject);
this.templateMode = templateMode;
@@ -110,31 +112,30 @@ public class Groups extends AbstractGroups {
dyngroupsContainer.add(new Label("dyngroups").setVisible(false));
dyngroupsContainer.setVisible(false);
} else {
- AjaxPalettePanel.Builder<MembershipTO> builder = new AjaxPalettePanel.Builder<MembershipTO>().
- setRenderer(new IChoiceRenderer<>() {
+ groups = new AjaxPalettePanel.Builder<MembershipTO>().setRenderer(new IChoiceRenderer<>() {
- private static final long serialVersionUID = -3086661086073628855L;
+ private static final long serialVersionUID = -3086661086073628855L;
- @Override
- public Object getDisplayValue(final MembershipTO object) {
- return object.getGroupName();
- }
+ @Override
+ public Object getDisplayValue(final MembershipTO object) {
+ return object.getGroupName();
+ }
- @Override
- public String getIdValue(final MembershipTO object, final int index) {
- return object.getGroupName();
- }
+ @Override
+ public String getIdValue(final MembershipTO object, final int index) {
+ return object.getGroupName();
+ }
- @Override
- public MembershipTO getObject(
- final String id, final IModel<? extends List<? extends MembershipTO>> choices) {
+ @Override
+ public MembershipTO getObject(
+ final String id, final IModel<? extends List<? extends MembershipTO>> choices) {
- return choices.getObject().stream().
- filter(object -> id.equalsIgnoreCase(object.getGroupName())).findAny().orElse(null);
- }
- });
+ return choices.getObject().stream().
+ filter(object -> id.equalsIgnoreCase(object.getGroupName())).findAny().orElse(null);
+ }
+ });
- groupsContainer.add(builder.setAllowOrder(true).withFilter("*").build("groups", new ListModel<>() {
+ groupsContainer.add(groups.setAllowOrder(true).withFilter("*").build("groups", new ListModel<>() {
private static final long serialVersionUID = -2583290457773357445L;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java
index e70468f52b..3c8fbca2de 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java
@@ -29,9 +29,7 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.util.ListModel;
-import java.io.Serializable;
import java.util.List;
-import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.commons.collections4.ListUtils;
import org.apache.syncope.client.ui.commons.ajax.markup.html.LabelInfo;
@@ -43,6 +41,7 @@ import org.apache.syncope.common.lib.to.MembershipTO;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.Panel;
+import org.danekja.java.util.function.serializable.SerializableFunction;
public class Groups extends Panel {
@@ -50,7 +49,7 @@ public class Groups extends Panel {
protected static final int MAX_GROUP_LIST_CARDINALITY = 30;
- private final EnduserGroupsModel groupsModel;
+ protected final EnduserGroupsModel groupsModel;
protected final AnyTO anyTO;
@@ -94,8 +93,8 @@ public class Groups extends Panel {
addDynamicRealmsContainer();
}
- private Function<AjaxRequestTarget, Boolean> getEventFunction() {
- return (Function<AjaxRequestTarget, Boolean> & Serializable) (target) -> {
+ protected SerializableFunction<AjaxRequestTarget, Boolean> getEventFunction() {
+ return target -> {
send(Groups.this.getPage(), Broadcast.BREADTH,
new AjaxPalettePanel.UpdateActionEvent((UserTO) anyTO, target));
return true;
@@ -231,7 +230,4 @@ public class Groups extends Panel {
}
}
}
-
- public interface SerializableFunction extends Function<AjaxRequestTarget, Boolean>, Serializable {
- }
}
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
index 167840cadf..7aaea2ecca 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
@@ -130,14 +130,7 @@ public class SyncopeLogic extends AbstractLogic<EntityTO> {
if (StringUtils.isNotBlank(term)) {
AnyCond termCond = new AnyCond(AttrCond.Type.ILIKE);
termCond.setSchema("name");
-
- String termSearchableValue = (term.startsWith("*") && !term.endsWith("*"))
- ? term + '%'
- : (!term.startsWith("*") && term.endsWith("*"))
- ? '%' + term
- : (term.startsWith("*") && term.endsWith("*")
- ? term : '%' + term + '%');
- termCond.setExpression(termSearchableValue);
+ termCond.setExpression(term.replace("*", "%"));
searchCond = SearchCond.getAnd(
SearchCond.getLeaf(assignableCond),