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

Reply via email to