openwebbeans-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Arne Limburg <arne.limb...@openknowledge.de>
Subject AW: Decorators with generic type-arguments
Date Wed, 20 Apr 2011 15:33:26 GMT
Hi Joe,

you are right, but I think the spec is clear enough here. The delegate has to have the same
type parameters as the decorator and the decorated bean has to match the delegate in clearly
specified way.
So the following all should work:
@Decorator
public class TestDecorator implements GenericInterface {
  @Inject @Any @Delegate
  private GenericInterface delegate;
}

@Decorator
public class TestDecorator implements GenericInterface<?> {
  @Inject @Any @Delegate
  private GenericInterface<?> delegate;
}

@Decorator
public class TestDecorator<T> implements GenericInterface<T> {
  @Inject @Any @Delegate
  private GenericInterface<T> delegate;
}

@Decorator
public class TestDecorator implements GenericInterface<ConcreteClass> {
  @Inject @Any @Delegate
  private GenericInterface<ConcreteClass> delegate;
}

I am afraid, that all does not work with OWB. I have tracked it down to the ClassUtil.setInterfaceTypeHierarchy.
It does not respect actual type-arguments.
I create a Jira-Issue and try to provide a fix for this.

Regards,
Arne

Von: Joseph Bergmark [mailto:bergmark@gmail.com]
Gesendet: Mittwoch, 20. April 2011 17:10
An: user@openwebbeans.apache.org
Betreff: Re: Decorators with generic type-arguments

I took a quick look at the spec, I didn't find much at all about Decorators with generic types.
 The only snippet I found was in 8.1.3, where it basically says that if the Decorated type
is a parameterized type, then the delegate type has to have the same type parameters as the
decorated type, otherwise it is a definition error.

It seems to me there is probably an OWB bug here, but the spec doesn't provide a lot of guidance
beyond the single definition error.

Sincerely,

Joe

On Wed, Apr 20, 2011 at 9:40 AM, Arne Limburg <arne.limburg@openknowledge.de<mailto:arne.limburg@openknowledge.de>>
wrote:
Hi,

Currently I try to get a Decorator working, that decorates an interface with a generic type
argument. Although the Spec is quite clear about how to handle this (in 8.3.1) I am afraid,
OpenWebBeans cannot handle it:

This is the scenario

@Decorator
public class TestDecorator<A extends Annotation> implements GenericInterface<A>
{
  @Inject @Any @Delegate
  private GenericInterface<A> delegate;
}

public class TestBean implements GenericInterface<Scope> {
  ...
}

I have tried various combinations of actual type arguments in the Decorator (like Wildcard,
raw type, ...). The above leads to a definition error. Some other combinations lead to a behavior
where the Decorator is not applied. Even declaring the Decorator with the same actual type
variable (Scope in the example) does not work?
Would you consider this a bug or do I read the spec wrong and this is not supported.

Shall I fill a Jira Issue?

Regards,
Arne

--

Arne Limburg - Enterprise Architect
open knowledge GmbH, Oldenburg
Bismarckstraße 13, 26122 Oldenburg
Mobil: +49 (0) 151 108 22 942<tel:%2B49%20%280%29%20151%20108%2022%20942>
Tel: +49 (0) 441 - 4082-0<tel:%2B49%20%280%29%20441%20-%204082-0>
Fax: +49 (0) 441 - 4082-111<tel:%2B49%20%280%29%20441%20-%204082-111>
arne.limburg@openknowledge.de<mailto:arne.limburg@openknowledge.de>
http://www.openknowledge.de

Registergericht: Amtsgericht Oldenburg, HRB 4670
Geschäftsführer: Lars Röwekamp, Jens Schumann



Mime
View raw message