2009/11/13 Niclas Hedhman <[email protected]> > And > > public interface AddressValue extends Address, ValueComposite > {} > > > ?? > oh, yes
> > On Fri, Nov 13, 2009 at 5:07 PM, Jacek Sokulski <[email protected]> > wrote: > > Hello, > > I have encountered a problem with ValueComposite persistence, i.e > > Property<VC> is not persisted. > > Here is the code: > > Value composite: > > @Mixins(Address.AddressMixin.class) > > public interface Address { > > String street(); > > String zipcode(); > > String city(); > > String country(); > > String asString(); > > > > interface AddressState { > > Property<String> street(); > > Property<String> city(); > > Property<String> zipcode(); > > Property<String> country(); > > } > > > > class AddressMixin implements Address{ > > @This AddressState state; > > public String city() { > > return state.city().get(); > > } > > > > public String country() { > > return state.country().get(); > > } > > > > public String street() { > > return state.street().get(); > > } > > > > public String zipcode() { > > return state.zipcode().get(); > > } > > public String asString(){ > > return "country: " + country(); > > } > > } > > } > > > > Entity Composite: > > @Mixins(Lead.LeadMixin.class) > > public interface Lead > > { > > String name(); > > Address address(); > > void remove(); > > String asString(); > > > > public interface LeadState > > { > > Property<String> name(); > > Property<Boolean> isActive(); > > Property<AddressValue> address(); > > } > > > > public class LeadMixin implements Lead { > > @This LeadState state; > > Property<Boolean> isActive; > > public void remove() { > > isActive.set(false); > > } > > public Address address() { > > return state.address().get(); > > } > > public String name() { > > return state.name().get(); > > } > > > > public String asString(){ > > return "Name: " + name() + ", Address: " + > address().asString(); > > } > > } > > > > } > > > > VC creation: > > @Mixins(AddressFactory.AddressFactoryMixin.class) > > public interface AddressFactory { > > Address create(String country, String city, String street, String > > zipcode); > > > > class AddressFactoryMixin implements AddressFactory { > > @Structure ValueBuilderFactory vbf; > > > > public Address create(String country, String city, String street, > > String zipcode) { > > ValueBuilder<Address> builder = > > vbf.newValueBuilder(Address.class); > > AddressState addressState = > > builder.prototypeFor(AddressState.class); > > addressState.country().set(country); > > addressState.city().set(city); > > addressState.street().set(street); > > addressState.zipcode().set(zipcode); > > Address address = builder.newInstance(); > > return address; > > } > > > > } > > } > > > > EC creation: > > @Mixins(LeadFactory.LeadFactoryMixin.class) > > public interface LeadFactory { > > Lead create(String name, Address address); > > > > class LeadFactoryMixin implements LeadFactory { > > @Structure > > UnitOfWorkFactory uowf; > > > > public Lead create(String name, Address address) { > > UnitOfWork uow = uowf.currentUnitOfWork(); > > EntityBuilder<Lead> builder = > uow.newEntityBuilder(Lead.class); > > Lead.LeadState state = > > builder.instanceFor(Lead.LeadState.class); > > state.name().set(name); > > state.address().set((AddressValue)address); > > state.isActive().set(true); > > return builder.newInstance(); > > } > > } > > } > > > > Lead properties isActive and name are persisted but address not. > > > > Jacek > > > > > > > > > > _______________________________________________ > > qi4j-dev mailing list > > [email protected] > > http://lists.ops4j.org/mailman/listinfo/qi4j-dev > > > > > > > > -- > Niclas Hedhman, Software Developer > http://www.qi4j.org - New Energy for Java > > I live here; http://tinyurl.com/2qq9er > I work here; http://tinyurl.com/2ymelc > I relax here; http://tinyurl.com/2cgsug > > _______________________________________________ > qi4j-dev mailing list > [email protected] > http://lists.ops4j.org/mailman/listinfo/qi4j-dev >
_______________________________________________ qi4j-dev mailing list [email protected] http://lists.ops4j.org/mailman/listinfo/qi4j-dev

