]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.core/src/main/java/org/argeo/slc/unit/AbstractSpringTestCase.java
git-svn-id: https://svn.argeo.org/slc/trunk@1286 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / unit / AbstractSpringTestCase.java
index 06c6cf6b529b49dd642d11cb7baf391b7bda3878..625564fa79ddcebce376a88f502a637b44f2d001 100644 (file)
@@ -3,28 +3,46 @@ package org.argeo.slc.unit;
 import junit.framework.TestCase;\r
 \r
 import org.springframework.context.ApplicationContext;\r
+import org.springframework.context.ConfigurableApplicationContext;\r
 import org.springframework.context.support.ClassPathXmlApplicationContext;\r
 \r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.spring.SpringUtils;\r
+\r
 /** Helper for tests using a Spring application co,text. */\r
 public abstract class AbstractSpringTestCase extends TestCase {\r
-       private ApplicationContext context;\r
+       protected final Log log = LogFactory.getLog(getClass());\r
+       private ConfigurableApplicationContext context;\r
 \r
        /**\r
         * Gets (and create if necessary) the application context to use. Default\r
         * implementation uses a class path xml application context and calls\r
         * {@link #getApplicationContextLocation()}.\r
         */\r
-       protected ApplicationContext getContext() {\r
+       protected ConfigurableApplicationContext getContext() {\r
                if (context == null) {\r
                        context = new ClassPathXmlApplicationContext(\r
                                        getApplicationContextLocation());\r
                }\r
                return context;\r
        }\r
-       \r
+\r
        /** Returns a bean from the underlying context */\r
-       protected <T> T getBean(String beanId){\r
-               return (T)getContext().getBean(beanId);\r
+       protected <T> T getBean(String beanId) {\r
+               return (T) getContext().getBean(beanId);\r
+       }\r
+\r
+       protected <T> T getBean(Class<? extends T> clss) {\r
+               T bean = SpringUtils.loadSingleFromContext(getContext(), clss);\r
+               if (bean == null) {\r
+                       throw new SlcException("Cannot retrieve a unique bean of type "\r
+                                       + clss);\r
+               } else {\r
+                       return bean;\r
+               }\r
        }\r
 \r
        /**\r