Staxで今度こそRSSフィードを纏め上げる(後は文字コード問題)

このエントリをはてなブックマークに追加このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加このエントリをkwoutに追加
2009年5月6日 水曜日 1時14分32秒

前回のエントリで脆くも砕け散ってしまったお勉強テーマである、
俺が所有する、現在アクティブな4つのブログのRSSフィードを、
Stax+Wicketで纏めようと言う試みがようやく形になってきた。

こちらにその結果がある。

まぁ、5月5日時点では見ての通り日本語が無茶苦茶ですよ。
ただ、これはStax+Wicket+ROMEの連携には、まったく関係の無い
別の所にある問題なので、RSSフィードを出す方法はわかった。

と言うことで、解説を書きまーす。

なお、今回は
Javaウェブフレームワーク「Wicket」の使い方 RSS Readerを作る その2 – フィードの取得と表示
を参考にした。
(続きを読む…)

Wicketで、ResponseからOutputStreamを取り出せるのはWebApplicationからgetHomePageしたクラスだけっぽい?

このエントリをはてなブックマークに追加このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加このエントリをkwoutに追加
2009年5月4日 月曜日 2時40分37秒

Wicketやっててちょっとつまづいたんだが、
ROME使ってRSSを作る時、最終的にはWebPage#onRender

@Override
protected void onRender(MarkupStream markupStream) {
    Response resp = this.getResponse();
    resp.setContentType("application/xml; charset=UTF-8");
    PrintWriter pw = new PrintWriter(resp.getOutputStream());
    SyndFeedOutput sfo = new SyndFeedOutput();
    try {
        sfo.output(this.getFeed(), pw);
    } catch (IOException e) {
        throw new RuntimeException("Error Streaming Feed",e);
    } catch (FeedException e) {
        throw new RuntimeException("Error Streaming Feed",e);
    }
}

ってしてたんだが、これだと不味いっぽい事に気づいてきた。
どうも、WicketApplicationの子クラス(Wicketで最初に呼ばれる奴)の、
getHomePageの戻り値として渡されるWebPageの子クラス(以降、トップページと呼ぶ)しか、これが出来ないっぽい。
どうも、

Response resp = this.getResponse();

で戻ってくるクラスが違うらしく、しかも、トップページ以外のページ、例えば

<!--HomePage.html-->
<a wicket:id="LinkPage">リンクしまーす</a>

/* HomePage.javaコンストラクタ内 */
this.add(new PageLink("LinkPage",LinkedPage.class));

みたいにしてリンクされるページ(以降リンク先ページ)で得られるResponseの実クラスが、
何とgetOutputStream()をサポートしていない、
BufferedHttpServletResponseなるクラスらしいのだ。
ちなみに、トップページの時はWebResponse が戻ってくる模様。
(続きを読む...)

Stax+Wicketで自サイトのRSSを一纏めにしようとしたが、全然そうならなかった。

このエントリをはてなブックマークに追加このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加このエントリをkwoutに追加
2009年5月3日 日曜日 3時06分24秒

とりあえず、Staxで何をしようかと逡巡していたのだが、
探してたらWicketでRSSを出すと言う試みがあったので、
俺もそれを真似てみようかと思った。
目標は、俺の持ってる各サイトのフィードの統合。

と言うことで、今回はこのサイトと、

WicketでRSSフィードを発行するといえばROMEです。

今回は単純に、

http://example.org/feed

にアクセスされたときにフィードを返すようなPageを実装します。
WicketでRSSフィードを発行する « murakumo

後このサイトを頼りに、RSSフィードを作ってみる。

Merry Christmas and a Happy New Year to all you folks out there. Here's a belated Christmas gift for all you Wicket developers out there.

I've been adding RSS feeds to my Wicket application based on the example Wicket RssPage found on the wiki, and thought it was very restrictive in what it could do. There are a ton of Java libraries out there to build rss feeds, and this RssPage was yet another solution.
code_poet : Wicket FeedPage

で、結論から言うと結構大変だった上に予想と違うものが出来た。
でも勢いで公開だー!

このページの「最初のRSS」の方ね。
http://feedsample.tarotarorg.staxapps.net/
(続きを読む...)

最新WicketのGenericsぶりに、早くも敗れ去る

このエントリをはてなブックマークに追加このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加このエントリをkwoutに追加
2009年4月29日 水曜日 1時58分30秒

さて、最近Wicketを頑張っている。
とりあえず、「Javaウェブフレームワーク「Wicket」の使い方」を見ながら、
サンプルのコードを書いていく日々を続けようと思う。

余談だが、最初このページを見つけたとき、
サーバが落ちてたのか知らないが見れなかったので、
Twitterでつぶやいてみた所、実は
サイトオーナーに伝わっていたらしい。
と言うか、フォローされてた。俺もしてた。
と言うか、有名な人じゃねーか!
Wicket本書いとるがな。
コレは驚きだ。

で、まぁそのサイトは再起動してくれてた。
が、情報が古いとの事。でも気にせずコードを書いていく。

まず、ろくに記事を読まずに「日付を出そう!」と思い立ってみたんだが、
早速サンプルにあった。
こんな風に書けばいいらしい。

add( new Label("test", new AbstractReadOnlyModel() {
        public Object getObject(Component component) {
            return new SimpleDateFormat("yyyy年MM月dd日").format( new Date());
        }
    }));

いいらしいのだが、そう上手くは行かない・・・。

オープンソース徹底活用 WicketによるWebアプリケーション開発
著者/訳者:矢野 勉
出版社:秀和システム( 2009-03 )
Amazon価格:¥ 2,940
ISBN-10 : 4798022217
ISBN-13 : 9784798022215

(続きを読む...)

HTML convert time: 1.532 sec.