android-ibc-forum

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit c5166e40cab313371123a331f16c0d8e0a08c398
parent 313b41aab81e47255084a5c6ef390021f856889a
Author: Jan Dankert <devnull@localhost>
Date:   Fri, 10 Feb 2012 00:05:39 +0100

Fix NPE: Einige Foren haben keinen Namen

Diffstat:
src/de/mtbnews/android/tapatalk/TapatalkClient.java | 104+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
1 file changed, 65 insertions(+), 39 deletions(-)

diff --git a/src/de/mtbnews/android/tapatalk/TapatalkClient.java b/src/de/mtbnews/android/tapatalk/TapatalkClient.java @@ -9,6 +9,7 @@ import org.xmlrpc.android.XMLRPCClient; import org.xmlrpc.android.XMLRPCException; import android.text.TextUtils; +import android.util.Log; import de.mtbnews.android.tapatalk.TapatalkException.TapatalkErrorCode; import de.mtbnews.android.tapatalk.wrapper.Forum; import de.mtbnews.android.tapatalk.wrapper.ListHolder; @@ -17,6 +18,7 @@ import de.mtbnews.android.tapatalk.wrapper.Message; import de.mtbnews.android.tapatalk.wrapper.Post; import de.mtbnews.android.tapatalk.wrapper.Search; import de.mtbnews.android.tapatalk.wrapper.Topic; +import de.mtbnews.android.util.IBC; /** * Tapatalk-compatible client. @@ -55,7 +57,8 @@ public class TapatalkClient this.loginTime = -1L; if (TextUtils.isEmpty(username)) - throw new TapatalkException("Username empty",TapatalkErrorCode.NO_USERNAME); + throw new TapatalkException("Username empty", + TapatalkErrorCode.NO_USERNAME); final Object[] params = new Object[] { username.getBytes(), password.getBytes() }; @@ -87,10 +90,23 @@ public class TapatalkClient catch (XMLRPCException e) { throw new TapatalkException( - "Logout failed" + ": " + e.getMessage(), e, TapatalkErrorCode.XMLRPC_ERROR); + "Logout failed" + ": " + e.getMessage(), e, + TapatalkErrorCode.XMLRPC_ERROR); } } + /** + * Load a topic. + * + * @param topicId + * topic-id + * @param start + * start-position + * @param end + * end-position + * @return list of topics + * @throws TapatalkException + */ @SuppressWarnings("unchecked") public Topic getTopic(String topicId, int start, int end) throws TapatalkException @@ -114,9 +130,9 @@ public class TapatalkClient { Map postMap = (Map) o1; Post post = new Post((Date) postMap.get("post_time"), - new String((byte[]) postMap.get("post_title")), - new String((byte[]) postMap.get("post_content")), - new String((byte[]) postMap.get("post_author_name"))); + byteArrayToString(postMap.get("post_title")), + byteArrayToString(postMap.get("post_content")), + byteArrayToString(postMap.get("post_author_name"))); posts.add(post); } @@ -124,7 +140,8 @@ public class TapatalkClient } catch (XMLRPCException e) { - throw new TapatalkException("Could not load Topic " + topicId, e, TapatalkErrorCode.XMLRPC_ERROR); + throw new TapatalkException("Could not load Topic " + topicId, e, + TapatalkErrorCode.XMLRPC_ERROR); } } @@ -142,7 +159,8 @@ public class TapatalkClient } catch (XMLRPCException e) { - throw new TapatalkException("Could not load Forum structure", e, TapatalkErrorCode.XMLRPC_ERROR); + throw new TapatalkException("Could not load Forum structure", e, + TapatalkErrorCode.XMLRPC_ERROR); } } @@ -179,28 +197,31 @@ public class TapatalkClient final Object[] params = new Object[] { forumId, from, to, mode2 }; Map map = (Map) toMap(client.callEx("get_topic", params)); - String title = new String((byte[]) map.get("forum_name")); - String id = (String) map.get("forum_id"); - final List<Topic> topics = new ArrayList<Topic>(); final List<Post> posts = new ArrayList<Post>(); + String title = byteArrayToString(map.get("forum_name")); + String id = (String) map.get("forum_id"); + final Forum forum = new Forum(id, topics, title, null, null); forum.topicCount = (Integer) map.get("total_topic_num"); - for (Object o1 : (Object[]) map.get("topics")) + if (forum.topicCount > 0) { - Map topicMap = (Map) o1; - Topic topic = new Topic( - (String) topicMap.get("topic_id"), - posts, // - byteArrayToString(topicMap.get("topic_title")),// - (Date) topicMap.get("last_reply_time"), // - new String((byte[]) topicMap.get("short_content")),// - new String((byte[]) topicMap.get("topic_author_name")), - 0); - topic.unread = (Boolean) topicMap.get("new_post"); - topics.add(topic); + for (Object o1 : (Object[]) map.get("topics")) + { + Map topicMap = (Map) o1; + Topic topic = new Topic( + (String) topicMap.get("topic_id"), + posts, // + byteArrayToString(topicMap.get("topic_title")),// + (Date) topicMap.get("last_reply_time"), // + byteArrayToString(topicMap.get("short_content")),// + byteArrayToString(topicMap.get("topic_author_name")), + 0); + topic.unread = (Boolean) topicMap.get("new_post"); + topics.add(topic); + } } return forum; @@ -231,13 +252,14 @@ public class TapatalkClient if (!onlyUnread || (Boolean) topicMap.get("new_post")) { - Topic topic = new Topic((String) topicMap.get("topic_id"), + Topic topic = new Topic( + (String) topicMap.get("topic_id"), new ArrayList<Post>(), // byteArrayToString(topicMap.get("topic_title")),// (Date) topicMap.get("post_time"), // - new String((byte[]) topicMap.get("short_content")),// - new String((byte[]) topicMap - .get("post_author_name")), 0); + byteArrayToString(topicMap.get("short_content")),// + byteArrayToString(topicMap.get("post_author_name")), + 0); topic.unread = (Boolean) topicMap.get("new_post"); topics.add(topic); } @@ -315,7 +337,8 @@ public class TapatalkClient } catch (XMLRPCException e) { - throw new TapatalkException("XMLRPC-Error: " + e.getMessage(), e, TapatalkErrorCode.XMLRPC_ERROR); + throw new TapatalkException("XMLRPC-Error: " + e.getMessage(), e, + TapatalkErrorCode.XMLRPC_ERROR); } } @@ -473,14 +496,12 @@ public class TapatalkClient for (Object o1 : (Object[]) map.get("topics")) { Map topicMap = toMap(o1); - Topic topic = new Topic( - (String) topicMap.get("topic_id"), + Topic topic = new Topic((String) topicMap.get("topic_id"), posts, // byteArrayToString(topicMap.get("topic_title")),// (Date) topicMap.get("post_time"), // - new String((byte[]) topicMap.get("short_content")),// - new String((byte[]) topicMap.get("post_author_name")), - 0); + byteArrayToString(topicMap.get("short_content")),// + byteArrayToString(topicMap.get("post_author_name")), 0); topic.unread = (Boolean) topicMap.get("new_post"); topics.add(topic); } @@ -620,7 +641,8 @@ public class TapatalkClient catch (XMLRPCException e) { throw new TapatalkException("Could not read message " + boxId + "," - + messageId + ": " + e.getMessage(), e, TapatalkErrorCode.XMLRPC_ERROR); + + messageId + ": " + e.getMessage(), e, + TapatalkErrorCode.XMLRPC_ERROR); } } @@ -677,7 +699,8 @@ public class TapatalkClient } catch (XMLRPCException e) { - throw new TapatalkException("Could not reply", e, TapatalkErrorCode.XMLRPC_ERROR); + throw new TapatalkException("Could not reply", e, + TapatalkErrorCode.XMLRPC_ERROR); } } @@ -702,12 +725,14 @@ public class TapatalkClient .callEx("create_message", params); if (!ok) { - throw new TapatalkException("sending message failed",TapatalkErrorCode.SEND_MESSAGE_FAILED); + throw new TapatalkException("sending message failed", + TapatalkErrorCode.SEND_MESSAGE_FAILED); } } catch (XMLRPCException e) { - throw new TapatalkException("Could not create the message", e, TapatalkErrorCode.XMLRPC_ERROR); + throw new TapatalkException("Could not create the message", e, + TapatalkErrorCode.XMLRPC_ERROR); } } @@ -750,7 +775,8 @@ public class TapatalkClient if (!(o instanceof Map)) { throw new TapatalkException("no map: " + o.toString() + " (" - + o.getClass() + ")",TapatalkErrorCode.UNKNOWN_SERVER_RESPONSE); + + o.getClass() + ")", + TapatalkErrorCode.UNKNOWN_SERVER_RESPONSE); } Map<String, Object> map = (Map<String, Object>) o; @@ -761,7 +787,8 @@ public class TapatalkClient boolean ok = (Boolean) object; if (!ok) throw new TapatalkException(byteArrayToString(map - .get("result_text")),TapatalkErrorCode.UNKNOWN_SERVER_RESPONSE); + .get("result_text")), + TapatalkErrorCode.UNKNOWN_SERVER_RESPONSE); return map; } @@ -788,5 +815,4 @@ public class TapatalkClient } - }