Bug 211175 ClassCastException thrown when implementing IReportItemQuery
When implementing IReportItemQuery's method, public IDataQueryDefinition[] createReportQueries(IDataQueryDefinition parent) throws BirtException, even if the impl method returns IDataQueryDefinition[], ClassCastException will be thrown during preview, the error log is as follows: java.lang.ClassCastException: [Lorg.eclipse.birt.data.engine.api.IDataQueryDefinition; at org.eclipse.birt.report.engine.executor.ExtendedGenerateExecutor.generateContent(ExtendedGenerateExecutor.java:91) at org.eclipse.birt.report.engine.executor.ExtendedGenerateExecutor.execute(ExtendedGenerateExecutor.java:72) at org.eclipse.birt.report.engine.executor.ExtendedItemExecutor.execute(ExtendedItemExecutor.java:60) at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:42) If the method returns IBaseQueryDefinition[], it's ok. Look at the engine code, there's something wrong of class casting when generating content.
engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/executor/ExtendedGenerateExecutor.java
info
					.setApplicationClassLoader( context
							.getApplicationClassLoader( ) );
			info.setReportContext( context.getReportContext( ) );
			info.setReportQueries( queries );
			info.setExtendedItemContent( content );
			itemGeneration.init( info );
			
			try
			{
				IBaseResultSet[] resultSets = rsets;
				if ( resultSets == null )
				{
					IBaseResultSet prset = getParentResultSet( );
					if ( prset != null )
					{
						int rsetType = prset.getType( );
						if ( rsetType == IBaseResultSet.QUERY_RESULTSET )
						{
							resultSets = new IBaseResultSet[1];
							resultSets[0] = new SingleQueryResultSet(
									(IQueryResultSet) prset );
						}
						else if ( rsetType == IBaseResultSet.CUBE_RESULTSET )
						{
							resultSets = new IBaseResultSet[1];
							resultSets[0] = new SingleCubeResultSet(
									(ICubeResultSet) prset );
						}
					}