private FilteredKahaDBPersistenceAdapter registerAdapter(FilteredKahaDBPersistenceAdapter template, PersistenceAdapter adapter, ActiveMQDestination destination) { adapters.add(adapter); FilteredKahaDBPersistenceAdapter result = new FilteredKahaDBPersistenceAdapter(template, destination, adapter); destinationMap.put(destination, result); return result; }
/** * Sets the FilteredKahaDBPersistenceAdapter entries * * @org.apache.xbean.ElementType class="org.apache.activemq.store.kahadb.FilteredKahaDBPersistenceAdapter" */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void setFilteredPersistenceAdapters(List entries) { for (Object entry : entries) { FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) entry; PersistenceAdapter adapter = filteredAdapter.getPersistenceAdapter(); if (filteredAdapter.getDestination() == null) { filteredAdapter.setDestination(matchAll); } if (filteredAdapter.isPerDestination()) { configureDirectory(adapter, null); // per destination adapters will be created on demand or during recovery continue; } else { configureDirectory(adapter, nameFromDestinationFilter(filteredAdapter.getDestination())); } configureAdapter(adapter); adapters.add(adapter); } destinationMap.setEntries(entries); }
public FilteredKahaDBPersistenceAdapter(FilteredKahaDBPersistenceAdapter template, ActiveMQDestination destination, PersistenceAdapter adapter) { setDestination(destination); persistenceAdapter = adapter; if (template.getUsage() != null) { usage = template.getUsage().copy(); } }
private PersistenceAdapter getMatchingPersistenceAdapter(ActiveMQDestination destination) throws IOException { Object result = destinationMap.chooseValue(destination); if (result == null) { throw new RuntimeException("No matching persistence adapter configured for destination: " + destination + ", options:" + adapters); } FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) result; if (filteredAdapter.getDestination() == matchAll && filteredAdapter.isPerDestination()) { filteredAdapter = addAdapter(filteredAdapter, destination); if (LOG.isTraceEnabled()) { LOG.info("created per destination adapter for: " + destination + ", " + result); } } startAdapter(filteredAdapter.getPersistenceAdapter(), destination.getQualifiedName()); LOG.debug("destination {} matched persistence adapter {}", new Object[]{destination.getQualifiedName(), filteredAdapter.getPersistenceAdapter()}); return filteredAdapter.getPersistenceAdapter(); }
@Override public void doStart() throws Exception { Object result = destinationMap.chooseValue(matchAll); if (result != null) { FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) result; if (filteredAdapter.getDestination() == matchAll && filteredAdapter.isPerDestination()) { findAndRegisterExistingAdapters(filteredAdapter); } } for (PersistenceAdapter persistenceAdapter : adapters) { persistenceAdapter.start(); } }
@Override public void registerIndexListener(IndexListener indexListener) { getDelegate().registerIndexListener(indexListener); try { if (indexListener instanceof BaseDestination) { // update queue storeUsage Object matchingPersistenceAdapter = multiKahaDBPersistenceAdapter.destinationMap.chooseValue(getDelegate().getDestination()); if (matchingPersistenceAdapter instanceof FilteredKahaDBPersistenceAdapter) { FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) matchingPersistenceAdapter; if (filteredAdapter.getUsage() != null && filteredAdapter.getPersistenceAdapter() instanceof KahaDBPersistenceAdapter) { StoreUsage storeUsage = filteredAdapter.getUsage(); storeUsage.setStore(filteredAdapter.getPersistenceAdapter()); storeUsage.setParent(multiKahaDBPersistenceAdapter.getBrokerService().getSystemUsage().getStoreUsage()); ((BaseDestination) indexListener).getSystemUsage().setStoreUsage(storeUsage); } } } } catch (Exception ignored) { LOG.warn("Failed to set mKahaDB destination store usage", ignored); } } };
private void findAndRegisterExistingAdapters(FilteredKahaDBPersistenceAdapter template) throws IOException { FileFilter destinationNames = new FileFilter() { @Override public boolean accept(File file) { return file.getName().startsWith("queue#") || file.getName().startsWith("topic#"); } }; File[] candidates = template.getPersistenceAdapter().getDirectory().listFiles(destinationNames); if (candidates != null) { for (File candidate : candidates) { registerExistingAdapter(template, candidate); } } }
private PersistenceAdapter getMatchingPersistenceAdapter(ActiveMQDestination destination) throws IOException { Object result = destinationMap.chooseValue(destination); if (result == null) { throw new RuntimeException("No matching persistence adapter configured for destination: " + destination + ", options:" + adapters); } FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) result; if (filteredAdapter.getDestination() == matchAll && filteredAdapter.isPerDestination()) { filteredAdapter = addAdapter(filteredAdapter, destination); if (LOG.isTraceEnabled()) { LOG.info("created per destination adapter for: " + destination + ", " + result); } } startAdapter(filteredAdapter.getPersistenceAdapter(), destination.getQualifiedName()); LOG.debug("destination {} matched persistence adapter {}", new Object[]{destination.getQualifiedName(), filteredAdapter.getPersistenceAdapter()}); return filteredAdapter.getPersistenceAdapter(); }
@Override public void doStart() throws Exception { Object result = destinationMap.chooseValue(matchAll); if (result != null) { FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) result; if (filteredAdapter.getDestination() == matchAll && filteredAdapter.isPerDestination()) { findAndRegisterExistingAdapters(filteredAdapter); } } for (PersistenceAdapter persistenceAdapter : adapters) { persistenceAdapter.start(); } }
@Override public void registerIndexListener(IndexListener indexListener) { getDelegate().registerIndexListener(indexListener); try { if (indexListener instanceof BaseDestination) { // update queue storeUsage Object matchingPersistenceAdapter = multiKahaDBPersistenceAdapter.destinationMap.chooseValue(getDelegate().getDestination()); if (matchingPersistenceAdapter instanceof FilteredKahaDBPersistenceAdapter) { FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) matchingPersistenceAdapter; if (filteredAdapter.getUsage() != null && filteredAdapter.getPersistenceAdapter() instanceof KahaDBPersistenceAdapter) { StoreUsage storeUsage = filteredAdapter.getUsage(); storeUsage.setStore(filteredAdapter.getPersistenceAdapter()); storeUsage.setParent(multiKahaDBPersistenceAdapter.getBrokerService().getSystemUsage().getStoreUsage()); ((BaseDestination) indexListener).getSystemUsage().setStoreUsage(storeUsage); } } } } catch (Exception ignored) { LOG.warn("Failed to set mKahaDB destination store usage", ignored); } } };
private PersistenceAdapter adapterFromTemplate(FilteredKahaDBPersistenceAdapter template, String destinationName) throws IOException { PersistenceAdapter adapter = kahaDBFromTemplate(template.getPersistenceAdapter()); configureAdapter(adapter); configureDirectory(adapter, destinationName); configureIndexDirectory(adapter, template.getPersistenceAdapter(), destinationName); return adapter; }
/** * Sets the FilteredKahaDBPersistenceAdapter entries * * @org.apache.xbean.ElementType class="org.apache.activemq.store.kahadb.FilteredKahaDBPersistenceAdapter" */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void setFilteredPersistenceAdapters(List entries) { for (Object entry : entries) { FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) entry; PersistenceAdapter adapter = filteredAdapter.getPersistenceAdapter(); if (filteredAdapter.getDestination() == null) { filteredAdapter.setDestination(matchAll); } if (filteredAdapter.isPerDestination()) { configureDirectory(adapter, null); // per destination adapters will be created on demand or during recovery continue; } else { configureDirectory(adapter, nameFromDestinationFilter(filteredAdapter.getDestination())); } configureAdapter(adapter); adapters.add(adapter); } destinationMap.setEntries(entries); }
private PersistenceAdapter getMatchingPersistenceAdapter(ActiveMQDestination destination) throws IOException { Object result = destinationMap.chooseValue(destination); if (result == null) { throw new RuntimeException("No matching persistence adapter configured for destination: " + destination + ", options:" + adapters); } FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) result; if (filteredAdapter.getDestination() == matchAll && filteredAdapter.isPerDestination()) { filteredAdapter = addAdapter(filteredAdapter, destination); if (LOG.isTraceEnabled()) { LOG.info("created per destination adapter for: " + destination + ", " + result); } } startAdapter(filteredAdapter.getPersistenceAdapter(), destination.getQualifiedName()); LOG.debug("destination {} matched persistence adapter {}", new Object[]{destination.getQualifiedName(), filteredAdapter.getPersistenceAdapter()}); return filteredAdapter.getPersistenceAdapter(); }
public FilteredKahaDBPersistenceAdapter(FilteredKahaDBPersistenceAdapter template, ActiveMQDestination destination, PersistenceAdapter adapter) { setDestination(destination); persistenceAdapter = adapter; if (template.getUsage() != null) { usage = template.getUsage().copy(); } }
@Override public void doStart() throws Exception { Object result = destinationMap.chooseValue(matchAll); if (result != null) { FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) result; if (filteredAdapter.getDestination() == matchAll && filteredAdapter.isPerDestination()) { findAndRegisterExistingAdapters(filteredAdapter); } } for (PersistenceAdapter persistenceAdapter : adapters) { persistenceAdapter.start(); } }
@Override public void registerIndexListener(IndexListener indexListener) { getDelegate().registerIndexListener(indexListener); try { if (indexListener instanceof BaseDestination) { // update queue storeUsage Object matchingPersistenceAdapter = multiKahaDBPersistenceAdapter.destinationMap.chooseValue(getDelegate().getDestination()); if (matchingPersistenceAdapter instanceof FilteredKahaDBPersistenceAdapter) { FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) matchingPersistenceAdapter; if (filteredAdapter.getUsage() != null && filteredAdapter.getPersistenceAdapter() instanceof KahaDBPersistenceAdapter) { StoreUsage storeUsage = filteredAdapter.getUsage(); storeUsage.setStore(filteredAdapter.getPersistenceAdapter()); storeUsage.setParent(multiKahaDBPersistenceAdapter.getBrokerService().getSystemUsage().getStoreUsage()); ((BaseDestination) indexListener).getSystemUsage().setStoreUsage(storeUsage); } } } } catch (Exception ignored) { LOG.warn("Failed to set mKahaDB destination store usage", ignored); } } };
@Override public void deleteAllMessages() throws IOException { for (PersistenceAdapter persistenceAdapter : adapters) { persistenceAdapter.deleteAllMessages(); } transactionStore.deleteAllMessages(); IOHelper.deleteChildren(getDirectory()); for (Object o : destinationMap.get(new AnyDestination(new ActiveMQDestination[]{new ActiveMQQueue(">"), new ActiveMQTopic(">")}))) { if (o instanceof FilteredKahaDBPersistenceAdapter) { FilteredKahaDBPersistenceAdapter filteredKahaDBPersistenceAdapter = (FilteredKahaDBPersistenceAdapter) o; if (filteredKahaDBPersistenceAdapter.getPersistenceAdapter().getDirectory() != DEFAULT_DIRECTORY) { IOHelper.deleteChildren(filteredKahaDBPersistenceAdapter.getPersistenceAdapter().getDirectory()); } if (filteredKahaDBPersistenceAdapter.getPersistenceAdapter() instanceof KahaDBPersistenceAdapter) { KahaDBPersistenceAdapter kahaDBPersistenceAdapter = (KahaDBPersistenceAdapter) filteredKahaDBPersistenceAdapter.getPersistenceAdapter(); if (kahaDBPersistenceAdapter.getIndexDirectory() != null) { IOHelper.deleteChildren(kahaDBPersistenceAdapter.getIndexDirectory()); } } } } }
private FilteredKahaDBPersistenceAdapter registerAdapter(FilteredKahaDBPersistenceAdapter template, PersistenceAdapter adapter, ActiveMQDestination destination) { adapters.add(adapter); FilteredKahaDBPersistenceAdapter result = new FilteredKahaDBPersistenceAdapter(template, destination, adapter); destinationMap.put(destination, result); return result; }
/** * Sets the FilteredKahaDBPersistenceAdapter entries * * @org.apache.xbean.ElementType class="org.apache.activemq.store.kahadb.FilteredKahaDBPersistenceAdapter" */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void setFilteredPersistenceAdapters(List entries) { for (Object entry : entries) { FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) entry; PersistenceAdapter adapter = filteredAdapter.getPersistenceAdapter(); if (filteredAdapter.getDestination() == null) { filteredAdapter.setDestination(matchAll); } if (filteredAdapter.isPerDestination()) { configureDirectory(adapter, null); // per destination adapters will be created on demand or during recovery continue; } else { configureDirectory(adapter, nameFromDestinationFilter(filteredAdapter.getDestination())); } configureAdapter(adapter); adapters.add(adapter); } destinationMap.setEntries(entries); }
private PersistenceAdapter getMatchingPersistenceAdapter(ActiveMQDestination destination) throws IOException { Object result = destinationMap.chooseValue(destination); if (result == null) { throw new RuntimeException("No matching persistence adapter configured for destination: " + destination + ", options:" + adapters); } FilteredKahaDBPersistenceAdapter filteredAdapter = (FilteredKahaDBPersistenceAdapter) result; if (filteredAdapter.getDestination() == matchAll && filteredAdapter.isPerDestination()) { filteredAdapter = addAdapter(filteredAdapter, destination); if (LOG.isTraceEnabled()) { LOG.info("created per destination adapter for: " + destination + ", " + result); } } startAdapter(filteredAdapter.getPersistenceAdapter(), destination.getQualifiedName()); LOG.debug("destination {} matched persistence adapter {}", new Object[]{destination.getQualifiedName(), filteredAdapter.getPersistenceAdapter()}); return filteredAdapter.getPersistenceAdapter(); }