package org.compass.annotations.test.component.prefix.simple2; import java.util.LinkedHashSet; import java.util.Set; import org.compass.annotations.Searchable; import org.compass.annotations.SearchableComponent; import org.compass.annotations.SearchableId; import org.compass.annotations.SearchableProperty; import org.compass.annotations.Store; import org.compass.annotations.test.AbstractAnnotationsTestCase; import org.compass.core.CompassSession; import org.compass.core.CompassTransaction; import org.compass.core.config.CompassConfiguration; /** * @author kimchy */ public class Simple2PrefixTests extends AbstractAnnotationsTestCase { protected void addExtraConf(CompassConfiguration conf) { conf.addClass(Organisation.class).addClass(Contact.class).addClass(VisitAddress.class).addClass(Address.class).addClass(MailAddress.class); } public void testSimple2Prefix() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); Organisation org = new Organisation(); org.id = 1; org.mainContact.visitAddress = new VisitAddress(); org.mainContact.visitAddress.street = "mainContactVisitAddress"; org.mainContact.mailAddress = new MailAddress(); org.mainContact.mailAddress.street = "mainContactMailAddress"; Contact c1 = new Contact(); c1.visitAddress = new VisitAddress(); c1.visitAddress.street = "extrac1visitAddress"; c1.mailAddress = new MailAddress(); c1.mailAddress.street = "extrac1mailAddress"; org.extraContact.add(c1); Contact c2 = new Contact(); c2.visitAddress = new VisitAddress(); c2.visitAddress.street = "extrac2visitAddress"; c2.mailAddress = new MailAddress(); c2.mailAddress.street = "extrac2mailAddress"; org.extraContact.add(c2); session.save(org); assertEquals(1, session.find("main-visit-street:mainContactVisitAddress").length()); assertEquals(1, session.find("main-mail-street:mainContactMailAddress").length()); assertEquals(1, session.find("extra-visit-street:extrac1visitAddress").length()); assertEquals(1, session.find("extra-mail-street:extrac1mailAddress").length()); assertEquals(1, session.find("extra-visit-street:extrac2visitAddress").length()); assertEquals(1, session.find("extra-mail-street:extrac2mailAddress").length()); tr.commit(); session.close(); } @Searchable public static class Organisation { @SearchableId int id; @SearchableComponent(prefix = "main-") Contact mainContact = new Contact(); @SearchableComponent(prefix = "extra-") Set<Contact> extraContact = new LinkedHashSet<Contact>(); } @Searchable(root = false) public static class Contact { @SearchableComponent(prefix = "visit-") VisitAddress visitAddress; @SearchableComponent(prefix = "mail-") MailAddress mailAddress; } @Searchable(root = false) public static class VisitAddress extends Address { @SearchableProperty(store = Store.NO) String route; } @Searchable(root = false) public static class MailAddress extends Address { @SearchableProperty(store = Store.NO) Integer postbox; } @Searchable(root = false) public static class Address { @SearchableProperty(store = Store.NO) String street; } }