public String translate(SingleLocalizableMessage msg, Locale locale) { String translated = translate(msg.getKey(), msg.getArgs(), locale); if (StringUtils.isNotEmpty(translated)) { return translated; } if (msg.getFallbackLocalizableMessage() != null) { translated = translate(msg.getFallbackLocalizableMessage(), locale); if (StringUtils.isNotEmpty(translated)) { return translated; } } return msg.getFallbackMessage(); }
public static SingleLocalizableMessage buildFallbackMessage(String fallbackMessage) { return new SingleLocalizableMessage(null, null, fallbackMessage); }
private boolean isNonTrivial(LocalizableMessage msg) { if (msg == null) { return false; } if (!(msg instanceof SingleLocalizableMessage)) { return true; } SingleLocalizableMessage single = (SingleLocalizableMessage) msg; if (single.getKey() != null || single.getFallbackLocalizableMessage() != null) { return true; } // a value more complex than "; " or ", " or ". " or "[" or "]" or something like that return single.getFallbackMessage() != null && single.getFallbackMessage().length() > 2; } }
protected boolean useDefaultProcessName(LocalizableMessage processName) { return LocalizableMessage.isEmpty(processName) || processName instanceof SingleLocalizableMessage && USE_DEFAULT_NAME_MARKER.equals(((SingleLocalizableMessage) processName).getKey()); } //endregion
@NotNull private static SingleLocalizableMessageType createLocalizableMessageType(@NotNull SingleLocalizableMessage message, Function<LocalizableMessage, String> resolveKeys) { SingleLocalizableMessageType rv = new SingleLocalizableMessageType(); rv.setKey(message.getKey()); if (message.getArgs() != null) { for (Object argument : message.getArgs()) { LocalizableMessageArgumentType messageArgument; if (argument instanceof LocalizableMessage) { messageArgument = new LocalizableMessageArgumentType() .localizable(createLocalizableMessageType(((LocalizableMessage) argument), resolveKeys)); } else { messageArgument = new LocalizableMessageArgumentType().value(argument != null ? argument.toString() : null); } rv.getArgument().add(messageArgument); } } if (message.getFallbackLocalizableMessage() != null) { rv.setFallbackLocalizableMessage(createLocalizableMessageType(message.getFallbackLocalizableMessage(), resolveKeys)); } if (StringUtils.isBlank(message.getFallbackMessage()) && resolveKeys != null) { rv.setFallbackMessage(resolveKeys.apply(message)); } else { rv.setFallbackMessage(message.getFallbackMessage()); } return rv; }
public static SingleLocalizableMessage buildKey(String key) { return new SingleLocalizableMessage(key, null, (SingleLocalizableMessage) null); }
public SingleLocalizableMessage build() { if (fallbackMessage != null) { if (fallbackLocalizableMessage != null) { throw new IllegalStateException("fallbackMessage and fallbackLocalizableMessage cannot be both set"); } return new SingleLocalizableMessage(key, args.toArray(), fallbackMessage); } else { return new SingleLocalizableMessage(key, args.toArray(), fallbackLocalizableMessage); } } }
@Test public void testSerializeMessage() throws Exception { System.out.println("===[ testSerializeMessage ]==="); PrismContext prismContext = getPrismContext(); SingleLocalizableMessage localizableMessage = new SingleLocalizableMessage("execute.reset.credential.bad.request", null, "Failed to execute reset password. Bad request."); LocalizableMessageType localizableMessageBean = LocalizationUtil.createLocalizableMessageType(localizableMessage); QName fakeQName = new QName(PrismConstants.NS_TYPES, "object"); String xml = prismContext.xmlSerializer().serializeAnyData(localizableMessageBean, fakeQName); System.out.println(xml); }
private <V extends PrismValue, D extends ItemDefinition> void msg(ValidationResult result, OperationResultStatus status, Item<V, D> item, String message) { ValidationItem resultItem = new ValidationItem(); resultItem.setStatus(status); if (item != null) { resultItem.setItemPath(item.getPath()); } LocalizableMessage lMessage = new SingleLocalizableMessage(null, null, message); resultItem.setMessage(lMessage); result.addItem(resultItem); } }
@Test public void testSerializeExecuteCredentialResetResponseType() throws Exception { System.out.println("===[ testSerializeExecuteCredentialResetResponseType ]==="); PrismContext prismContext = getPrismContext(); SingleLocalizableMessage localizableMessage = new SingleLocalizableMessage("execute.reset.credential.bad.request", null, "Failed to execute reset password. Bad request."); LocalizableMessageType localizableMessageBean = LocalizationUtil.createLocalizableMessageType(localizableMessage); ExecuteCredentialResetResponseType response = new ExecuteCredentialResetResponseType(); response.setMessage(localizableMessageBean); QName fakeQName = new QName(PrismConstants.NS_TYPES, "object"); prismContext.adopt(response); String xml = prismContext.xmlSerializer().serializeAnyData(response, fakeQName); System.out.println(xml); }