On 11/10/2010 03:42 AM, Anas Mughal wrote:
I have setup my DAO as a Tapestry service in the AppModule as:
public class AppModule
   {
      public static void bind(ServiceBinder binder)
      {
        binder.bind(BranchDAO.class, BranchHibernateDAO.class);

      }
   }
Then, I try to inject the session as follows: public class BranchHibernateDAO implements BranchDAO {

      @Inject
      private Session session;


@SuppressWarnings("unchecked")
      public Object find( Class c , BigDecimal id)
      {
        return session.get(c, id);
      }

   }
I still get a NULL session.






Following the suggestion by Kalle, I injected the session to a page. Then, 
passed the session to my DAO in the contructor. That worked! However, I would 
rather keep the code cleaner by injecting the session directly into the DAO.
To use the DAO, you will want the following setup.

public class BranchHibernateDAO implements BranchDAO {

    private Session session;

    public BranchHibernateDAO(Session session){

        this.session = session;

    }

    ...

}


then in your page class:

@Inject

private BranchHibernateDAO bhdao;


You do not need to initialize the BranchHibernateDAO yourself. Tapestry-IoC will initialize the BranchHibernateDAO lazily behind the scenes the first time you access it in the web application. In this case, that would be when you navigate to the page relating to your page class, where the DAO is injected.

The convention for services, is that when they are setup in the bind method of the AppModule (or whatever your module is called), Tapestry will "inject" the appropriate objects to its constructor when it initializes the service.

This convention will keep your page classes cleaner.
Any suggestion would be greatly appreciated.
--- On Wed, 11/10/10, Kalle Korhonen<kalle.o.korho...@gmail.com>  wrote:


From: Kalle Korhonen<kalle.o.korho...@gmail.com>
Subject: Re: session is NULL
To: "Tapestry users"<users@tapestry.apache.org>
Date: Wednesday, November 10, 2010, 1:48 AM


@Inject is for pages. Make your DAO a Tapestry service and inject the
session to it via its constructor.

Kalle


On Tue, Nov 9, 2010 at 9:52 PM, Anas Mughal<anasmug...@yahoo.com>  wrote:
I have setup my Tapestry project using the Maven archetype. Then, I setup my 
hibernate.cfg.xml file with references to my hibernate mapping files. (I am not 
using annotations for hibernate.)

Now, I have setup a simple DAO object to try to retrieve an object from the 
database:

public class BranchDAO {

     @Inject
     private Session session;

     @SuppressWarnings("unchecked")
     public Object find( Class c , BigDecimal id)
     {
         return  session.get(c, id);  // session is NULL here
     }
}


I get a NULL pointer exception because my session does not seem to be
  initialized.

Searching online, I came accross:
http://wiki.apache.org/tapestry/SessionPagePersistence

I have not setup any hivemind configuration or any of the suggested classes on 
that wiki page. Please advise me what do I need to be able to fetch objects 
using Tapestry-Hibernate. I don't know where to place the hivemind 
configuration file -- if I need it.

I am new to Tapestry. Please bear with me.

Thank you for your kind assistance.
--Anas Mughal
http://anas-mughal.com





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org







---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to