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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to