private IResultMetaData getRuntimeMetaData(DataSetHandle dataSetHandle) throws BirtException { Map dataSetBindingMap = new HashMap(); Map dataSourceBindingMap = new HashMap(); DataSetHandle handle = null; if (sessionContext.getModuleHandle() != null && sessionContext.getModuleHandle().getAllDataSets() != null) { for (Object o : sessionContext.getModuleHandle().getAllDataSets()) { DataSetHandle dsh = (DataSetHandle) o; if (dsh.getQualifiedName().equals(dataSetHandle.getQualifiedName())) { handle = dsh; break; } } } // First clear all property bindings so that the data set can be executed against design time // properties clearPropertyBindingMap(handle, dataSetBindingMap, dataSourceBindingMap); try { QueryDefinition query = new QueryDefinition(); query.setDataSetName(dataSetHandle.getQualifiedName()); query.setMaxRows(1); query.setAutoBinding(true); IResultMetaData metaData = new QueryExecutionHelper(dataEngine, modelAdaptor, sessionContext, false, this.session) .executeQuery(query) .getResultMetaData(); addResultSetColumn(dataSetHandle, metaData); if (MetaDataPopulator.needsUseResultHint(dataSetHandle, metaData)) { metaData = new QueryExecutionHelper(dataEngine, modelAdaptor, sessionContext, true, this.session) .executeQuery(query) .getResultMetaData(); } return metaData; } finally { // restore property bindings resetPropertyBinding(handle, dataSetBindingMap, dataSourceBindingMap); } }