6 changed files with 295 additions and 0 deletions
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
/* |
||||
* Copyright (c) 2011 by the original author(s). |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package org.springframework.data.mongodb.core.mapping.event; |
||||
|
||||
import java.util.ArrayList; |
||||
|
||||
import org.springframework.context.ApplicationEvent; |
||||
import org.springframework.context.ApplicationListener; |
||||
|
||||
public class AfterSaveListener implements ApplicationListener<AfterSaveEvent<Object>> { |
||||
|
||||
public final ArrayList<ApplicationEvent> seenEvents = new ArrayList<ApplicationEvent>(); |
||||
|
||||
public void onApplicationEvent(AfterSaveEvent<Object> event) { |
||||
this.seenEvents.add(event); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,118 @@
@@ -0,0 +1,118 @@
|
||||
/* |
||||
* Copyright (c) 2011 by the original author(s). |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package org.springframework.data.mongodb.core.mapping.event; |
||||
|
||||
import static org.junit.Assert.assertEquals; |
||||
|
||||
import java.net.UnknownHostException; |
||||
|
||||
import org.junit.After; |
||||
import org.junit.Assert; |
||||
import org.junit.Before; |
||||
import org.junit.Test; |
||||
import org.springframework.context.ApplicationContext; |
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext; |
||||
import org.springframework.data.mongodb.core.MongoTemplate; |
||||
import org.springframework.data.mongodb.core.mapping.PersonPojoStringId; |
||||
|
||||
import com.mongodb.DB; |
||||
import com.mongodb.DBObject; |
||||
import com.mongodb.Mongo; |
||||
import com.mongodb.WriteConcern; |
||||
|
||||
/** |
||||
* Integration test for Mapping Events. |
||||
* |
||||
* @author Mark Pollack |
||||
*/ |
||||
public class ApplicationContextEventTests { |
||||
|
||||
private final String[] collectionsToDrop = new String[] { "personPojoStringId" }; |
||||
|
||||
private ApplicationContext applicationContext; |
||||
private MongoTemplate template; |
||||
|
||||
@Before |
||||
public void setUp() throws Exception { |
||||
cleanDb(); |
||||
applicationContext = new AnnotationConfigApplicationContext(ApplicationContextEventTestsAppConfig.class); |
||||
template = applicationContext.getBean(MongoTemplate.class); |
||||
template.setWriteConcern(WriteConcern.FSYNC_SAFE); |
||||
} |
||||
|
||||
@After |
||||
public void cleanUp() throws Exception { |
||||
cleanDb(); |
||||
} |
||||
|
||||
private void cleanDb() throws UnknownHostException { |
||||
Mongo mongo = new Mongo(); |
||||
DB db = mongo.getDB("database"); |
||||
for (String coll : collectionsToDrop) { |
||||
db.getCollection(coll).drop(); |
||||
} |
||||
} |
||||
|
||||
@Test |
||||
@SuppressWarnings("unchecked") |
||||
public void beforeSaveEvent() { |
||||
PersonBeforeSaveListener personBeforeSaveListener = applicationContext.getBean(PersonBeforeSaveListener.class); |
||||
AfterSaveListener afterSaveListener = applicationContext.getBean(AfterSaveListener.class); |
||||
SimpleMappingEventListener simpleMappingEventListener = applicationContext.getBean(SimpleMappingEventListener.class); |
||||
|
||||
assertEquals(0, personBeforeSaveListener.seenEvents.size()); |
||||
assertEquals(0, afterSaveListener.seenEvents.size()); |
||||
|
||||
assertEquals(0, simpleMappingEventListener.onBeforeSaveEvents.size()); |
||||
assertEquals(0, simpleMappingEventListener.onAfterSaveEvents.size()); |
||||
|
||||
|
||||
PersonPojoStringId p = new PersonPojoStringId("1", "Text"); |
||||
template.insert(p); |
||||
|
||||
assertEquals(1, personBeforeSaveListener.seenEvents.size()); |
||||
assertEquals(1, afterSaveListener.seenEvents.size()); |
||||
|
||||
assertEquals(1, simpleMappingEventListener.onBeforeSaveEvents.size()); |
||||
assertEquals(1, simpleMappingEventListener.onAfterSaveEvents.size()); |
||||
|
||||
Assert.assertTrue(personBeforeSaveListener.seenEvents.get(0) instanceof BeforeSaveEvent<?>); |
||||
Assert.assertTrue(afterSaveListener.seenEvents.get(0) instanceof AfterSaveEvent<?>); |
||||
|
||||
BeforeSaveEvent<PersonPojoStringId> beforeSaveEvent = (BeforeSaveEvent<PersonPojoStringId>)personBeforeSaveListener.seenEvents.get(0); |
||||
PersonPojoStringId p2 = beforeSaveEvent.getSource(); |
||||
DBObject dbo = beforeSaveEvent.getDBObject(); |
||||
|
||||
comparePersonAndDbo(p, p2, dbo); |
||||
|
||||
AfterSaveEvent<Object> afterSaveEvent = (AfterSaveEvent<Object>)afterSaveListener.seenEvents.get(0); |
||||
Assert.assertTrue(afterSaveEvent.getSource() instanceof PersonPojoStringId); |
||||
p2 = (PersonPojoStringId)afterSaveEvent.getSource(); |
||||
dbo = beforeSaveEvent.getDBObject(); |
||||
|
||||
comparePersonAndDbo(p, p2, dbo); |
||||
|
||||
} |
||||
|
||||
private void comparePersonAndDbo(PersonPojoStringId p, PersonPojoStringId p2, DBObject dbo) { |
||||
assertEquals(p.getId(), p2.getId()); |
||||
assertEquals(p.getText(), p2.getText()); |
||||
|
||||
assertEquals("org.springframework.data.mongodb.core.mapping.PersonPojoStringId", dbo.get("_class")); |
||||
assertEquals("1", dbo.get("_id")); |
||||
assertEquals("Text", dbo.get("text")); |
||||
} |
||||
} |
||||
@ -0,0 +1,53 @@
@@ -0,0 +1,53 @@
|
||||
/* |
||||
* Copyright 2010-2011 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package org.springframework.data.mongodb.core.mapping.event; |
||||
|
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.data.mongodb.config.AbstractMongoConfiguration; |
||||
|
||||
import com.mongodb.Mongo; |
||||
|
||||
@Configuration |
||||
public class ApplicationContextEventTestsAppConfig extends AbstractMongoConfiguration { |
||||
|
||||
@Override |
||||
public String getDatabaseName() { |
||||
return "database"; |
||||
} |
||||
|
||||
@Override |
||||
@Bean |
||||
public Mongo mongo() throws Exception { |
||||
return new Mongo("127.0.0.1"); |
||||
} |
||||
|
||||
@Bean |
||||
public PersonBeforeSaveListener personBeforeSaveListener() { |
||||
return new PersonBeforeSaveListener(); |
||||
} |
||||
|
||||
@Bean |
||||
public AfterSaveListener afterSaveListener() { |
||||
return new AfterSaveListener(); |
||||
} |
||||
|
||||
@Bean |
||||
public SimpleMappingEventListener simpleMappingEventListener() { |
||||
return new SimpleMappingEventListener(); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
/* |
||||
* Copyright (c) 2011 by the original author(s). |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package org.springframework.data.mongodb.core.mapping.event; |
||||
|
||||
import java.util.ArrayList; |
||||
|
||||
import org.springframework.context.ApplicationEvent; |
||||
import org.springframework.context.ApplicationListener; |
||||
import org.springframework.data.mongodb.core.mapping.PersonPojoStringId; |
||||
|
||||
public class PersonBeforeSaveListener implements ApplicationListener<BeforeSaveEvent<PersonPojoStringId>> { |
||||
|
||||
public final ArrayList<ApplicationEvent> seenEvents = new ArrayList<ApplicationEvent>(); |
||||
|
||||
public void onApplicationEvent(BeforeSaveEvent<PersonPojoStringId> event) { |
||||
this.seenEvents.add(event); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,55 @@
@@ -0,0 +1,55 @@
|
||||
/* |
||||
* Copyright (c) 2011 by the original author(s). |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package org.springframework.data.mongodb.core.mapping.event; |
||||
|
||||
import java.util.ArrayList; |
||||
|
||||
import com.mongodb.DBObject; |
||||
|
||||
|
||||
public class SimpleMappingEventListener extends AbstractMappingEventListener<MongoMappingEvent<Object>, Object> { |
||||
|
||||
public final ArrayList<BeforeConvertEvent<Object>> onBeforeConvertEvents = new ArrayList<BeforeConvertEvent<Object>>(); |
||||
public final ArrayList<BeforeSaveEvent<Object>> onBeforeSaveEvents = new ArrayList<BeforeSaveEvent<Object>>(); |
||||
public final ArrayList<AfterSaveEvent<Object>> onAfterSaveEvents = new ArrayList<AfterSaveEvent<Object>>(); |
||||
public final ArrayList<AfterLoadEvent<Object>> onAfterLoadEvents = new ArrayList<AfterLoadEvent<Object>>(); |
||||
public final ArrayList<AfterConvertEvent<Object>> onAfterConvertEvents = new ArrayList<AfterConvertEvent<Object>>(); |
||||
|
||||
@Override |
||||
public void onBeforeConvert(Object source) { |
||||
onBeforeConvertEvents.add(new BeforeConvertEvent<Object>(source)); |
||||
} |
||||
|
||||
@Override |
||||
public void onBeforeSave(Object source, DBObject dbo) { |
||||
onBeforeSaveEvents.add(new BeforeSaveEvent<Object>(source, dbo)); |
||||
} |
||||
|
||||
@Override |
||||
public void onAfterSave(Object source, DBObject dbo) { |
||||
onAfterSaveEvents.add(new AfterSaveEvent<Object>(source, dbo)); |
||||
} |
||||
|
||||
@Override |
||||
public void onAfterLoad(DBObject dbo) { |
||||
onAfterLoadEvents.add(new AfterLoadEvent<Object>(dbo)); |
||||
} |
||||
|
||||
@Override |
||||
public void onAfterConvert(DBObject dbo, Object source) { |
||||
onAfterConvertEvents.add(new AfterConvertEvent<Object>(dbo, source)); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue