2017-04-20 4 views
1

Le problème peut être reproduit avec le test unitaire ci-dessous, je ne l'ai pas trouvé dans le traqueur. Essence: l'interface A a la méthode par défaut, l'interface B étend A, la méthode par défaut est invisible pendant l'évaluation du langage simple. Camel version 2.16.1. Est-ce que je manque quelque chose?La méthode par défaut est invisible pendant Camel Simple évaluation

import org.apache.camel.CamelContext; 
import org.apache.camel.Exchange; 
import org.apache.camel.builder.RouteBuilder; 
import org.apache.camel.impl.DefaultCamelContext; 
import org.apache.camel.impl.DefaultExchange; 
import org.junit.Assert; 
import org.junit.Test; 

public class DefaultMethodIsInvisibleTest { 
    @Test 
    public void camelSimpleDoesNotSeeDefaultMethod() throws Exception { 
     CamelContext context = new DefaultCamelContext(); 
     context.addRoutes(new RouteBuilder() { 
      public void configure() { 
       from("direct:camelSimpleDoesNotSeeDefaultMethod").log("Result of default method invocation is ${exchangeProperty.myObject.defaultMethod}"); 
      } 
     }); 
     context.start(); 

     Exchange incomingExchange = new DefaultExchange(context); 
     incomingExchange.setProperty("myObject", new B() { 
     }); 

     Exchange result = context.createProducerTemplate().send("direct:camelSimpleDoesNotSeeDefaultMethod", incomingExchange); 

     Assert.assertNull(result.getException()); 
    } 

public static interface A { 
    public default String defaultMethod() { 
     return "default method result"; 
    } 
} 

public static interface B extends A { 
} 
} 

Stacktrace:

Caused by: org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to invoke method: defaultMethod on null due to: org.apache.camel.component.bean.MethodNotFoundException: Method with name: defaultMethod not found on bean: com.ub[email protected]5dafbe45 of type: com.ubs.wma.gfi.tradersbook.subscriber.DefaultMethodIsInvisibleTest$2. Exchange[][Message: [Body is null]] 
    at org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:290) 
    at org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:114) 
    ... 46 common frames omitted 
Caused by: org.apache.camel.component.bean.MethodNotFoundException: Method with name: defaultMethod not found on bean: com.ub[email protected]5dafbe45 of type: com.ubs.wma.gfi.tradersbook.subscriber.DefaultMethodIsInvisibleTest$2. Exchange[][Message: [Body is null]] 
    at org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:269) 
    at org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:183) 
    at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:159) 

Répondre

1

méthodes par défaut sur les interfaces ne sont pas explicitement AFAIR pris en charge. Vous êtes invités à se connecter un JIRA

+1

Bonjour Claus, merci pour une réponse rapide. CAMEL-11178 – Yamahar1sp