package com.processpuzzle.sharedfixtures.domaintier; import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext; import com.processpuzzle.business.definition.domain.BusinessDataLoader; import com.processpuzzle.business.definition.domain.BusinessDefinitionLoader; import com.processpuzzle.business.definition.domain.BusinessDataLoaderTest; import com.processpuzzle.sharedfixtures.domaintier.DomainTierTestConfiguration; public class BusinessDefinitionFixture { private static BusinessDefinitionFixture soleInstance; private boolean isConfigured = false; private ProcessPuzzleContextFixture contextFixture; private ProcessPuzzleContext applicationContext; private BusinessDataLoader<?> dataLoader; public static BusinessDefinitionFixture getInstance() { return getInstance( null ); } public static BusinessDefinitionFixture getInstance( ProcessPuzzleContext applicationContext ) { if( soleInstance == null ) { soleInstance = new BusinessDefinitionFixture( applicationContext ); } return soleInstance; } protected BusinessDefinitionFixture( ProcessPuzzleContext applicationContext ) { this.applicationContext = applicationContext; } public void setUp() throws Exception { if( !isConfigured ) { if( applicationContext == null ) { contextFixture = ProcessPuzzleContextFixture.getInstance( DomainTierTestConfiguration.APPLICATION_CONFIGURATION_DESCRIPTOR_PATH ); contextFixture.setUp(); applicationContext = contextFixture.getApplicationContext(); } dataLoader = BusinessDataLoaderTest.instantiateBusinessDataLoader( DomainTierTestConfiguration.BUSINESS_DEFINITION_PATH, BusinessDefinitionLoader.class ); dataLoader.loadData(); isConfigured = true; } } public void tearDown() { dataLoader = null; isConfigured = false; } public ProcessPuzzleContext getApplicationContext() { return applicationContext; } public boolean isConfigured() { return isConfigured; } }