/*
* Copyright (c) 2010 Mysema Ltd.
* All rights reserved.
*
*/
package com.mysema.rdfbean.object;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.mysema.commons.lang.CloseableIterator;
import com.mysema.rdfbean.annotations.ClassMapping;
import com.mysema.rdfbean.annotations.Container;
import com.mysema.rdfbean.annotations.ContainerType;
import com.mysema.rdfbean.annotations.Id;
import com.mysema.rdfbean.annotations.Predicate;
import com.mysema.rdfbean.model.ID;
import com.mysema.rdfbean.model.MiniRepository;
import com.mysema.rdfbean.model.RDF;
import com.mysema.rdfbean.model.STMT;
@ClassMapping
public class ContainerTest {
@Id
ID id;
@Predicate
@Container(ContainerType.SEQ)
List<String> names = new ArrayList<String>();
@Test
public void Container() {
MiniRepository repository = new MiniRepository();
Session session = SessionUtil.openSession(repository, ContainerTest.class);
names.add("Eka");
names.add(null);
names.add("Toka");
session.save(this);
CloseableIterator<STMT> iter = repository.findStatements(null, RDF.type, RDF.Seq, null, false);
assertTrue(iter.hasNext());
iter.next();
assertFalse(iter.hasNext());
iter = repository.findStatements(null, RDF.getContainerMembershipProperty(1), null, null, false);
assertTrue(iter.hasNext());
iter.next();
assertFalse(iter.hasNext());
session = SessionUtil.openSession(repository, ContainerTest.class);
ContainerTest test = session.findInstances(ContainerTest.class).get(0);
assertEquals("Eka", test.names.get(0));
assertNull(test.names.get(1));
assertEquals("Toka", test.names.get(2));
}
}