[ 
https://issues.apache.org/jira/browse/ARTEMIS-770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15550753#comment-15550753
 ] 

ASF GitHub Bot commented on ARTEMIS-770:
----------------------------------------

Github user clebertsuconic commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/820#discussion_r82112176
  
    --- Diff: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/converter/jms/ServerJMSObjectMessage.java
 ---
    @@ -16,55 +16,48 @@
      */
     package org.apache.activemq.artemis.protocol.amqp.converter.jms;
     
    +import java.io.Serializable;
    +
     import javax.jms.JMSException;
     import javax.jms.ObjectMessage;
    -import java.io.ByteArrayInputStream;
    -import java.io.ByteArrayOutputStream;
    -import java.io.ObjectOutputStream;
    -import java.io.Serializable;
     
     import org.apache.activemq.artemis.api.core.Message;
     import org.apache.activemq.artemis.core.message.impl.MessageInternal;
    -import org.apache.activemq.artemis.utils.ObjectInputStreamWithClassLoader;
    +import org.apache.qpid.proton.amqp.Binary;
     
     public class ServerJMSObjectMessage extends ServerJMSMessage implements 
ObjectMessage {
     
    -   private static final String DEFAULT_WHITELIST;
    -   private static final String DEFAULT_BLACKLIST;
    -
    -   static {
    -      DEFAULT_WHITELIST = 
System.getProperty(ObjectInputStreamWithClassLoader.WHITELIST_PROPERTY, 
"java.lang,java.math,javax.security,java.util,org.apache.activemq,org.apache.qpid.proton.amqp");
    -
    -      DEFAULT_BLACKLIST = 
System.getProperty(ObjectInputStreamWithClassLoader.BLACKLIST_PROPERTY, null);
    -   }
    +   public static final byte TYPE = Message.OBJECT_TYPE;
     
    -   public static final byte TYPE = Message.STREAM_TYPE;
    -
    -   private Serializable object;
    +   private Binary payload;
     
        public ServerJMSObjectMessage(MessageInternal message, int 
deliveryCount) {
           super(message, deliveryCount);
        }
     
        @Override
        public void setObject(Serializable object) throws JMSException {
    -      this.object = object;
    +      throw new UnsupportedOperationException("Cannot set Object on this 
internal message");
        }
     
        @Override
        public Serializable getObject() throws JMSException {
    -      return object;
    +      throw new UnsupportedOperationException("Cannot set Object on this 
internal message");
    +   }
    +
    +   public void setSerializedForm(Binary payload) {
    +      this.payload = payload;
    +   }
    +
    +   public Binary getSerializedForm() {
    +      return payload;
        }
     
        @Override
        public void encode() throws Exception {
           super.encode();
    -      ByteArrayOutputStream out = new ByteArrayOutputStream();
    -      ObjectOutputStream ous = new ObjectOutputStream(out);
    -      ous.writeObject(object);
    -      byte[] src = out.toByteArray();
    -      getInnerMessage().getBodyBuffer().writeInt(src.length);
    -      getInnerMessage().getBodyBuffer().writeBytes(src);
    +      getInnerMessage().getBodyBuffer().writeInt(payload.getLength());
    --- End diff --
    
    yay!!!!! @tabish121  very nice!


> AMQP: Incorrect or inefficient transformation of AMQP Messages 
> ---------------------------------------------------------------
>
>                 Key: ARTEMIS-770
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-770
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: AMQP
>    Affects Versions: 1.4.0
>            Reporter: Timothy Bish
>
> The AMQP Message Transformations done in the protocol module can at times 
> produces incorrect conversion are append additional data not present in the 
> original AMQP message.
> Some noted issues
> * The Message Format value is not preserved from the original delivery.
> * Message Headers are added to outbound messages where the original message 
> did not have any which adds unnecessary overhead.
> * Message Properties can be added to outbound messages where the original did 
> not have any which adds unnecessary overhead and is illegal as the properties 
> section is immutable in AMQP.
> * Additional Application Properties are applied to outbound messages which 
> are meant to be immutable.
> * Some internal properties from the core message are applied to the Message 
> Annotations unnecessarily adding overhead to the outbound message.
> * The outbound message can contain a body that differs from the inbound 
> version in some cases
> * Object serialization / deserialization is done on types from the incoming 
> message that are wrapped in an AmqpValue instead of falling back to native 
> encoding to preserve the original Message body value.  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to