diff --git a/org.springframework.beans/src/test/java/org/springframework/beans/factory/parsing/CollectingReaderEventListener.java b/org.springframework.beans/src/test/java/org/springframework/beans/factory/parsing/CollectingReaderEventListener.java
new file mode 100644
index 00000000000..e2bfda3f1d6
--- /dev/null
+++ b/org.springframework.beans/src/test/java/org/springframework/beans/factory/parsing/CollectingReaderEventListener.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2002-2007 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.beans.factory.parsing;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.core.CollectionFactory;
+
+/**
+ * @author Rob Harrop
+ * @author Juergen Hoeller
+ */
+public class CollectingReaderEventListener implements ReaderEventListener {
+
+ private final List defaults = new LinkedList();
+
+ private final Map componentDefinitions = CollectionFactory.createLinkedMapIfPossible(8);
+
+ private final Map aliasMap = CollectionFactory.createLinkedMapIfPossible(8);
+
+ private final List imports = new LinkedList();
+
+
+ public void defaultsRegistered(DefaultsDefinition defaultsDefinition) {
+ this.defaults.add(defaultsDefinition);
+ }
+
+ public List getDefaults() {
+ return Collections.unmodifiableList(this.defaults);
+ }
+
+ public void componentRegistered(ComponentDefinition componentDefinition) {
+ this.componentDefinitions.put(componentDefinition.getName(), componentDefinition);
+ }
+
+ public ComponentDefinition getComponentDefinition(String name) {
+ return (ComponentDefinition) this.componentDefinitions.get(name);
+ }
+
+ public ComponentDefinition[] getComponentDefinitions() {
+ Collection collection = this.componentDefinitions.values();
+ return (ComponentDefinition[]) collection.toArray(new ComponentDefinition[collection.size()]);
+ }
+
+ public void aliasRegistered(AliasDefinition aliasDefinition) {
+ List aliases = (List) this.aliasMap.get(aliasDefinition.getBeanName());
+ if(aliases == null) {
+ aliases = new ArrayList();
+ this.aliasMap.put(aliasDefinition.getBeanName(), aliases);
+ }
+ aliases.add(aliasDefinition);
+ }
+
+ public List getAliases(String beanName) {
+ List aliases = (List) this.aliasMap.get(beanName);
+ return aliases == null ? null : Collections.unmodifiableList(aliases);
+ }
+
+ public void importProcessed(ImportDefinition importDefinition) {
+ this.imports.add(importDefinition);
+ }
+
+ public List getImports() {
+ return Collections.unmodifiableList(this.imports);
+ }
+
+}
\ No newline at end of file
diff --git a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/xml/DefaultLifecycleMethodsTests.java b/org.springframework.beans/src/test/java/org/springframework/beans/factory/xml/DefaultLifecycleMethodsTests.java
similarity index 100%
rename from org.springframework.testsuite/src/test/java/org/springframework/beans/factory/xml/DefaultLifecycleMethodsTests.java
rename to org.springframework.beans/src/test/java/org/springframework/beans/factory/xml/DefaultLifecycleMethodsTests.java
diff --git a/org.springframework.testsuite/src/test/java/org/springframework/beans/factory/xml/EventPublicationTests.java b/org.springframework.beans/src/test/java/org/springframework/beans/factory/xml/EventPublicationTests.java
similarity index 100%
rename from org.springframework.testsuite/src/test/java/org/springframework/beans/factory/xml/EventPublicationTests.java
rename to org.springframework.beans/src/test/java/org/springframework/beans/factory/xml/EventPublicationTests.java
diff --git a/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/beanEvents.xml b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/beanEvents.xml
new file mode 100644
index 00000000000..110eb1ebaff
--- /dev/null
+++ b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/beanEvents.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/beanEventsImported.xml b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/beanEventsImported.xml
new file mode 100644
index 00000000000..bdfc3c4c31e
--- /dev/null
+++ b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/beanEventsImported.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/defaultLifecycleMethods.xml b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/defaultLifecycleMethods.xml
new file mode 100644
index 00000000000..635df1adc85
--- /dev/null
+++ b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/defaultLifecycleMethods.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/ignoreDefaultLifecycleMethods.xml b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/ignoreDefaultLifecycleMethods.xml
new file mode 100644
index 00000000000..a10029da323
--- /dev/null
+++ b/org.springframework.beans/src/test/resources/org/springframework/beans/factory/xml/ignoreDefaultLifecycleMethods.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+