protected void extractHandlerMappings(ApplicationContext applicationContext, Map<String, Object> result) { if (applicationContext != null) { Map<String, AbstractUrlHandlerMapping> mappings = applicationContext .getBeansOfType(AbstractUrlHandlerMapping.class); for (Entry<String, AbstractUrlHandlerMapping> mapping : mappings.entrySet()) { Map<String, Object> handlers = getHandlerMap(mapping.getValue()); for (Entry<String, Object> handler : handlers.entrySet()) { result.put(handler.getKey(), Collections.singletonMap("bean", mapping.getKey())); } } } }
private Map<String, Object> getHandlerMap(AbstractUrlHandlerMapping mapping) { if (AopUtils.isCglibProxy(mapping)) { // If the AbstractUrlHandlerMapping is a cglib proxy we can't call // the final getHandlerMap() method. return Collections.emptyMap(); } return mapping.getHandlerMap(); }
protected void extractHandlerMappings( Collection<AbstractUrlHandlerMapping> handlerMappings, Map<String, Object> result) { for (AbstractUrlHandlerMapping mapping : handlerMappings) { Map<String, Object> handlers = mapping.getHandlerMap(); for (Map.Entry<String, Object> entry : handlers.entrySet()) { Class<? extends Object> handlerClass = entry.getValue().getClass(); result.put(entry.getKey(), Collections.singletonMap("type", handlerClass.getName())); } } }
@Test public void concreteUrlMappings() { SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping(); mapping.setUrlMap(Collections.singletonMap("/foo", new Object())); mapping.setApplicationContext(new StaticApplicationContext()); mapping.initApplicationContext(); this.endpoint.setHandlerMappings( Collections.<AbstractUrlHandlerMapping>singletonList(mapping)); Map<String, Object> result = this.endpoint.invoke(); assertThat(result).hasSize(1); @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) result.get("/foo"); assertThat(map.get("type")).isEqualTo("java.lang.Object"); }
protected void extractHandlerMappings(ApplicationContext applicationContext, Map<String, Object> result) { if (applicationContext != null) { Map<String, AbstractUrlHandlerMapping> mappings = applicationContext .getBeansOfType(AbstractUrlHandlerMapping.class); for (String name : mappings.keySet()) { AbstractUrlHandlerMapping mapping = mappings.get(name); Map<String, Object> handlers = getHandlerMap(mapping); for (String key : handlers.keySet()) { result.put(key, Collections.singletonMap("bean", name)); } } } }
@Test public void concreteUrlMappings() { SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping(); mapping.setUrlMap(Collections.singletonMap("/foo", new Object())); mapping.setApplicationContext(new StaticApplicationContext()); mapping.initApplicationContext(); this.endpoint.setHandlerMappings( Collections.<AbstractUrlHandlerMapping>singletonList(mapping)); Map<String, Object> result = this.endpoint.invoke(); assertEquals(1, result.size()); @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) result.get("/foo"); assertEquals("java.lang.Object", map.get("type")); }
private void registerHandlers(List<HandlerMapping> handlerMappings) { for (HandlerMapping mapping : handlerMappings) { AbstractUrlHandlerMapping abstractUrlHandlerMapping = (AbstractUrlHandlerMapping) mapping; Map<String, Object> handlerMap = abstractUrlHandlerMapping.getHandlerMap(); for (String url : handlerMap.keySet()) { Object handler = handlerMap.get(url); registerHandler(url, handler); } } }
/** * Set the handler mappings. * @param handlerMappings the handler mappings */ public void setHandlerMappings(List<AbstractUrlHandlerMapping> handlerMappings) { this.handlerMappings = handlerMappings; }