Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdi-dev] Question about CDI Behavior with Extensions in CDI-Lite and CDI-Full Environments

Hey, how are you?

You were right. It was a mistake on my side.

Thank you.


On Mon, Aug 21, 2023 at 3:27 PM Ladislav Thon <lthon@xxxxxxxxxx> wrote:
The generated class clearly has a bean defining annotation, so an extension should not be necessary. Why do you think you need the extension? What doesn't work without it?

Thanks,

LT

On Mon, Aug 21, 2023 at 4:04 PM Otavio Santana via cdi-dev <cdi-dev@xxxxxxxxxxx> wrote:

Hello everyone,

I hope you are doing well. I am currently working with CDI (Contexts and Dependency Injection) in both CDI-Lite and CDI-Full environments, and I have encountered an issue that I am seeking assistance with. I have followed the CDI specification and have used a Java Annotation processor to generate code.

Here’s a simplified example of what I have done:

  1. I have an interface called ProductRepository annotated with @Repository.
@Repository
public interface ProductRepository extends PageableRepository<Product, String> {
}
  1. Using a Java Annotation processor, the implementation class ProductRepositoryLiteDocument is generated:
@Generated(value= "JNoSQL Lite Document Repository Generator", date = "2023-08-15T11:04:47.536505")
@jakarta.enterprise.context.ApplicationScoped
@jakarta.enterprise.inject.Default
@org.eclipse.jnosql.mapping.Database(value = org.eclipse.jnosql.mapping.DatabaseType.DOCUMENT)
public class ProductRepositoryLiteDocument implements org.jnosql.demo.se.ProductRepository {
}
  1. I’ve also added a BuildCompatibleExtension called LiteBeanExtension to register the class implementation:
public class LiteBeanExtension implements BuildCompatibleExtension {
    @Discovery
    public void addBeans(ScannedClasses classes) {
        classes.add("org.jnosql.demo.se.ProductRepositoryLiteDocument");
    }
}

However, when I attempt to run my application to the CDI-full, I encounter the following exception related to ambiguous dependencies:

Exception in thread "main" org.jboss.weld.exceptions.AmbiguousResolutionException: WELD-001335: Ambiguous dependencies for type ProductRepository with qualifiers 
 Possible dependencies: 
  - Managed Bean [class org.jnosql.demo.se.ProductRepositoryLiteDocument] with qualifiers [@Default @Database @Any],
  - Managed Bean [class org.jnosql.demo.se.ProductRepositoryLiteDocument] with qualifiers [@Default @Database @Any]

I have consulted the CDI specification, specifically the section on Bean Class discovery, but it does not seem to address this scenario directly.

My questions are:

  1. Have I missed something in my implementation that might be causing this ambiguity issue?
  2. Given my setup, is there a known solution or best practice for ensuring compatibility with CDI-Lite and CDI-Full, specifically when working with extensions?

I appreciate any insights or guidance you can give me about this.

Thank you in advance for your help.


--

Thanks a lot,

Twitter | Linkedin | Youtube

_______________________________________________
cdi-dev mailing list
cdi-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/cdi-dev


--

Thanks a lot,

Twitter | Linkedin | Youtube


Back to the top