I don't know of any, Stuart or others may have some thoughts though.

On Tue, Dec 6, 2011 at 12:13, José Rodolfo Freitas <joserodolfo.freitas@gmail.com> wrote:
Hey guys, how you doing?

I'm trying to achieve something that might be impossible, but before concluding that, I'd like to ask you, CDI gurus!

I have the following class:

public class Foo<T> {

    public TypedQuery<T> getQuery(){

    }

}

As you can Imagine, inside my getQuery method, I'd have to use "T.class" to make it TypedQuery. which is impossible due java generics type erasure.

so I'd have to build a private field to hold the t.class for me.

public class Foo<T> {

    private Class<T> klass;

    public TypedQuery<T> getQuery(){

    }
    
    public void setKlass(Class<T> klass){
        this.klass = klass;
    }
}

The problem is that forcing this 'setKlass' feels very ugly to the api, and it's not very error prone, since one could easily forget to set this configuration.

So I had an Idea: force the setKlass inside the constructor:

public class Foo<T> {

    private Class<T> klass;
    
    public Foo(Class<T> klass){
        this.klass = klass;
    }

    public TypedQuery<T> getQuery(){

    }

}

Unfortunatelly, this breaks cdi, since it cannot inject it anymore. At least AFAIK.

So, is there a way out of this? maybe using a secret solder feature?

_______________________________________________
seam-dev mailing list
seam-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/seam-dev




--
Jason Porter
http://lightguard-jp.blogspot.com
http://twitter.com/lightguardjp

Software Engineer
Open Source Advocate
Author of Seam Catch - Next Generation Java Exception Handling

PGP key id: 926CCFF5
PGP key available at: keyserver.net, pgp.mit.edu