public static <T> T loadConfiguration (InputStream inputStream, Class<? extends T> configurationClass) throws Exception { if (configurationClass == null) { return null; } Object configuration; String configurationPackage = configurationClass.getPackage().getName(); JAXBContext jaxbContext = JAXBContext.newInstance(configurationPackage); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); configuration = unmarshaller.unmarshal(new StreamSource(inputStream), configurationClass); if(configuration instanceof JAXBElement) { configuration = ((JAXBElement) configuration).getValue(); } if (!configurationClass.isInstance(configuration)) { logger.error("Invalid configuration: expected " + configurationClass + ", got " + configuration); return null; } Injections.inject( configuration, ElementsThreadLocals.getServletContext(), ElementsThreadLocals.getHttpServletRequest()); if(configuration instanceof PageActionConfiguration) { ((PageActionConfiguration) configuration).init(); } return (T) configuration; }