Search in sources :

Example 21 with FieldTable

use of org.apache.qpid.server.protocol.v0_8.FieldTable in project qpid-broker-j by apache.

the class UpgradeFrom4to5Test method loadBindings.

private List<BindingRecord> loadBindings() {
    final BindingTuple bindingTuple = new BindingTuple();
    final List<BindingRecord> queueBindings = new ArrayList<BindingRecord>();
    CursorOperation databaseOperation = new CursorOperation() {

        @Override
        public void processEntry(Database sourceDatabase, Database targetDatabase, Transaction transaction, DatabaseEntry key, DatabaseEntry value) {
            BindingRecord bindingRecord = bindingTuple.entryToObject(key);
            AMQShortString queueName = bindingRecord.getQueueName();
            AMQShortString exchangeName = bindingRecord.getExchangeName();
            AMQShortString routingKey = bindingRecord.getRoutingKey();
            FieldTable arguments = bindingRecord.getArguments();
            queueBindings.add(new BindingRecord(exchangeName, queueName, routingKey, arguments));
        }
    };
    new DatabaseTemplate(_environment, BINDING_DB_NAME, null).run(databaseOperation);
    return queueBindings;
}
Also used : AMQShortString(org.apache.qpid.server.protocol.v0_8.AMQShortString) Transaction(com.sleepycat.je.Transaction) FieldTable(org.apache.qpid.server.protocol.v0_8.FieldTable) BindingTuple(org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom4To5.BindingTuple) ArrayList(java.util.ArrayList) Database(com.sleepycat.je.Database) DatabaseEntry(com.sleepycat.je.DatabaseEntry) BindingRecord(org.apache.qpid.server.store.berkeleydb.upgrade.UpgradeFrom4To5.BindingRecord)

Example 22 with FieldTable

use of org.apache.qpid.server.protocol.v0_8.FieldTable in project qpid-broker-j by apache.

the class UpgradeFrom5To6 method upgradeQueueBindings.

private void upgradeQueueBindings(Environment environment, Transaction transaction, final UpgradeInteractionHandler handler, final String virtualHostName) {
    LOGGER.info("Queue Bindings");
    if (environment.getDatabaseNames().contains(OLD_QUEUE_BINDINGS_DB_NAME)) {
        final QueueBindingBinding binding = new QueueBindingBinding();
        CursorOperation bindingCursor = new CursorOperation() {

            @Override
            public void processEntry(Database exchangeDatabase, Database configuredObjectsDatabase, Transaction transaction, DatabaseEntry key, DatabaseEntry value) {
                // TODO: check and remove orphaned bindings
                BindingRecord bindingRecord = binding.entryToObject(key);
                String exchangeName = bindingRecord.getExchangeName() == null ? ExchangeDefaults.DEFAULT_EXCHANGE_NAME : bindingRecord.getExchangeName().toString();
                String queueName = bindingRecord.getQueueName().toString();
                String routingKey = bindingRecord.getRoutingKey().toString();
                FieldTable arguments = bindingRecord.getArguments();
                UUID bindingId = UUIDGenerator.generateBindingUUID(exchangeName, queueName, routingKey, virtualHostName);
                UpgradeConfiguredObjectRecord configuredObject = createBindingConfiguredObjectRecord(exchangeName, queueName, routingKey, arguments, virtualHostName);
                storeConfiguredObjectEntry(configuredObjectsDatabase, bindingId, configuredObject, transaction);
            }
        };
        new DatabaseTemplate(environment, OLD_QUEUE_BINDINGS_DB_NAME, CONFIGURED_OBJECTS_DB_NAME, transaction).run(bindingCursor);
        environment.removeDatabase(transaction, OLD_QUEUE_BINDINGS_DB_NAME);
        LOGGER.info(bindingCursor.getRowCount() + " Queue Binding Entries");
    }
}
Also used : Transaction(com.sleepycat.je.Transaction) FieldTable(org.apache.qpid.server.protocol.v0_8.FieldTable) Database(com.sleepycat.je.Database) DatabaseEntry(com.sleepycat.je.DatabaseEntry) AMQShortString(org.apache.qpid.server.protocol.v0_8.AMQShortString) UUID(java.util.UUID)

Example 23 with FieldTable

use of org.apache.qpid.server.protocol.v0_8.FieldTable in project qpid-broker-j by apache.

the class UpgradeFrom5To6 method buildQueueArgumentMap.

private Map<String, Object> buildQueueArgumentMap(String queueName, String owner, boolean exclusive, FieldTable arguments) {
    Map<String, Object> attributesMap = new HashMap<String, Object>();
    attributesMap.put(Queue.NAME, queueName);
    attributesMap.put(Queue.EXCLUSIVE, exclusive);
    FieldTable argumentsCopy = new FieldTable();
    if (arguments != null) {
        argumentsCopy.addAll(arguments);
    }
    if (moveNonExclusiveOwnerToDescription(owner, exclusive)) {
        LOGGER.info("Non-exclusive owner " + owner + " for queue " + queueName + " moved to " + QueueArgumentsConverter.X_QPID_DESCRIPTION);
        attributesMap.put(Queue.OWNER, null);
        argumentsCopy.put(AMQShortString.valueOf(QueueArgumentsConverter.X_QPID_DESCRIPTION), owner);
    } else {
        attributesMap.put(Queue.OWNER, owner);
    }
    if (!argumentsCopy.isEmpty()) {
        attributesMap.put(ARGUMENTS, FieldTable.convertToMap(argumentsCopy));
    }
    return attributesMap;
}
Also used : FieldTable(org.apache.qpid.server.protocol.v0_8.FieldTable) HashMap(java.util.HashMap) ConfiguredObject(org.apache.qpid.server.model.ConfiguredObject) AMQShortString(org.apache.qpid.server.protocol.v0_8.AMQShortString)

Example 24 with FieldTable

use of org.apache.qpid.server.protocol.v0_8.FieldTable in project qpid-broker-j by apache.

the class UpgradeFrom5To6 method createBindingConfiguredObjectRecord.

private UpgradeConfiguredObjectRecord createBindingConfiguredObjectRecord(String exchangeName, String queueName, String routingKey, FieldTable arguments, String virtualHostName) {
    Map<String, Object> attributesMap = new HashMap<String, Object>();
    attributesMap.put("name", routingKey);
    attributesMap.put("exchange", UUIDGenerator.generateExchangeUUID(exchangeName, virtualHostName));
    attributesMap.put("queue", UUIDGenerator.generateQueueUUID(queueName, virtualHostName));
    if (arguments != null) {
        attributesMap.put("arguments", FieldTable.convertToMap(arguments));
    }
    String json = serialiseMap(attributesMap);
    UpgradeConfiguredObjectRecord configuredObject = new UpgradeConfiguredObjectRecord(Binding.class.getName(), json);
    return configuredObject;
}
Also used : TupleBinding(com.sleepycat.bind.tuple.TupleBinding) LongBinding(com.sleepycat.bind.tuple.LongBinding) Binding(org.apache.qpid.server.model.Binding) HashMap(java.util.HashMap) ConfiguredObject(org.apache.qpid.server.model.ConfiguredObject) AMQShortString(org.apache.qpid.server.protocol.v0_8.AMQShortString)

Aggregations

FieldTable (org.apache.qpid.server.protocol.v0_8.FieldTable)20 AMQShortString (org.apache.qpid.server.protocol.v0_8.AMQShortString)19 Database (com.sleepycat.je.Database)5 DatabaseEntry (com.sleepycat.je.DatabaseEntry)5 Transaction (com.sleepycat.je.Transaction)5 BasicContentHeaderProperties (org.apache.qpid.server.protocol.v0_8.transport.BasicContentHeaderProperties)4 HashMap (java.util.HashMap)3 UUID (java.util.UUID)3 ConfiguredObject (org.apache.qpid.server.model.ConfiguredObject)3 ArrayList (java.util.ArrayList)2 QpidByteBuffer (org.apache.qpid.server.bytebuffer.QpidByteBuffer)2 MessageConversionException (org.apache.qpid.server.protocol.converter.MessageConversionException)2 DeliveryProperties (org.apache.qpid.server.protocol.v0_10.transport.DeliveryProperties)2 Header (org.apache.qpid.server.protocol.v0_10.transport.Header)2 MessageProperties (org.apache.qpid.server.protocol.v0_10.transport.MessageProperties)2 ReplyTo (org.apache.qpid.server.protocol.v0_10.transport.ReplyTo)2 ContentHeaderBody (org.apache.qpid.server.protocol.v0_8.transport.ContentHeaderBody)2 LongBinding (com.sleepycat.bind.tuple.LongBinding)1 TupleBinding (com.sleepycat.bind.tuple.TupleBinding)1 TupleOutput (com.sleepycat.bind.tuple.TupleOutput)1