Bug 756086 - CLI console throws ClassCastException when method returns byte array [NEEDINFO]
Summary: CLI console throws ClassCastException when method returns byte array
Keywords:
Status: ON_DEV
Alias: None
Product: RHQ Project
Classification: Other
Component: CLI
Version: 4.2
Hardware: Unspecified
OS: Unspecified
high
medium
Target Milestone: ---
: ---
Assignee: Nobody
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks: jon30-sprint9 707225 786224
TreeView+ depends on / blocked
 
Reported: 2011-11-22 16:44 UTC by John Sanda
Modified: 2022-03-31 04:27 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
: 786224 (view as bug list)
Environment:
Last Closed:
Embargoed:
mfoley: needinfo?


Attachments (Terms of Use)

Description John Sanda 2011-11-22 16:44:43 UTC
Description of problem:
When running the CLI in interactive mode, the console throws a ClassCastException when calling a method that returns a byte array. Based on the exception, it looks like we might get the exception with any primitive array. Here is the exception:

java.lang.ClassCastException: [B cannot be cast to [Ljava.lang.Object;
        at org.rhq.bindings.output.TabularWriter.print(TabularWriter.java:133)
        at org.rhq.enterprise.client.commands.ScriptCommand.execute(ScriptCommand.java:159)
        at org.rhq.enterprise.client.ClientMain.executePromptCommand(ClientMain.java:316)
        at org.rhq.enterprise.client.ClientMain$1.run(ClientMain.java:261)
        at java.lang.Thread.run(Thread.java:662)

Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1. Log into the CLI console 
2. Call a method that returns a Java byte array (I produced this by calling DriftManager.getDriftFileAsByteArray)
3.
  
Actual results:


Expected results:


Additional info:

Comment 1 Mike Foley 2011-11-22 18:20:47 UTC
cli only. does not affect drift-ui.

Comment 2 Mike Foley 2011-11-22 18:35:48 UTC
cli only. does not affect drift-ui.

Comment 3 John Sanda 2011-11-22 19:11:52 UTC
And to further clarify, this bug is **not** related to drift. It is CLI-specific bug that I happened to stumble on while making some drift API calls. A user should be able to reproduce this exception by calling any method that returns a byte array and quite possibly an array of any other primitive type.

Comment 4 Charles Crouch 2011-11-29 04:15:00 UTC
(9:49:31 PM) ccrouch: jsanda: none of the normal drift use cases are impacted 
by https://bugzilla.redhat.com/show_bug.cgi?id=756086# correct?
(9:50:02 PM) ccrouch: because otherwise we would have hit it before presumably? 
:-)
(9:50:36 PM) ccrouch: i also doubt this is a regression from jon2.4
(9:51:12 PM) jsanda: looking...
(9:51:51 PM) jsanda: i don't think that this impacts drift use cases
(9:52:04 PM) jsanda: i also agree about it not being a regression
(9:52:25 PM) jsanda: the class in question has had problems since the inception 
of the CLI
(9:52:33 PM) jsanda: these types of parsing problems that is
(9:53:41 PM) ccrouch: ok, given this is the first time we're hitting this, I'm 
presuming this datatype is not very common in the api
(9:54:13 PM) jsanda: in the drift api or the cli api in general?
(9:55:21 PM) jsanda: i'd have to review the remote apis to see where we have 
return type of byte array
(9:55:23 PM) ccrouch: the cli api in general
(9:55:39 PM) jsanda: we might in a few place
(9:55:40 PM) jsanda: s
(9:56:25 PM) ccrouch: ok, i'll assign it to lukas to take a look

Comment 5 Charles Crouch 2011-11-29 04:15:05 UTC
Lukas, can you have a quick investigate here. I'm particularly interested to 
know if this is a regression from JON2.4. Also is a fix feasible? Small? Safe? 
I'm suspicious of any changes in this area right before the release, since its 
sounds like a fundamental aspect of the CLI

Comment 6 Charles Crouch 2011-11-29 04:15:11 UTC
(9:56:58 PM) jsanda: i think we have more places that take a byte array as a 
param as opposed to having it as a return type
(9:57:27 PM) jsanda: also keep in mind that this is limited to the interactive 
console only

Comment 7 John Mazzitelli 2011-11-29 20:31:54 UTC
this is not a regression and it has small impact, only because few APIs actually return arrays. note that this is a problem for both primitive and object arrays.

Will be writing unit tests in TabularWriterTest.

Comment 8 John Mazzitelli 2011-11-29 22:18:44 UTC
committed to master: 756086

Comment 9 Mike Foley 2012-01-31 18:47:14 UTC
cloned this for the documentation portion of this ...  from the BZ logger's repro steps ... the DriftManager object is not in the API doc ... nor the getDriftFileAsByteArray method.

added new BZ for doc 

https://bugzilla.redhat.com/show_bug.cgi?id=786224

Comment 10 Mike Foley 2012-01-31 18:51:00 UTC
John ... I am having trouble verifying this.  There is no API doc for the method you mention in the repro steps .... 

This is what I am seeing ...

rhqadmin@localhost:7080$ DriftManager.getDriftFileAsByteArray('mydrift') 
Wrapped javax.ejb.EJBTransactionRolledbackException: [Warning] No entity found for query (<Unknown source>#1)
DriftManager.getDriftFileAsByteArray('mydrift') 
^

I can't tell if this is the expected behavior or not ... or if I am doing something incorrect.


Note You need to log in before you can comment on or make changes to this bug.