Article Number
000033362
Applies To
RSA Product Set: RSA Identity Governance & Lifecycle
RSA Version/Condition: 6.9.1, 7.0.x
Issue
When attempting to run a report in RSA Identity Governance & Lifecycle (
Reports >
Tabular > {
Report name} >
General tab >
Run Report), the following error is generated in the user interface:
"Caught Exception in Report fill(): 0"
Image description
At times the report may run in the user interface but the same report may fail to generate if the report is scheduled (Reports > Tabular > {Report name} > Edit > Schedule an E-Mail tab) or run in the background (Reports > Tabular > {Report name} > General tab > Fill Report in Background). In all cases, the aveksaServer.log file has the following exceptions:
2016-06-09 13:33:46,723 ERROR [com.aveksa.server.report.Report] Error in fillReport
com.aveksa.server.runtime.ServerException: java.lang.ArrayIndexOutOfBoundsException: 0
...
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at net.sf.jasperreports.engine.util.ParagraphUtil.getFirstTabStop(ParagraphUtil.java:208)
Please refer to RSA Knowledge Base Article
000030327 -- Artifacts to gather in RSA Identity Governance & Lifecycle to find the location of the
aveksaServer.log file for your specific deployment. The
aveksaServer.log may also be downloaded from the RSA Identity Governance & Lifecycle user interface (
Admin >
System >
Server Nodes tab > under
Logs.)
Cause
This error in the aveksaServer.log:
java.lang.ArrayIndexOutOfBoundsException:
indicates that the original exception occurs in the JasperReports shared library which indicates that there is a problem with a tab stop.
This error may occur if the data in the report contains the non printable TAB character (ASCII value of 9). The report fails when attempting to fill the columns of the report with data because the tab character is interpreted as a new column. Note that the report only fails if the position of the tab character in the data causes the contents of the column to extend past the next column in the report.
Resolution
Update the report query with a custom
SQL SELECT statement that uses the
REPLACE command to replace any instance of the non printable TAB character in the data of the problem field with a printable character of your choice such as a space.
EXAMPLEIn the example below, a user custom attribute called
CAJOB has been created to represent a user's job title. This column contains the problematic data. Sometimes there are tab characters inserted into this column. In the user interface, go to
Reports >
Tabular > {
Report name} >
General tab >
Edit >
Query tab and modify the query:
FROM:
(SELECT CAJOB AS JOB_TITLE, FIRST_NAME, LAST_NAME FROM USERS)
TO:
(SELECT REPLACE (CAJOB, chr(9), ' ') AS JOB_TITLE, FIRST_NAME, LAST_NAME FROM USERS)
as in the example screenshot below:
Image description
This statement takes the value of the CAJOB user attribute and replaces any instances of the ASCII character 9 with a space.
Workaround
Move the problem column to the far right of the report data. If this is the last column on the report, the tab character may not collide with other columns.
Notes
In order to identify what rows in the database have the problem data, you can execute the following SQL query as AVUSER using a SQL tool such as Oracle SQL Developer.
SELECT CAJOB, FIRST_NAME, LAST_NAME
FROM AVDWUSER.USERS
WHERE CAJOB LIKE '%'||chr(9)||'%';