You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2019/08/09 11:09:59 UTC

[qpid-proton-j] branch master updated: PROTON-2084: add some try-finallys to ensure cleanup

This is an automated email from the ASF dual-hosted git repository.

robbie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/qpid-proton-j.git


The following commit(s) were added to refs/heads/master by this push:
     new 6dc5587  PROTON-2084: add some try-finallys to ensure cleanup
6dc5587 is described below

commit 6dc5587f1d1b23969a8994f1755198e638e92bc4
Author: Robbie Gemmell <ro...@apache.org>
AuthorDate: Fri Aug 9 11:32:22 2019 +0100

    PROTON-2084: add some try-finallys to ensure cleanup
---
 .../java/org/apache/qpid/proton/codec/MapType.java | 122 +++++++++++----------
 .../FastPathApplicationPropertiesType.java         |   7 +-
 .../messaging/FastPathDeliveryAnnotationsType.java |   7 +-
 .../messaging/FastPathMessageAnnotationsType.java  |   7 +-
 4 files changed, 79 insertions(+), 64 deletions(-)

diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec/MapType.java b/proton-j/src/main/java/org/apache/qpid/proton/codec/MapType.java
index 40c27b2..78106ce 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/MapType.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/codec/MapType.java
@@ -82,27 +82,29 @@ public class MapType extends AbstractPrimitiveType<Map>
         // Clear existing fixed key type encoding to prevent application to nested Maps
         setKeyEncoding(null);
 
-        while (iter.hasNext())
-        {
-            final Map.Entry<?, ?> element = iter.next();
-            TypeEncoding elementEncoding;
-
-            if (fixedKeyType == null)
-            {
-                elementEncoding = _encoder.getType(element.getKey()).getEncoding(element.getKey());
-            }
-            else
+        try {
+            while (iter.hasNext())
             {
-                elementEncoding = fixedKeyType.getEncoding(element.getKey());
-            }
+                final Map.Entry<?, ?> element = iter.next();
+                TypeEncoding elementEncoding;
 
-            len += elementEncoding.getConstructorSize() + elementEncoding.getValueSize(element.getKey());
-            elementEncoding = _encoder.getType(element.getValue()).getEncoding(element.getValue());
-            len += elementEncoding.getConstructorSize() + elementEncoding.getValueSize(element.getValue());
-        }
+                if (fixedKeyType == null)
+                {
+                    elementEncoding = _encoder.getType(element.getKey()).getEncoding(element.getKey());
+                }
+                else
+                {
+                    elementEncoding = fixedKeyType.getEncoding(element.getKey());
+                }
 
-        // Reset Existing key type encoding for later encode step or reuse until cleared by caller
-        setKeyEncoding(fixedKeyType);
+                len += elementEncoding.getConstructorSize() + elementEncoding.getValueSize(element.getKey());
+                elementEncoding = _encoder.getType(element.getValue()).getEncoding(element.getValue());
+                len += elementEncoding.getConstructorSize() + elementEncoding.getValueSize(element.getValue());
+            }
+        } finally {
+            // Reset Existing key type encoding for later encode step or reuse until cleared by caller
+            setKeyEncoding(fixedKeyType);
+        }
 
         return len;
     }
@@ -175,29 +177,31 @@ public class MapType extends AbstractPrimitiveType<Map>
             // Clear existing fixed key type encoding to prevent application to nested Maps
             setKeyEncoding(null);
 
-            while (iter.hasNext())
-            {
-                final Map.Entry<?, ?> element = iter.next();
-                TypeEncoding elementEncoding;
-
-                if (fixedKeyType == null)
+            try {
+                while (iter.hasNext())
                 {
-                    elementEncoding = _encoder.getType(element.getKey()).getEncoding(element.getKey());
-                }
-                else
-                {
-                    elementEncoding = fixedKeyType.getEncoding(element.getKey());
+                    final Map.Entry<?, ?> element = iter.next();
+                    TypeEncoding elementEncoding;
+
+                    if (fixedKeyType == null)
+                    {
+                        elementEncoding = _encoder.getType(element.getKey()).getEncoding(element.getKey());
+                    }
+                    else
+                    {
+                        elementEncoding = fixedKeyType.getEncoding(element.getKey());
+                    }
+
+                    elementEncoding.writeConstructor();
+                    elementEncoding.writeValue(element.getKey());
+                    elementEncoding = getEncoder().getType(element.getValue()).getEncoding(element.getValue());
+                    elementEncoding.writeConstructor();
+                    elementEncoding.writeValue(element.getValue());
                 }
-
-                elementEncoding.writeConstructor();
-                elementEncoding.writeValue(element.getKey());
-                elementEncoding = getEncoder().getType(element.getValue()).getEncoding(element.getValue());
-                elementEncoding.writeConstructor();
-                elementEncoding.writeValue(element.getValue());
+            } finally {
+                // Reset Existing key type encoding for later encode step or reuse until cleared by caller
+                setKeyEncoding(fixedKeyType);
             }
-
-            // Reset Existing key type encoding for later encode step or reuse until cleared by caller
-            setKeyEncoding(fixedKeyType);
         }
 
         @Override
@@ -325,29 +329,31 @@ public class MapType extends AbstractPrimitiveType<Map>
             // Clear existing fixed key type encoding to prevent application to nested Maps
             setKeyEncoding(null);
 
-            while (iter.hasNext())
-            {
-                final Map.Entry<?, ?> element = iter.next();
-                TypeEncoding elementEncoding;
-
-                if (fixedKeyType == null)
+            try {
+                while (iter.hasNext())
                 {
-                    elementEncoding = _encoder.getType(element.getKey()).getEncoding(element.getKey());
+                    final Map.Entry<?, ?> element = iter.next();
+                    TypeEncoding elementEncoding;
+
+                    if (fixedKeyType == null)
+                    {
+                        elementEncoding = _encoder.getType(element.getKey()).getEncoding(element.getKey());
+                    }
+                    else
+                    {
+                        elementEncoding = fixedKeyType.getEncoding(element.getKey());
+                    }
+
+                    elementEncoding.writeConstructor();
+                    elementEncoding.writeValue(element.getKey());
+                    elementEncoding = getEncoder().getType(element.getValue()).getEncoding(element.getValue());
+                    elementEncoding.writeConstructor();
+                    elementEncoding.writeValue(element.getValue());
                 }
-                else
-                {
-                    elementEncoding = fixedKeyType.getEncoding(element.getKey());
-                }
-
-                elementEncoding.writeConstructor();
-                elementEncoding.writeValue(element.getKey());
-                elementEncoding = getEncoder().getType(element.getValue()).getEncoding(element.getValue());
-                elementEncoding.writeConstructor();
-                elementEncoding.writeValue(element.getValue());
+            } finally {
+                // Reset Existing key type encoding for later encode step or reuse until cleared by caller
+                setKeyEncoding(fixedKeyType);
             }
-
-            // Reset Existing key type encoding for later encode step or reuse until cleared by caller
-            setKeyEncoding(fixedKeyType);
         }
 
         @Override
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathApplicationPropertiesType.java b/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathApplicationPropertiesType.java
index 5ebb9ea..82ed7a2 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathApplicationPropertiesType.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathApplicationPropertiesType.java
@@ -169,8 +169,11 @@ public class FastPathApplicationPropertiesType implements AMQPType<ApplicationPr
         MapType mapType = (MapType) getEncoder().getType(val.getValue());
 
         mapType.setKeyEncoding(stringType);
-        mapType.write(val.getValue());
-        mapType.setKeyEncoding(null);
+        try {
+            mapType.write(val.getValue());
+        } finally {
+            mapType.setKeyEncoding(null);
+        }
     }
 
     public static void register(Decoder decoder, EncoderImpl encoder) {
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathDeliveryAnnotationsType.java b/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathDeliveryAnnotationsType.java
index 1bbc321..778f30e 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathDeliveryAnnotationsType.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathDeliveryAnnotationsType.java
@@ -169,8 +169,11 @@ public class FastPathDeliveryAnnotationsType implements AMQPType<DeliveryAnnotat
         MapType mapType = (MapType) getEncoder().getType(val.getValue());
 
         mapType.setKeyEncoding(symbolType);
-        mapType.write(val.getValue());
-        mapType.setKeyEncoding(null);
+        try {
+            mapType.write(val.getValue());
+        } finally {
+            mapType.setKeyEncoding(null);
+        }
     }
 
     public static void register(Decoder decoder, EncoderImpl encoder) {
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathMessageAnnotationsType.java b/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathMessageAnnotationsType.java
index 49cc09e..d914833 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathMessageAnnotationsType.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathMessageAnnotationsType.java
@@ -169,8 +169,11 @@ public class FastPathMessageAnnotationsType implements AMQPType<MessageAnnotatio
         MapType mapType = (MapType) getEncoder().getType(val.getValue());
 
         mapType.setKeyEncoding(symbolType);
-        mapType.write(val.getValue());
-        mapType.setKeyEncoding(null);
+        try {
+            mapType.write(val.getValue());
+        } finally {
+            mapType.setKeyEncoding(null);
+        }
     }
 
     public static void register(Decoder decoder, EncoderImpl encoder) {


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