diff --git a/api/src/org/labkey/api/admin/AdminBean.java b/api/src/org/labkey/api/admin/AdminBean.java index ac20220ce9f..11c02ec39c5 100644 --- a/api/src/org/labkey/api/admin/AdminBean.java +++ b/api/src/org/labkey/api/admin/AdminBean.java @@ -78,6 +78,7 @@ public static class RecentUser public static final String serverGuid = AppProps.getInstance().getServerGUID(); public static final String serverSessionGuid = AppProps.getInstance().getServerSessionGUID(); public static final String servletContainer = ModuleLoader.getServletContext().getServerInfo(); + public static final String servletConfiguration = AppProps.getInstance().isEmbeddedTomcat() ? "Embedded" : "Standalone"; public static final String sessionTimeout = Formats.commaf0.format(ModuleLoader.getServletContext().getSessionTimeout()); @SuppressWarnings("unused") // Available substitution property, not used directly in code public static final String buildTime = ModuleLoader.getInstance().getCoreModule().getBuildTime(); @@ -96,11 +97,15 @@ public static class RecentUser { Map propertyMap = new TreeMap<>(); + // Using reflection, all static members of this class (see above) with type String are added to PROPERTY_MAP + // and available for substitutions Arrays.stream(AdminBean.class.getDeclaredFields()) .filter(f -> Modifier.isStatic(f.getModifiers())) .filter(f -> f.getType().equals(String.class)) .forEach(f -> propertyMap.put(f.getName(), getValue(f))); + // Using reflection, all primary DbScope public getters that return type String are added to PROPERTY_MAP and + // available for substitutions Arrays.stream(scope.getClass().getMethods()) .filter(m -> m.getReturnType().equals(String.class)) .filter(m -> m.getName().startsWith("get")) diff --git a/api/src/org/labkey/api/util/Formats.java b/api/src/org/labkey/api/util/Formats.java index f0750a01832..cf6ba9196f8 100644 --- a/api/src/org/labkey/api/util/Formats.java +++ b/api/src/org/labkey/api/util/Formats.java @@ -41,6 +41,7 @@ public class Formats public static DecimalFormat percent1 = new DecimalFormat("0.0%"); public static DecimalFormat percent2 = new DecimalFormat("0.00%"); public static DecimalFormat commaf0 = new DecimalFormat("#,##0"); + public static DecimalFormat commaf2 = new DecimalFormat("#,##0.##"); public static DecimalFormat commaf3 = new DecimalFormat("#,##0.###"); public static DecimalFormat chargeFilter = new DecimalFormat("0.#"); diff --git a/core/src/org/labkey/core/admin/admin.jsp b/core/src/org/labkey/core/admin/admin.jsp index ee86874d865..74a9cb6d89b 100644 --- a/core/src/org/labkey/core/admin/admin.jsp +++ b/core/src/org/labkey/core/admin/admin.jsp @@ -104,7 +104,7 @@ Mode<%=h(AdminBean.mode)%> Asserts<%=h(AdminBean.asserts)%> Servlet Container<%=h(AdminBean.servletContainer)%> - Embedded Tomcat<%=h(AppProps.getInstance().isEmbeddedTomcat())%> + Servlet Configuration<%=h(AdminBean.servletConfiguration)%> Session Timeout (minutes)<%=h(AdminBean.sessionTimeout)%> Java Runtime Vendor<%=h(AdminBean.javaVendor)%> Java Runtime Name<%=h(AdminBean.javaRuntimeName)%>