use of org.apache.activemq.artemis.core.settings.impl.HierarchicalObjectRepository in project activemq-artemis by apache.
the class DBOption method initializeJournal.
protected void initializeJournal(Configuration configuration) throws Exception {
this.config = configuration;
executor = Executors.newFixedThreadPool(5, ActiveMQThreadFactory.defaultThreadFactory());
executorFactory = new OrderedExecutorFactory(executor);
scheduledExecutorService = new ScheduledThreadPoolExecutor(configuration.getScheduledThreadPoolMaxSize(), new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
return new Thread(r);
}
});
HierarchicalRepository<AddressSettings> addressSettingsRepository = new HierarchicalObjectRepository<>(config.getWildcardConfiguration());
addressSettingsRepository.setDefault(new AddressSettings());
if (configuration.isJDBC()) {
storageManager = new JDBCJournalStorageManager(config, null, scheduledExecutorService, executorFactory, executorFactory, null);
PagingStoreFactory pageStoreFactory = new PagingStoreFactoryDatabase((DatabaseStorageConfiguration) configuration.getStoreConfiguration(), storageManager, 1000L, scheduledExecutorService, executorFactory, false, null);
pagingmanager = new PagingManagerImpl(pageStoreFactory, addressSettingsRepository);
} else {
storageManager = new JournalStorageManager(config, EmptyCriticalAnalyzer.getInstance(), executorFactory, executorFactory);
PagingStoreFactory pageStoreFactory = new PagingStoreFactoryNIO(storageManager, config.getPagingLocation(), 1000L, scheduledExecutorService, executorFactory, true, null);
pagingmanager = new PagingManagerImpl(pageStoreFactory, addressSettingsRepository);
}
}
use of org.apache.activemq.artemis.core.settings.impl.HierarchicalObjectRepository in project activemq-artemis by apache.
the class FileMoveManagerTest method testMoveOverPaging.
@Test
public void testMoveOverPaging() throws Exception {
AssertionLoggerHandler.startCapture();
ExecutorService threadPool = Executors.newCachedThreadPool();
try {
manager.setMaxFolders(3);
for (int i = 1; i <= 10; i++) {
HierarchicalRepository<AddressSettings> addressSettings = new HierarchicalObjectRepository<>();
AddressSettings settings = new AddressSettings();
settings.setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE);
addressSettings.setDefault(settings);
final StorageManager storageManager = new NullStorageManager();
PagingStoreFactoryNIO storeFactory = new PagingStoreFactoryNIO(storageManager, dataLocation, 100, null, new OrderedExecutorFactory(threadPool), true, null);
PagingManagerImpl managerImpl = new PagingManagerImpl(storeFactory, addressSettings, -1);
managerImpl.start();
PagingStore store = managerImpl.getPageStore(new SimpleString("simple-test"));
store.startPaging();
store.stop();
managerImpl.stop();
manager.doMove();
Assert.assertEquals(Math.min(i, manager.getMaxFolders()), manager.getNumberOfFolders());
}
Assert.assertFalse("The loggers are complaining about address.txt", AssertionLoggerHandler.findText("address.txt"));
} finally {
AssertionLoggerHandler.stopCapture();
threadPool.shutdown();
}
}
use of org.apache.activemq.artemis.core.settings.impl.HierarchicalObjectRepository in project activemq-artemis by apache.
the class RepositoryTest method testAddListener.
@Test
public void testAddListener() {
HierarchicalRepository<String> repository = new HierarchicalObjectRepository<>();
repository.addMatch("#", "1");
repository.addMatch("B", "2");
final AtomicInteger called = new AtomicInteger(0);
repository.registerListener(new HierarchicalRepositoryChangeListener() {
@Override
public void onChange() {
called.incrementAndGet();
}
});
assertEquals(1, called.get());
repository.disableListeners();
repository.addMatch("C", "3");
assertEquals(1, called.get());
repository.enableListeners();
assertEquals(2, called.get());
repository.addMatch("D", "4");
assertEquals(3, called.get());
repository.removeMatch("D");
assertEquals(4, called.get());
repository.disableListeners();
repository.removeMatch("C");
assertEquals(4, called.get());
}
use of org.apache.activemq.artemis.core.settings.impl.HierarchicalObjectRepository in project activemq-artemis by apache.
the class RepositoryTest method testMatchingDocsCustomUnderscorDelimiter.
@Test
public void testMatchingDocsCustomUnderscorDelimiter() throws Throwable {
WildcardConfiguration wildcardConfiguration = new WildcardConfiguration();
wildcardConfiguration.setDelimiter('_');
HierarchicalObjectRepository<String> repo = new HierarchicalObjectRepository<>(wildcardConfiguration);
repo.addMatch("a_b_#", "ab#");
repo.addMatch("a_b_d_#", "abd#");
repo.addMatch("#", "root");
Assert.assertEquals("ab#", repo.getMatch("a_b"));
Assert.assertEquals("ab#", repo.getMatch("a_b_c"));
Assert.assertEquals("abd#", repo.getMatch("a_b_d_lll"));
Assert.assertEquals("root", repo.getMatch("z_z_z_z_z"));
Assert.assertEquals("root", repo.getMatch("a_babc"));
Assert.assertEquals("ab#", repo.getMatch("a_b_dabc"));
Assert.assertEquals("abd#", repo.getMatch("a_b_d"));
}
use of org.apache.activemq.artemis.core.settings.impl.HierarchicalObjectRepository in project activemq-artemis by apache.
the class RepositoryTest method testMatchingDocsCustomForwardSlashDelimiter.
@Test
public void testMatchingDocsCustomForwardSlashDelimiter() throws Throwable {
WildcardConfiguration wildcardConfiguration = new WildcardConfiguration();
wildcardConfiguration.setDelimiter('/');
HierarchicalObjectRepository<String> repo = new HierarchicalObjectRepository<>(wildcardConfiguration);
repo.addMatch("a/b/#", "ab#");
repo.addMatch("a/b/d/#", "abd#");
repo.addMatch("#", "root");
Assert.assertEquals("ab#", repo.getMatch("a/b"));
Assert.assertEquals("ab#", repo.getMatch("a/b/c"));
Assert.assertEquals("abd#", repo.getMatch("a/b/d/lll"));
Assert.assertEquals("root", repo.getMatch("z/z/z/z/z"));
Assert.assertEquals("root", repo.getMatch("a/babc"));
Assert.assertEquals("ab#", repo.getMatch("a/b/dabc"));
Assert.assertEquals("abd#", repo.getMatch("a/b/d"));
}
Aggregations