+ " || " + conn.getScope().getContextPath());
Object streamToClose = scopeApplicationAdapter.getBroadcastStream(
conn.getScope(), broadcastId);
BaseStreamListener listenerAdapter = streamListeners.get(flvRecordingMetaDataId);
log.debug("Stream Closing :: " + flvRecordingMetaDataId);
ClientBroadcastStream stream = (ClientBroadcastStream) streamToClose;
//the stream can be null if the user just closes the browser
//without canceling the recording before leaving
if (stream != null) {
//Iterate through all stream listeners and stop the appropriate
if (stream.getStreamListeners() != null) {
for (IStreamListener iStreamListener : stream
.getStreamListeners()) {
stream.removeStreamListener(iStreamListener);
}
}
}
if (listenerAdapter == null) {
log.debug("Stream Not Found :: " + flvRecordingMetaDataId);
log.debug("Available Streams :: "+streamListeners.size());
for (Long entryKey : streamListeners.keySet()) {
log.debug("Stored flvRecordingMetaDataId in Map: "+ entryKey);
}
//Manually call finish on the stream so that there is no endless loop waiting
//in the FlvRecorderConverter waiting for the stream to finish
//this would normally happen in the Listener
FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDaoImpl.
getFlvRecordingMetaDataById(flvRecordingMetaDataId);
flvRecordingMetaData.setStreamReaderThreadComplete(true);
flvRecordingMetaDataDaoImpl.updateFlvRecordingMetaData(flvRecordingMetaData);
throw new IllegalStateException("Could not find Listener to stop! flvRecordingMetaDataId "+flvRecordingMetaDataId);
}
listenerAdapter.closeStream();
streamListeners.remove(flvRecordingMetaDataId);
} catch (Exception err) {
log.error("[stopRecordingShow]", err);