@ -24,6 +24,7 @@ import static org.springframework.data.mongodb.test.util.IsBsonObject.*;
@@ -24,6 +24,7 @@ import static org.springframework.data.mongodb.test.util.IsBsonObject.*;
import java.util.Arrays ;
import java.util.List ;
import java.util.Set ;
import java.util.regex.Pattern ;
import org.bson.BSONObject ;
@ -36,8 +37,7 @@ import org.mockito.runners.MockitoJUnitRunner;
@@ -36,8 +37,7 @@ import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.data.annotation.Id ;
import org.springframework.data.domain.Example ;
import org.springframework.data.domain.ExampleMatcher ;
import org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers ;
import org.springframework.data.domain.ExampleMatcher.StringMatcher ;
import org.springframework.data.domain.ExampleMatcher.* ;
import org.springframework.data.geo.Point ;
import org.springframework.data.mongodb.MongoDbFactory ;
import org.springframework.data.mongodb.core.convert.QueryMapperUnitTests.ClassWithGeoTypes ;
@ -47,6 +47,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
@@ -47,6 +47,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field ;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext ;
import org.springframework.data.mongodb.test.util.IsBsonObject ;
import org.springframework.data.util.TypeInformation ;
import com.mongodb.BasicDBList ;
import com.mongodb.BasicDBObject ;
@ -426,6 +427,53 @@ public class MongoExampleMapperUnitTests {
@@ -426,6 +427,53 @@ public class MongoExampleMapperUnitTests {
assertThat ( mapper . getMappedExample ( example ) , isBsonObject ( ) . containing ( "$or" ) . containing ( "_class" ) ) ;
}
@Test // DATAMONGO-1768
public void allowIgnoringTypeRestrictionBySettingUpTypeKeyAsAnIgnoredPath ( ) {
WrapperDocument probe = new WrapperDocument ( ) ;
probe . flatDoc = new FlatDocument ( ) ;
probe . flatDoc . stringValue = "conflux" ;
DBObject dbo = mapper
. getMappedExample ( Example . of ( probe , ExampleMatcher . matching ( ) . withIgnorePaths ( "_class" ) ) ) ;
assertThat ( dbo , isBsonObject ( ) . notContaining ( "_class" ) ) ;
}
@Test // DATAMONGO-1768
public void allowIgnoringTypeRestrictionBySettingUpTypeKeyAsAnIgnoredPathWhenUsingCustomTypeMapper ( ) {
WrapperDocument probe = new WrapperDocument ( ) ;
probe . flatDoc = new FlatDocument ( ) ;
probe . flatDoc . stringValue = "conflux" ;
MappingMongoConverter mappingMongoConverter = new MappingMongoConverter ( new DefaultDbRefResolver ( factory ) , context ) ;
mappingMongoConverter . setTypeMapper ( new DefaultMongoTypeMapper ( ) {
@Override
public boolean isTypeKey ( String key ) {
return "_foo" . equals ( key ) ;
}
@Override
public void writeTypeRestrictions ( DBObject dbo , Set < Class < ? > > restrictedTypes ) {
dbo . put ( "_foo" , "bar" ) ;
}
@Override
public void writeType ( TypeInformation < ? > info , DBObject sink ) {
sink . put ( "_foo" , "bar" ) ;
}
} ) ;
mappingMongoConverter . afterPropertiesSet ( ) ;
DBObject dbo = new MongoExampleMapper ( mappingMongoConverter )
. getMappedExample ( Example . of ( probe , ExampleMatcher . matching ( ) . withIgnorePaths ( "_foo" ) ) ) ;
assertThat ( dbo , isBsonObject ( ) . notContaining ( "_class" ) . notContaining ( "_foo" ) ) ;
}
static class FlatDocument {
@Id String id ;