@SuppressWarnings("rawtypes") protected void extractMethodMappings(ApplicationContext applicationContext, Map<String, Object> result) { if (applicationContext != null) { for (Entry<String, AbstractHandlerMethodMapping> bean : applicationContext .getBeansOfType(AbstractHandlerMethodMapping.class).entrySet()) { @SuppressWarnings("unchecked") Map<?, HandlerMethod> methods = bean.getValue().getHandlerMethods(); for (Entry<?, HandlerMethod> method : methods.entrySet()) { Map<String, String> map = new LinkedHashMap<String, String>(); map.put("bean", bean.getKey()); map.put("method", method.getValue().toString()); result.put(method.getKey().toString(), map); } } } }
@Test public void concreteMethodMappings() { EndpointHandlerMapping mapping = new EndpointHandlerMapping( Arrays.asList(new EndpointMvcAdapter(new DumpEndpoint()))); mapping.setApplicationContext(new StaticApplicationContext()); mapping.afterPropertiesSet(); this.endpoint.setMethodMappings( Collections.<AbstractHandlerMethodMapping<?>>singletonList(mapping)); Map<String, Object> result = this.endpoint.invoke(); assertThat(result).hasSize(1); assertThat(result.keySet().iterator().next().contains("/dump")).isTrue(); @SuppressWarnings("unchecked") Map<String, Object> handler = (Map<String, Object>) result.values().iterator() .next(); assertThat(handler.containsKey("method")).isTrue(); }
protected void extractMethodMappings(ApplicationContext applicationContext, Map<String, Object> result) { if (applicationContext != null) { for (String name : applicationContext .getBeansOfType(AbstractHandlerMethodMapping.class).keySet()) { @SuppressWarnings("unchecked") Map<?, HandlerMethod> methods = applicationContext .getBean(name, AbstractHandlerMethodMapping.class) .getHandlerMethods(); for (Object key : methods.keySet()) { Map<String, String> map = new LinkedHashMap<String, String>(); map.put("bean", name); map.put("method", methods.get(key).toString()); result.put(key.toString(), map); } } } }
@Test public void concreteMethodMappings() { EndpointHandlerMapping mapping = new EndpointHandlerMapping( Arrays.asList(new EndpointMvcAdapter(new DumpEndpoint()))); mapping.setApplicationContext(new StaticApplicationContext()); mapping.afterPropertiesSet(); this.endpoint.setMethodMappings( Collections.<AbstractHandlerMethodMapping<?>>singletonList(mapping)); Map<String, Object> result = this.endpoint.invoke(); assertEquals(1, result.size()); assertTrue(result.keySet().iterator().next().contains("/dump")); @SuppressWarnings("unchecked") Map<String, Object> handler = (Map<String, Object>) result.values().iterator() .next(); assertTrue(handler.containsKey("method")); }
/** * Clear the two maps used to map the urls and the methods. */ private void clearExistingMapping() { try { final Field urlMapField = ReflectionUtils.findField(AbstractHandlerMethodMapping.class, "urlMap"); urlMapField.setAccessible(true); Map urlMap = (Map) urlMapField.get(this); urlMap.clear(); final Field handlerMethodsField = ReflectionUtils.findField(AbstractHandlerMethodMapping.class, "handlerMethods"); handlerMethodsField.setAccessible(true); Map m = (Map) handlerMethodsField.get(this); m.clear(); } catch (Exception e) { log.error("Failed to clean the urlMap and the handlerMethods objects", e); } }
protected void initSpringMvcHandlerMethodMapping() { if(!this.initialized){ synchronized (mutex) { if(!this.initialized){ ApplicationContext mvcApplicationContext = ApplicationConstants.MVC_APPLICATION_CONTEXT; this.springMvcHandlerMethodMapping = mvcApplicationContext.getBean(AbstractHandlerMethodMapping.class); this.initialized = true; } } } }
private List<String> getAllRequestMappingInfo() { AbstractHandlerMethodMapping<RequestMappingInfo> objHandlerMethodMapping = (AbstractHandlerMethodMapping<RequestMappingInfo>)applicationContext.getBean("requestMappingHandlerMapping"); Map<RequestMappingInfo, HandlerMethod> mapRet = objHandlerMethodMapping.getHandlerMethods(); List<String> res = new ArrayList<String>(); for (Map.Entry<RequestMappingInfo, HandlerMethod> entry : mapRet.entrySet()) { String uri = entry.getKey().toString().replace("{", "").replace("[", "").replace("}","").replace("]",""); String []temp = uri.split(","); res.add(temp[0]); } return res; }
protected void extractMethodMappings( Collection<AbstractHandlerMethodMapping<?>> methodMappings, Map<String, Object> result) { for (AbstractHandlerMethodMapping<?> mapping : methodMappings) { Map<?, HandlerMethod> methods = mapping.getHandlerMethods(); for (Map.Entry<?, HandlerMethod> entry : methods.entrySet()) { result.put(String.valueOf(entry.getKey()), Collections .singletonMap("method", String.valueOf(entry.getValue()))); } } }
public AbstractHandlerMethodMapping<?> getSpringMvcHandlerMethodMapping() { if(!this.initialized){ initSpringMvcHandlerMethodMapping(); } return springMvcHandlerMethodMapping; }
/** * Set the method mappings. * @param methodMappings the method mappings */ public void setMethodMappings(List<AbstractHandlerMethodMapping<?>> methodMappings) { this.methodMappings = methodMappings; }