I have a much better understanding on this now.  Are there any plans to
support injection on LDMs, or is there a suggested work around for this?

It seems like you'd want a DAO service to get an object from the DB within
a custom model so you can return that back to your component.

_______________________________________
Stephen Walsh | http://connectwithawalsh.com


On Thu, Mar 14, 2013 at 5:03 PM, Martin Grigorov <mgrigo...@apache.org>wrote:

> Take a look at wicket-examples and the unit tests in wicket-guice module.
>
>
> On Thu, Mar 14, 2013 at 10:53 PM, Stephen Walsh <
> step...@connectwithawalsh.com> wrote:
>
> > Any other thoughts on this?
> >
> > _______________________________________
> > Stephen Walsh | http://connectwithawalsh.com
> >
> >
> > On Thu, Mar 14, 2013 at 10:30 AM, Stephen Walsh <
> > step...@connectwithawalsh.com> wrote:
> >
> > > Thanks, Martin.  I intialize here, (which I just realized is not the
> best
> > > spot):
> > >
> > >     private void setUpMongo() {
> > >         mongo = MongoUtil.getMongo();
> > >         morphia = new Morphia().map(Blog.class).map(Person.class);
> > >         blogDAO = new BlogDAO(mongo, morphia);
> > >     }
> > >
> > > I am using the Wicket Guice module, and I think your second point is
> what
> > > I was getting at.  From learning about Guice (
> > > http://www.youtube.com/watch?feature=player_embedded&v=hBVJbzAagfs), I
> > > thought the point was to initialize once and then reuse wherever
> needed.
> >  I
> > > figured initialization would happen in the application class.  Maybe
> I'm
> > > misunderstanding.  If it's supposed to happen in the application class,
> > > then I don't really have need for a module because I don't have an
> > > interface in this case, right?
> > >
> > > Thanks for the help on this.
> > >
> > > _______________________________________
> > > Stephen Walsh | http://connectwithawalsh.com
> > >
> > >
> > > On Thu, Mar 14, 2013 at 3:20 AM, Martin Grigorov <mgrigo...@apache.org
> > >wrote:
> > >
> > >> Hi,
> > >>
> > >> I don't see how you initialize blogDAO. If you don't use wicket-ioc
> > module
> > >> then you will need to lookup the DAO from the application whenever you
> > >> need
> > >> it:
> > >>
> > >> public void onSubmit() {
> > >>
> > >>   BlogDAO blogDao = MyApplication.get().getBlogDAO();
> > >>   blogDao.save(blog);
> > >> }
> > >> This way you wont keep reference to it in the page/component and it
> wont
> > >> be
> > >> serialized.
> > >>
> > >> If you use wicket-guice module then you can do:
> > >>
> > >> @Inject
> > >> private  BlogDAO blogDao;
> > >>
> > >> and use it anywhere.
> > >> Wicket will use Guice to lookup the bean at component creation but the
> > >> bean
> > >> will be wrapped in a serializable proxy. That is a lightweight proxy
> > will
> > >> be (de)serialized with the page.
> > >> This is the recommended way.
> > >> wicket-string works the same way.
> > >> wicket-cdi leaves the proxy creation to the CDI implementation.
> > >>
> > >>
> > >>
> > >> On Thu, Mar 14, 2013 at 5:19 AM, Stephen Walsh <
> > >> step...@connectwithawalsh.com> wrote:
> > >>
> > >> > I'm attempting to implement Guice for my DAO connections as my JBoss
> > >> server
> > >> > keeps running out of memory.  Not entirely sure why that is, but I'm
> > >> hoping
> > >> > this is at least part of it.  I read through
> > >> > http://markmail.org/message/sz64l4eytzc3ctkh and understand why the
> > DAO
> > >> > needs to be serialized, and I also followed
> > >> >
> > >> >
> > >>
> >
> https://cwiki.apache.org/confluence/display/WICKET/Wicket%2C+Guice+and+Ibatis+exampleto
> > >> > try and figure out where and how exactly to inject my DAO.
> > >> >
> > >> > My DAO already extends a basic DAO class that has all of the basics
> > for
> > >> > getting stuff from the database.  Neither of these are interfaces
> (not
> > >> sure
> > >> > if this is a problem or not).  My DAO works just fine in panels, but
> > as
> > >> > soon as it's on a page, it throws the not seralizable exception.
> > >> >  Regardless it doesn't really solve the problem of really only
> needing
> > >> one
> > >> > DAO for the whole application instead of creating one whenever it's
> > >> needed
> > >> > in every place that it's needed.  If I understand dependency
> > injection,
> > >> > then this is the whole point.
> > >> >
> > >> > Here's my class.  Hopefully someone can point me in the right
> > direction
> > >> for
> > >> > this page and my application class:
> > >> >
> > >> > public class EditBlogEntry extends BasePage {
> > >> >
> > >> >     private Logger logger =
> > >> LoggerFactory.getLogger(EditBlogEntry.class);
> > >> >
> > >> >     private Mongo mongo;
> > >> >     private Morphia morphia;
> > >> >     private BlogDAO blogDAO;
> > >> >
> > >> >     public EditBlogEntry(final Blog blogEntry) {
> > >> >  // Add edit blogPost form to page
> > >> >         Form<?> form = new Form("form");
> > >> >         form.add(new Button("postIt") {
> > >> >             @Override
> > >> >             public void onSubmit() {
> > >> >                 // This merely gets a new mongo instance that has my
> > >> blog
> > >> > entry mapped by morphia for saving the whole POJO to mongo
> > >> >                 setUpMongo();
> > >> >                 blogDAO.save(blogEntry);
> > >> >                 BlogEntryDetails details = new BlogEntryDetails(new
> > >> > PageParameters().add("id", blogEntry.getObjectId().toString()));
> > >> >                 setResponsePage(details);
> > >> >             }
> > >> >         });
> > >> >
> > >> >         LoadableDetachableModel ldm = new LoadableDetachableModel()
> {
> > >> >             @Override
> > >> >             protected Object load() {
> > >> > //                TODO need to set athr only on new blogEntry
> > >> >
> > blogEntry.setAthr(CampingAwaitsSession.get().getUser());
> > >> >                 return blogEntry;
> > >> >             }
> > >> >         };
> > >> >
> > >> >         form.add(new BlogEntryPanel("blogEntry", new
> > >> > CompoundPropertyModel<Blog>(ldm)));
> > >> >         add(form);
> > >> >
> > >> > }
> > >> >
> > >> > Any thoughts?  I feel like I understand the concept but the
> > >> implementation
> > >> > is throwing me.
> > >> >
> > >> > _______________________________________
> > >> > Stephen Walsh | http://connectwithawalsh.com
> > >> >
> > >>
> > >>
> > >>
> > >> --
> > >> Martin Grigorov
> > >> jWeekend
> > >> Training, Consulting, Development
> > >> http://jWeekend.com <http://jweekend.com/>
> > >>
> > >
> > >
> >
>
>
>
> --
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com <http://jweekend.com/>
>

Reply via email to