Martin, You are very welcome.
Depending on whether there is a difference between an empty embedded object versus a missing embedded object (is the address missing, or is it blank?), there is another trick that makes NPE avoidance much easier. You can add a dummy property (like boolean dummy = false;) to your embedded object to force Hibernate to instantiate it. I've done this before for a UserProfile embedded in a Person object. It means you have a database column that serves no real purpose but it also means you never have to worry about the embedded object being null after Hibernate retrieval. Jonathan > -----Original Message----- > From: Kheldar666 [mailto:[EMAIL PROTECTED] > Sent: Sunday, February 03, 2008 5:49 PM > To: users@tapestry.apache.org > Subject: RE: [T5] ASO, BeanEditor and Interfaces > > > Yes ! that was it :) > > I indeed had an embedded Address with all fields empty ^^. Thank you very > much to both of you :) ! > > I owe you at least a beer :) > > Regards > > Martin > > > > Jonathan Barker wrote: > > > > Martin, > > > > I'm a bit confused about what you are trying to accomplish, but maybe I > > can > > toss out some ideas. > > > > If you have loaded a User object via Hibernate: > > > > Scenario 1: embedded Address > > If the embedded address is all null / empty fields, then the Address > > reference in User will be null. You may want to make sure the Address > > field > > is set before rendering. I've hit this before and had to set the > address > > (if null then new) immediately after loading from hibernate. > > > > Scenario 2: linked Address > > The same problem as Scenario 1 will apply, plus you could run into > > problems > > if the User was loaded in an earlier session trying to follow the old > > Address proxy. > > > > You may also want to look into the ASO documentation - specifically the > > section at the bottom for ASO's requiring configuration. You could make > > sure your address is non-null there. > > http://tapestry.apache.org/tapestry5/tapestry-core/guide/appstate.html > > > > Also, you can make sure your UserImpl constructor instantiates an empty > > Address object. > > > > Jonathan > > > > > >> -----Original Message----- > >> From: Kheldar666 [mailto:[EMAIL PROTECTED] > >> Sent: Sunday, February 03, 2008 1:53 PM > >> To: users@tapestry.apache.org > >> Subject: Re: [T5] ASO, BeanEditor and Interfaces > >> > >> > >> Heu... > >> > >> I allready have a full Hibernate/Spring instantiation system that works > >> perfectly well :-) . > >> > >> I'm not trying to instanciate a Bean via Tapestry. I try to edit one > that > >> is > >> allready loaded. > >> > >> The problem for me comes from Tapestry beanEditor that tries -I think- > to > >> create an empty bean using the interface Address instead of AddressImpl > >> when > >> it creates is BeanModel. > >> > >> Maybe be I dont know how to explain my problem clearly enought... > Sorry. > >> > >> Thank you for your help :) > >> > >> Martin > >> > >> > >> Sven Homburg wrote: > >> > > >> > i think you missunderstood completely the sense of hibernate entities > >> > and IOC serices. > >> > > >> > in your case i think it makes more sense to let instantiate the > enties > >> > by a factory class > >> > please read http://www.hibernate.org/328.html > >> > > >> > 2008/2/3, Kheldar666 <[EMAIL PROTECTED]>: > >> >> > >> >> Well by adding this to my module : > >> >> > >> >> public static void bind(ServiceBinder binder){ > >> >> binder.bind(User.class, UserImpl.class); > >> >> binder.bind(Address.class, AddressImpl.class); > >> >> } > >> >> > >> >> I solved the User instanciation problem. But It didn't solve the > >> Address > >> >> instanciation problem. > >> >> > >> >> In fact User model have an Address property. I want to user > >> BeanEditForm > >> >> to > >> >> Edit both the User and is Address. This is the component : > >> >> > >> >> <t:beanEditForm t:object="user"> > >> >> <t:parameter name="address"> > >> >> <fieldset> > >> >> <legend>Address</legend> > >> >> <t:beanEditor object="user.address" /> > >> >> </fieldset> > >> >> </t:parameter> > >> >> </t:beanEditForm> > >> >> > >> >> I set this in the AppModule for my address field can be detected by > >> the > >> >> BeanEditor : > >> >> > >> >> public static void > >> >> contributeDefaultDataTypeAnalyzer(MappedConfiguration<Class<?>, > >> String> > >> >> configuration) { > >> >> configuration.add(Address.class, "address"); > >> >> } > >> >> > >> >> And I stiil have the InstantiationException. If I make direct > >> reference > >> >> to > >> >> the implementation classes that works fine (but I don't want to do > it > >> >> that > >> >> way). > >> >> > >> >> I tried configuration.add(AddressImpl.class, "address"); but it does > >> not > >> >> work at all because tapestru can't detect the Address field in User > >> bean. > >> >> > >> >> Any ideas ? > >> >> > >> >> Regards, > >> >> > >> >> Martin > >> >> > >> >> > >> >> > >> >> > >> >> Sven Homburg wrote: > >> >> > > >> >> > this should help you > >> >> > http://wiki.apache.org/tapestry/Tapestry5HowToIocAndHibernate > >> >> > > >> >> > 2008/2/3, Kheldar666 <[EMAIL PROTECTED]>: > >> >> >> > >> >> >> Hi Everybody, > >> >> >> > >> >> >> I was wondering if ASO and BeanEditor can work with Interfaces ? > At > >> >> the > >> >> >> first sight it seems not possible. > >> >> >> > >> >> >> Let's say I have this Interface and Classes : > >> >> >> > >> >> >> public interface User { > >> >> >> public int getId(); > >> >> >> public void setId(int id); > >> >> >> public String getName(); > >> >> >> public void setName(String name); > >> >> >> } > >> >> >> > >> >> >> public class UserImpl implements User { > >> >> >> //An implementation with Hibernate annotation for > instance > >> >> >> } > >> >> >> > >> >> >> Everywhere in Tapestry we use Interfaces for the IoC. But if I > >> declare > >> >> >> somewhere : > >> >> >> > >> >> >> > >> >> >> @ApplicationState > >> >> >> private User _user > >> >> >> > >> >> >> > >> >> >> I have an InstanciationException (witch is normal, because > Tapestry > >> >> have > >> >> >> no > >> >> >> way to guess that it should instanciate UserImpl and it tries to > >> >> >> instanciate > >> >> >> an Interface). > >> >> >> > >> >> >> So my question is : is there a way to tell Tapestry to > instanciate > >> the > >> >> >> right > >> >> >> class and not the Interface (may be via contributing to some > >> Service > >> >> >> configuration or something ) ? Or should I wrote a simple data > >> object > >> >> >> that > >> >> >> can be directly instanciated and some kind of translator that > would > >> >> >> convert > >> >> >> my Data Object into the class used by my internal services ? > >> >> >> -- > >> >> >> View this message in context: > >> >> >> > >> >> http://www.nabble.com/-T5--ASO%2C-BeanEditor-and-Interfaces- > >> tp15254725p15254725.html > >> >> >> Sent from the Tapestry - User mailing list archive at Nabble.com. > >> >> >> > >> >> >> > >> >> >> > >> -------------------------------------------------------------------- > >> - > >> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> >> >> For additional commands, e-mail: [EMAIL PROTECTED] > >> >> >> > >> >> >> > >> >> > > >> >> > > >> >> > -- > >> >> > with regards > >> >> > Sven Homburg > >> >> > > >> >> > > >> --------------------------------------------------------------------- > >> >> > To unsubscribe, e-mail: [EMAIL PROTECTED] > >> >> > For additional commands, e-mail: [EMAIL PROTECTED] > >> >> > > >> >> > > >> >> > > >> >> > ----- > >> >> > best regards > >> >> > Sven > >> >> > > >> >> > >> >> -- > >> >> View this message in context: > >> >> http://www.nabble.com/-T5--ASO%2C-BeanEditor-and-Interfaces- > >> tp15254725p15255319.html > >> >> Sent from the Tapestry - User mailing list archive at Nabble.com. > >> >> > >> >> > >> >> -------------------------------------------------------------------- > - > >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> >> For additional commands, e-mail: [EMAIL PROTECTED] > >> >> > >> >> > >> > > >> > > >> > -- > >> > with regards > >> > Sven Homburg > >> > > >> > --------------------------------------------------------------------- > >> > To unsubscribe, e-mail: [EMAIL PROTECTED] > >> > For additional commands, e-mail: [EMAIL PROTECTED] > >> > > >> > > >> > > >> > ----- > >> > best regards > >> > Sven > >> > > >> > >> -- > >> View this message in context: http://www.nabble.com/-T5--ASO%2C- > >> BeanEditor-and-Interfaces-tp15254725p15256687.html > >> Sent from the Tapestry - User mailing list archive at Nabble.com. > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > -- > View this message in context: http://www.nabble.com/-T5--ASO%2C- > BeanEditor-and-Interfaces-tp15254725p15259559.html > Sent from the Tapestry - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]