Pebble日本語化&改造ログ
  全カテゴリ | Blog News | Bugs | Changes | Other Blogware
 
<< URLに「:80」が付く[FIXED] | Home | Blojsom >>
エントリー削除後にページが表示できない[FIXED]

エントリーを新規作成、コメントを追加、エントリーを削除する。という手順を同じセッション内で行った場合に削除の時点でエラーが発生し、その後トップページがエラーで表示できない。
追記:同じセッションでなくてもエラーとなる模様。エラーはRemoveBlogEntry後のサイドバーでのRecentCommentsの表示でNullExceptionが発生。コメントのあるエントリーを削除した場合に何か残っているような感じ。

再現するかは不明だが、エントリーが削除できない現象も発生している。この場合一見削除できたかのようだが何度行っても削除できていない。

BlogEntry.remove()あたりを直していますが、まだ完全ではありません。
ネストしたコメントがあるエントリーを削除した場合にエラーになります。
削除系はバグっぽい所が多そうです。
このコメントのようにネストした場合のノード管理に不具合があるような気がします。
ただしネストしていなくてもエラーが起こることもあるので、この問題は深刻かもしれません。
苦労しました。。
削除後にDailyBlogがnullになってしまうため、
サイドバーのコメント表示の時点でエラーとなっていました。

まず、BlogEntry.setDailyBlogをpublicに変更(これもバグ?)。
次に、RemoveBlogEntryAction.processを以下のように変更し、
DailyBlogがnullにならないようにすることで対応しました。


blogEntry.remove();

dailyBlog.removeEntry(blogEntry);

dailyBlog = rootBlog.getBlogForToday();

blogEntry.setDailyBlog(dailyBlog);



ただしこれでも、削除後にサイドバーに削除したエントリーのコメントや
トラックバックが残ってしまい、クリックしたらエラーがでますが、
これを整理するにはブログリロードなどをしなくてはいけないのでこれでFIXとします。
まだ不十分、というかこれではダメで、
ネストしたコメントの場合、子のコメントもきちんと削除しなくてはいけませんでした。

上記の修正は誤りで、RemoveBlogEntryAction.processにコメント・トラックバックを削除する処理を追加し、さらにBlogEntry.removeCommentでは親コメントを消すと子にアクセスできなくなるので新しいメソッドを追加します。

[RemoveBlogEntryAction.processのtry節]
List list = blogEntry.getComments();
Iterator it = list.iterator();
while (it.hasNext()) {
&nbsp;Comment c = (Comment)it.next();
&nbsp;blogEntry.removeComment(c);
}
//同様にSimpleBlog.trackbackRemoved()が呼ばれRecentTrackbacksと整合性がとれる
list = blogEntry.getTrackBacks();
it = list.iterator();
while (it.hasNext()) {
&nbsp;blogEntry.removeTrackBack(((TrackBack)it.next()).getId());
}
blogEntry.remove();
dailyBlog.removeEntry(blogEntry);

-----
メソッド:BlogEntry.removeComment(Comment comment);を追加
コメント追加

タイトル
名前
E-mail
Webサイト
本文
情報保存 する  しない
  • 情報保存をすると次回からお名前等を入力する手間が省けます。
  • E-mailは公開されません - このエントリーの新規コメント通知が必要なら記入します。

このエントリーのトラックバックURLを表示