[jbosstools-issues] [JBoss JIRA] (JBIDE-18039) Support DeltaSpike's PartialBean dynamically implemented interfaces and Data repositories

Ron Šmeral (JIRA) issues at jboss.org
Mon Aug 4 11:01:30 EDT 2014


     [ https://issues.jboss.org/browse/JBIDE-18039?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ron Šmeral updated JBIDE-18039:
-------------------------------

           Description: 
JBDS currently shows _No bean is eligible for injection to the injection point_ for injection points which are implemented using DeltaSpike's PartialBean extension. This also affects DeltaSpike's Data module, which is based on PartialBean.

The injection point: 
{code:java|title=QueryServiceTest.java}
@Inject
private PersonQueryService personQueryService;
{code}

The injected interface:
{code:java|title=PersonQueryService.java}
@RequestScoped
@QueryServiceBinding
public interface PersonQueryService {
...
{code}

A partial bean binding annotation:
{code:java|title=QueryServiceBinding.java}
@PartialBeanBinding
@Target(TYPE)
@Retention(RUNTIME)
public @interface QueryServiceBinding {
}
{code}

The handler:
{code:java|title=QueryServicePartialBean.java}
@RequestScoped
@QueryServiceBinding
public class QueryServicePartialBean implements InvocationHandler {
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
...
{code}

There's no implementing class directly in the project, and that's what JBDS is complaining about. The interface is implemented dynamically, using an extension which looks for:
* interfaces and abstract classes annotated with a partial bean binding
* invocation handlers which handle calls to methods of those interfaces 

and then adds beans for those interfaces in the ABD phase.

The same goes for DS Data module's {{@Repository}} ( = a partial bean binding) beans.

JBDS should not show the no-bean-eligible warning for dynamically implemented interfaces or for DS Data repositories and should instead point to the invocation handler associated with those interfaces through the partial bean binding.

  was:
JBDS currently shows _No bean is eligible for injection to the injection point_ for injection points which are implemented using DeltaSpike's PartialBean extension. This also affects DeltaSpike's Data module, which is based on PartialBean.

This can be seen e.g. in the deltaspike-partialbean-advanced quickstart: https://github.com/jboss-developer/jboss-wfk-quickstarts/tree/2.7.x-develop/deltaspike-partialbean-advanced

The injection point: 
{code:java|title=QueryServiceTest.java}
@Inject
private PersonQueryService personQueryService;
{code}

The injected interface:
{code:java|title=PersonQueryService.java}
@RequestScoped
@QueryServiceBinding
public interface PersonQueryService {
...
{code}

A partial bean binding annotation:
{code:java|title=QueryServiceBinding.java}
@PartialBeanBinding
@Target(TYPE)
@Retention(RUNTIME)
public @interface QueryServiceBinding {
}
{code}

The handler:
{code:java|title=QueryServicePartialBean.java}
@RequestScoped
@QueryServiceBinding
public class QueryServicePartialBean implements InvocationHandler {
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
...
{code}

There's no implementing class directly in the project, and that's what JBDS is complaining about. The interface is implemented dynamically, using an extension which looks for:
* interfaces and abstract classes annotated with a partial bean binding
* invocation handlers which handle calls to methods of those interfaces 

and then adds beans for those interfaces in the ABD phase.

The same goes for DS Data module's {{@Repository}} ( = a partial bean binding) beans.

JBDS should not show the no-bean-eligible warning for dynamically implemented interfaces or for DS Data repositories and should instead point to the invocation handler associated with those interfaces through the partial bean binding.

    Steps to Reproduce: Import the deltaspike-partialbean-advanced quickstart: https://github.com/jboss-developer/jboss-wfk-quickstarts/tree/2.7.x-develop/deltaspike-partialbean-advanced


> Support DeltaSpike's PartialBean dynamically implemented interfaces and Data repositories
> -----------------------------------------------------------------------------------------
>
>                 Key: JBIDE-18039
>                 URL: https://issues.jboss.org/browse/JBIDE-18039
>             Project: Tools (JBoss Tools)
>          Issue Type: Bug
>          Components: cdi-extensions
>         Environment: JBDS 8.0.0.Beta3
>            Reporter: Ron Šmeral
>
> JBDS currently shows _No bean is eligible for injection to the injection point_ for injection points which are implemented using DeltaSpike's PartialBean extension. This also affects DeltaSpike's Data module, which is based on PartialBean.
> The injection point: 
> {code:java|title=QueryServiceTest.java}
> @Inject
> private PersonQueryService personQueryService;
> {code}
> The injected interface:
> {code:java|title=PersonQueryService.java}
> @RequestScoped
> @QueryServiceBinding
> public interface PersonQueryService {
> ...
> {code}
> A partial bean binding annotation:
> {code:java|title=QueryServiceBinding.java}
> @PartialBeanBinding
> @Target(TYPE)
> @Retention(RUNTIME)
> public @interface QueryServiceBinding {
> }
> {code}
> The handler:
> {code:java|title=QueryServicePartialBean.java}
> @RequestScoped
> @QueryServiceBinding
> public class QueryServicePartialBean implements InvocationHandler {
>     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
> ...
> {code}
> There's no implementing class directly in the project, and that's what JBDS is complaining about. The interface is implemented dynamically, using an extension which looks for:
> * interfaces and abstract classes annotated with a partial bean binding
> * invocation handlers which handle calls to methods of those interfaces 
> and then adds beans for those interfaces in the ABD phase.
> The same goes for DS Data module's {{@Repository}} ( = a partial bean binding) beans.
> JBDS should not show the no-bean-eligible warning for dynamically implemented interfaces or for DS Data repositories and should instead point to the invocation handler associated with those interfaces through the partial bean binding.



--
This message was sent by Atlassian JIRA
(v6.2.6#6264)



More information about the jbosstools-issues mailing list