Before I report this in JIRA as a bug in Camel 2.6.0, I want to make sure
what I'm trying to do is actually supported.
When I use @EndpointInject in a bean in my spring app context, the endpoint
gets injected no problem on either a ProducerTemplate or Endpoint. But when
I use @EndpointInject on a *SUPERCLASS* of my bean(s), the endpoint does NOT
get injected and I end up getting a NullPointerException when I try to use
it.
Pseudo-code below...please let me know if what I'm trying to do should be
supported. I believe this is a bug in the annotation processor, where it's
not processing superclasses.
// ================= THIS WORKS:
@Component
public class AllGood {
@Autowired
ProducerTemplate producerTemplate;
@EndpointInject(uri="activemq:queue:my.queue")
Endpoint myQueue;
public void send() {
producerTemplate.sendBody(myQueue, "body");
}
}
// ================= THIS ALSO WORKS:
@Component
public class AllGood {
@EndpointInject(uri="activemq:queue:my.queue")
ProducerTemplate producerTemplate;
public void send() {
producerTemplate.sendBody("body");
}
}
// ================= THIS DOES NOT WORK:
public abstract class BaseClass {
@Autowired
ProducerTemplate producerTemplate;
@EndpointInject(uri="activemq:queue:my.queue")
Endpoint myQueue;
public void send() {
producerTemplate.sendBody(myQueue, "body");
}
}
@Component
public class SubClass1 extends BaseClass {
public void doSomeStuff() {
send();
}
}
// ================= NEITHER DOES THIS:
public abstract class BaseClass {
@EndpointInject(uri="activemq:queue:my.queue")
ProducerTemplate producerTemplate;
public void send() {
producerTemplate.sendBody("body");
}
}
@Component
public class SubClass2 extends BaseClass {
public void doSomeStuff() {
send();
}
}
// =========================
Thanks,
Dan