public static Field getDeclaredField(Class clazz, String fieldName) { try { return clazz.getDeclaredField(fieldName); } catch (NoSuchFieldException e) { throw new BristleInitializationException("This should never happen.", e); } }
private static void validateActionNameFromAnnotationValue(String actionName) { if (!actionName.matches(ALLOWED_ACTION_NAME_PATTERN)) { throw new BristleInitializationException("Action name must match pattern \"" + ALLOWED_ACTION_NAME_PATTERN + "\""); } }
@Override public UserContext createNewUserContext() { try { return userContextClass.newInstance(); } catch (InstantiationException e) { throw new BristleInitializationException("Could not create new user context object of type: " + userContextClass.getName(), e); } catch (IllegalAccessException e) { throw new BristleInitializationException("Could not create new user context object of type: " + userContextClass.getName() + " because of illegal access of that user context class.", e); } }
private List<ActionInterceptorInformation> resolveInterceptorsInformation(List<Class<? extends ActionInterceptor>> interceptorClasses) { List<ActionInterceptorInformation> interceptors = new ArrayList<ActionInterceptorInformation>(); for (Class<? extends ActionInterceptor> interceptorClass : interceptorClasses) { if (!allInterceptors.containsKey(interceptorClass)) { throw new BristleInitializationException("Cannot find interceptor Spring bean of type: " + interceptorClass); } interceptors.add(allInterceptors.get(interceptorClass)); } return interceptors; }
private void getPropertiesFromFileName() { try { if (StringUtils.isBlank(configurationPath)) { configurationPath = DEFAULT_CONFIG_FILE_LOCATION; } propertiesConfiguration = new PropertiesConfiguration(configurationPath); } catch (ConfigurationException e) { throw new BristleInitializationException("Unexpected " + e.getClass().getSimpleName() + " has occurred while resolving Bristleback properties file", e); } }
public <T> T getConfigurationElement(Class<T> elementClass, T defaultElement) { Map<String, T> customFactories = springIntegration.getApplicationBeansOfType(elementClass); T chosenElement; if (customFactories.isEmpty()) { chosenElement = defaultElement; } else if (customFactories.size() > 1) { throw new BristleInitializationException("Multiple custom configuration elements of type " + elementClass); } else { chosenElement = customFactories.values().iterator().next(); } return chosenElement; }
protected void setServletEngine(BristlebackConfig configuration) { ServerEngine serverEngine = configuration.getServerEngine(); if (!(serverEngine instanceof ServletServerEngine)) { throw new BristleInitializationException("Cannot start Bristleback servlet WebSockets engine. " + "Given engine does not implement " + ServletServerEngine.class.getName() + " interface."); } servletServerEngine = (ServletServerEngine) serverEngine; }
private void loadAllInterceptors() { allInterceptors = new HashMap<Class, ActionInterceptorInformation>(); Map<String, ActionInterceptor> interceptorBeans = springIntegration.getBeansOfType(ActionInterceptor.class); for (ActionInterceptor actionInterceptor : interceptorBeans.values()) { ActionInterceptorInformation interceptorInformation = loadInterceptor(actionInterceptor); if (allInterceptors.containsKey(actionInterceptor.getClass())) { throw new BristleInitializationException("Currently, it is not possible to define more than one " + "action interceptor bean of the same type."); } allInterceptors.put(actionInterceptor.getClass(), interceptorInformation); } }
private void checkHandlerMappings(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { String customHandlerMappings = element.getAttribute("handlerMappings"); if (StringUtils.isBlank(customHandlerMappings)) { if (parserContext.getRegistry().isBeanNameInUse(DEFAULT_HANDLER_MAPPINGS_NAME)) { throw new BristleInitializationException("Multiple Bristleback Servlets with default handler mappings. \n" + "Please provide custom handler mappings."); } createDefaultMappings(element, parserContext, builder); } }
protected String resolveId(Element element, AbstractBeanDefinition definition, ParserContext parserContext) { String id = super.resolveId(element, definition, parserContext); if (StringUtils.isNotBlank(id)) { return id; } if (parserContext.getRegistry().isBeanNameInUse(DEFAULT_HTTP_HANDLER_NAME)) { throw new BristleInitializationException("Multiple Bristleback Servers with default name. \n" + "Please specify name of the server runner bean."); } return DEFAULT_HTTP_HANDLER_NAME; }
private void checkContextObjectCompatibility(Object contextObject, ActionInterceptorInformation interceptorInformation) { Class<?> interceptorInstanceType = interceptorInformation.getInterceptorInstance().getClass(); Class<?> interceptorContextObjectType = (Class) ReflectionUtils .getParameterTypes(interceptorInstanceType, ActionInterceptor.class)[0]; if (!interceptorContextObjectType.isAssignableFrom(contextObject.getClass())) { throw new BristleInitializationException("Object returned by " + interceptorInformation.getInterceptorContextResolver().getClass().getName() + " context resolver does not match context parameter type in " + interceptorInstanceType.getName() + " interceptor class."); } } }
public static <T> T chooseBestClassStrategy(Map<Class, T> strategies, Class requiredType) { Class currentType = requiredType; T extractor = null; while (extractor == null) { extractor = strategies.get(currentType); if (extractor == null) { extractor = checkImplementedInterfaces(strategies, currentType); } if (extractor == null && currentType == Object.class) { throw new BristleInitializationException("Cannot retrieve strategy for type: " + requiredType); } currentType = currentType.getSuperclass(); if (currentType == null) { currentType = Object.class; } } return extractor; }
protected String resolveId(Element element, AbstractBeanDefinition definition, ParserContext parserContext) { String id = super.resolveId(element, definition, parserContext); if (StringUtils.isNotBlank(id)) { return id; } if (parserContext.getRegistry().isBeanNameInUse(DEFAULT_STANDALONE_SERVER_NAME)) { throw new BristleInitializationException("Multiple Bristleback Servers with default name. \n" + "Please specify name of the server runner bean."); } return DEFAULT_STANDALONE_SERVER_NAME; }
/** * Starts standalone server. */ public void startServer() { if (initialConfigurationResolver == null) { throw new BristleInitializationException("Cannot start Bristleback Server, missing initialConfiguration resolver"); } else if (serverInstance != null) { throw new BristleInitializationException("Cannot start Bristleback Server, create a new ServerRunner instance to start new server."); } ServerInstanceResolver serverInstanceResolver = new ServerInstanceResolver(initialConfigurationResolver, actualApplicationContext); serverInstance = serverInstanceResolver.resolverServerInstance(); serverInstance.startServer(); }
@Override public void startServer() { log.info("Bristleback Tomcat servlet engine started."); servletHolder = new TomcatWebsocketServletHolder(this); try { servletHolder.init(); } catch (ServletException e) { throw new BristleInitializationException("Exception while initializing Tomcat Servlet Engine", e); } }
public void startServer() { try { int port = getEngineConfiguration().getPort(); server = new Server(port); final JettyWebsocketEngine thisEngine = this; server.setHandler(new WebSocketHandler() { public WebSocket doWebSocketConnect(HttpServletRequest httpServletRequest, String protocolName) { DataController controller = getConfiguration().getDataController(protocolName); return new JettyConnector(thisEngine, controller, frontController); } }); server.start(); } catch (Exception e) { throw new BristleInitializationException("Jetty engine could not start.", e); } }
private ActionInterceptorInformation loadInterceptor(ActionInterceptor actionInterceptor) { Class<?> interceptorClass = actionInterceptor.getClass(); if (!interceptorClass.isAnnotationPresent(Interceptor.class)) { throw new BristleInitializationException("Interceptor classes must be annotated with " + Interceptor.class); } Interceptor interceptorAnnotation = interceptorClass.getAnnotation(Interceptor.class); return new ActionInterceptorInformation(actionInterceptor, actionInterceptor.getContextResolver(), interceptorAnnotation.stages()); }
@Bean public UserContextFactory userContextFactory() { String customUserContextFactoryName = initialConfiguration.getUserContextFactory(); if (StringUtils.isNotBlank(customUserContextFactoryName)) { return springIntegration.getApplicationBean(customUserContextFactoryName, UserContextFactory.class); } Map<String, UserContextFactory> userContextFactoryBeans = springIntegration.getApplicationBeansOfType(UserContextFactory.class); if (userContextFactoryBeans.size() == 0) { //no beans found return userContextFactoryUsingContextClass(); } if (userContextFactoryBeans.size() == 1) { //one bean found in application configuration return springIntegration.getApplicationBean(UserContextFactory.class); } else { //more than one bean found in application configuration (initial configuration doesn't contain property which one to choose throw new BristleInitializationException("Found more than one implementation of class" + UserContextFactory.class.getName() + ". " + "Please specify in initial configuration which one should be used"); } }