This is the heart of Morphia and takes care of mapping from/to POJOs/DBObjects
This class is thread-safe and keeps various "cached" data which should speed up processing.
163164165166167168169170171172
} @Test public void shouldNotAllowOtherValuesForNotInOperator() { // expect MappedClass mappedClass = new MappedClass(SimpleEntity.class, new Mapper()); MappedField mappedField = mappedClass.getMappedField("name"); assertThat(QueryValidator.isCompatibleForOperator(mappedField, SimpleEntity.class, NOT_IN, "value", new ArrayList<ValidationFailure>()), is(false)); }
208209210211212213214215216217
} @Test public void shouldAllowGeoWithinOperatorWithAllAppropriateTrimmings() { // expect MappedClass mappedClass = new MappedClass(GeoEntity.class, new Mapper()); MappedField mappedField = mappedClass.getMappedField("array"); assertThat(QueryValidator.isCompatibleForOperator(mappedField, List.class, GEO_WITHIN, new BasicDBObject("$box", 1), new ArrayList<ValidationFailure>()), is(true)); }
217218219220221222223224225226227
} @Test public void shouldNotAllowGeoWithinWhenValueDoesNotContainKeyword() { // expect MappedClass mappedClass = new MappedClass(GeoEntity.class, new Mapper()); MappedField mappedField = mappedClass.getMappedField("array"); assertThat(QueryValidator.isCompatibleForOperator(mappedField, List.class, GEO_WITHIN, new BasicDBObject("notValidKey", 1), new ArrayList<ValidationFailure>()), is(false) );
228229230231232233234235236237238
} @Test public void shouldNotAllowGeoOperatorIfValueDoesNotContainCorrectField() { // expect MappedClass mappedClass = new MappedClass(GeoEntity.class, new Mapper()); MappedField mappedField = mappedClass.getMappedField("array"); assertThat(QueryValidator.isCompatibleForOperator(mappedField, List.class, GEO_WITHIN, new BasicDBObject("name", "value"), new ArrayList<ValidationFailure>()), is(false) );
239240241242243244245246247248
} @Test public void shouldNotAllowGeoOperatorIfValueIsNotDBObject() { // expect MappedClass mappedClass = new MappedClass(GeoEntity.class, new Mapper()); MappedField mappedField = mappedClass.getMappedField("array"); assertThat(QueryValidator.isCompatibleForOperator(mappedField, List.class, GEO_WITHIN, "value", new ArrayList<ValidationFailure>()), is(false)); }
265266267268269270271272273274275
} @Test public void shouldNotAllowOtherValuesForAllOperator() { // given MappedClass mappedClass = new MappedClass(SimpleEntity.class, new Mapper()); MappedField mappedField = mappedClass.getMappedField("name"); // expect assertThat(QueryValidator.isCompatibleForOperator(mappedField, SimpleEntity.class,
301302303304305306307308309310
} @Test public void shouldNotAllowNonIntegerTypeIfValueIsInt() { // expect MappedClass mappedClass = new MappedClass(SimpleEntity.class, new Mapper()); MappedField mappedField = mappedClass.getMappedField("name"); assertThat(QueryValidator.isCompatibleForOperator(mappedField, SimpleEntity.class, EQUAL, new Integer(1), new ArrayList<ValidationFailure>()), is(false)); }
357358359360361362363364365366
} @Test public void shouldNotAllowStringValueWithTypeThatIsNotString() { // expect MappedClass mappedClass = new MappedClass(SimpleEntity.class, new Mapper()); MappedField mappedField = mappedClass.getMappedField("name"); assertThat(QueryValidator.isCompatibleForOperator(mappedField, Integer.class, EQUAL, "value", new ArrayList<ValidationFailure>()), is(false)); }
373374375376377378379380381382
} @Test public void shouldNotAllowValueWithoutEntityAnnotationAndTypeOfKey() { // expect MappedClass mappedClass = new MappedClass(SimpleEntity.class, new Mapper()); MappedField mappedField = mappedClass.getMappedField("name"); assertThat(QueryValidator.isCompatibleForOperator(mappedField, Key.class, EQUAL, "value", new ArrayList<ValidationFailure>()), is(false)); }
382383384385386387388389390391392
} @Test public void shouldAllowTypeThatMatchesKeyTypeValue() { // expect MappedClass mappedClass = new MappedClass(SimpleEntity.class, new Mapper()); MappedField mappedField = mappedClass.getMappedField("integer"); assertThat(QueryValidator.isCompatibleForOperator(mappedField, Integer.class, EQUAL, new Key<Number>(Integer.class, new ObjectId()), new ArrayList<ValidationFailure>()), is(true)); }