[squeezebox] Fix NumberFormatException when parsing status message (#13010)

* Fix NumberFormatException when parsing status message

Signed-off-by: Mark Hilbush <mark@hilbush.com>
This commit is contained in:
Mark Hilbush 2022-06-25 11:54:28 -04:00 committed by GitHub
parent 1a557fe17c
commit 7e151e8fce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 87 additions and 82 deletions

View File

@ -680,88 +680,93 @@ public class SqueezeBoxServerHandler extends BaseBridgeHandler {
String artworkUrl = null; String artworkUrl = null;
for (KeyValue entry : decodeKeyValueResponse(messageParts)) { for (KeyValue entry : decodeKeyValueResponse(messageParts)) {
// Parameter Power try {
if ("power".equals(entry.key)) { // Parameter Power
final boolean power = "1".equals(entry.value); if ("power".equals(entry.key)) {
updatePlayer(listener -> listener.powerChangeEvent(mac, power)); final boolean power = "1".equals(entry.value);
} updatePlayer(listener -> listener.powerChangeEvent(mac, power));
// Parameter Volume }
else if ("mixer volume".equals(entry.key)) { // Parameter Volume
final int volume = (int) Double.parseDouble(entry.value); else if ("mixer volume".equals(entry.key)) {
updatePlayer(listener -> listener.absoluteVolumeChangeEvent(mac, volume)); final int volume = (int) Double.parseDouble(entry.value);
} updatePlayer(listener -> listener.absoluteVolumeChangeEvent(mac, volume));
// Parameter Mode }
else if ("mode".equals(entry.key)) { // Parameter Mode
updatePlayer(listener -> listener.modeChangeEvent(mac, entry.value)); else if ("mode".equals(entry.key)) {
} updatePlayer(listener -> listener.modeChangeEvent(mac, entry.value));
// Parameter Playing Time }
else if ("time".equals(entry.key)) { // Parameter Playing Time
final int time = (int) Double.parseDouble(entry.value); else if ("time".equals(entry.key) && !"N/A".equals(entry.value)) {
updatePlayer(listener -> listener.currentPlayingTimeEvent(mac, time)); final int time = (int) Double.parseDouble(entry.value);
} updatePlayer(listener -> listener.currentPlayingTimeEvent(mac, time));
// Parameter duration }
else if ("duration".equals(entry.key)) { // Parameter duration
final int duration = (int) Double.parseDouble(entry.value); else if ("duration".equals(entry.key)) {
updatePlayer(listener -> listener.durationEvent(mac, duration)); final int duration = (int) Double.parseDouble(entry.value);
} updatePlayer(listener -> listener.durationEvent(mac, duration));
// Parameter Playing Playlist Index }
else if ("playlist_cur_index".equals(entry.key)) { // Parameter Playing Playlist Index
final int index = (int) Double.parseDouble(entry.value); else if ("playlist_cur_index".equals(entry.key)) {
updatePlayer(listener -> listener.currentPlaylistIndexEvent(mac, index)); final int index = (int) Double.parseDouble(entry.value);
} updatePlayer(listener -> listener.currentPlaylistIndexEvent(mac, index));
// Parameter Playlist Number Tracks }
else if ("playlist_tracks".equals(entry.key)) { // Parameter Playlist Number Tracks
final int track = (int) Double.parseDouble(entry.value); else if ("playlist_tracks".equals(entry.key)) {
updatePlayer(listener -> listener.numberPlaylistTracksEvent(mac, track)); final int track = (int) Double.parseDouble(entry.value);
} updatePlayer(listener -> listener.numberPlaylistTracksEvent(mac, track));
// Parameter Playlist Repeat Mode }
else if ("playlist repeat".equals(entry.key)) { // Parameter Playlist Repeat Mode
final int repeat = (int) Double.parseDouble(entry.value); else if ("playlist repeat".equals(entry.key)) {
updatePlayer(listener -> listener.currentPlaylistRepeatEvent(mac, repeat)); final int repeat = (int) Double.parseDouble(entry.value);
} updatePlayer(listener -> listener.currentPlaylistRepeatEvent(mac, repeat));
// Parameter Playlist Shuffle Mode }
else if ("playlist shuffle".equals(entry.key)) { // Parameter Playlist Shuffle Mode
final int shuffle = (int) Double.parseDouble(entry.value); else if ("playlist shuffle".equals(entry.key)) {
updatePlayer(listener -> listener.currentPlaylistShuffleEvent(mac, shuffle)); final int shuffle = (int) Double.parseDouble(entry.value);
} updatePlayer(listener -> listener.currentPlaylistShuffleEvent(mac, shuffle));
// Parameter Title }
else if ("title".equals(entry.key)) { // Parameter Title
updatePlayer(listener -> listener.titleChangeEvent(mac, entry.value)); else if ("title".equals(entry.key)) {
} updatePlayer(listener -> listener.titleChangeEvent(mac, entry.value));
// Parameter Remote Title (radio) }
else if ("remote_title".equals(entry.key)) { // Parameter Remote Title (radio)
remoteTitle = entry.value; else if ("remote_title".equals(entry.key)) {
} remoteTitle = entry.value;
// Parameter Artist }
else if ("artist".equals(entry.key)) { // Parameter Artist
artist = entry.value; else if ("artist".equals(entry.key)) {
} artist = entry.value;
// Parameter Album }
else if ("album".equals(entry.key)) { // Parameter Album
album = entry.value; else if ("album".equals(entry.key)) {
} album = entry.value;
// Parameter Genre }
else if ("genre".equals(entry.key)) { // Parameter Genre
genre = entry.value; else if ("genre".equals(entry.key)) {
} genre = entry.value;
// Parameter Year }
else if ("year".equals(entry.key)) { // Parameter Year
year = entry.value; else if ("year".equals(entry.key)) {
} year = entry.value;
// Parameter artwork_url contains url to cover art }
else if ("artwork_url".equals(entry.key)) { // Parameter artwork_url contains url to cover art
artworkUrl = entry.value; else if ("artwork_url".equals(entry.key)) {
} artworkUrl = entry.value;
// When coverart is "1" coverid will contain a unique coverart id }
else if ("coverart".equals(entry.key)) { // When coverart is "1" coverid will contain a unique coverart id
coverart = "1".equals(entry.value); else if ("coverart".equals(entry.key)) {
} coverart = "1".equals(entry.value);
// Id for covert art (only valid when coverart is "1") }
else if ("coverid".equals(entry.key)) { // Id for covert art (only valid when coverart is "1")
coverid = entry.value; else if ("coverid".equals(entry.key)) {
} else { coverid = entry.value;
// Added to be able to see additional status message types } else {
logger.trace("Unhandled status message type '{}' (value '{}')", entry.key, entry.value); // Added to be able to see additional status message types
logger.trace("Unhandled status message type '{}' (value '{}')", entry.key, entry.value);
}
} catch (NumberFormatException e) {
// Skip this key/value
logger.debug("Cannot parse number in status message: key '{}', value '{}'", entry.key, entry.value);
} }
} }