I don't really like that idea, as it means that forge then becomes part of your build process. 

With the @AutoHome it should not really matter about IDE auto completion, the idea is to just register a bean that allows you to lookup beans by ID from the EL.

The underlying bean would probably look like:

public class AutoHomeBean<T,ID> {

  private ID id; 
  private T instance; 
  void setId(ID id) {
  if(!this.id.equals(id) ) { //need NPE check as well
   this.instance = null;
   this.id = id;


 ID getId() //getter;

 public T getInstance() {
   if(instance == null && id != null) {
    instance = em.find(...);
  return instance 

Then if you put the AutoHome annotation on MyEntity you would get a MyEntityHome bean being registered, and you could then do things like:



Not sure how practical / useful it will be in practice, but that was the basic idea.


On 22/09/2011, at 8:19 AM, Dan Allen wrote:

True. I don't really see the problem with having an object that extends a base object, even if it has no additional methods.

...and if that is the solution, then the @AutoCrud could be a hint to forge to generate that class if it doesn't yet exist. Now that's an idea :)


On Wed, Sep 21, 2011 at 18:17, Jason Porter <lightguard.jp@gmail.com> wrote:
That's good at the runtime, but develop time that really doesn't help because it won't compile and you won't get IDE auto complete.

On Wed, Sep 21, 2011 at 16:10, Dan Allen <dan.j.allen@gmail.com> wrote:

You also previous mentioned...

With portable extensions we could do something like:
public class MyEntity ....

and have a portable extension that registers a new home bean for every entity with the @AutoHome annotation.

I think we all agree that "Home" is a crappy name, so perhaps @Crud or @Dao would be a sufficient name.


On Tue, Sep 20, 2011 at 22:15, Stuart Douglas <stuart.w.douglas@gmail.com> wrote:
My original plan for EntityQuery was to use the ServiceHandler stuff in solder:

public interface MyQuery {

  @Query("Select u from User u where type=:p1")
  public List<User> users(String type);



On 09/21/2011 06:00 AM, Josť Rodolfo Freitas wrote:
Yeah, I agree that being declarative is the ideal.
let's say no to inheritance with generics! hehehe.

On Tue, Sep 20, 2011 at 4:41 PM, Dan Allen <dan.j.allen@gmail.com> wrote:
On Tue, Sep 20, 2011 at 15:36, Josť Rodolfo Freitas <joserodolfo.freitas@gmail.com> wrote:
What I like most in CDI and Seam3 is that it's very easy to keep things simple and that's something I strongly advocate. 

Of course there're still boilerplate code, but I think it's minimal (compared to the JEE generations before), and that's something forge can create without the need to satisfy a "framework". Yes, I admitedly am afraid of that word.

That's fine, it doesn't have to be a framework. I do think there is room for having some common scaffolding, though. If we can do that by extending the programming model (annotations, generic beans or interfaces) so that it's declarative, that's probably ideal.

I suggest that we brainstorm proposals using gists (http://gist.github.com). That will get the ball rolling. We can start with the idea Jason posted, or feel free to take a different approach.


Dan Allen
Principal Software Engineer, Red Hat | Author of Seam in Action
Registered Linux User #231597

_______________________________________________ seam-dev mailing list

Dan Allen
Principal Software Engineer, Red Hat | Author of Seam in Action
Registered Linux User #231597

seam-dev mailing list

Jason Porter

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

Dan Allen
Principal Software Engineer, Red Hat | Author of Seam in Action
Registered Linux User #231597