]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/unit/AbstractSpringTestCase.java
Fix SVN issues
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.simple / src / main / java / org / argeo / slc / unit / AbstractSpringTestCase.java
index a571b5dcc81444449e5cade4843d0aca51a209bf..8cf11f6166183031bc23339c4633fd266173996d 100644 (file)
@@ -1,11 +1,14 @@
 package org.argeo.slc.unit;\r
 \r
+import java.util.Map;\r
+\r
 import junit.framework.TestCase;\r
 \r
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
 import org.argeo.slc.SlcException;\r
-import org.argeo.slc.spring.SpringUtils;\r
+import org.springframework.beans.factory.BeanFactoryUtils;\r
+import org.springframework.beans.factory.ListableBeanFactory;\r
 import org.springframework.context.ConfigurableApplicationContext;\r
 import org.springframework.context.support.ClassPathXmlApplicationContext;\r
 \r
@@ -23,14 +26,14 @@ public abstract class AbstractSpringTestCase extends TestCase {
                if (context == null) {\r
                        context = new ClassPathXmlApplicationContext(\r
                                        getApplicationContextLocation());\r
-                       if(getIsStartContext())\r
+                       if (getIsStartContext())\r
                                context.start();\r
                }\r
                return context;\r
        }\r
-       \r
+\r
        /** Whether the context should be started after being created. */\r
-       protected Boolean getIsStartContext(){\r
+       protected Boolean getIsStartContext() {\r
                return false;\r
        }\r
 \r
@@ -41,7 +44,7 @@ public abstract class AbstractSpringTestCase extends TestCase {
        }\r
 \r
        protected <T> T getBean(Class<? extends T> clss) {\r
-               T bean = SpringUtils.loadSingleFromContext(getContext(), clss);\r
+               T bean = loadSingleFromContext(getContext(), clss);\r
                if (bean == null) {\r
                        throw new SlcException("Cannot retrieve a unique bean of type "\r
                                        + clss);\r
@@ -67,4 +70,24 @@ public abstract class AbstractSpringTestCase extends TestCase {
                String prefix = getClass().getPackage().getName().replace('.', '/');\r
                return prefix + '/' + suffix;\r
        }\r
+\r
+       @SuppressWarnings(value = { "unchecked" })\r
+       protected <T> T loadSingleFromContext(ListableBeanFactory context,\r
+                       Class<T> clss) {\r
+               Map<String, T> beans = BeanFactoryUtils.beansOfTypeIncludingAncestors(\r
+                               context, clss, false, false);\r
+               if (beans.size() == 1) {\r
+                       return beans.values().iterator().next();\r
+               } else if (beans.size() > 1) {\r
+                       if (log.isDebugEnabled()) {\r
+                               log\r
+                                               .debug(("Found more that on bean for type " + clss\r
+                                                               + ": " + beans.keySet()));\r
+                       }\r
+                       return null;\r
+               } else {\r
+                       return null;\r
+               }\r
+       }\r
+\r
 }\r