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

@ -91,7 +91,7 @@ public class StaticThemeProvider implements ThemeProvider {
public String getName() {
return "StaticThemeProvider";
}
@Override
public String getClassName() {
return StaticThemeProvider.class.getName();
@ -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
.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);
// })
.collect(Collectors.toList()));
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()));
themes.addAll(
jsonThemes
.stream()
.filter(
themePackage -> themePackage.matches(
THEMES_PACKAGE + "/([\\w\\d\\s\\.\\-_])*/theme.json"
)
)
.collect(Collectors.toList()));
themes.addAll(
xmlThemes
.stream()
.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

@ -39,7 +39,7 @@ import javax.inject.Inject;
/**
* Utility for getting localized texts for a theme.
*
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@RequestScoped
@ -50,40 +50,51 @@ public class L10NUtils implements Serializable {
@Inject
private GlobalizationHelper globalizationHelper;
public ResourceBundle getBundle(final ThemeInfo fromTheme,
final ThemeProvider themeProvider,
final String bundleName) {
public ResourceBundle getBundle(
final ThemeInfo fromTheme,
final ThemeProvider themeProvider,
final String bundleName
) {
return ResourceBundle
.getBundle(
bundleName,
globalizationHelper.getNegotiatedLocale(),
new LocalizedResourceBundleControl(fromTheme,
themeProvider));
new LocalizedResourceBundleControl(
fromTheme,
themeProvider
)
);
}
public String getText(final ThemeInfo fromTheme,
final ThemeProvider themeProvider,
final String bundleName,
final String key) {
final ResourceBundle bundle = getBundle(fromTheme,
themeProvider,
bundleName);
public String getText(
final ThemeInfo fromTheme,
final ThemeProvider themeProvider,
final String bundleName,
final String key
) {
final ResourceBundle bundle = getBundle(
fromTheme,
themeProvider,
bundleName
);
return bundle.getString(key);
}
public String getText(final ThemeInfo fromTheme,
final ThemeProvider themeProvider,
final String bundleName,
final String key,
final String arguments) {
final ResourceBundle bundle = getBundle(fromTheme,
themeProvider,
bundleName);
public String getText(
final ThemeInfo fromTheme,
final ThemeProvider themeProvider,
final String bundleName,
final String key,
final String arguments
) {
final ResourceBundle bundle = getBundle(
fromTheme,
themeProvider,
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,
final Locale locale,
final String format,
final ClassLoader classLoader,
final boolean reload)
public ResourceBundle newBundle(
final String baseName,
final Locale locale,
final String format,
final ClassLoader classLoader,
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(),
theme.getVersion(),
String.format("%s.properties",
bundleName));
.getThemeFileAsStream(
theme.getName(),
theme.getVersion(),
String.format(
"%s.properties",
bundleName
)
);
if (inputStream.isPresent()) {
return new PropertyResourceBundle(inputStream.get());
} else {
return super.newBundle(baseName,
locale,
format,
classLoader,
reload);
return super.newBundle(
baseName,
locale,
format,
classLoader,
reload
);
}
} else {
return super.newBundle(baseName,
locale,
format,
classLoader,
reload);
return super.newBundle(
baseName,
locale,
format,
classLoader,
reload
);
}
}
}
}