mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	51903 to 54309 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@54310 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
		
			
				
	
	
		
			95 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2005-2012
 | |
|  * Alfresco Software Limited.
 | |
|  *
 | |
|  * This file is part of Alfresco
 | |
|  *
 | |
|  * Alfresco is free software: you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU Lesser General Public License as published by
 | |
|  * the Free Software Foundation, either version 3 of the License, or
 | |
|  * (at your option) any later version.
 | |
|  *
 | |
|  * Alfresco is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  * GNU Lesser General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU Lesser General Public License
 | |
|  * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| 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;
 | |
| 	}
 | |
| 
 | |
| }
 |