Several small bug fixes
parent
06922b6425
commit
7e023cfaa9
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -95,6 +95,9 @@ public class PageUrlModel {
|
|||
}
|
||||
|
||||
public String getQueryString() {
|
||||
if (queryParameters == null || queryParameters.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
return queryParameters
|
||||
.entrySet()
|
||||
.stream()
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue