@Test @MongoDbAvailable public void validateMessageHandlingWithMongoTemplate() throws Exception { MongoDbFactory mongoDbFactory = this.prepareMongoFactory(); MappingMongoConverter converter = new TestMongoConverter(mongoDbFactory, new MongoMappingContext()); converter.afterPropertiesSet(); converter = spy(converter); MongoTemplate template = new MongoTemplate(mongoDbFactory, converter); MongoDbStoringMessageHandler handler = new MongoDbStoringMessageHandler(template); handler.setCollectionNameExpression(new LiteralExpression("foo")); handler.setBeanFactory(mock(BeanFactory.class)); handler.afterPropertiesSet(); Message<Person> message = MessageBuilder.withPayload(this.createPerson("Bob")).build(); handler.handleMessage(message); MongoTemplate readingTemplate = new MongoTemplate(mongoDbFactory); Query query = new BasicQuery("{'name' : 'Bob'}"); Person person = readingTemplate.findOne(query, Person.class, "foo"); assertEquals("Bob", person.getName()); assertEquals("PA", person.getAddress().getState()); verify(converter, times(1)).write(Mockito.any(), Mockito.any(Bson.class)); } }
@Test @MongoDbAvailable public void validateMessageHandlingWithMongoConverter() throws Exception { MongoDbFactory mongoDbFactory = this.prepareMongoFactory(); MongoDbStoringMessageHandler handler = new MongoDbStoringMessageHandler(mongoDbFactory); handler.setCollectionNameExpression(new LiteralExpression("foo")); MappingMongoConverter converter = new TestMongoConverter(mongoDbFactory, new MongoMappingContext()); converter.afterPropertiesSet(); converter = spy(converter); handler.setMongoConverter(converter); handler.setBeanFactory(mock(BeanFactory.class)); handler.afterPropertiesSet(); Message<Person> message = MessageBuilder.withPayload(this.createPerson("Bob")).build(); handler.handleMessage(message); MongoTemplate template = new MongoTemplate(mongoDbFactory); Query query = new BasicQuery("{'name' : 'Bob'}"); Person person = template.findOne(query, Person.class, "foo"); assertEquals("Bob", person.getName()); assertEquals("PA", person.getAddress().getState()); verify(converter, times(1)).write(Mockito.any(), Mockito.any(Bson.class)); }
@Bean @Autowired public MessageHandler mongoOutboundAdapter(MongoDbFactory mongo) { MongoDbStoringMessageHandler mongoHandler = new MongoDbStoringMessageHandler(mongo); mongoHandler.setCollectionNameExpression(new LiteralExpression("product")); return mongoHandler; }
@Test @MongoDbAvailable public void validateMessageHandlingWithNamedCollection() throws Exception { MongoDbFactory mongoDbFactory = this.prepareMongoFactory(); MongoDbStoringMessageHandler handler = new MongoDbStoringMessageHandler(mongoDbFactory); handler.setCollectionNameExpression(new LiteralExpression("foo")); handler.setBeanFactory(mock(BeanFactory.class)); handler.afterPropertiesSet(); Message<Person> message = MessageBuilder.withPayload(this.createPerson("Bob")).build(); handler.handleMessage(message); MongoTemplate template = new MongoTemplate(mongoDbFactory); Query query = new BasicQuery("{'name' : 'Bob'}"); Person person = template.findOne(query, Person.class, "foo"); assertEquals("Bob", person.getName()); assertEquals("PA", person.getAddress().getState()); }
@Bean @ServiceActivator(inputChannel = "storeChannel") public MessageHandler mongodbAdapter() throws Exception { MongoDbStoringMessageHandler adapter = new MongoDbStoringMessageHandler(mongoDbFactory()); adapter.setCollectionNameExpression(new LiteralExpression("courses")); return adapter; } }