You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Denis Abramov (JIRA)" <ji...@apache.org> on 2006/08/07 17:53:23 UTC

[jira] Created: (AMQ-866) Problem from open wire dotnet send float properties message to java

Problem from open wire dotnet send float properties message to java
-------------------------------------------------------------------

                 Key: AMQ-866
                 URL: https://issues.apache.org/activemq/browse/AMQ-866
             Project: ActiveMQ
          Issue Type: Bug
          Components: NMS (C# client)
            Reporter: Denis Abramov


Am also interested in this issue (from Discussion forum):

I found a problem while i using open wire dotnet api to send float property message to java platform, the value i recieved that is deffrent with the value setting in dotnet platform. 

here is send value(dotnet) is:  float floatvalue = 2.1F 
recieved value(java) is value is: 1.757237E-26 

is this a bug or i make some mistake in my test? 

follow is my test code: 
dotnet: 

            float value= 2.12F; 
            Uri uri = new Uri("tcp://" + ip + ":61616?jms.useAsyncSend=true"); 
            factory = new ConnectionFactory(uri); 
            using (IConnection connection = factory.CreateConnection()) 
            { 
                ISession session = connection.CreateSession(acknowledgementMode); 

                IDestination destination = session.GetQueue(queueName); 

                IMessageProducer producer = session.CreateProducer(destination); 
                producer.Persistent = true; 

                // lets send a message 
                String text = "text"; 
                ITextMessage request = session.CreateTextMessage(text); 
                request.NMSPersistent = true; 
                request.NMSCorrelationID = "abc"; 
    
                request.Properties["custom8"] = custom8; 

                producer.Send(request); 

            } 

java: 
public void onMessage(Message message) { 
           System.out.println(message.getFloatProperty("custom8")); 
} 

could someone do me a favor? 
Thx! 

Matt

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (AMQ-866) Problem from open wire dotnet send float properties message to java

Posted by "steve cook (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQ-866?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_37927 ] 

steve cook commented on AMQ-866:
--------------------------------

Also realised we need to do the same for *sending* doubles & floats from NMS. 

> Problem from open wire dotnet send float properties message to java
> -------------------------------------------------------------------
>
>                 Key: AMQ-866
>                 URL: https://issues.apache.org/activemq/browse/AMQ-866
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: NMS (C# client)
>            Reporter: Denis Abramov
>         Attachments: double_patch.rtf
>
>
> Am also interested in this issue (from Discussion forum):
> I found a problem while i using open wire dotnet api to send float property message to java platform, the value i recieved that is deffrent with the value setting in dotnet platform. 
> here is send value(dotnet) is:  float floatvalue = 2.1F 
> recieved value(java) is value is: 1.757237E-26 
> is this a bug or i make some mistake in my test? 
> follow is my test code: 
> dotnet: 
>             float value= 2.12F; 
>             Uri uri = new Uri("tcp://" + ip + ":61616?jms.useAsyncSend=true"); 
>             factory = new ConnectionFactory(uri); 
>             using (IConnection connection = factory.CreateConnection()) 
>             { 
>                 ISession session = connection.CreateSession(acknowledgementMode); 
>                 IDestination destination = session.GetQueue(queueName); 
>                 IMessageProducer producer = session.CreateProducer(destination); 
>                 producer.Persistent = true; 
>                 // lets send a message 
>                 String text = "text"; 
>                 ITextMessage request = session.CreateTextMessage(text); 
>                 request.NMSPersistent = true; 
>                 request.NMSCorrelationID = "abc"; 
>     
>                 request.Properties["custom8"] = custom8; 
>                 producer.Send(request); 
>             } 
> java: 
> public void onMessage(Message message) { 
>            System.out.println(message.getFloatProperty("custom8")); 
> } 
> could someone do me a favor? 
> Thx! 
> Matt

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Updated: (AMQ-866) Problem from open wire dotnet send float properties message to java

Posted by "steve cook (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/AMQ-866?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

steve cook updated AMQ-866:
---------------------------

    Attachment: double_patch.rtf

> Problem from open wire dotnet send float properties message to java
> -------------------------------------------------------------------
>
>                 Key: AMQ-866
>                 URL: https://issues.apache.org/activemq/browse/AMQ-866
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: NMS (C# client)
>            Reporter: Denis Abramov
>         Attachments: double_patch.rtf
>
>
> Am also interested in this issue (from Discussion forum):
> I found a problem while i using open wire dotnet api to send float property message to java platform, the value i recieved that is deffrent with the value setting in dotnet platform. 
> here is send value(dotnet) is:  float floatvalue = 2.1F 
> recieved value(java) is value is: 1.757237E-26 
> is this a bug or i make some mistake in my test? 
> follow is my test code: 
> dotnet: 
>             float value= 2.12F; 
>             Uri uri = new Uri("tcp://" + ip + ":61616?jms.useAsyncSend=true"); 
>             factory = new ConnectionFactory(uri); 
>             using (IConnection connection = factory.CreateConnection()) 
>             { 
>                 ISession session = connection.CreateSession(acknowledgementMode); 
>                 IDestination destination = session.GetQueue(queueName); 
>                 IMessageProducer producer = session.CreateProducer(destination); 
>                 producer.Persistent = true; 
>                 // lets send a message 
>                 String text = "text"; 
>                 ITextMessage request = session.CreateTextMessage(text); 
>                 request.NMSPersistent = true; 
>                 request.NMSCorrelationID = "abc"; 
>     
>                 request.Properties["custom8"] = custom8; 
>                 producer.Send(request); 
>             } 
> java: 
> public void onMessage(Message message) { 
>            System.out.println(message.getFloatProperty("custom8")); 
> } 
> could someone do me a favor? 
> Thx! 
> Matt

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (AMQ-866) Problem from open wire dotnet send float properties message to java

Posted by "steve cook (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQ-866?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_37873 ] 

steve cook commented on AMQ-866:
--------------------------------

Same problem with doubles.

This is just a byte order problem - here is a patch for doubles. floats can be fixed in the same way:


>
> I've found a byte-order problem sending a double from Java ActiveMQ to a
> NMS/CSharp receiver:
>
> (NMS) ActiveMQ.OpenWire.OpenWireBinaryReader has no definition for
> ReadDouble(), and by default calls the MS .NET BinaryReader.ReadDouble()
> which reads the bytes in the wrong order. Here is the fix:
>
> add a new method to OpenWireBinaryReader.cs:
>
>         public override double ReadDouble()
>         {
>             return EndianSupport.SwitchEndian(base.ReadBytes(8));
>         }
>
> add a new method to EndianSupport.cs:
>
>         public static double SwitchEndian(byte[] bytes)
>         {
>             //Reverse byte array
>             byte[] reverse = new byte[8];
>             reverse[0] = bytes[7];
>             reverse[1] = bytes[6];
>             reverse[2] = bytes[5];
>             reverse[3] = bytes[4];
>             reverse[4] = bytes[3];
>             reverse[5] = bytes[2];
>             reverse[6] = bytes[1];
>             reverse[7] = bytes[0];
>             BinaryReader br = new BinaryReader(new MemoryStream(reverse));
>             return br.ReadDouble();
>         }
>
> If anyone knows a cleaner way of doing this, please let me know.
>
> thx
> /Steve 


> Problem from open wire dotnet send float properties message to java
> -------------------------------------------------------------------
>
>                 Key: AMQ-866
>                 URL: https://issues.apache.org/activemq/browse/AMQ-866
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: NMS (C# client)
>            Reporter: Denis Abramov
>
> Am also interested in this issue (from Discussion forum):
> I found a problem while i using open wire dotnet api to send float property message to java platform, the value i recieved that is deffrent with the value setting in dotnet platform. 
> here is send value(dotnet) is:  float floatvalue = 2.1F 
> recieved value(java) is value is: 1.757237E-26 
> is this a bug or i make some mistake in my test? 
> follow is my test code: 
> dotnet: 
>             float value= 2.12F; 
>             Uri uri = new Uri("tcp://" + ip + ":61616?jms.useAsyncSend=true"); 
>             factory = new ConnectionFactory(uri); 
>             using (IConnection connection = factory.CreateConnection()) 
>             { 
>                 ISession session = connection.CreateSession(acknowledgementMode); 
>                 IDestination destination = session.GetQueue(queueName); 
>                 IMessageProducer producer = session.CreateProducer(destination); 
>                 producer.Persistent = true; 
>                 // lets send a message 
>                 String text = "text"; 
>                 ITextMessage request = session.CreateTextMessage(text); 
>                 request.NMSPersistent = true; 
>                 request.NMSCorrelationID = "abc"; 
>     
>                 request.Properties["custom8"] = custom8; 
>                 producer.Send(request); 
>             } 
> java: 
> public void onMessage(Message message) { 
>            System.out.println(message.getFloatProperty("custom8")); 
> } 
> could someone do me a favor? 
> Thx! 
> Matt

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira