SessionHolder { public static void init(String mode) throws IOException { if (StringUtils.isBlank(mode)) { mode = CONFIG.getConfig(ConfigurationKeys.STORE_MODE); } StoreMode storeMode = StoreMode.valueof(mode); if (StoreMode.DB.equals(storeMode)) { ROOT_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, StoreMode.DB.name()); ASYNC_COMMITTING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, StoreMode.DB.name(), new Object[] {ASYNC_COMMITTING_SESSION_MANAGER_NAME}); RETRY_COMMITTING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, StoreMode.DB.name(), new Object[] {RETRY_COMMITTING_SESSION_MANAGER_NAME}); RETRY_ROLLBACKING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, StoreMode.DB.name(), new Object[] {RETRY_ROLLBACKING_SESSION_MANAGER_NAME}); } else if (StoreMode.FILE.equals(storeMode)) { String sessionStorePath = CONFIG.getConfig(ConfigurationKeys.STORE_FILE_DIR, DEFAULT_SESSION_STORE_FILE_DIR); if (sessionStorePath == null) { throw new StoreException("the {store.file.dir} is empty."); } ROOT_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, StoreMode.FILE.name(), new Object[] {ROOT_SESSION_MANAGER_NAME, sessionStorePath}); ASYNC_COMMITTING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, DEFAULT, new Object[] {ASYNC_COMMITTING_SESSION_MANAGER_NAME}); RETRY_COMMITTING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, DEFAULT, new Object[] {RETRY_COMMITTING_SESSION_MANAGER_NAME}); RETRY_ROLLBACKING_SESSION_MANAGER = EnhancedServiceLoader.load(SessionManager.class, DEFAULT, new Object[] {RETRY_ROLLBACKING_SESSION_MANAGER_NAME}); } else { throw new IllegalArgumentException("unknown store mode:" + mode); } reload(); }  static void init(String mode); static final SessionManager getRootSessionManager(); static final SessionManager getAsyncCommittingSessionManager(); static final SessionManager getRetryCommittingSessionManager(); static final SessionManager getRetryRollbackingSessionManager(); static GlobalSession findGlobalSession(String xid); static void destory(); static final String DEFAULT; static final String ROOT_SESSION_MANAGER_NAME; static final String ASYNC_COMMITTING_SESSION_MANAGER_NAME; static final String RETRY_COMMITTING_SESSION_MANAGER_NAME; static final String RETRY_ROLLBACKING_SESSION_MANAGER_NAME; static final String DEFAULT_SESSION_STORE_FILE_DIR; }
@Test public void testInit() throws IOException { File rootSessionFile = new File(pathname); if (rootSessionFile.exists()) { rootSessionFile.delete(); } final String mode = StoreMode.FILE.toString(); SessionHolder.init(mode); final File actual = new File(pathname); Assertions.assertTrue(actual.exists()); Assertions.assertTrue(actual.isFile()); }