@Test public void testAuthorizationStackDecode() throws IOException { String confString = "<?xml version='1.0' encoding='UTF-8'?>\n" + "<java class=\"java.beans.XMLDecoder\" version=\"1.8.0_121\">\n" + " <object class=\"org.opengrok.indexer.configuration.Configuration\">\n" + " <void property=\"pluginStack\">\n" + " <void method=\"add\">\n" + " <object id=\"first_plugin\" class=\"org.opengrok.indexer.authorization.AuthorizationPlugin\">\n" + " <void property=\"flag\">\n" + " <string>sufficient</string>\n" + " </void>\n" + " <void property=\"name\">\n" + " <string>Plugin</string>\n" + " </void>\n" + " </object>\n" + " </void>\n" + " <void method=\"add\">\n" + " <object id=\"first_stack\" class=\"org.opengrok.indexer.authorization.AuthorizationStack\">\n" + " <void property=\"flag\">\n" + " <string>required</string>\n" + " </void>\n" + " <void property=\"name\">\n" + " <string>basic stack</string>\n" + " </void>\n" + " <void property=\"stack\">" + " <void method=\"add\">" + " <object class=\"org.opengrok.indexer.authorization.AuthorizationPlugin\">\n" + " <void property=\"flag\">\n" + " <string>required</string>\n" + " </void>\n" + " <void property=\"name\">\n" + " <string>NestedPlugin</string>\n" + " </void>\n" + " </object>\n" + " </void>" + " <void method=\"add\">" + " <object class=\"org.opengrok.indexer.authorization.AuthorizationPlugin\">\n" + " <void property=\"flag\">\n" + " <string>requisite</string>\n" + " </void>\n" + " <void property=\"name\">\n" + " <string>NestedPlugin</string>\n" + " </void>\n" + " <void property=\"setup\">" + " <void method=\"put\">" + " <string>key</string>" + " <string>value</string>" + " </void>" + " <void method=\"put\">" + " <string>plugin</string>" + " <object idref=\"first_plugin\" />" + " </void>" + " </void>" + " </object>\n" + " </void>" + " </void>" + " </object>\n" + " </void>\n" + " <void method=\"add\">\n" + " <object class=\"org.opengrok.indexer.authorization.AuthorizationPlugin\">\n" + " <void property=\"flag\">\n" + " <string>requisite</string>\n" + " </void>\n" + " <void property=\"name\">\n" + " <string>Requisite</string>\n" + " </void>\n" + " </object>\n" + " </void>\n" + " <void method=\"add\">\n" + " <object class=\"org.opengrok.indexer.authorization.AuthorizationStack\">\n" + " <void property=\"flag\">\n" + " <string>required</string>\n" + " </void>\n" + " <void property=\"name\">\n" + " <string>advanced stack</string>\n" + " </void>\n" + " <void property=\"stack\">" + " <void method=\"add\">" + " <object class=\"org.opengrok.indexer.authorization.AuthorizationPlugin\">\n" + " <void property=\"flag\">\n" + " <string>required</string>\n" + " </void>\n" + " <void property=\"name\">\n" + " <string>NestedPlugin</string>\n" + " </void>\n" + " </object>\n" + " </void>" + " <void method=\"add\">" + " <object class=\"org.opengrok.indexer.authorization.AuthorizationPlugin\">\n" + " <void property=\"flag\">\n" + " <string>requisite</string>\n" + " </void>\n" + " <void property=\"name\">\n" + " <string>NestedPlugin</string>\n" + " </void>\n" + " <void property=\"setup\">" + " <void method=\"put\">" + " <string>key</string>" + " <string>other value</string>" + " </void>" + " <void method=\"put\">" + " <string>plugin</string>" + " <object idref=\"first_plugin\" />" + " </void>" + " </void>" + " </object>\n" + " </void>" + " </void>" + " </object>\n" + " </void>\n" + " <void method=\"add\">\n" + " <object idref=\"first_stack\" />" + " </void>\n" + " </void>\n" + " </object>\n" + "</java>"; Configuration conf = Configuration.makeXMLStringAsConfiguration(confString); assertNotNull(conf.getPluginStack()); AuthorizationStack pluginConfiguration = conf.getPluginStack(); assertEquals(5, pluginConfiguration.getStack().size()); assertTrue(pluginConfiguration.getStack().get(0).getFlag().isSufficient()); assertEquals("Plugin", pluginConfiguration.getStack().get(0).getName()); assertTrue(pluginConfiguration.getStack().get(2).getFlag().isRequisite()); assertEquals("Requisite", pluginConfiguration.getStack().get(2).getName()); assertTrue(pluginConfiguration.getStack().get(1) instanceof AuthorizationStack); AuthorizationStack stack = (AuthorizationStack) pluginConfiguration.getStack().get(1); assertTrue(stack.getFlag().isRequired()); assertEquals("basic stack", stack.getName()); assertEquals(2, stack.getStack().size()); assertTrue(stack.getStack().get(0) instanceof AuthorizationPlugin); assertEquals("NestedPlugin", stack.getStack().get(0).getName()); assertTrue(stack.getStack().get(0).isRequired()); assertTrue(stack.getStack().get(1) instanceof AuthorizationPlugin); assertEquals("NestedPlugin", stack.getStack().get(1).getName()); assertTrue(stack.getStack().get(1).isRequisite()); AuthorizationPlugin plugin = (AuthorizationPlugin) stack.getStack().get(1); assertTrue(plugin.getSetup().containsKey("key")); assertEquals("value", plugin.getSetup().get("key")); assertTrue(plugin.getSetup().containsKey("plugin")); assertTrue(plugin.getSetup().get("plugin") instanceof AuthorizationPlugin); assertEquals(pluginConfiguration.getStack().get(0), plugin.getSetup().get("plugin")); assertTrue(pluginConfiguration.getStack().get(3) instanceof AuthorizationStack); stack = (AuthorizationStack) pluginConfiguration.getStack().get(3); assertTrue(stack.getFlag().isRequired()); assertEquals("advanced stack", stack.getName()); assertEquals(2, stack.getStack().size()); assertTrue(stack.getStack().get(0) instanceof AuthorizationPlugin); assertEquals("NestedPlugin", stack.getStack().get(0).getName()); assertTrue(stack.getStack().get(0).isRequired()); assertTrue(stack.getStack().get(1) instanceof AuthorizationPlugin); assertEquals("NestedPlugin", stack.getStack().get(1).getName()); assertTrue(stack.getStack().get(1).isRequisite()); plugin = (AuthorizationPlugin) stack.getStack().get(1); assertTrue(plugin.getSetup().containsKey("key")); assertEquals("other value", plugin.getSetup().get("key")); assertTrue(plugin.getSetup().containsKey("plugin")); assertTrue(plugin.getSetup().get("plugin") instanceof AuthorizationPlugin); assertEquals(pluginConfiguration.getStack().get(0), plugin.getSetup().get("plugin")); assertTrue(pluginConfiguration.getStack().get(4) instanceof AuthorizationStack); stack = (AuthorizationStack) pluginConfiguration.getStack().get(4); assertTrue(stack.getFlag().isRequired()); assertEquals("basic stack", stack.getName()); assertEquals(2, stack.getStack().size()); assertTrue(stack.getStack().get(0) instanceof AuthorizationPlugin); assertEquals("NestedPlugin", stack.getStack().get(0).getName()); assertTrue(stack.getStack().get(0).isRequired()); assertTrue(stack.getStack().get(1) instanceof AuthorizationPlugin); assertEquals("NestedPlugin", stack.getStack().get(1).getName()); assertTrue(stack.getStack().get(1).isRequisite()); plugin = (AuthorizationPlugin) stack.getStack().get(1); assertTrue(plugin.getSetup().containsKey("key")); assertEquals("value", plugin.getSetup().get("key")); assertTrue(plugin.getSetup().containsKey("plugin")); assertTrue(plugin.getSetup().get("plugin") instanceof AuthorizationPlugin); assertEquals(pluginConfiguration.getStack().get(0), plugin.getSetup().get("plugin")); }
public AuthorizationStack getPluginStack() { return syncReadConfiguration(Configuration::getPluginStack); }
RuntimeEnvironment { public AuthorizationStack getPluginStack() { return syncReadConfiguration(Configuration::getPluginStack); } }
RuntimeEnvironment { public AuthorizationStack getPluginStack() { return syncReadConfiguration(Configuration::getPluginStack); } private  RuntimeEnvironment(); }
RuntimeEnvironment { public AuthorizationStack getPluginStack() { return syncReadConfiguration(Configuration::getPluginStack); } private  RuntimeEnvironment(); ExecutorService getSearchExecutor(); ExecutorService getRevisionExecutor(); void shutdownRevisionExecutor(); static RuntimeEnvironment getInstance(); IndexerParallelizer getIndexerParallelizer(); PathAccepter getPathAccepter(); int getScanningDepth(); void setScanningDepth(int scanningDepth); int getNestingMaximum(); void setNestingMaximum(int nestingMaximum); int getCommandTimeout(CommandTimeoutType cmdType); int getRestfulCommandTimeout(); void setRestfulCommandTimeout(int timeout); int getWebappStartCommandTimeout(); void setWebappStartCommandTimeout(int timeout); int getIndexerCommandTimeout(); void setIndexerCommandTimeout(int timeout); int getInteractiveCommandTimeout(); void setInteractiveCommandTimeout(int timeout); long getCtagsTimeout(); void setCtagsTimeout(long timeout); void setLastEditedDisplayMode(boolean lastEditedDisplayMode); boolean isLastEditedDisplayMode(); String getIncludeRootPath(); void setIncludeRoot(String includeRoot); String getDataRootPath(); File getDataRootFile(); void setDataRoot(String dataRoot); String getSourceRootPath(); File getSourceRootFile(); void setSourceRoot(String sourceRoot); String getPathRelativeToSourceRoot(File file); boolean hasProjects(); List<Project> getProjectList(); Map<String, Project> getProjects(); List<String> getProjectNames(); void setProjects(Map<String, Project> projects); boolean hasGroups(); Set<Group> getGroups(); void setGroups(Set<Group> groups); Map<Project, List<RepositoryInfo>> getProjectRepositoriesMap(); String getUrlPrefix(); String getCtags(); void setCtags(String ctags); String getMandoc(); void setMandoc(String value); int getCachePages(); void setCachePages(int cachePages); int getHitsPerPage(); void setHitsPerPage(int hitsPerPage); boolean validateUniversalCtags(); Set<String> getCtagsLanguages(); int getHistoryReaderTimeLimit(); void setHistoryReaderTimeLimit(int historyCacheTime); boolean useHistoryCache(); void setUseHistoryCache(boolean useHistoryCache); boolean isGenerateHtml(); void setGenerateHtml(boolean generateHtml); void setCompressXref(boolean compressXref); boolean isCompressXref(); boolean isQuickContextScan(); void setQuickContextScan(boolean quickContextScan); List<RepositoryInfo> getRepositories(); void setRepositories(List<RepositoryInfo> repositories); void removeRepositories(); void setRepositories(String... dir); void addRepositories(List<RepositoryInfo> repositories); void setDefaultProjectsFromNames(Set<String> defaultProjects); void setDefaultProjects(Set<Project> defaultProjects); Set<Project> getDefaultProjects(); double getRamBufferSize(); void setRamBufferSize(double ramBufferSize); void setPluginDirectory(String pluginDirectory); String getPluginDirectory(); boolean isAuthorizationWatchdog(); void setAuthorizationWatchdog(boolean authorizationWatchdogEnabled); AuthorizationStack getPluginStack(); void setPluginStack(AuthorizationStack pluginStack); boolean isPrintProgress(); void setPrintProgress(boolean printProgress); void setAllowLeadingWildcard(boolean allowLeadingWildcard); boolean isAllowLeadingWildcard(); IgnoredNames getIgnoredNames(); void setIgnoredNames(IgnoredNames ignoredNames); Filter getIncludedNames(); void setIncludedNames(Filter includedNames); String getUserPage(); String getRepoCmd(String clazzName); String setRepoCmd(String clazzName, String cmd); void setRepoCmds(Map<String, String> cmds); void setUserPage(String userPage); String getUserPageSuffix(); void setUserPageSuffix(String userPageSuffix); String getBugPage(); void setBugPage(String bugPage); String getBugPattern(); void setBugPattern(String bugPattern); String getReviewPage(); void setReviewPage(String reviewPage); String getReviewPattern(); void setReviewPattern(String reviewPattern); String getWebappLAF(); void setWebappLAF(String webappLAF); boolean isWebappCtags(); Configuration.RemoteSCM getRemoteScmSupported(); void setRemoteScmSupported(Configuration.RemoteSCM remoteScmSupported); boolean isOptimizeDatabase(); void setOptimizeDatabase(boolean optimizeDatabase); LuceneLockName getLuceneLocking(); boolean isIndexVersionedFilesOnly(); void setIndexVersionedFilesOnly(boolean indexVersionedFilesOnly); int getIndexingParallelism(); int getHistoryParallelism(); int getHistoryRenamedParallelism(); boolean isTagsEnabled(); void setTagsEnabled(boolean tagsEnabled); boolean isScopesEnabled(); void setScopesEnabled(boolean scopesEnabled); boolean isProjectsEnabled(); void setProjectsEnabled(boolean projectsEnabled); boolean isFoldingEnabled(); void setFoldingEnabled(boolean foldingEnabled); Date getDateForLastIndexRun(); String getCTagsExtraOptionsFile(); void setCTagsExtraOptionsFile(String ctagsExtraOptionsFile); Set<String> getAllowedSymlinks(); void setAllowedSymlinks(Set<String> allowedSymlinks); Set<String> getCanonicalRoots(); void setCanonicalRoots(Set<String> canonicalRoots); boolean isObfuscatingEMailAddresses(); void setObfuscatingEMailAddresses(boolean obfuscatingEMailAddresses); boolean isChattyStatusPage(); void setChattyStatusPage(boolean chattyStatusPage); void setFetchHistoryWhenNotInCache(boolean fetchHistoryWhenNotInCache); boolean isFetchHistoryWhenNotInCache(); boolean isHistoryCache(); void setHandleHistoryOfRenamedFiles(boolean handleHistoryOfRenamedFiles); boolean isHandleHistoryOfRenamedFiles(); void setNavigateWindowEnabled(boolean navigateWindowEnabled); boolean isNavigateWindowEnabled(); void setRevisionMessageCollapseThreshold(int revisionMessageCollapseThreshold); int getRevisionMessageCollapseThreshold(); void setMaxSearchThreadCount(int maxSearchThreadCount); int getMaxSearchThreadCount(); void setMaxRevisionThreadCount(int maxRevisionThreadCount); int getMaxRevisionThreadCount(); int getCurrentIndexedCollapseThreshold(); void setCurrentIndexedCollapseThreshold(int currentIndexedCollapseThreshold); int getGroupsCollapseThreshold(); void setConfigURI(String host); String getConfigURI(); boolean isHistoryEnabled(); void setHistoryEnabled(boolean historyEnabled); boolean getDisplayRepositories(); void setDisplayRepositories(boolean displayRepositories); boolean getListDirsFirst(); void setListDirsFirst(boolean listDirsFirst); void setTabSize(int tabSize); int getTabSize(); short getContextLimit(); short getContextSurround(); Set<String> getDisabledRepositories(); void setDisabledRepositories(Set<String> disabledRepositories); void readConfiguration(File file); void readConfiguration(File file, CommandTimeoutType cmdType); void writeConfiguration(File file); String getConfigurationXML(); void writeConfiguration(String host); void signalTorefreshSearcherManagers(List<String> subFiles, String host); void populateGroups(Set<Group> groups, Set<Project> projects); void setConfiguration(Configuration configuration); void setConfiguration(Configuration configuration, CommandTimeoutType cmdType); synchronized void setConfiguration(Configuration configuration, List<String> subFileList, CommandTimeoutType cmdType); IncludeFiles getIncludeFiles(); AuthorizationFramework getAuthorizationFramework(); void setAuthorizationFramework(AuthorizationFramework fw); void applyConfig(boolean reindex, CommandTimeoutType cmdType); void applyConfig(String configuration, boolean reindex, CommandTimeoutType cmdType); void applyConfig(Configuration config, boolean reindex, CommandTimeoutType cmdType); void setIndexTimestamp(); void refreshDateForLastIndexRun(); void maybeRefreshIndexSearchers(Iterable<String> projects); void maybeRefreshIndexSearchers(); SuperIndexSearcher getIndexSearcher(String projectName); void refreshSearcherManagerMap(); MultiReader getMultiReader(SortedSet<String> projects,
        ArrayList<SuperIndexSearcher> searcherList); void startExpirationTimer(); void stopExpirationTimer(); SortedSet<AcceptedMessage> getMessages(); SortedSet<AcceptedMessage> getMessages(final String tag); void addMessage(final Message message); void removeAnyMessage(final Set<String> tags, final String text); Set<AcceptedMessage> getAllMessages(); Path getDtagsEftarPath(); File getDtagsEftar(); SuggesterConfig getSuggesterConfig(); void setSuggesterConfig(SuggesterConfig suggesterConfig); R syncReadConfiguration(Function<Configuration, R> function); void syncWriteConfiguration(V v, ConfigurationValueConsumer<V> consumer); }
RuntimeEnvironment { public AuthorizationStack getPluginStack() { return syncReadConfiguration(Configuration::getPluginStack); } private  RuntimeEnvironment(); ExecutorService getSearchExecutor(); ExecutorService getRevisionExecutor(); void shutdownRevisionExecutor(); static RuntimeEnvironment getInstance(); IndexerParallelizer getIndexerParallelizer(); PathAccepter getPathAccepter(); int getScanningDepth(); void setScanningDepth(int scanningDepth); int getNestingMaximum(); void setNestingMaximum(int nestingMaximum); int getCommandTimeout(CommandTimeoutType cmdType); int getRestfulCommandTimeout(); void setRestfulCommandTimeout(int timeout); int getWebappStartCommandTimeout(); void setWebappStartCommandTimeout(int timeout); int getIndexerCommandTimeout(); void setIndexerCommandTimeout(int timeout); int getInteractiveCommandTimeout(); void setInteractiveCommandTimeout(int timeout); long getCtagsTimeout(); void setCtagsTimeout(long timeout); void setLastEditedDisplayMode(boolean lastEditedDisplayMode); boolean isLastEditedDisplayMode(); String getIncludeRootPath(); void setIncludeRoot(String includeRoot); String getDataRootPath(); File getDataRootFile(); void setDataRoot(String dataRoot); String getSourceRootPath(); File getSourceRootFile(); void setSourceRoot(String sourceRoot); String getPathRelativeToSourceRoot(File file); boolean hasProjects(); List<Project> getProjectList(); Map<String, Project> getProjects(); List<String> getProjectNames(); void setProjects(Map<String, Project> projects); boolean hasGroups(); Set<Group> getGroups(); void setGroups(Set<Group> groups); Map<Project, List<RepositoryInfo>> getProjectRepositoriesMap(); String getUrlPrefix(); String getCtags(); void setCtags(String ctags); String getMandoc(); void setMandoc(String value); int getCachePages(); void setCachePages(int cachePages); int getHitsPerPage(); void setHitsPerPage(int hitsPerPage); boolean validateUniversalCtags(); Set<String> getCtagsLanguages(); int getHistoryReaderTimeLimit(); void setHistoryReaderTimeLimit(int historyCacheTime); boolean useHistoryCache(); void setUseHistoryCache(boolean useHistoryCache); boolean isGenerateHtml(); void setGenerateHtml(boolean generateHtml); void setCompressXref(boolean compressXref); boolean isCompressXref(); boolean isQuickContextScan(); void setQuickContextScan(boolean quickContextScan); List<RepositoryInfo> getRepositories(); void setRepositories(List<RepositoryInfo> repositories); void removeRepositories(); void setRepositories(String... dir); void addRepositories(List<RepositoryInfo> repositories); void setDefaultProjectsFromNames(Set<String> defaultProjects); void setDefaultProjects(Set<Project> defaultProjects); Set<Project> getDefaultProjects(); double getRamBufferSize(); void setRamBufferSize(double ramBufferSize); void setPluginDirectory(String pluginDirectory); String getPluginDirectory(); boolean isAuthorizationWatchdog(); void setAuthorizationWatchdog(boolean authorizationWatchdogEnabled); AuthorizationStack getPluginStack(); void setPluginStack(AuthorizationStack pluginStack); boolean isPrintProgress(); void setPrintProgress(boolean printProgress); void setAllowLeadingWildcard(boolean allowLeadingWildcard); boolean isAllowLeadingWildcard(); IgnoredNames getIgnoredNames(); void setIgnoredNames(IgnoredNames ignoredNames); Filter getIncludedNames(); void setIncludedNames(Filter includedNames); String getUserPage(); String getRepoCmd(String clazzName); String setRepoCmd(String clazzName, String cmd); void setRepoCmds(Map<String, String> cmds); void setUserPage(String userPage); String getUserPageSuffix(); void setUserPageSuffix(String userPageSuffix); String getBugPage(); void setBugPage(String bugPage); String getBugPattern(); void setBugPattern(String bugPattern); String getReviewPage(); void setReviewPage(String reviewPage); String getReviewPattern(); void setReviewPattern(String reviewPattern); String getWebappLAF(); void setWebappLAF(String webappLAF); boolean isWebappCtags(); Configuration.RemoteSCM getRemoteScmSupported(); void setRemoteScmSupported(Configuration.RemoteSCM remoteScmSupported); boolean isOptimizeDatabase(); void setOptimizeDatabase(boolean optimizeDatabase); LuceneLockName getLuceneLocking(); boolean isIndexVersionedFilesOnly(); void setIndexVersionedFilesOnly(boolean indexVersionedFilesOnly); int getIndexingParallelism(); int getHistoryParallelism(); int getHistoryRenamedParallelism(); boolean isTagsEnabled(); void setTagsEnabled(boolean tagsEnabled); boolean isScopesEnabled(); void setScopesEnabled(boolean scopesEnabled); boolean isProjectsEnabled(); void setProjectsEnabled(boolean projectsEnabled); boolean isFoldingEnabled(); void setFoldingEnabled(boolean foldingEnabled); Date getDateForLastIndexRun(); String getCTagsExtraOptionsFile(); void setCTagsExtraOptionsFile(String ctagsExtraOptionsFile); Set<String> getAllowedSymlinks(); void setAllowedSymlinks(Set<String> allowedSymlinks); Set<String> getCanonicalRoots(); void setCanonicalRoots(Set<String> canonicalRoots); boolean isObfuscatingEMailAddresses(); void setObfuscatingEMailAddresses(boolean obfuscatingEMailAddresses); boolean isChattyStatusPage(); void setChattyStatusPage(boolean chattyStatusPage); void setFetchHistoryWhenNotInCache(boolean fetchHistoryWhenNotInCache); boolean isFetchHistoryWhenNotInCache(); boolean isHistoryCache(); void setHandleHistoryOfRenamedFiles(boolean handleHistoryOfRenamedFiles); boolean isHandleHistoryOfRenamedFiles(); void setNavigateWindowEnabled(boolean navigateWindowEnabled); boolean isNavigateWindowEnabled(); void setRevisionMessageCollapseThreshold(int revisionMessageCollapseThreshold); int getRevisionMessageCollapseThreshold(); void setMaxSearchThreadCount(int maxSearchThreadCount); int getMaxSearchThreadCount(); void setMaxRevisionThreadCount(int maxRevisionThreadCount); int getMaxRevisionThreadCount(); int getCurrentIndexedCollapseThreshold(); void setCurrentIndexedCollapseThreshold(int currentIndexedCollapseThreshold); int getGroupsCollapseThreshold(); void setConfigURI(String host); String getConfigURI(); boolean isHistoryEnabled(); void setHistoryEnabled(boolean historyEnabled); boolean getDisplayRepositories(); void setDisplayRepositories(boolean displayRepositories); boolean getListDirsFirst(); void setListDirsFirst(boolean listDirsFirst); void setTabSize(int tabSize); int getTabSize(); short getContextLimit(); short getContextSurround(); Set<String> getDisabledRepositories(); void setDisabledRepositories(Set<String> disabledRepositories); void readConfiguration(File file); void readConfiguration(File file, CommandTimeoutType cmdType); void writeConfiguration(File file); String getConfigurationXML(); void writeConfiguration(String host); void signalTorefreshSearcherManagers(List<String> subFiles, String host); void populateGroups(Set<Group> groups, Set<Project> projects); void setConfiguration(Configuration configuration); void setConfiguration(Configuration configuration, CommandTimeoutType cmdType); synchronized void setConfiguration(Configuration configuration, List<String> subFileList, CommandTimeoutType cmdType); IncludeFiles getIncludeFiles(); AuthorizationFramework getAuthorizationFramework(); void setAuthorizationFramework(AuthorizationFramework fw); void applyConfig(boolean reindex, CommandTimeoutType cmdType); void applyConfig(String configuration, boolean reindex, CommandTimeoutType cmdType); void applyConfig(Configuration config, boolean reindex, CommandTimeoutType cmdType); void setIndexTimestamp(); void refreshDateForLastIndexRun(); void maybeRefreshIndexSearchers(Iterable<String> projects); void maybeRefreshIndexSearchers(); SuperIndexSearcher getIndexSearcher(String projectName); void refreshSearcherManagerMap(); MultiReader getMultiReader(SortedSet<String> projects,
        ArrayList<SuperIndexSearcher> searcherList); void startExpirationTimer(); void stopExpirationTimer(); SortedSet<AcceptedMessage> getMessages(); SortedSet<AcceptedMessage> getMessages(final String tag); void addMessage(final Message message); void removeAnyMessage(final Set<String> tags, final String text); Set<AcceptedMessage> getAllMessages(); Path getDtagsEftarPath(); File getDtagsEftar(); SuggesterConfig getSuggesterConfig(); void setSuggesterConfig(SuggesterConfig suggesterConfig); R syncReadConfiguration(Function<Configuration, R> function); void syncWriteConfiguration(V v, ConfigurationValueConsumer<V> consumer); public WatchDogService watchDog; }