Files
alfresco-community-repo/source/test-java/org/alfresco/util/test/junitrules/AbstractRule.java
Alan Davis 91eb2644ad Merged 5.2.N (5.2.1) to HEAD (5.2)
125781 rmunteanu: Merged 5.1.N (5.1.2) to 5.2.N (5.2.1)
      125603 rmunteanu: Merged 5.1.1 (5.1.1) to 5.1.N (5.1.2)
         125484 slanglois: MNT-16155 Update source headers - remove old Copyrights from Java and JSP dource files


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@127808 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2016-06-03 16:40:56 +00:00

76 lines
2.3 KiB
Java

package org.alfresco.util.test.junitrules;
import org.alfresco.util.ParameterCheck;
import org.junit.rules.ExternalResource;
import org.springframework.context.ApplicationContext;
/**
* Abstract junit rule, which provides access to the Spring application context.
*
* An explicit ApplicationContext or an ApplicationContextInit rule can be passed at construction time.
* getApplicationContext will either return the instance passed in, or retrieve one from the rule.
*
* @author Alex Miller
*/
public abstract class AbstractRule extends ExternalResource
{
protected final ApplicationContext appContext;
protected final ApplicationContextInit appContextRule;
/**
* @param appContext for use by sub classes.
*/
protected AbstractRule(ApplicationContext appContext)
{
ParameterCheck.mandatory("appContext", appContext);
this.appContext = appContext;
this.appContextRule = null;
}
/**
* @param appContextRule {@link ApplicationContextInit} rule used to provide ApplicationContext to sub classes.
*/
protected AbstractRule(ApplicationContextInit appContextRule)
{
ParameterCheck.mandatory("appContextRule", appContextRule);
this.appContext = null;
this.appContextRule = appContextRule;
}
/**
* This method provides the spring application context to subclasses. It either provides the explicit ApplicationContext, passed in
* at construction time, or retrieves it from the {@link ApplicationContextInit} rule, passed in the alternative constructor.
*
* @return the spring application context
* @throws NullPointerException if the application context has not been initialised when requested.
*/
protected ApplicationContext getApplicationContext() {
ApplicationContext result = null;
// The app context is either provided explicitly:
if (appContext != null)
{
result = appContext;
}
// or is implicitly accessed via another rule:
else
{
ApplicationContext contextFromRule = appContextRule.getApplicationContext();
if (contextFromRule != null)
{
result = contextFromRule;
}
else
{
throw new NullPointerException("Cannot retrieve application context from provided rule.");
}
}
return result;
}
}