Estoy tratando de hacer algo simple. Inyecte calificado String
(o File
) en CDI.Inyectar cadena con calificador en CDI
Así que tener un calificador:
@Retention(RetentionPolicy.RUNTIME)
@Target({FIELD,METHOD,PARAMETER,TYPE})
@Qualifier
public @interface FilesRepositoryPath {}
tengo un productor:
public class FilesRepositoryPathProducer {
@Produces
@FilesRepositoryPath
public String getRepositoryDirectory() {
return "path.taken.from.configuration";
}
}
Y yo estoy tratando de usarlo:
@ApplicationScoped
public class FilesRepository {
@Inject
public FilesRepository(@FilesRepositoryPath String filesDirectory) {
//Do some stuff
}
}
Sin embargo, soldadura no puede crear una instancia este frijol Me estoy haciendo una excepción:
org.jboss.arquillian.impl.event.FiredEventException: org.jboss.weld.exceptions.UnproxyableResolutionException: WELD-001410 The injection point [field] @Inject private za.co.fnb.commercial.dms.file.FilesRepositoryBeanTest.repo has non-proxyable dependencies
Sé String
es unproxable, pero ¿por qué SOLDADURA quiere crear un proxy? Tiene el alcance @Dependent
, por lo que AFAIK no debería crear proxy de todos modos. ¿Cómo puedo hacer que funcione?
Se puede publicar 'FilesRepositoryBeanTest' por favor? –
presenta un problema en Weld. El código parece correcto según la especificación. – Bozho
Eche un vistazo aquí: http://stackoverflow.com/questions/7583871/injecting-a-named-string-using-cdi, parece ser un problema similar – Kris