Several small bug fixes

master
Jens Pelzetter 2023-05-13 17:55:18 +02:00
parent 06922b6425
commit 7e023cfaa9
4 changed files with 126 additions and 118 deletions

View File

@ -713,7 +713,7 @@ public class PagesController {
private String buildQueryParamsStr(
final String previewParam, final String themeParam
) {
return List
final String queryString = List
.of(
Optional
.of(themeParam)
@ -729,6 +729,12 @@ public class PagesController {
.stream()
.filter(String::isBlank)
.collect(Collectors.joining("&", "?", ""));
if (queryString.length() <= 1) {
return "";
}
return queryString;
}
private ThemeInfo getTheme(

View File

@ -95,6 +95,9 @@ public class PageUrlModel {
}
public String getQueryString() {
if (queryParameters == null || queryParameters.isEmpty()) {
return "";
}
return queryParameters
.entrySet()
.stream()

View File

@ -99,50 +99,41 @@ public class StaticThemeProvider implements ThemeProvider {
@Override
public List<ThemeInfo> getThemes() {
LOGGER.debug("Retrieving static themes...");
final Reflections reflections = new Reflections(
new ConfigurationBuilder()
.setUrls(ClasspathHelper.forPackage(""))
.setScanners(new ResourcesScanner()
// .filterResultsBy(new FilterBuilder()
// .include(THEMES_PACKAGE)
// .include(THEMES_PACKAGE + "/([\\w\\d\\s\\.]*)/theme.json")
// .include(THEMES_PACKAGE + "/([\\w\\d\\s\\.]*)/theme.xml")
// .exclude(THEMES_PACKAGE + "(.*)/(.*)")
// )
));
.setScanners(new ResourcesScanner())
);
final Set<String> jsonThemes = reflections
.getResources(Pattern.compile(THEME_MANIFEST_JSON));
final Set<String> xmlThemes = reflections
.getResources(Pattern.compile(THEME_MANIFEST_XML));
final Set<String> jsonThemes = reflections.getResources(
Pattern.compile(THEME_MANIFEST_JSON)
);
final Set<String> xmlThemes = reflections.getResources(
Pattern.compile(THEME_MANIFEST_XML)
);
final List<String> themes = new ArrayList<>();
themes.addAll(jsonThemes
themes.addAll(
jsonThemes
.stream()
.filter(themePackage -> {
return themePackage
.matches(THEMES_PACKAGE + "/([\\w\\d\\s\\.\\-_])*/theme.json");
})
// .map(themePackage -> {
// return themePackage
// .substring((THEMES_PACKAGE + "/").length(),
// ("/" + THEME_MANIFEST_JSON).length() - 1);
// })
.filter(
themePackage -> themePackage.matches(
THEMES_PACKAGE + "/([\\w\\d\\s\\.\\-_])*/theme.json"
)
)
.collect(Collectors.toList()));
themes.addAll(xmlThemes
themes.addAll(
xmlThemes
.stream()
.filter(themePackage -> {
return themePackage
.matches(THEMES_PACKAGE + "/([\\w\\d\\s\\.])*/theme.xml");
})
// .map(themePackage -> {
// return themePackage
// .substring((THEMES_PACKAGE + "/").length(),
// ("/" + THEME_MANIFEST_XML).length() - 1);
// })
.collect(Collectors.toList()));
.filter(
themePackage -> themePackage
.matches(
THEMES_PACKAGE + "/([\\w\\d\\s\\.])*/theme.xml"
)
)
.collect(Collectors.toList())
);
Collections.sort(themes);
LOGGER.debug("Found static themes:");
@ -151,9 +142,10 @@ public class StaticThemeProvider implements ThemeProvider {
for (final String theme : themes) {
final InputStream inputStream = StaticThemeProvider.class
.getResourceAsStream(String.format("/%s", theme));
final ThemeManifest manifest = manifestUtil
.loadManifest(inputStream,
theme);
final ThemeManifest manifest = manifestUtil.loadManifest(
inputStream,
theme
);
LOGGER.debug("Got manifest: {}", Objects.toString(manifest));
}
@ -165,19 +157,7 @@ public class StaticThemeProvider implements ThemeProvider {
}
// private boolean isThemeDir(final String dirPath) {
//
// Objects.requireNonNull(dirPath);
//
// final URL manifestJsonUrl = StaticThemeProvider.class.getResource(
// String.format(THEME_MANIFEST_JSON_PATH, dirPath));
// final URL manifestXmlUrl = StaticThemeProvider.class.getResource(
// String.format(THEME_MANIFEST_XML_PATH, dirPath));
//
// return (manifestJsonUrl != null) || (manifestXmlUrl != null);
// }
private ThemeManifest loadThemeManifest(final String manifestPath) {
Objects.requireNonNull(manifestPath);
final String pathToManifest;
@ -190,9 +170,7 @@ public class StaticThemeProvider implements ThemeProvider {
final ThemeManifest manifest;
try (final InputStream inputStream = StaticThemeProvider.class
.getResourceAsStream(pathToManifest)) {
manifest = manifestUtil.loadManifest(inputStream, manifestPath);
} catch (IOException ex) {
throw new UnexpectedErrorException(ex);
}
@ -218,22 +196,23 @@ public class StaticThemeProvider implements ThemeProvider {
}
@Override
public Optional<ThemeInfo> getThemeInfo(final String theme,
final ThemeVersion version) {
public Optional<ThemeInfo> getThemeInfo(
final String theme,
final ThemeVersion version
) {
Objects.requireNonNull(theme);
final String manifestJsonPath = String.format("/" + THEMES_PACKAGE
+ "/%s/"
+ THEME_MANIFEST_JSON,
theme);
final String manifestXmlPath = String.format("/" + THEMES_PACKAGE
+ "/%s/"
+ THEME_MANIFEST_XML,
theme);
final String manifestJsonPath = String.format(
"/" + THEMES_PACKAGE + "/%s/" + THEME_MANIFEST_JSON,
theme
);
final String manifestXmlPath = String.format(
"/" + THEMES_PACKAGE + "/%s/" + THEME_MANIFEST_XML, theme
);
final URL manifestJsonUrl = StaticThemeProvider.class
.getResource(manifestJsonPath);
final URL manifestJsonUrl = StaticThemeProvider.class.getResource(
manifestJsonPath
);
final URL manifestXmlUrl = StaticThemeProvider.class
.getResource(manifestXmlPath);

View File

@ -50,39 +50,50 @@ public class L10NUtils implements Serializable {
@Inject
private GlobalizationHelper globalizationHelper;
public ResourceBundle getBundle(final ThemeInfo fromTheme,
public ResourceBundle getBundle(
final ThemeInfo fromTheme,
final ThemeProvider themeProvider,
final String bundleName) {
final String bundleName
) {
return ResourceBundle
.getBundle(
bundleName,
globalizationHelper.getNegotiatedLocale(),
new LocalizedResourceBundleControl(fromTheme,
themeProvider));
new LocalizedResourceBundleControl(
fromTheme,
themeProvider
)
);
}
public String getText(final ThemeInfo fromTheme,
public String getText(
final ThemeInfo fromTheme,
final ThemeProvider themeProvider,
final String bundleName,
final String key) {
final String key
) {
final ResourceBundle bundle = getBundle(fromTheme,
final ResourceBundle bundle = getBundle(
fromTheme,
themeProvider,
bundleName);
bundleName
);
return bundle.getString(key);
}
public String getText(final ThemeInfo fromTheme,
public String getText(
final ThemeInfo fromTheme,
final ThemeProvider themeProvider,
final String bundleName,
final String key,
final String arguments) {
final ResourceBundle bundle = getBundle(fromTheme,
final String arguments
) {
final ResourceBundle bundle = getBundle(
fromTheme,
themeProvider,
bundleName);
bundleName
);
return MessageFormat.format(bundle.getString(key), arguments);
}
@ -91,6 +102,7 @@ public class L10NUtils implements Serializable {
extends ResourceBundle.Control {
private final ThemeInfo theme;
private final ThemeProvider themeProvider;
public LocalizedResourceBundleControl(
@ -109,41 +121,49 @@ public class L10NUtils implements Serializable {
}
@Override
public ResourceBundle newBundle(final String baseName,
public ResourceBundle newBundle(
final String baseName,
final Locale locale,
final String format,
final ClassLoader classLoader,
final boolean reload)
final boolean reload
)
throws IllegalAccessException,
InstantiationException,
IOException {
if ("java.properties".equals(format)) {
final String bundleName = toBundleName(baseName, locale);
final Optional<InputStream> inputStream = themeProvider
.getThemeFileAsStream(theme.getName(),
.getThemeFileAsStream(
theme.getName(),
theme.getVersion(),
String.format("%s.properties",
bundleName));
String.format(
"%s.properties",
bundleName
)
);
if (inputStream.isPresent()) {
return new PropertyResourceBundle(inputStream.get());
} else {
return super.newBundle(baseName,
return super.newBundle(
baseName,
locale,
format,
classLoader,
reload);
reload
);
}
} else {
return super.newBundle(
baseName,
locale,
format,
classLoader,
reload
);
}
}
}
} else {
return super.newBundle(baseName,
locale,
format,
classLoader,
reload);
}
}
}
}