Skip to content

Commit

Permalink
KEYCLOAK-2637
Browse files Browse the repository at this point in the history
ModelExceptionMapper uses AdminMessagesProvider which loads messages outside of themes
  • Loading branch information
stianst committed Mar 11, 2016
1 parent 4b69cb4 commit bdfc9b8
Show file tree
Hide file tree
Showing 13 changed files with 50 additions and 324 deletions.
29 changes: 0 additions & 29 deletions services/src/main/java/org/keycloak/messages/MessagesProvider.java

This file was deleted.

This file was deleted.

49 changes: 0 additions & 49 deletions services/src/main/java/org/keycloak/messages/MessagesSpi.java

This file was deleted.

This file was deleted.

This file was deleted.

Expand Up @@ -82,7 +82,6 @@ public KeycloakApplication(@Context ServletContext context, @Context Dispatcher
singletons.add(new ServerVersionResource());
singletons.add(new RealmsResource());
singletons.add(new AdminRoot());
singletons.add(new ModelExceptionMapper());
classes.add(QRCodeResource.class);
classes.add(ThemeResource.class);
classes.add(JsResource.class);
Expand Down

This file was deleted.

Expand Up @@ -27,7 +27,6 @@
import org.keycloak.theme.FreeMarkerException;
import org.keycloak.theme.FreeMarkerUtil;
import org.keycloak.theme.Theme;
import org.keycloak.theme.ThemeProvider;
import org.keycloak.models.AdminRoles;
import org.keycloak.models.ClientModel;
import org.keycloak.models.Constants;
Expand Down Expand Up @@ -281,7 +280,7 @@ public Response getMainPage() throws URISyntaxException, IOException, FreeMarker
if (!uriInfo.getRequestUri().getPath().endsWith("/")) {
return Response.status(302).location(uriInfo.getRequestUriBuilder().path("/").build()).build();
} else {
Theme theme = getTheme();
Theme theme = AdminRoot.getTheme(session, realm);

Map<String, Object> map = new HashMap<>();

Expand All @@ -303,11 +302,6 @@ public Response getMainPage() throws URISyntaxException, IOException, FreeMarker
}
}

private Theme getTheme() throws IOException {
ThemeProvider themeProvider = session.getProvider(ThemeProvider.class, "extending");
return themeProvider.getTheme(realm.getAdminTheme(), Theme.Type.ADMIN);
}

@GET
@Path("{indexhtml: index.html}") // this expression is a hack to get around jaxdoclet generation bug. Doesn't like index.html
public Response getIndexHtmlRedirect() {
Expand All @@ -318,11 +312,7 @@ public Response getIndexHtmlRedirect() {
@Path("messages.json")
@Produces(MediaType.APPLICATION_JSON)
public Properties getMessages(@QueryParam("lang") String lang) {
try {
Locale locale = lang != null ? Locale.forLanguageTag(lang) : Locale.ENGLISH;
return getTheme().getMessages("admin-messages", locale);
} catch (IOException e) {
throw new WebApplicationException("Failed to load message bundle", e);
}
return AdminRoot.getMessages(session, realm, "admin-messages", lang);
}

}
Expand Up @@ -38,6 +38,8 @@
import org.keycloak.services.managers.RealmManager;
import org.keycloak.services.resources.Cors;
import org.keycloak.services.resources.admin.info.ServerInfoAdminResource;
import org.keycloak.theme.Theme;
import org.keycloak.theme.ThemeProvider;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
Expand All @@ -47,6 +49,9 @@
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import java.io.IOException;
import java.util.Locale;
import java.util.Properties;

/**
* Root resource for admin console and admin REST API
Expand Down Expand Up @@ -265,4 +270,31 @@ protected void handlePreflightRequest() {
}
}

public static Theme getTheme(KeycloakSession session, RealmModel realm) throws IOException {
ThemeProvider themeProvider = session.getProvider(ThemeProvider.class, "extending");
return themeProvider.getTheme(realm.getAdminTheme(), Theme.Type.ADMIN);
}

public static Properties getMessages(KeycloakSession session, RealmModel realm, String lang) {
try {
Theme theme = getTheme(session, realm);
Locale locale = lang != null ? Locale.forLanguageTag(lang) : Locale.ENGLISH;
return theme.getMessages(locale);
} catch (IOException e) {
logger.error("Failed to load messages from theme", e);
return new Properties();
}
}

public static Properties getMessages(KeycloakSession session, RealmModel realm, String bundle, String lang) {
try {
Theme theme = getTheme(session, realm);
Locale locale = lang != null ? Locale.forLanguageTag(lang) : Locale.ENGLISH;
return theme.getMessages(bundle, locale);
} catch (IOException e) {
logger.error("Failed to load messages from theme", e);
return new Properties();
}
}

}

0 comments on commit bdfc9b8

Please sign in to comment.