in tobago-core/src/main/java/org/apache/myfaces/tobago/internal/config/TobagoConfigMerger.java [55:150]
private void merge() {
// default sanitizer
String sanitizerClass = JsoupSanitizer.class.getName();
Properties sanitizerProperties = new Properties();
sanitizerProperties.setProperty("safelist", "relaxed");
for (TobagoConfigFragment fragment : fragments) {
// default theme
final String defaultTheme = fragment.getDefaultThemeName();
if (defaultTheme != null) {
tobagoConfig.setDefaultThemeName(defaultTheme);
}
// supported themes
for (final String supported : fragment.getSupportedThemeNames()) {
tobagoConfig.addSupportedThemeName(supported);
}
// theme cookie
if (fragment.getThemeCookie() != null) {
tobagoConfig.setThemeCookie(fragment.getThemeCookie());
}
// theme session
if (fragment.getThemeSession() != null) {
tobagoConfig.setThemeSession(fragment.getThemeSession());
}
// session secret
if (fragment.getCreateSessionSecret() != null) {
tobagoConfig.setCreateSessionSecret(fragment.getCreateSessionSecret());
}
if (fragment.getCheckSessionSecret() != null) {
tobagoConfig.setCheckSessionSecret(fragment.getCheckSessionSecret());
}
if (fragment.getPreventFrameAttacks() != null) {
tobagoConfig.setPreventFrameAttacks(fragment.getPreventFrameAttacks());
}
if (fragment.getContentSecurityPolicy() != null) {
tobagoConfig.getContentSecurityPolicy().merge(fragment.getContentSecurityPolicy());
}
if (fragment.getSecurityAnnotation() != null) {
tobagoConfig.setSecurityAnnotation(fragment.getSecurityAnnotation());
}
if (fragment.getSetNosniffHeader() != null) {
tobagoConfig.setSetNosniffHeader(fragment.getSetNosniffHeader());
}
if (fragment.getSanitizerClass() != null) {
sanitizerClass = fragment.getSanitizerClass();
sanitizerProperties = fragment.getSanitizerProperties();
}
if (fragment.getDecodeLineFeed() != null) {
tobagoConfig.setDecodeLineFeed(fragment.getDecodeLineFeed());
}
if (fragment.getEnableTobagoExceptionHandler() != null) {
tobagoConfig.setEnableTobagoExceptionHandler(fragment.getEnableTobagoExceptionHandler());
}
// theme definition
for (final ThemeImpl theme : fragment.getThemeDefinitions()) {
tobagoConfig.addAvailableTheme(theme);
}
// url
// todo???
final Map<String, String> mimeTypes = tobagoConfig.getMimeTypes();
for (final Map.Entry<String, String> entry : fragment.getMimeTypes().entrySet()) {
mimeTypes.put(entry.getKey(), entry.getValue());
}
}
resolveThemes(tobagoConfig.getAvailableThemes());
if (sanitizerClass != null) {
try {
final Class<? extends Sanitizer> aClass = Class.forName(sanitizerClass).asSubclass(Sanitizer.class);
final Sanitizer sanitizer = aClass.newInstance();
sanitizer.setProperties(sanitizerProperties);
tobagoConfig.setSanitizer(sanitizer);
} catch (final Exception e) {
LOG.error("Can't create sanitizer: '" + sanitizerClass + "'", e);
tobagoConfig.setSanitizer(new IgnoringSanitizer());
}
}
}