Even more decisive you have to put the @Optional annotation on the
in-parameter in your interface method.

brg
/arvid

2011/3/24 Ronnie Nessa <[email protected]>

> You need to put the @Optional annotation on your method parameters.
>
> Vennlig hilsen
> Webstep AS
>
> Ronnie Nessa | Seniorkonsulent
> Tlf: +47 970 69 512 | [email protected]
>
>
> Den 24. mars 2011 kl. 13:17 skrev Dag Blakstad <[email protected]>:
>
> > Hi!
> >
> > I have this [pseudocode] that fails
> >
> > @Mixins(HasMainImageMixin.class)
> > public interface HasMainImage {
> >
> >     Attachment mainImage();
> >
> >     void changedMainImage(Attachment attachment);
> > }
> >
> > public class HasMainImageMixin implements HasMainImage {
> >
> >       interface PrivateState {
> >               @Optional Association<Attachment> attachment();
> >       }
> >
> >       @This PrivateState state;
> >
> > public void changedMainImage(Attachment attachment) {
> >         if (attachment == null) {
> >             state.set(null);
> >         }
> >     }
> > }
> >
> > @Mixins(HasMainImage.class)
> > public interface TestEntity extends EntityComposite, HasMainImage {
> > }
> >
> > The following test fails
> > @Test
> >     public void testRemoveMainImage() throws Exception {
> >         try {
> >             EntityBuilder<TestEntity> testEntityEntityBuilder =
> uow.newEntityBuilder(TestEntity.class, "test1");
> >             Attachment attachment = createAttachment();
> >             entity.changedMainImage(attachment);
> >
> >             entity.changedMainImage(null);
> >         } finally {
> >             if (uow.isOpen())
> >                 uow.discard();
> >         }
> >     }
> >
> > The error is
> > org.qi4j.api.constraint.ConstraintViolationException: Constraint
> violation in
> 88a8fa8e-6bee-4395-898f-d34fb41560dd-0.no.webstep.retrade.rpm.server.attachment.HasMainImageMixinTest$TestEntity
> for method changedMainImage with constraint "not optional(param1)", for
> value 'null'
> >
> > When the association attachment is annotated with @Optional it should be
> possible to unset it somehow. Am I missing something, or could it be a bug?
> >
> > Best Regards,
> > Dag
> >
> > _______________________________________________
> > 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
>
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to