Hi all! I am trying to emulate file resource injection (like Spring @Value) in CDI 1.1 using custom qualifier annotation @FileResource. So i have the following code:
@MessageDriven(activationConfig = {@ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "jms/queue/RegistrationQueue")})
public class RegistrationQueueProcessor implements MessageListener {
@Inject
@FileResource("/mail-templates/registration-mail.tpl")
File mailTemplateFile;
@Override
public void onMessage(Message message) {
//send mail
}
}
@Singleton(name = "resourceManager")
public class ResourceManager {
@Produces
@FileResource
public File fileResourceInjector(InjectionPoint p) {
String resourcePath = p.getAnnotated().getAnnotation(FileResource.class).value();
return loadFileResource(resourcePath);
}
}
On server startup i am getting an exception
WELD-001408: Unsatisfied dependencies for type File with qualifiers @FileResource
at injection point [BackedAnnotatedField] @Inject @FileResource com.teamba.security.registration.RegistrationQueueProcessor.mailTemplateFile
at com.teamba.security.registration.RegistrationQueueProcessor.mailTemplateFile(RegistrationQueueProcessor.java:0)
WELD-001475: The following beans match by type, but none have matching qualifiers:
- Producer Method [File] with qualifiers [@FileResource @Any] declared as [[BackedAnnotatedMethod] @Produces @FileResource public com.mysite.cdi.ResourceManager.fileResourceInjector(InjectionPoint)],
- Producer Method [File] with qualifiers [@BatchProperty @Any] declared as [[UnbackedAnnotatedMethod] @Produces @BatchProperty public org.jberet.creation.BatchBeanProducer.getFile(InjectionPoint)]
I dont understand why it is happening. If there something wrong with EJB/CDI context intersection?
WildFly 8.1.0.CR1 (Weld 2.1.2)
Thanx in advance. I would appreciate any help..