This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/3_0_X by this push:
new 21609f06a0 Allow for easier override of supported locales for Console
and Enduser login forms
21609f06a0 is described below
commit 21609f06a01565ff99d07d09b15558e54cc15050
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Fri May 19 10:03:58 2023 +0200
Allow for easier override of supported locales for Console and Enduser
login forms
---
.../syncope/client/ui/commons/BaseLogin.java | 24 ++--
.../syncope/client/ui/commons/BaseSession.java | 12 ++
.../client/console/SyncopeWebApplication.java | 1 -
.../console/panels/SchemaTypeWizardBuilder.java | 150 ++++++++++-----------
.../client/enduser/SyncopeWebApplication.java | 5 -
pom.xml | 2 +-
6 files changed, 97 insertions(+), 97 deletions(-)
diff --git
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseLogin.java
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseLogin.java
index bc0f008d6a..82c7eb3dc8 100644
---
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseLogin.java
+++
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseLogin.java
@@ -63,26 +63,22 @@ public abstract class BaseLogin extends WebPage {
protected static final Logger LOG =
LoggerFactory.getLogger(BaseLogin.class);
- public static final List<Locale> SUPPORTED_LOCALES = List.of(
- Locale.ENGLISH, Locale.CANADA_FRENCH, Locale.ITALIAN,
Locale.JAPANESE, new Locale("pt", "BR"),
- new Locale("ru"));
-
@SpringBean
- private DomainOps domainOps;
+ protected DomainOps domainOps;
protected final NotificationPanel notificationPanel;
protected final StatelessForm<Void> form;
- private final TextField<String> usernameField;
+ protected final TextField<String> usernameField;
- private final TextField<String> passwordField;
+ protected final TextField<String> passwordField;
protected String notificationMessage;
protected String notificationLevel;
- private final LoadableDetachableModel<List<String>> domains = new
LoadableDetachableModel<>() {
+ protected final LoadableDetachableModel<List<String>> domains = new
LoadableDetachableModel<>() {
private static final long serialVersionUID = 4659376149825914247L;
@@ -232,11 +228,11 @@ public abstract class BaseLogin extends WebPage {
/**
* Inner class which implements (custom) Locale DropDownChoice component.
*/
- private class LocaleDropDown extends DropDownChoice<Locale> {
+ protected class LocaleDropDown extends DropDownChoice<Locale> {
private static final long serialVersionUID = 2349382679992357202L;
- private class LocaleRenderer extends ChoiceRenderer<Locale> {
+ protected class LocaleRenderer extends ChoiceRenderer<Locale> {
private static final long serialVersionUID = -3657529581555164741L;
@@ -246,8 +242,8 @@ public abstract class BaseLogin extends WebPage {
}
}
- LocaleDropDown(final String id) {
- super(id, SUPPORTED_LOCALES);
+ protected LocaleDropDown(final String id) {
+ super(id, getBaseSession().getSupportedLocales());
setChoiceRenderer(new LocaleRenderer());
setModel(new IModel<>() {
@@ -277,7 +273,9 @@ public abstract class BaseLogin extends WebPage {
getHeader(HttpHeaders.ACCEPT_LANGUAGE);
if (StringUtils.isNotBlank(acceptLanguage)) {
try {
- filtered =
Locale.filter(Locale.LanguageRange.parse(acceptLanguage), SUPPORTED_LOCALES);
+ filtered = Locale.filter(
+ Locale.LanguageRange.parse(acceptLanguage),
+ getBaseSession().getSupportedLocales());
} catch (Exception e) {
LOG.debug("Could not parse {} HTTP header value '{}'",
HttpHeaders.ACCEPT_LANGUAGE, acceptLanguage, e);
diff --git
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseSession.java
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseSession.java
index acd67b4b66..6790183fb8 100644
---
a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseSession.java
+++
b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseSession.java
@@ -18,6 +18,8 @@
*/
package org.apache.syncope.client.ui.commons;
+import java.util.List;
+import java.util.Locale;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import org.apache.syncope.client.lib.SyncopeClient;
@@ -76,4 +78,14 @@ public interface BaseSession {
void onException(Exception e);
<T> Future<T> execute(Callable<T> command);
+
+ default List<Locale> getSupportedLocales() {
+ return List.of(
+ Locale.ENGLISH,
+ Locale.CANADA_FRENCH,
+ Locale.ITALIAN,
+ Locale.JAPANESE,
+ new Locale("pt", "BR"),
+ new Locale("ru"));
+ }
}
diff --git
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java
index a5de408b57..b6cf37835d 100644
---
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java
+++
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.client.console;
-
import
com.giffing.wicket.spring.boot.starter.app.WicketBootSecuredWebApplication;
import de.agilecoders.wicket.core.Bootstrap;
import de.agilecoders.wicket.core.settings.BootstrapSettings;
diff --git
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java
index 292ccffbd9..0880085295 100644
---
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java
+++
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java
@@ -27,12 +27,12 @@ import java.util.stream.Collectors;
import org.apache.commons.lang3.LocaleUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.MutablePair;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.console.SyncopeWebApplication;
import org.apache.syncope.client.console.rest.SchemaRestClient;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
import org.apache.syncope.client.console.wizards.BaseAjaxWizardBuilder;
-import org.apache.syncope.client.ui.commons.BaseLogin;
import
org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
import
org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
import org.apache.syncope.common.lib.to.DerSchemaTO;
@@ -122,8 +122,7 @@ public class SchemaTypeWizardBuilder extends
BaseAjaxWizardBuilder<SchemaTO> {
default:
detailsPanel = new PlainSchemaDetails("details",
(PlainSchemaTO) modelObject);
}
- detailsPanel.setOutputMarkupId(true);
- add(detailsPanel);
+ add(detailsPanel.setOutputMarkupId(true));
}
}
@@ -139,82 +138,80 @@ public class SchemaTypeWizardBuilder extends
BaseAjaxWizardBuilder<SchemaTO> {
modelObject.getLabels().forEach(
(locale, display) ->
translations.getObject().add(MutablePair.of(locale, display)));
- ListView<MutablePair<Locale, String>> labels =
- new ListView<>("labels", translations) {
+ ListView<MutablePair<Locale, String>> labels = new
ListView<>("labels", translations) {
- private static final long serialVersionUID =
-8746795666847966508L;
+ private static final long serialVersionUID =
-8746795666847966508L;
- @Override
- protected void populateItem(final
ListItem<MutablePair<Locale, String>> item) {
- MutablePair<Locale, String> entry =
item.getModelObject();
-
- AjaxTextFieldPanel locale = new
AjaxTextFieldPanel("locale", "locale", new Model<>(), true);
- locale.getField().setModel(new IModel<>() {
-
- private static final long serialVersionUID =
1500045101360533133L;
-
- @Override
- public String getObject() {
- return entry.getLeft() == null ? null :
entry.getLeft().toString();
- }
-
- @Override
- public void setObject(final String object) {
- entry.setLeft(LocaleUtils.toLocale(object));
- }
- });
- locale.setRequired(true).hideLabel();
- locale.setChoices(BaseLogin.SUPPORTED_LOCALES.stream().
+ @Override
+ protected void populateItem(final ListItem<MutablePair<Locale,
String>> item) {
+ MutablePair<Locale, String> entry = item.getModelObject();
+
+ AjaxTextFieldPanel locale = new
AjaxTextFieldPanel("locale", "locale", new Model<>(), true);
+ locale.getField().setModel(new IModel<>() {
+
+ private static final long serialVersionUID =
1500045101360533133L;
+
+ @Override
+ public String getObject() {
+ return entry.getLeft() == null ? null :
entry.getLeft().toString();
+ }
+
+ @Override
+ public void setObject(final String object) {
+ entry.setLeft(LocaleUtils.toLocale(object));
+ }
+ });
+ locale.setRequired(true).hideLabel();
+
locale.setChoices(SyncopeConsoleSession.get().getSupportedLocales().stream().
map(Objects::toString).collect(Collectors.toList()));
- locale.addValidator(validatable -> {
- try {
- LocaleUtils.toLocale(validatable.getValue());
- } catch (Exception e) {
- LOG.error("Invalid Locale: {}",
validatable.getValue(), e);
- validatable.error(new ValidationError("Invalid
Locale: " + validatable.getValue()));
-
-
RequestCycle.get().find(AjaxRequestTarget.class).
+ locale.addValidator(validatable -> {
+ try {
+ LocaleUtils.toLocale(validatable.getValue());
+ } catch (Exception e) {
+ LOG.error("Invalid Locale: {}",
validatable.getValue(), e);
+ validatable.error(new ValidationError("Invalid
Locale: " + validatable.getValue()));
+
+ RequestCycle.get().find(AjaxRequestTarget.class).
ifPresent(target ->
target.add(Labels.this));
- }
- });
- item.add(locale);
-
- AjaxTextFieldPanel display = new
AjaxTextFieldPanel("display", "display", new Model<>());
- display.getField().setModel(new IModel<>() {
-
- private static final long serialVersionUID =
1500045101360533133L;
-
- @Override
- public String getObject() {
- return entry.getRight();
- }
-
- @Override
- public void setObject(final String object) {
- entry.setRight(object);
- }
- });
- display.setRequired(true).hideLabel();
- item.add(display);
-
- ActionsPanel<Serializable> actions = new
ActionsPanel<>("toRemove", null);
- actions.add(new ActionLink<>() {
-
- private static final long serialVersionUID =
-3722207913631435501L;
-
- @Override
- public void onClick(final AjaxRequestTarget
target, final Serializable ignore) {
-
translations.getObject().remove(item.getIndex());
-
- item.getParent().removeAll();
- target.add(Labels.this);
- }
- }, ActionLink.ActionType.DELETE,
IdRepoEntitlement.SCHEMA_UPDATE, true).hideLabel();
- item.add(actions);
- }
- };
- labels.setReuseItems(true);
- add(labels);
+ }
+ });
+ item.add(locale);
+
+ AjaxTextFieldPanel display = new
AjaxTextFieldPanel("display", "display", new Model<>());
+ display.getField().setModel(new IModel<>() {
+
+ private static final long serialVersionUID =
1500045101360533133L;
+
+ @Override
+ public String getObject() {
+ return entry.getRight();
+ }
+
+ @Override
+ public void setObject(final String object) {
+ entry.setRight(object);
+ }
+ });
+ display.setRequired(true).hideLabel();
+ item.add(display);
+
+ ActionsPanel<Serializable> actions = new
ActionsPanel<>("toRemove", null);
+ actions.add(new ActionLink<>() {
+
+ private static final long serialVersionUID =
-3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target,
final Serializable ignore) {
+ translations.getObject().remove(item.getIndex());
+
+ item.getParent().removeAll();
+ target.add(Labels.this);
+ }
+ }, ActionLink.ActionType.DELETE,
IdRepoEntitlement.SCHEMA_UPDATE, true).hideLabel();
+ item.add(actions);
+ }
+ };
+ add(labels.setReuseItems(true));
IndicatingAjaxButton addLabel = new
IndicatingAjaxButton("addLabel") {
@@ -226,8 +223,7 @@ public class SchemaTypeWizardBuilder extends
BaseAjaxWizardBuilder<SchemaTO> {
target.add(Labels.this);
}
};
- addLabel.setDefaultFormProcessing(false);
- add(addLabel);
+ add(addLabel.setDefaultFormProcessing(false));
}
}
}
diff --git
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java
index 191102a92d..0647284544 100644
---
a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java
+++
b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java
@@ -26,8 +26,6 @@ import de.agilecoders.wicket.core.settings.BootstrapSettings;
import de.agilecoders.wicket.core.settings.IBootstrapSettings;
import de.agilecoders.wicket.core.settings.SingleThemeProvider;
import java.io.InputStream;
-import java.util.List;
-import java.util.Locale;
import java.util.Map;
import
org.apache.syncope.client.enduser.init.ClassPathScanImplementationLookup;
import org.apache.syncope.client.enduser.layout.UserFormLayoutInfo;
@@ -73,9 +71,6 @@ public class SyncopeWebApplication extends
WicketBootSecuredWebApplication {
protected static final Logger LOG =
LoggerFactory.getLogger(SyncopeWebApplication.class);
- public static final List<Locale> SUPPORTED_LOCALES = List.of(
- Locale.ENGLISH, Locale.ITALIAN, new Locale("pt", "BR"), new
Locale("ru"), Locale.JAPANESE);
-
protected static final JsonMapper MAPPER =
JsonMapper.builder().findAndAddModules().build();
public static SyncopeWebApplication get() {
diff --git a/pom.xml b/pom.xml
index 8345a98658..6e6f24b0ea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1650,7 +1650,7 @@ under the License.
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
- <version>1.10.6</version>
+ <version>1.10.7</version>
<configuration>
<container>
<log>${project.build.directory}/log/cargo.log</log>