Skip to content

Commit

Permalink
updated commons code to gracefully handle non-country allowed tracks …
Browse files Browse the repository at this point in the history
…and fetch alternatives.
  • Loading branch information
jkwatson committed Aug 30, 2011
1 parent 9835c51 commit cb3b218
Show file tree
Hide file tree
Showing 8 changed files with 4,620 additions and 4,670 deletions.
3,452 changes: 1,702 additions & 1,750 deletions commons/src/main/java/de/felixbruns/jotify/JotifyConnection.java

Large diffs are not rendered by default.

776 changes: 395 additions & 381 deletions commons/src/main/java/de/felixbruns/jotify/media/Track.java

Large diffs are not rendered by default.

Expand Up @@ -549,26 +549,9 @@ else if (name.equals("forbidden")) {
/* Skip text. */
this.getElementString();
} else if (name.equals("alternatives")) {
skipAlternatives();
parseAlternatives(track);
} else if (name.equals("similar-tracks")) {
List<Track> similarTracks = new ArrayList<Track>();

/* Go to next element and check if it is a start element. */
while (this.reader.next() == START_ELEMENT) {
name = this.reader.getLocalName();

/* Process depending on element name. */
if (name.equals("id")) {
similarTracks.add(new Track(this.getElementString()));
} else {
throw new XMLParserException(
"Unexpected element '<" + name + ">'", this.reader.getLocation()
);
}
}

/* Set similar tracks. */
track.setSimilarTracks(similarTracks);
parseSimilarTracks(track);
} else if (name.equals("external-ids")) {
track.setExternalIds(parseExternalIds());
} else {
Expand All @@ -586,6 +569,40 @@ else if (name.equals("forbidden")) {
return track;
}

private void parseSimilarTracks(Track track) throws XMLStreamException, XMLParserException {
String name;
List<Track> similarTracks = new ArrayList<Track>();
while (this.reader.next() == START_ELEMENT) {
name = this.reader.getLocalName();
if (name.equals("id")) {
similarTracks.add(new Track(this.getElementString()));
} else {
throw new XMLParserException(
"Unexpected element '<" + name + ">'", this.reader.getLocation()
);
}
}
track.setSimilarTracks(similarTracks);
}

private void parseAlternatives(Track track) throws XMLStreamException, XMLParserException {
String name;
List<Track> alternatives = new ArrayList<Track>();
while (this.reader.next() == START_ELEMENT) {
name = this.reader.getLocalName();

/* Process depending on element name. */
if (name.equals("track")) {
alternatives.add(parseTrack());
} else {
throw new XMLParserException(
"Unexpected element '<" + name + ">'", this.reader.getLocation()
);
}
}
track.setAlternatives(alternatives);
}

/**
* Parse the input stream as an image.
*
Expand Down Expand Up @@ -807,10 +824,7 @@ private void skipAlternatives() throws XMLStreamException, XMLParserException {
name = this.reader.getLocalName();

/* Process depending on element name. */
if (name.equals("alternative")) {
/* Skip text. */
this.getElementString();
} else if (name.equals("track")) {
if (name.equals("track")) {
parseTrack();
} else {
throw new XMLParserException(
Expand Down Expand Up @@ -873,6 +887,7 @@ private void skipAvailability() throws XMLStreamException, XMLParserException {
*/
public static Object parse(byte[] xml, String encoding) {
try {
// System.out.println("xml: " + new String(xml, encoding));
XMLMediaParser parser = new XMLMediaParser(new ByteArrayInputStream(xml, 0, xml.length - 1), encoding);

return parser.parse();
Expand All @@ -885,6 +900,10 @@ public static Object parse(byte[] xml, String encoding) {

return null;
}
// catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// return null;
// }
}

/**
Expand Down
Expand Up @@ -316,7 +316,9 @@ private PlaylistConfirmation parsePlaylistConfirmation() throws XMLStreamExcepti
*/
public static Object parse(byte[] data, String encoding, String id) {
try {
XMLPlaylistParser parser = new XMLPlaylistParser(new ByteArrayInputStream(data), encoding);
ByteArrayInputStream stream = new ByteArrayInputStream(data);
// System.out.println(new String(data, encoding));
XMLPlaylistParser parser = new XMLPlaylistParser(stream, encoding);

return parser.parse(id);
} catch (XMLStreamException e) {
Expand All @@ -326,6 +328,10 @@ public static Object parse(byte[] data, String encoding, String id) {
e.printStackTrace();
return null;
}
// catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// return null;
// }
}

/**
Expand All @@ -337,12 +343,9 @@ public static Object parse(byte[] data, String encoding, String id) {
*/
public static PlaylistContainer parsePlaylistContainer(byte[] data, String encoding) {
/* Wrap xml data in corrent document element. */
Object playlistContainer = parse(
("<?xml version=\"1.0\" encoding=\"utf-8\" ?><playlists>" +
new String(data) +
"</playlists>").getBytes(),
encoding, null
);
String xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><playlists>" + new String(data) + "</playlists>";
System.out.println("xml = " + xml);
Object playlistContainer = parse(xml.getBytes(), encoding, null);

if (playlistContainer instanceof PlaylistContainer) {
return (PlaylistContainer) playlistContainer;
Expand Down

0 comments on commit cb3b218

Please sign in to comment.