Red Hat Bugzilla – Full Text Bug Listing
|Summary:||CLI console throws ClassCastException when method returns byte array|
|Product:||[Other] RHQ Project||Reporter:||John Sanda <jsanda>|
|Component:||CLI||Assignee:||John Sanda <jsanda>|
|Status:||ON_DEV ---||QA Contact:||Mike Foley <mfoley>|
|Fixed In Version:||Doc Type:||Bug Fix|
|Doc Text:||Story Points:||---|
|:||786224 (view as bug list)||Environment:|
|oVirt Team:||---||RHEL 7.3 requirements from Atomic Host:|
|Bug Depends On:|
|Bug Blocks:||752488, 707225, 786224|
Description John Sanda 2011-11-22 11:44:43 EST
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 13:20:47 EST
cli only. does not affect drift-ui.
Comment 2 Mike Foley 2011-11-22 13:35:48 EST
cli only. does not affect drift-ui.
Comment 3 John Sanda 2011-11-22 14:11:52 EST
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-28 23:15:00 EST
(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-28 23:15:05 EST
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-28 23:15:11 EST
(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 15:31:54 EST
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 17:18:44 EST
committed to master: 756086
Comment 9 Mike Foley 2012-01-31 13:47:14 EST
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 13:51:00 EST
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.