You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2018/01/03 16:32:25 UTC

qpid-broker-j git commit: QPID-6933: [System Tests] Refactor ObjectMessageClassWhitelistingTest as JMS 1.1 system test

Repository: qpid-broker-j
Updated Branches:
  refs/heads/master 52ee3bff0 -> 6c0c5b1ff


QPID-6933: [System Tests] Refactor ObjectMessageClassWhitelistingTest as JMS 1.1 system test


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/6c0c5b1f
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/6c0c5b1f
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/6c0c5b1f

Branch: refs/heads/master
Commit: 6c0c5b1ffde7232b36a0b6b1422c7826323bff11
Parents: 52ee3bf
Author: Alex Rudyy <or...@apache.org>
Authored: Wed Jan 3 16:32:05 2018 +0000
Committer: Alex Rudyy <or...@apache.org>
Committed: Wed Jan 3 16:32:05 2018 +0000

----------------------------------------------------------------------
 .../apache/qpid/systests/ConnectionBuilder.java |   2 +
 .../QpidJmsClient0xConnectionBuilder.java       |  14 +
 .../QpidJmsClientConnectionBuilder.java         |  14 +
 .../ObjectMessageClassWhitelistingTest.java     | 374 +++++++++++++++++++
 .../ObjectMessageClassWhitelistingTest.java     | 340 -----------------
 test-profiles/Java10Excludes                    |   3 -
 6 files changed, 404 insertions(+), 343 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/6c0c5b1f/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/ConnectionBuilder.java
----------------------------------------------------------------------
diff --git a/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/ConnectionBuilder.java b/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/ConnectionBuilder.java
index 085b7b1..92454e9 100644
--- a/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/ConnectionBuilder.java
+++ b/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/ConnectionBuilder.java
@@ -47,6 +47,8 @@ public interface ConnectionBuilder
     ConnectionBuilder setOptions(Map<String, String> options);
     ConnectionBuilder setPopulateJMSXUserID(boolean populateJMSXUserID);
     ConnectionBuilder setMessageRedelivery(final boolean redelivery);
+    ConnectionBuilder setDeserializationPolicyWhiteList(String whiteList);
+    ConnectionBuilder setDeserializationPolicyBlackList(String blackList);
 
     Connection build() throws NamingException, JMSException;
     ConnectionFactory buildConnectionFactory() throws NamingException;

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/6c0c5b1f/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/QpidJmsClient0xConnectionBuilder.java
----------------------------------------------------------------------
diff --git a/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/QpidJmsClient0xConnectionBuilder.java b/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/QpidJmsClient0xConnectionBuilder.java
index 27805c9..eeb82ac 100644
--- a/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/QpidJmsClient0xConnectionBuilder.java
+++ b/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/QpidJmsClient0xConnectionBuilder.java
@@ -165,6 +165,20 @@ public class QpidJmsClient0xConnectionBuilder implements ConnectionBuilder
     }
 
     @Override
+    public ConnectionBuilder setDeserializationPolicyWhiteList(final String whiteList)
+    {
+        _options.put("objectMessageClassHierarchyWhiteList", whiteList);
+        return this;
+    }
+
+    @Override
+    public ConnectionBuilder setDeserializationPolicyBlackList(final String blackList)
+    {
+        _options.put("objectMessageClassHierarchyBlackList", blackList);
+        return this;
+    }
+
+    @Override
     public Connection build() throws JMSException, NamingException
     {
         return buildConnectionFactory().createConnection(_username, _password);

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/6c0c5b1f/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/QpidJmsClientConnectionBuilder.java
----------------------------------------------------------------------
diff --git a/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/QpidJmsClientConnectionBuilder.java b/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/QpidJmsClientConnectionBuilder.java
index 24cdf45..2db1746 100644
--- a/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/QpidJmsClientConnectionBuilder.java
+++ b/systests/qpid-systests-jms-core/src/main/java/org/apache/qpid/systests/QpidJmsClientConnectionBuilder.java
@@ -179,6 +179,20 @@ public class QpidJmsClientConnectionBuilder implements ConnectionBuilder
     }
 
     @Override
+    public ConnectionBuilder setDeserializationPolicyWhiteList(final String whiteList)
+    {
+        _options.put("jms.deserializationPolicy.whiteList", whiteList);
+        return this;
+    }
+
+    @Override
+    public ConnectionBuilder setDeserializationPolicyBlackList(final String blackList)
+    {
+        _options.put("jms.deserializationPolicy.blackList", blackList);
+        return this;
+    }
+
+    @Override
     public Connection build() throws NamingException, JMSException
     {
         return buildConnectionFactory().createConnection();

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/6c0c5b1f/systests/qpid-systests-jms_1.1/src/test/java/org/apache/qpid/systests/jms_1_1/extensions/message/ObjectMessageClassWhitelistingTest.java
----------------------------------------------------------------------
diff --git a/systests/qpid-systests-jms_1.1/src/test/java/org/apache/qpid/systests/jms_1_1/extensions/message/ObjectMessageClassWhitelistingTest.java b/systests/qpid-systests-jms_1.1/src/test/java/org/apache/qpid/systests/jms_1_1/extensions/message/ObjectMessageClassWhitelistingTest.java
new file mode 100644
index 0000000..b468468
--- /dev/null
+++ b/systests/qpid-systests-jms_1.1/src/test/java/org/apache/qpid/systests/jms_1_1/extensions/message/ObjectMessageClassWhitelistingTest.java
@@ -0,0 +1,374 @@
+/*
+ * 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.systests.jms_1_1.extensions.message;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.util.HashMap;
+
+import javax.jms.Connection;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageFormatException;
+import javax.jms.MessageProducer;
+import javax.jms.ObjectMessage;
+import javax.jms.Queue;
+import javax.jms.Session;
+
+import org.junit.Test;
+
+import org.apache.qpid.systests.JmsTestBase;
+
+public class ObjectMessageClassWhitelistingTest extends JmsTestBase
+{
+    private static final int TEST_VALUE = 37;
+
+    @Test
+    public void testObjectMessage() throws Exception
+    {
+        Queue destination = createQueue(getTestName());
+        final Connection c = getConnectionBuilder().setDeserializationPolicyWhiteList("*").build();
+        try
+        {
+            c.start();
+            Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            MessageConsumer _consumer = s.createConsumer(destination);
+            MessageProducer _producer = s.createProducer(destination);
+
+            sendTestObjectMessage(s, _producer);
+            Message receivedMessage = _consumer.receive(getReceiveTimeout());
+            assertNotNull("did not receive message within receive timeout", receivedMessage);
+            assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
+            ObjectMessage receivedObjectMessage = (ObjectMessage) receivedMessage;
+            Object payloadObject = receivedObjectMessage.getObject();
+            assertTrue("payload is of wrong type", payloadObject instanceof HashMap);
+
+            @SuppressWarnings("unchecked")
+            HashMap<String, Integer> payload = (HashMap<String, Integer>) payloadObject;
+            assertEquals("payload has wrong value", (Integer) TEST_VALUE, payload.get("value"));
+        }
+        finally
+        {
+            c.close();
+        }
+    }
+
+    @Test
+    public void testNotWhiteListedByConnectionUrlObjectMessage() throws Exception
+    {
+        Queue destination = createQueue(getTestName());
+        final Connection c = getConnectionBuilder().setDeserializationPolicyWhiteList("org.apache.qpid").build();
+        try
+        {
+            c.start();
+            Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            MessageConsumer consumer = s.createConsumer(destination);
+            MessageProducer producer = s.createProducer(destination);
+
+            sendTestObjectMessage(s, producer);
+            Message receivedMessage = consumer.receive(getReceiveTimeout());
+            assertNotNull("did not receive message within receive timeout", receivedMessage);
+            assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
+            ObjectMessage receivedObjectMessage = (ObjectMessage) receivedMessage;
+            try
+            {
+                receivedObjectMessage.getObject();
+                fail("should not deserialize class");
+            }
+            catch (MessageFormatException e)
+            {
+                // pass
+            }
+        }
+        finally
+        {
+            c.close();
+        }
+    }
+
+    @Test
+    public void testWhiteListedClassByConnectionUrlObjectMessage() throws Exception
+    {
+        Queue destination = createQueue(getTestName());
+        final Connection c =
+                getConnectionBuilder().setDeserializationPolicyWhiteList("java.util.HashMap,java.lang").build();
+        try
+        {
+            c.start();
+            Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            MessageConsumer consumer = s.createConsumer(destination);
+            MessageProducer producer = s.createProducer(destination);
+
+            sendTestObjectMessage(s, producer);
+            Message receivedMessage = consumer.receive(getReceiveTimeout());
+            assertNotNull("did not receive message within receive timeout", receivedMessage);
+            assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
+            ObjectMessage receivedObjectMessage = (ObjectMessage) receivedMessage;
+
+            @SuppressWarnings("unchecked")
+            HashMap<String, Integer> object = (HashMap<String, Integer>) receivedObjectMessage.getObject();
+            assertEquals("Unexpected value", (Integer) TEST_VALUE, object.get("value"));
+        }
+        finally
+        {
+            c.close();
+        }
+    }
+
+    @Test
+    public void testBlackListedClassByConnectionUrlObjectMessage() throws Exception
+    {
+        Queue destination = createQueue(getTestName());
+        final Connection c = getConnectionBuilder().setDeserializationPolicyWhiteList("java")
+                                                   .setDeserializationPolicyBlackList("java.lang.Integer")
+                                                   .build();
+        try
+        {
+            c.start();
+            Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            MessageConsumer consumer = s.createConsumer(destination);
+            MessageProducer producer = s.createProducer(destination);
+
+            sendTestObjectMessage(s, producer);
+            Message receivedMessage = consumer.receive(getReceiveTimeout());
+            assertNotNull("did not receive message within receive timeout", receivedMessage);
+            assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
+            ObjectMessage receivedObjectMessage = (ObjectMessage) receivedMessage;
+
+            try
+            {
+                receivedObjectMessage.getObject();
+                fail("Should not be allowed to deserialize black listed class");
+            }
+            catch (JMSException e)
+            {
+                // pass
+            }
+        }
+        finally
+        {
+            c.close();
+        }
+    }
+
+    @Test
+    public void testWhiteListedAnonymousClassByConnectionUrlObjectMessage() throws Exception
+    {
+        final Connection c =
+                getConnectionBuilder().setDeserializationPolicyWhiteList(ObjectMessageClassWhitelistingTest.class.getCanonicalName())
+                                      .build();
+        try
+        {
+            doTestWhiteListedEnclosedClassTest(c, createAnonymousObject(TEST_VALUE));
+        }
+        finally
+        {
+            c.close();
+        }
+    }
+
+    @Test
+    public void testBlackListedAnonymousClassByConnectionUrlObjectMessage() throws Exception
+    {
+        final Connection c = getConnectionBuilder()
+                .setDeserializationPolicyWhiteList(ObjectMessageClassWhitelistingTest.class.getPackage().getName())
+                .setDeserializationPolicyBlackList(ObjectMessageClassWhitelistingTest.class.getCanonicalName())
+                .build();
+        try
+        {
+            doTestBlackListedEnclosedClassTest(c, createAnonymousObject(TEST_VALUE));
+        }
+        finally
+        {
+            c.close();
+        }
+    }
+
+    @Test
+    public void testWhiteListedNestedClassByConnectionUrlObjectMessage() throws Exception
+    {
+        final Connection c = getConnectionBuilder()
+                .setDeserializationPolicyWhiteList(ObjectMessageClassWhitelistingTest.NestedClass.class.getCanonicalName())
+                .build();
+        try
+        {
+            doTestWhiteListedEnclosedClassTest(c, new NestedClass(TEST_VALUE));
+        }
+        finally
+        {
+            c.close();
+        }
+    }
+
+    @Test
+    public void testBlackListedNestedClassByConnectionUrlObjectMessage() throws Exception
+    {
+        final Connection c = getConnectionBuilder()
+                .setDeserializationPolicyWhiteList(ObjectMessageClassWhitelistingTest.class.getCanonicalName())
+                .setDeserializationPolicyBlackList(NestedClass.class.getCanonicalName())
+                .build();
+        try
+        {
+            doTestBlackListedEnclosedClassTest(c, new NestedClass(TEST_VALUE));
+        }
+        finally
+        {
+            c.close();
+        }
+    }
+
+    private void doTestWhiteListedEnclosedClassTest(Connection c, Serializable content) throws Exception
+    {
+        Queue destination = createQueue(getTestName());
+        c.start();
+        Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        MessageConsumer consumer = s.createConsumer(destination);
+        MessageProducer producer = s.createProducer(destination);
+
+        final ObjectMessage sendMessage = s.createObjectMessage();
+        sendMessage.setObject(content);
+        producer.send(sendMessage);
+
+        Message receivedMessage = consumer.receive(getReceiveTimeout());
+        assertNotNull("did not receive message within receive timeout", receivedMessage);
+        assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
+        Object receivedObject = ((ObjectMessage) receivedMessage).getObject();
+        assertEquals("Received object has unexpected class", content.getClass(), receivedObject.getClass());
+        assertEquals("Received object has unexpected content", content, receivedObject);
+    }
+
+    private void doTestBlackListedEnclosedClassTest(final Connection c, final Serializable content) throws Exception
+    {
+        Queue destination = createQueue(getTestName());
+        c.start();
+        Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        MessageConsumer consumer = s.createConsumer(destination);
+        MessageProducer producer = s.createProducer(destination);
+
+        final ObjectMessage sendMessage = s.createObjectMessage();
+        sendMessage.setObject(content);
+        producer.send(sendMessage);
+
+        Message receivedMessage = consumer.receive(getReceiveTimeout());
+        assertNotNull("did not receive message within receive timeout", receivedMessage);
+        assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
+        try
+        {
+            ((ObjectMessage) receivedMessage).getObject();
+            fail("Exception not thrown");
+        }
+        catch (MessageFormatException e)
+        {
+            // pass
+        }
+    }
+
+    private void sendTestObjectMessage(final Session s, final MessageProducer producer) throws JMSException
+    {
+        HashMap<String, Integer> messageContent = new HashMap<>();
+        messageContent.put("value", TEST_VALUE);
+        Message objectMessage = s.createObjectMessage(messageContent);
+        producer.send(objectMessage);
+    }
+
+    public static Serializable createAnonymousObject(final int field)
+    {
+        return new Serializable()
+        {
+            private int _field = field;
+
+            @Override
+            public int hashCode()
+            {
+                return _field;
+            }
+
+            @Override
+            public boolean equals(final Object o)
+            {
+                if (this == o)
+                {
+                    return true;
+                }
+                if (o == null || getClass() != o.getClass())
+                {
+                    return false;
+                }
+
+                final Serializable that = (Serializable) o;
+
+                return getFieldValueByReflection(that).equals(_field);
+            }
+
+            private Object getFieldValueByReflection(final Serializable that)
+            {
+                try
+                {
+                    final Field f = that.getClass().getDeclaredField("_field");
+                    f.setAccessible(true);
+                    return f.get(that);
+                }
+                catch (NoSuchFieldException | IllegalAccessException e)
+                {
+                    throw new RuntimeException(e);
+                }
+            }
+        };
+    }
+
+    public static class NestedClass implements Serializable
+    {
+        private final int _field;
+
+        public NestedClass(final int field)
+        {
+            _field = field;
+        }
+
+        @Override
+        public boolean equals(final Object o)
+        {
+            if (this == o)
+            {
+                return true;
+            }
+            if (o == null || getClass() != o.getClass())
+            {
+                return false;
+            }
+
+            final NestedClass that = (NestedClass) o;
+
+            return _field == that._field;
+        }
+
+        @Override
+        public int hashCode()
+        {
+            return _field;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/6c0c5b1f/systests/src/test/java/org/apache/qpid/client/message/ObjectMessageClassWhitelistingTest.java
----------------------------------------------------------------------
diff --git a/systests/src/test/java/org/apache/qpid/client/message/ObjectMessageClassWhitelistingTest.java b/systests/src/test/java/org/apache/qpid/client/message/ObjectMessageClassWhitelistingTest.java
deleted file mode 100644
index 391f165..0000000
--- a/systests/src/test/java/org/apache/qpid/client/message/ObjectMessageClassWhitelistingTest.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * 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.client.message;
-
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.jms.Connection;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageFormatException;
-import javax.jms.MessageProducer;
-import javax.jms.ObjectMessage;
-import javax.jms.Queue;
-import javax.jms.Session;
-
-import org.apache.qpid.configuration.CommonProperties;
-import org.apache.qpid.jms.ConnectionURL;
-import org.apache.qpid.test.utils.QpidBrokerTestCase;
-
-public class ObjectMessageClassWhitelistingTest extends QpidBrokerTestCase
-{
-    public static final int TIMEOUT = 10000;
-    public static final int TEST_VALUE = 37;
-    private MessageConsumer _consumer;
-    private MessageProducer _producer;
-
-    public void testObjectMessage() throws Exception
-    {
-        Map<String, String> connectionOptions = new HashMap<>();
-        connectionOptions.put(ConnectionURL.OPTIONS_OBJECT_MESSAGE_CLASS_HIERARCHY_WHITE_LIST, "*");
-        final Connection c = getConnectionWithOptions(connectionOptions);
-        c.start();
-        Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
-        Queue destination = getTestQueue();
-        _consumer = s.createConsumer(destination);
-        _producer = s.createProducer(destination);
-
-        sendTestObjectMessage(s, _producer);
-        Message receivedMessage = _consumer.receive(TIMEOUT);
-        assertNotNull("did not receive message within timeout", receivedMessage);
-        assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
-        ObjectMessage receivedObjectMessage = (ObjectMessage) receivedMessage;
-        Object payloadObject = receivedObjectMessage.getObject();
-        assertTrue("payload is of wrong type", payloadObject instanceof HashMap);
-        HashMap<String,Integer> payload = (HashMap<String, Integer>) payloadObject;
-        assertEquals("payload has wrong value", (Integer)TEST_VALUE, payload.get("value"));
-    }
-
-    public void testNotWhiteListedByConnectionUrlObjectMessage() throws Exception
-    {
-        Map<String, String> connectionOptions = new HashMap<>();
-        connectionOptions.put(ConnectionURL.OPTIONS_OBJECT_MESSAGE_CLASS_HIERARCHY_WHITE_LIST, "org.apache.qpid");
-        final Connection c = getConnectionWithOptions(connectionOptions);
-        c.start();
-        Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
-        Queue destination = getTestQueue();
-        MessageConsumer consumer = s.createConsumer(destination);
-        MessageProducer producer = s.createProducer(destination);
-
-        sendTestObjectMessage(s, producer);
-        Message receivedMessage = consumer.receive(TIMEOUT);
-        assertNotNull("did not receive message within timeout", receivedMessage);
-        assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
-        ObjectMessage receivedObjectMessage = (ObjectMessage) receivedMessage;
-        try
-        {
-            receivedObjectMessage.getObject();
-            fail("should not deserialize class");
-        }
-        catch (MessageFormatException e)
-        {
-            // pass
-        }
-    }
-
-    public void testWhiteListedClassByConnectionUrlObjectMessage() throws Exception
-    {
-        Map<String, String> connectionOptions = new HashMap<>();
-        connectionOptions.put(ConnectionURL.OPTIONS_OBJECT_MESSAGE_CLASS_HIERARCHY_WHITE_LIST, "java.util.HashMap,java.lang");
-        final Connection c = getConnectionWithOptions(connectionOptions);
-        c.start();
-        Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
-        Queue destination = getTestQueue();
-        MessageConsumer consumer = s.createConsumer(destination);
-        MessageProducer producer = s.createProducer(destination);
-
-        sendTestObjectMessage(s, producer);
-        Message receivedMessage = consumer.receive(TIMEOUT);
-        assertNotNull("did not receive message within timeout", receivedMessage);
-        assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
-        ObjectMessage receivedObjectMessage = (ObjectMessage) receivedMessage;
-        HashMap<String, Integer> object = (HashMap<String, Integer>) receivedObjectMessage.getObject();
-        assertEquals("Unexpected value", (Integer) TEST_VALUE, object.get("value"));
-    }
-
-    public void testBlackListedClassByConnectionUrlObjectMessage() throws Exception
-    {
-        Map<String, String> connectionOptions = new HashMap<>();
-        connectionOptions.put(ConnectionURL.OPTIONS_OBJECT_MESSAGE_CLASS_HIERARCHY_WHITE_LIST, "java");
-        connectionOptions.put(ConnectionURL.OPTIONS_OBJECT_MESSAGE_CLASS_HIERARCHY_BLACK_LIST, "java.lang.Integer");
-        final Connection c = getConnectionWithOptions(connectionOptions);
-        c.start();
-        Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
-        Queue destination = getTestQueue();
-        MessageConsumer consumer = s.createConsumer(destination);
-        MessageProducer producer = s.createProducer(destination);
-
-        sendTestObjectMessage(s, producer);
-        Message receivedMessage = consumer.receive(TIMEOUT);
-        assertNotNull("did not receive message within timeout", receivedMessage);
-        assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
-        ObjectMessage receivedObjectMessage = (ObjectMessage) receivedMessage;
-
-        try
-        {
-            receivedObjectMessage.getObject();
-            fail("Should not be allowed to deserialize black listed class");
-        }
-        catch (JMSException e)
-        {
-            // pass
-        }
-    }
-
-    public void testNonWhiteListedBySystemPropertyObjectMessage() throws Exception
-    {
-        setSystemProperty(CommonProperties.QPID_SECURITY_OBJECT_MESSAGE_CLASS_HIERARCHY_WHITE_LIST, "org.apache.qpid");
-        final Connection c = getConnection();
-        c.start();
-        Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
-        Queue destination = getTestQueue();
-        MessageConsumer consumer = s.createConsumer(destination);
-        MessageProducer producer = s.createProducer(destination);
-
-        sendTestObjectMessage(s, producer);
-        Message receivedMessage = consumer.receive(TIMEOUT);
-        assertNotNull("did not receive message within timeout", receivedMessage);
-        assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
-        ObjectMessage receivedObjectMessage = (ObjectMessage) receivedMessage;
-        try
-        {
-            receivedObjectMessage.getObject();
-            fail("should not deserialize class");
-        }
-        catch (MessageFormatException e)
-        {
-            // pass
-        }
-    }
-
-    public void testWhiteListedAnonymousClassByConnectionUrlObjectMessage() throws Exception
-    {
-        Map<String, String> connectionOptions = new HashMap<>();
-        connectionOptions.put(ConnectionURL.OPTIONS_OBJECT_MESSAGE_CLASS_HIERARCHY_WHITE_LIST, ObjectMessageClassWhitelistingTest.class.getCanonicalName());
-        final Connection c = getConnectionWithOptions(connectionOptions);
-        doTestWhiteListedEnclosedClassTest(c, createAnonymousObject(TEST_VALUE));
-    }
-
-    public void testBlackListedAnonymousClassByConnectionUrlObjectMessage() throws Exception
-    {
-        Map<String, String> connectionOptions = new HashMap<>();
-        connectionOptions.put(ConnectionURL.OPTIONS_OBJECT_MESSAGE_CLASS_HIERARCHY_WHITE_LIST, ObjectMessageClassWhitelistingTest.class.getPackage().getName());
-        connectionOptions.put(ConnectionURL.OPTIONS_OBJECT_MESSAGE_CLASS_HIERARCHY_BLACK_LIST, ObjectMessageClassWhitelistingTest.class.getCanonicalName());
-
-        final Connection c = getConnectionWithOptions(connectionOptions);
-        doTestBlackListedEnclosedClassTest(c, createAnonymousObject(TEST_VALUE));
-    }
-
-    public void testWhiteListedNestedClassByConnectionUrlObjectMessage() throws Exception
-    {
-        Map<String, String> connectionOptions = new HashMap<>();
-        connectionOptions.put(ConnectionURL.OPTIONS_OBJECT_MESSAGE_CLASS_HIERARCHY_WHITE_LIST, ObjectMessageClassWhitelistingTest.NestedClass.class.getCanonicalName());
-        final Connection c = getConnectionWithOptions(connectionOptions);
-        doTestWhiteListedEnclosedClassTest(c, new NestedClass(TEST_VALUE));
-    }
-
-    public void testBlackListedNestedClassByConnectionUrlObjectMessage() throws Exception
-    {
-        Map<String, String> connectionOptions = new HashMap<>();
-        connectionOptions.put(ConnectionURL.OPTIONS_OBJECT_MESSAGE_CLASS_HIERARCHY_WHITE_LIST, ObjectMessageClassWhitelistingTest.class.getCanonicalName());
-        connectionOptions.put(ConnectionURL.OPTIONS_OBJECT_MESSAGE_CLASS_HIERARCHY_BLACK_LIST, NestedClass.class.getCanonicalName());
-
-        final Connection c = getConnectionWithOptions(connectionOptions);
-        doTestBlackListedEnclosedClassTest(c, new NestedClass(TEST_VALUE));
-    }
-
-    private void doTestWhiteListedEnclosedClassTest(Connection c, Serializable content) throws Exception
-    {
-        c.start();
-        Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
-        Queue destination = getTestQueue();
-        MessageConsumer consumer = s.createConsumer(destination);
-        MessageProducer producer = s.createProducer(destination);
-
-        final ObjectMessage sendMessage = s.createObjectMessage();
-        sendMessage.setObject(content);
-        producer.send(sendMessage);
-
-        Message receivedMessage = consumer.receive(TIMEOUT);
-        assertNotNull("did not receive message within timeout", receivedMessage);
-        assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
-        Object receivedObject = ((ObjectMessage)receivedMessage).getObject();
-        assertEquals("Received object has unexpected class", content.getClass(), receivedObject.getClass());
-        assertEquals("Received object has unexpected content", content, receivedObject);
-    }
-
-    private void doTestBlackListedEnclosedClassTest(final Connection c, final Serializable content) throws Exception
-    {
-        c.start();
-        Session s = c.createSession(false, Session.AUTO_ACKNOWLEDGE);
-        Queue destination = getTestQueue();
-        MessageConsumer consumer = s.createConsumer(destination);
-        MessageProducer producer = s.createProducer(destination);
-
-        final ObjectMessage sendMessage = s.createObjectMessage();
-        sendMessage.setObject(content);
-        producer.send(sendMessage);
-
-        Message receivedMessage = consumer.receive(TIMEOUT);
-        assertNotNull("did not receive message within timeout", receivedMessage);
-        assertTrue("message is of wrong type", receivedMessage instanceof ObjectMessage);
-        try
-        {
-            ((ObjectMessage)receivedMessage).getObject();
-            fail("Exception not thrown");
-        }
-        catch (MessageFormatException e)
-        {
-            // pass
-        }
-    }
-
-    private void sendTestObjectMessage(final Session s, final MessageProducer producer) throws JMSException
-    {
-        HashMap<String, Integer> messageContent = new HashMap<>();
-        messageContent.put("value", TEST_VALUE);
-        Message objectMessage =  s.createObjectMessage(messageContent);
-        producer.send(objectMessage);
-    }
-
-    public static Serializable createAnonymousObject(final int field)
-    {
-        return new Serializable()
-        {
-            private int _field = field;
-
-            @Override
-            public int hashCode()
-            {
-                return _field;
-            }
-
-            @Override
-            public boolean equals(final Object o)
-            {
-                if (this == o)
-                {
-                    return true;
-                }
-                if (o == null || getClass() != o.getClass())
-                {
-                    return false;
-                }
-
-                final Serializable that = (Serializable) o;
-
-                return getFieldValueByReflection(that).equals(_field);
-            }
-
-            private Object getFieldValueByReflection(final Serializable that)
-            {
-                try
-                {
-                    final Field f = that.getClass().getDeclaredField("_field");
-                    f.setAccessible(true);
-                    return f.get(that);
-                }
-                catch (NoSuchFieldException | IllegalAccessException e)
-                {
-                    throw new RuntimeException(e);
-                }
-            }
-        };
-    }
-
-    public static class NestedClass implements Serializable
-    {
-        private final int _field;
-
-        public NestedClass(final int field)
-        {
-            _field = field;
-        }
-
-        @Override
-        public boolean equals(final Object o)
-        {
-            if (this == o)
-            {
-                return true;
-            }
-            if (o == null || getClass() != o.getClass())
-            {
-                return false;
-            }
-
-            final NestedClass that = (NestedClass) o;
-
-            return _field == that._field;
-
-        }
-
-        @Override
-        public int hashCode()
-        {
-            return _field;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/6c0c5b1f/test-profiles/Java10Excludes
----------------------------------------------------------------------
diff --git a/test-profiles/Java10Excludes b/test-profiles/Java10Excludes
index 00eb4c8..c7711a3 100644
--- a/test-profiles/Java10Excludes
+++ b/test-profiles/Java10Excludes
@@ -33,9 +33,6 @@ org.apache.qpid.server.queue.ModelTest#*
 // Exclude tests of connection URL failover method property
 org.apache.qpid.server.failover.FailoverMethodTest#*
 
-// This test covers the client version specific mechanisms for restricting the types of Object which can be sent via an ObjectMessage
-org.apache.qpid.client.message.ObjectMessageClassWhitelistingTest#*
-
 // This test mainly covers the AMQP 0-x client's heartbeating implementation
 org.apache.qpid.client.HeartbeatTest#*
 


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