@Test public void getUniqueDeclaredMethods_withCovariantReturnType() throws Exception { class Parent { @SuppressWarnings("unused") public Number m1() { return new Integer(42); } } class Leaf extends Parent { @Override public Integer m1() { return new Integer(42); } } int m1MethodCount = 0; Method[] methods = ReflectionUtils.getUniqueDeclaredMethods(Leaf.class); for (Method method : methods) { if (method.getName().equals("m1")) { m1MethodCount++; } } assertThat(m1MethodCount, is(1)); assertTrue(ObjectUtils.containsElement(methods, Leaf.class.getMethod("m1"))); assertFalse(ObjectUtils.containsElement(methods, Parent.class.getMethod("m1"))); }
@Test @SuppressWarnings("unchecked") public void fullConfig() throws Exception { DirectFieldAccessor endpointAccessor = new DirectFieldAccessor(this.fullConfigEndpoint); HttpRequestExecutingMessageHandler handler = (HttpRequestExecutingMessageHandler) endpointAccessor.getPropertyValue("handler"); MessageChannel requestChannel = (MessageChannel) new DirectFieldAccessor(this.fullConfigEndpoint).getPropertyValue("inputChannel"); assertEquals(this.applicationContext.getBean("requests"), requestChannel); DirectFieldAccessor handlerAccessor = new DirectFieldAccessor(handler); assertEquals(77, handlerAccessor.getPropertyValue("order")); assertEquals(Boolean.FALSE, endpointAccessor.getPropertyValue("autoStartup")); Object replyChannel = handlerAccessor.getPropertyValue("outputChannel"); assertNotNull(replyChannel); assertEquals(this.applicationContext.getBean("replies"), replyChannel); DirectFieldAccessor templateAccessor = new DirectFieldAccessor(handlerAccessor.getPropertyValue("restTemplate")); ClientHttpRequestFactory requestFactory = (ClientHttpRequestFactory) templateAccessor.getPropertyValue("requestFactory"); assertTrue(requestFactory instanceof SimpleClientHttpRequestFactory); Object converterListBean = this.applicationContext.getBean("converterList"); assertEquals(converterListBean, templateAccessor.getPropertyValue("messageConverters")); assertEquals(String.class, handlerAccessor.getPropertyValue("expectedResponseType")); Expression uriExpression = (Expression) handlerAccessor.getPropertyValue("uriExpression"); assertEquals("http://localhost/test2", uriExpression.getValue()); assertEquals( HttpMethod.PUT.name(), TestUtils.getPropertyValue(handler, "httpMethodExpression", Expression.class) .getExpressionString()); assertEquals("UTF-8", handlerAccessor.getPropertyValue("charset")); assertEquals(false, handlerAccessor.getPropertyValue("extractPayload")); Object requestFactoryBean = this.applicationContext.getBean("testRequestFactory"); assertEquals(requestFactoryBean, requestFactory); Object errorHandlerBean = this.applicationContext.getBean("testErrorHandler"); assertEquals(errorHandlerBean, templateAccessor.getPropertyValue("errorHandler")); Object sendTimeout = new DirectFieldAccessor(handlerAccessor.getPropertyValue("messagingTemplate")) .getPropertyValue("sendTimeout"); assertEquals(new Long("1234"), sendTimeout); Map<String, Expression> uriVariableExpressions = (Map<String, Expression>) handlerAccessor.getPropertyValue("uriVariableExpressions"); assertEquals(1, uriVariableExpressions.size()); assertEquals("headers.bar", uriVariableExpressions.get("foo").getExpressionString()); DirectFieldAccessor mapperAccessor = new DirectFieldAccessor(handlerAccessor.getPropertyValue("headerMapper")); String[] mappedRequestHeaders = (String[]) mapperAccessor.getPropertyValue("outboundHeaderNames"); String[] mappedResponseHeaders = (String[]) mapperAccessor.getPropertyValue("inboundHeaderNames"); assertEquals(2, mappedRequestHeaders.length); assertEquals(1, mappedResponseHeaders.length); assertTrue(ObjectUtils.containsElement(mappedRequestHeaders, "requestHeader1")); assertTrue(ObjectUtils.containsElement(mappedRequestHeaders, "requestHeader2")); assertEquals("responseHeader", mappedResponseHeaders[0]); assertEquals(true, handlerAccessor.getPropertyValue("transferCookies")); }