You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/09/27 14:12:55 UTC

svn commit: r1762490 - in /qpid/java/trunk: bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/ broker-core/src/main/java/org/apache/qpid/server/model/ broker-core/src/main/java/org/apache/qpid/server/store/serializer/ broker-core/src...

Author: rgodfrey
Date: Tue Sep 27 14:12:55 2016
New Revision: 1762490

URL: http://svn.apache.org/viewvc?rev=1762490&view=rev
Log:
QPID-7379 : Address review comments

Added:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/MessageStoreSerializerFactory.java   (with props)
Modified:
    qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/MessageStoreSerializer.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/DTXRecord.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Deserializer.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageInstanceRecord.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageRecord.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageStoreSerializer_v1.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/QueueMappingRecord.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Record.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/RecordType.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Serializer.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/VersionRecord.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java

Modified: qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java (original)
+++ qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java Tue Sep 27 14:12:55 2016
@@ -456,7 +456,7 @@ public class BDBHAReplicaVirtualHostImpl
     }
 
     @Override
-    public Map<String, Object> extractConfig(boolean includeSecureAttributes)
+    public Map<String, Object> exportConfig(boolean includeSecureAttributes)
     {
         return Collections.emptyMap();
     }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java Tue Sep 27 14:12:55 2016
@@ -216,7 +216,7 @@ public interface VirtualHost<X extends V
     int publishMessage(@Param(name = "message")ManageableMessage message);
 
     @ManagedOperation(nonModifying = true, description = "Extract configuration", paramRequiringSecure = "includeSecureAttributes")
-    Map<String,Object> extractConfig(@Param(name="includeSecureAttributes",
+    Map<String,Object> exportConfig(@Param(name="includeSecureAttributes",
                                             description = "include attributes that may contain passwords or other "
                                                           + "confidential information",
                                             defaultValue = "false") boolean includeSecureAttributes);

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/MessageStoreSerializer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/MessageStoreSerializer.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/MessageStoreSerializer.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/MessageStoreSerializer.java Tue Sep 27 14:12:55 2016
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.server.store.serializer;
 
+import java.io.DataInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -37,4 +38,12 @@ public interface MessageStoreSerializer
                    final MessageStore.MessageStoreReader storeReader,
                    OutputStream outputStream) throws IOException;
     void deserialize(final Map<String, UUID> queueMap, MessageStore store, InputStream inputStream) throws IOException;
+
+    interface Factory
+    {
+        MessageStoreSerializer newInstance();
+        MessageStoreSerializer newInstance(DataInputStream input) throws IOException;
+    }
+
+    Factory FACTORY = new MessageStoreSerializerFactory();
 }

Added: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/MessageStoreSerializerFactory.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/MessageStoreSerializerFactory.java?rev=1762490&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/MessageStoreSerializerFactory.java (added)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/MessageStoreSerializerFactory.java Tue Sep 27 14:12:55 2016
@@ -0,0 +1,71 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.store.serializer;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+
+import org.apache.qpid.server.plugin.QpidServiceLoader;
+
+class MessageStoreSerializerFactory implements MessageStoreSerializer.Factory
+{
+    @Override
+    public MessageStoreSerializer newInstance()
+    {
+        return new QpidServiceLoader().getInstancesByType(MessageStoreSerializer.class).get(MessageStoreSerializer.LATEST);
+    }
+
+    @Override
+    public MessageStoreSerializer newInstance(final DataInputStream data) throws IOException
+    {
+
+        // All encodings should start 0x00 << int length of the version string>> << version string in UTF-8 >>
+        data.mark(50);
+        if (data.read() != 0)
+        {
+            throw new IllegalArgumentException("Invalid format for upload");
+        }
+        int stringLength = data.readInt();
+        byte[] stringBytes = new byte[stringLength];
+        data.readFully(stringBytes);
+
+        String version = new String(stringBytes, StandardCharsets.UTF_8);
+
+        data.reset();
+
+        Map<String, MessageStoreSerializer> serializerMap =
+                new QpidServiceLoader().getInstancesByType(MessageStoreSerializer.class);
+
+        MessageStoreSerializer serializer = serializerMap.get(version);
+
+        if(serializer == null)
+        {
+            throw new IllegalArgumentException("Message store import uses version '"
+                                               + version + "' which is not supported");
+        }
+        else
+        {
+            return serializer;
+        }
+    }
+}

Propchange: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/MessageStoreSerializerFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/DTXRecord.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/DTXRecord.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/DTXRecord.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/DTXRecord.java Tue Sep 27 14:12:55 2016
@@ -23,7 +23,6 @@ package org.apache.qpid.server.store.ser
 import java.io.IOException;
 import java.util.UUID;
 
-import org.apache.qpid.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.message.EnqueueableMessage;
 import org.apache.qpid.server.store.MessageDurability;
 import org.apache.qpid.server.store.MessageEnqueueRecord;
@@ -68,39 +67,31 @@ class DTXRecord implements Record
     }
 
     @Override
-    public byte[] getData()
+    public void writeData(final Serializer output) throws IOException
     {
-        byte[] data = new byte[24
-                               + _xid.getBranchId().length
-                               + _xid.getGlobalId().length
-                               + (24 * _enqueues.length + _dequeues.length)];
-        QpidByteBuffer buf = QpidByteBuffer.wrap(data);
-        buf.putLong(_xid.getFormat());
-        buf.putInt(_xid.getGlobalId().length);
-        buf.put(_xid.getGlobalId());
-        buf.putInt(_xid.getBranchId().length);
-        buf.put(_xid.getBranchId());
+        output.writeLong(_xid.getFormat());
+        output.writeInt(_xid.getGlobalId().length);
+        output.write(_xid.getGlobalId());
+        output.writeInt(_xid.getBranchId().length);
+        output.write(_xid.getBranchId());
 
-        buf.putInt(_enqueues.length);
+        output.writeInt(_enqueues.length);
         for(Transaction.EnqueueRecord record : _enqueues)
         {
-            buf.putLong(record.getMessage().getMessageNumber());
-            buf.putLong(record.getResource().getId().getMostSignificantBits());
-            buf.putLong(record.getResource().getId().getLeastSignificantBits());
+            output.writeLong(record.getMessage().getMessageNumber());
+            output.writeLong(record.getResource().getId().getMostSignificantBits());
+            output.writeLong(record.getResource().getId().getLeastSignificantBits());
         }
 
-
-        buf.putInt(_dequeues.length);
+        output.writeInt(_dequeues.length);
         for(Transaction.DequeueRecord record : _dequeues)
         {
-            buf.putLong(record.getEnqueueRecord().getMessageNumber());
-            buf.putLong(record.getEnqueueRecord().getQueueId().getMostSignificantBits());
-            buf.putLong(record.getEnqueueRecord().getQueueId().getLeastSignificantBits());
+            output.writeLong(record.getEnqueueRecord().getMessageNumber());
+            output.writeLong(record.getEnqueueRecord().getQueueId().getMostSignificantBits());
+            output.writeLong(record.getEnqueueRecord().getQueueId().getLeastSignificantBits());
         }
 
 
-        buf.dispose();
-        return data;
     }
 
     public static DTXRecord read(final Deserializer deserializer) throws IOException

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Deserializer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Deserializer.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Deserializer.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Deserializer.java Tue Sep 27 14:12:55 2016
@@ -59,22 +59,22 @@ class Deserializer
 
     byte[] readBytes(final int size) throws IOException
     {
-            byte[] bytes = new byte[size];
-            int pos = 0;
-            while(pos < size)
-            {
-                int read;
+        byte[] bytes = new byte[size];
+        int pos = 0;
+        while(pos < size)
+        {
+            int read;
 
-                read = _inputStream.read(bytes, pos, size - pos);
-                if (read == -1)
-                {
-                    throw new EOFException("Unexpected end of input");
-                }
-                else
-                {
-                    pos += read;
-                }
+            read = _inputStream.read(bytes, pos, size - pos);
+            if (read == -1)
+            {
+                throw new EOFException("Unexpected end of input");
             }
+            else
+            {
+                pos += read;
+            }
+        }
         _digest.update(bytes);
         return bytes;
     }
@@ -131,9 +131,9 @@ class Deserializer
             }
 
             @Override
-            public byte[] getData()
+            public void writeData(final Serializer output) throws IOException
             {
-                return fileDigest;
+                output.write(fileDigest);
             }
         };
     }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageInstanceRecord.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageInstanceRecord.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageInstanceRecord.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageInstanceRecord.java Tue Sep 27 14:12:55 2016
@@ -23,7 +23,6 @@ package org.apache.qpid.server.store.ser
 import java.io.IOException;
 import java.util.UUID;
 
-import org.apache.qpid.bytebuffer.QpidByteBuffer;
 import org.apache.qpid.server.store.MessageEnqueueRecord;
 
 class MessageInstanceRecord implements Record
@@ -60,15 +59,11 @@ class MessageInstanceRecord implements R
     }
 
     @Override
-    public byte[] getData()
+    public void writeData(final Serializer output) throws IOException
     {
-        byte[] data = new byte[24];
-        QpidByteBuffer buf = QpidByteBuffer.wrap(data);
-        buf.putLong(_messageNumber);
-        buf.putLong(_queueId.getMostSignificantBits());
-        buf.putLong(_queueId.getLeastSignificantBits());
-        buf.dispose();
-        return data;
+        output.writeLong(_messageNumber);
+        output.writeLong(_queueId.getMostSignificantBits());
+        output.writeLong(_queueId.getLeastSignificantBits());
     }
 
     public static MessageInstanceRecord read(final Deserializer deserializer) throws IOException

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageRecord.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageRecord.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageRecord.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageRecord.java Tue Sep 27 14:12:55 2016
@@ -73,17 +73,13 @@ class MessageRecord implements Record
     }
 
     @Override
-    public byte[] getData()
+    public void writeData(final Serializer output) throws IOException
     {
-        byte[] data = new byte[getLength()];
-        QpidByteBuffer buf = QpidByteBuffer.wrap(data);
-        buf.putLong(_messageNumber);
-        buf.putInt(_metaData.length);
-        buf.put(_metaData);
-        buf.putInt(_content.length);
-        buf.put(_content);
-        buf.dispose();
-        return data;
+        output.writeLong(_messageNumber);
+        output.writeInt(_metaData.length);
+        output.write(_metaData);
+        output.writeInt(_content.length);
+        output.write(_content);
     }
 
     public long getMessageNumber()

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageStoreSerializer_v1.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageStoreSerializer_v1.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageStoreSerializer_v1.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/MessageStoreSerializer_v1.java Tue Sep 27 14:12:55 2016
@@ -148,7 +148,7 @@ public class MessageStoreSerializer_v1 i
 
         nextRecord = deserializeMessageInstances(store, queueIdMap, messageMap, deserializer, nextRecord);
 
-        nextRecord = deserializeDtx(store, queueIdMap, messageMap, deserializer, nextRecord);
+        nextRecord = deserializeDistributedTransactions(store, queueIdMap, messageMap, deserializer, nextRecord);
 
         if(nextRecord.getType() != RecordType.DIGEST)
         {
@@ -157,10 +157,11 @@ public class MessageStoreSerializer_v1 i
 
     }
 
-    private Record deserializeDtx(final MessageStore store,
-                                  final Map<UUID, UUID> queueIdMap,
-                                  final Map<Long, StoredMessage<?>> messageMap, final Deserializer deserializer,
-                                  Record nextRecord) throws IOException
+    private Record deserializeDistributedTransactions(final MessageStore store,
+                                                      final Map<UUID, UUID> queueIdMap,
+                                                      final Map<Long, StoredMessage<?>> messageMap,
+                                                      final Deserializer deserializer,
+                                                      Record nextRecord) throws IOException
     {
         while(nextRecord.getType() == RecordType.DTX)
         {

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/QueueMappingRecord.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/QueueMappingRecord.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/QueueMappingRecord.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/QueueMappingRecord.java Tue Sep 27 14:12:55 2016
@@ -24,8 +24,6 @@ import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.UUID;
 
-import org.apache.qpid.bytebuffer.QpidByteBuffer;
-
 class QueueMappingRecord implements Record
 {
     private final UUID _id;
@@ -55,17 +53,13 @@ class QueueMappingRecord implements Reco
     }
 
     @Override
-    public byte[] getData()
+    public void writeData(final Serializer output) throws IOException
     {
         byte[] nameBytes = _name.getBytes(StandardCharsets.UTF_8);
-        byte[] data = new byte[20 + nameBytes.length];
-        QpidByteBuffer buf = QpidByteBuffer.wrap(data);
-        buf.putLong(_id.getMostSignificantBits());
-        buf.putLong(_id.getLeastSignificantBits());
-        buf.putInt(nameBytes.length);
-        buf.put(nameBytes);
-        buf.dispose();
-        return data;
+        output.writeLong(_id.getMostSignificantBits());
+        output.writeLong(_id.getLeastSignificantBits());
+        output.writeInt(nameBytes.length);
+        output.write(nameBytes);
     }
 
     public static QueueMappingRecord read(final Deserializer deserializer) throws IOException

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Record.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Record.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Record.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Record.java Tue Sep 27 14:12:55 2016
@@ -20,9 +20,11 @@
  */
 package org.apache.qpid.server.store.serializer.v1;
 
+import java.io.IOException;
+
 interface Record
 {
     RecordType getType();
 
-    byte[] getData();
+    void writeData(Serializer output) throws IOException;
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/RecordType.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/RecordType.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/RecordType.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/RecordType.java Tue Sep 27 14:12:55 2016
@@ -25,13 +25,13 @@ import java.io.IOException;
 enum RecordType
 {
     VERSION
-        {
-            @Override
-            public VersionRecord read(Deserializer deserializer) throws IOException
             {
-                return VersionRecord.read(deserializer);
-            }
-        },
+                @Override
+                public VersionRecord read(Deserializer deserializer) throws IOException
+                {
+                    return VersionRecord.read(deserializer);
+                }
+            },
     MESSAGE
             {
                 @Override

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Serializer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Serializer.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Serializer.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/Serializer.java Tue Sep 27 14:12:55 2016
@@ -29,6 +29,7 @@ class Serializer
 {
     private final OutputStream _outputStream;
     private final MessageDigest _digest;
+    private final byte[] _tmpBuf = new byte[8];
 
     Serializer(final OutputStream outputStream)
             throws IOException
@@ -49,37 +50,58 @@ class Serializer
 
     void add(Record record) throws IOException
     {
-        add((byte) record.getType().ordinal());
-        add(record.getData());
+        write((byte) record.getType().ordinal());
+        record.writeData(this);
     }
 
-    void add(final int value) throws IOException
+    public final void writeInt(long val) throws IOException
     {
-        add(new byte[] {
-                (byte)(value >>> 24),
-                (byte)(value >>> 16),
-                (byte)(value >>> 8),
-                (byte)value});
-    }
 
-    void add(byte data) throws IOException
-    {
-        _digest.update(data);
-        _outputStream.write(data);
+        _tmpBuf[4] = (byte)(val >>> 24);
+        _tmpBuf[5] = (byte)(val >>> 16);
+        _tmpBuf[6] = (byte)(val >>>  8);
+        _tmpBuf[7] = (byte)val;
+        write(_tmpBuf, 0, 4);
     }
 
-    private void add(byte[] data) throws IOException
+
+    public final void writeLong(long val) throws IOException
     {
-        _digest.update(data);
-        _outputStream.write(data);
+        _tmpBuf[0] = (byte)(val >>> 56);
+        _tmpBuf[1] = (byte)(val >>> 48);
+        _tmpBuf[2] = (byte)(val >>> 40);
+        _tmpBuf[3] = (byte)(val >>> 32);
+        _tmpBuf[4] = (byte)(val >>> 24);
+        _tmpBuf[5] = (byte)(val >>> 16);
+        _tmpBuf[6] = (byte)(val >>>  8);
+        _tmpBuf[7] = (byte)val;
+        write(_tmpBuf, 0, 8);
     }
 
-
     void complete() throws IOException
     {
-        add((byte)RecordType.DIGEST.ordinal());
+        write((byte)RecordType.DIGEST.ordinal());
         _outputStream.write(_digest.digest());
         _outputStream.flush();
     }
 
+
+    void write(final int b) throws IOException
+    {
+        _digest.update((byte)b);
+        _outputStream.write(b);
+    }
+
+    void write(final byte[] b) throws IOException
+    {
+        _digest.update(b);
+        _outputStream.write(b);
+    }
+
+    void write(final byte[] input, final int off, final int len) throws IOException
+    {
+        _digest.update(input, off, len);
+        _outputStream.write(input, off, len);
+    }
+
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/VersionRecord.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/VersionRecord.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/VersionRecord.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/store/serializer/v1/VersionRecord.java Tue Sep 27 14:12:55 2016
@@ -23,8 +23,6 @@ package org.apache.qpid.server.store.ser
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 
-import org.apache.qpid.bytebuffer.QpidByteBuffer;
-
 class VersionRecord implements Record
 {
 
@@ -37,14 +35,10 @@ class VersionRecord implements Record
     }
 
     @Override
-    public byte[] getData()
+    public void writeData(final Serializer output) throws IOException
     {
-        byte[] data = new byte[4 + _versionBytes.length];
-        QpidByteBuffer buf = QpidByteBuffer.wrap(data);
-        buf.putInt(_versionBytes.length);
-        buf.put(_versionBytes);
-        buf.dispose();
-        return data;
+        output.writeInt(_versionBytes.length);
+        output.write(_versionBytes);
     }
 
     public static VersionRecord read(final Deserializer deserializer) throws IOException

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Tue Sep 27 14:12:55 2016
@@ -860,7 +860,7 @@ public abstract class AbstractVirtualHos
     }
 
     @Override
-    public Map<String, Object> extractConfig(boolean includeSecureAttributes)
+    public Map<String, Object> exportConfig(boolean includeSecureAttributes)
     {
         return (new ConfigurationExtractor()).extractConfig(this, includeSecureAttributes);
     }
@@ -939,56 +939,33 @@ public abstract class AbstractVirtualHos
                      BufferedInputStream bufferedInputStream = new BufferedInputStream(input);
                      DataInputStream data = new DataInputStream(bufferedInputStream))
                 {
-                    // All encodings should start 0x00 << int length of the version string>> << version string in UTF-8 >>
-                    data.mark(50);
-                    if (data.read() != 0)
-                    {
-                        throw new IllegalArgumentException("Invalid format for upload");
-                    }
-                    int stringLength = data.readInt();
-                    byte[] stringBytes = new byte[stringLength];
-                    data.readFully(stringBytes);
-
-                    String version = new String(stringBytes, StandardCharsets.UTF_8);
-
-                    Map<String, MessageStoreSerializer> serializerMap =
-                            new QpidServiceLoader().getInstancesByType(MessageStoreSerializer.class);
 
-                    MessageStoreSerializer serializer = serializerMap.get(version);
+                    MessageStoreSerializer serializer = MessageStoreSerializer.FACTORY.newInstance(data);
 
-                    if (serializer != null)
+                    try
                     {
-                        try
-                        {
 
-                            _messageStore.openMessageStore(AbstractVirtualHost.this);
-                            checkMessageStoreEmpty();
-                            final Map<String, UUID> queueMap = new HashMap<>();
-                            getDurableConfigurationStore().reload(new ConfiguredObjectRecordHandler()
+                        _messageStore.openMessageStore(AbstractVirtualHost.this);
+                        checkMessageStoreEmpty();
+                        final Map<String, UUID> queueMap = new HashMap<>();
+                        getDurableConfigurationStore().reload(new ConfiguredObjectRecordHandler()
+                        {
+                            @Override
+                            public void handle(final ConfiguredObjectRecord record)
                             {
-                                @Override
-                                public void handle(final ConfiguredObjectRecord record)
+                                if (record.getType().equals(Queue.class.getSimpleName()))
                                 {
-                                    if (record.getType().equals(Queue.class.getSimpleName()))
-                                    {
-                                        queueMap.put((String) record.getAttributes().get(ConfiguredObject.NAME),
-                                                     record.getId());
-                                    }
+                                    queueMap.put((String) record.getAttributes().get(ConfiguredObject.NAME),
+                                                 record.getId());
                                 }
-                            });
+                            }
+                        });
 
-                            bufferedInputStream.reset();
-                            serializer.deserialize(queueMap, _messageStore, data);
-                        }
-                        finally
-                        {
-                            _messageStore.closeMessageStore();
-                        }
+                        serializer.deserialize(queueMap, _messageStore, data);
                     }
-                    else
+                    finally
                     {
-                        throw new IllegalArgumentException("Message store import uses version '"
-                                                           + version + "' which is not supported");
+                        _messageStore.closeMessageStore();
                     }
                 }
             }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java?rev=1762490&r1=1762489&r2=1762490&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java Tue Sep 27 14:12:55 2016
@@ -315,7 +315,7 @@ class RedirectingVirtualHostImpl
     }
 
     @Override
-    public Map<String, Object> extractConfig(boolean includeSecureAttributes)
+    public Map<String, Object> exportConfig(boolean includeSecureAttributes)
     {
         return Collections.emptyMap();
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org