package com.processpuzzle.litest.template; import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext; import com.processpuzzle.application.configuration.domain.PropertyContext; import com.processpuzzle.application.configuration.domain.PropertyKeys; import com.processpuzzle.application.domain.Application; import com.processpuzzle.application.domain.ApplicationRepository; import com.processpuzzle.litest.fixture.GenericTestFixture; import com.processpuzzle.sharedfixtures.domaintier.ApplicationFixture; import com.processpuzzle.sharedfixtures.domaintier.DomainTierTestConfiguration; import com.processpuzzle.user_session.domain.StaticUserSessionHolder; import com.processpuzzle.user_session.domain.UserRequestContext; import com.processpuzzle.user_session.domain.UserRequestManager; import com.processpuzzle.user_session.domain.UserSessionHolder; public abstract class DefaultApplicationFixture<A extends Application> extends GenericTestFixture<A> implements ApplicationFixture<A> { public static final String CONFIGURATION_DESCRIPTOR_PATH_1 = "classpath:com/processpuzzle/sharedfixtures/domaintier/ApplicationOneDescriptor.xml"; public static final String CONFIGURATION_DESCRIPTOR_PATH_2 = "classpath:com/processpuzzle/sharedfixtures/domaintier/ApplicationTwoDescriptor.xml"; public static final String SYSTEM_ADMINISTRATION_ARTIFACT_TYPE_GROUP = "SystemAdministration"; protected String configurationPath; protected ApplicationRepository applicationRepository; protected Application application; private UserRequestContext requestContext; private ProcessPuzzleContext applicationContext; public DefaultApplicationFixture( String configurationPath ) { super(); this.configurationPath = configurationPath; } //Properties public Application getApplication() { return application; } public ProcessPuzzleContext getApplicationContext() { return applicationContext; } public String getApplicationName() { return application.getApplicationName(); } public ApplicationRepository getApplicationRepository() { return applicationRepository; } public UserRequestContext getUserRequestContext() { return requestContext; } //Protected, private helper methods. @Override protected void configureAfterSutInstantiation() { createNewUserRequest(); String applicationRepositoryStoragePath = determineApplicationRepositoryStoragePath(); try { applicationRepository = ApplicationRepository.getInstance( applicationRepositoryStoragePath ); } catch( InstantiationException e ) { e.printStackTrace(); } } //Protected, private helper methods protected void createNewUserRequest() { UserRequestManager requestManager = UserRequestManager.getInstance(); UserSessionHolder sessionHolder = new StaticUserSessionHolder(); requestContext = requestManager.createRequestContext( sessionHolder ); } protected String determineApplicationRepositoryStoragePath() { String applicationStoragePath = null; applicationContext = UserRequestManager.getInstance().getApplicationContext(); if( applicationContext != null ) { PropertyContext propertyContext = applicationContext.getPropertyContext(); String key = PropertyKeys.APPLICATION_REPOSITORY_PATH.getDefaultKey(); applicationStoragePath = propertyContext.getProperty( key );; } if( applicationStoragePath != null ) return applicationStoragePath; else return DomainTierTestConfiguration.APPLICATION_REPOSITORY_STORAGE_PATH; } @Override protected void releaseResources() { application = null; applicationRepository = null; } }