Search in sources :

Example 6 with EntityModel

use of dev.morphia.mapping.codec.pojo.EntityModel in project morphia by mongodb.

the class IndexHelperTest method calculateBadKeys.

@Test
public void calculateBadKeys() {
    EntityModel model = getMapper().getEntityModel(IndexedClass.class);
    Index index = indexBuilder().fields(fieldBuilder().value("texting").type(IndexType.TEXT).weight(1).build(), fieldBuilder().value("nest").type(IndexType.DESC).build()).build();
    try {
        getIndexHelper().calculateKeys(model, index);
        fail("Validation should have failed on the bad key");
    } catch (MappingException e) {
    // all good
    }
    index = indexBuilder().fields(fieldBuilder().value("texting").type(IndexType.TEXT).weight(1).build(), fieldBuilder().value("nest").type(IndexType.DESC).build()).options(indexOptionsBuilder().disableValidation(true).build()).build();
    getIndexHelper().calculateKeys(model, index);
}
Also used : EntityModel(dev.morphia.mapping.codec.pojo.EntityModel) Index(dev.morphia.annotations.Index) MappingException(dev.morphia.mapping.MappingException) Test(org.testng.annotations.Test)

Example 7 with EntityModel

use of dev.morphia.mapping.codec.pojo.EntityModel in project morphia by mongodb.

the class IndexHelperTest method index.

@Test
public void index() {
    MongoCollection<Document> collection = getDatabase().getCollection("indexes");
    EntityModel model = getMapper().getEntityModel(IndexedClass.class);
    IndexOptions options = indexOptionsBuilder().name("index_name").background(true).collation(collation().build()).disableValidation(true).language("en").languageOverride("de").sparse(true).unique(true).build();
    Index index = indexBuilder().fields(fieldBuilder().value("indexName").build(), fieldBuilder().value("text").type(IndexType.DESC).build()).options(options).build();
    getIndexHelper().createIndex(collection, model, index);
    List<Document> indexInfo = getIndexInfo(IndexedClass.class);
    for (Document document : indexInfo) {
        if (document.get("name").equals("indexName")) {
            checkIndex(document);
            assertEquals(document.get("default_language"), "en");
            assertEquals(document.get("language_override"), "de");
            assertEquals(document.get("collation"), new Document().append("locale", "en").append("caseLevel", true).append("caseFirst", "upper").append("strength", 5).append("numericOrdering", true).append("alternate", "shifted").append("maxVariable", "space").append("backwards", true).append("normalization", true).append("version", "57.1"));
        }
    }
}
Also used : IndexOptions(dev.morphia.annotations.IndexOptions) EntityModel(dev.morphia.mapping.codec.pojo.EntityModel) Index(dev.morphia.annotations.Index) Document(org.bson.Document) Test(org.testng.annotations.Test)

Example 8 with EntityModel

use of dev.morphia.mapping.codec.pojo.EntityModel in project morphia by mongodb.

the class IndexHelperTest method findField.

@Test
public void findField() {
    getMapper().map(MappedInterface.class, MappedInterfaceImpl.class, AbstractParent.class, IndexedClass.class);
    EntityModel model = getMapper().getEntityModel(IndexedClass.class);
    IndexOptions options = indexOptionsBuilder().build();
    assertEquals(getIndexHelper().findField(model, options, "indexName"), "indexName");
    assertEquals(getIndexHelper().findField(model, options, "nested.name"), "nest.name");
    assertEquals(getIndexHelper().findField(model, options, "nest.name"), "nest.name");
    try {
        assertEquals(getIndexHelper().findField(model, options, "nest.whatsit"), "nest.whatsit");
        fail("Should have failed on the bad index path");
    } catch (ValidationException e) {
    // alles ist gut
    }
    assertEquals(getIndexHelper().findField(model, indexOptionsBuilder().disableValidation(true).build(), "nest.whatsit.nested.more.deeply.than.the.object.model"), "nest.whatsit.nested.more.deeply.than.the.object.model");
}
Also used : ValidationException(dev.morphia.query.ValidationException) IndexOptions(dev.morphia.annotations.IndexOptions) EntityModel(dev.morphia.mapping.codec.pojo.EntityModel) Test(org.testng.annotations.Test)

Example 9 with EntityModel

use of dev.morphia.mapping.codec.pojo.EntityModel in project morphia by mongodb.

the class IndexHelperTest method weightsOnNonTextIndex.

@Test(expectedExceptions = MappingException.class)
public void weightsOnNonTextIndex() {
    MongoCollection<Document> indexes = getDatabase().getCollection("indexes");
    EntityModel model = getMapper().getEntityModel(IndexedClass.class);
    Index index = indexBuilder().fields(fieldBuilder().value("name").weight(10).build()).build();
    getIndexHelper().createIndex(indexes, model, index);
}
Also used : EntityModel(dev.morphia.mapping.codec.pojo.EntityModel) Index(dev.morphia.annotations.Index) Document(org.bson.Document) Test(org.testng.annotations.Test)

Example 10 with EntityModel

use of dev.morphia.mapping.codec.pojo.EntityModel in project morphia by mongodb.

the class IndexHelperTest method textPartialFilters.

@Test
public void textPartialFilters() {
    MongoCollection<Document> collection = getDatabase().getCollection("indexes");
    EntityModel model = getMapper().getEntityModel(IndexedClass.class);
    Text text = textBuilder().value(4).options(indexOptionsBuilder().partialFilter("{ name : { $gt : 13 } }").build()).build();
    getIndexHelper().createIndex(collection, model, getIndexHelper().convert(text, "text"));
    findPartialIndex(Document.parse(text.options().partialFilter()));
}
Also used : EntityModel(dev.morphia.mapping.codec.pojo.EntityModel) Text(dev.morphia.annotations.Text) Document(org.bson.Document) Test(org.testng.annotations.Test)

Aggregations

EntityModel (dev.morphia.mapping.codec.pojo.EntityModel)94 Test (org.testng.annotations.Test)56 Document (org.bson.Document)36 PropertyModel (dev.morphia.mapping.codec.pojo.PropertyModel)22 ArrayList (java.util.ArrayList)16 Datastore (dev.morphia.Datastore)14 Entity (dev.morphia.annotations.Entity)14 PathTarget (dev.morphia.internal.PathTarget)12 Mapper (dev.morphia.mapping.Mapper)12 Nullable (com.mongodb.lang.Nullable)10 Index (dev.morphia.annotations.Index)10 Morphia.createDatastore (dev.morphia.Morphia.createDatastore)8 VersionedChildEntity (dev.morphia.test.models.versioned.VersionedChildEntity)8 List (java.util.List)8 ExternalEntity (dev.morphia.annotations.experimental.ExternalEntity)6 WriteConcern (com.mongodb.WriteConcern)4 Key (dev.morphia.Key)4 IndexOptions (dev.morphia.annotations.IndexOptions)4 MappingException (dev.morphia.mapping.MappingException)4 EntityModelBuilder (dev.morphia.mapping.codec.pojo.EntityModelBuilder)4