<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ゆるやかなウェブ &#187; GAE/Java</title>
	<atom:link href="http://www.yuruyakana.com/tag/gaejava/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yuruyakana.com</link>
	<description>ＩＴコーディネータはＩＴ経営を実現するプロフェッショナルです</description>
	<lastBuildDate>Thu, 26 Jan 2012 04:26:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Amazon Product Adv. API でもう少し</title>
		<link>http://www.yuruyakana.com/2009/08/amazon-product-adv-api-%e3%81%a7%e3%82%82%e3%81%86%e5%b0%91%e3%81%97/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=amazon-product-adv-api-%25e3%2581%25a7%25e3%2582%2582%25e3%2581%2586%25e5%25b0%2591%25e3%2581%2597</link>
		<comments>http://www.yuruyakana.com/2009/08/amazon-product-adv-api-%e3%81%a7%e3%82%82%e3%81%86%e5%b0%91%e3%81%97/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 08:21:34 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[ソフトウェア関連]]></category>
		<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[Amazon API]]></category>
		<category><![CDATA[GAE/Java]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/?p=95</guid>
		<description><![CDATA[先日、Amazon Product Advertisng API の Java コマンドタイプのサンプルを Grails で動かしてみようと ItemLookup のサービスとコントローラ、ドメイン、ビューを作ったのです [...]]]></description>
			<content:encoded><![CDATA[<p>先日、Amazon Product Advertisng API の Java コマンドタイプのサンプルを Grails で動かしてみようと ItemLookup のサービスとコントローラ、ドメイン、ビューを作ったのですが、今朝からもう少し進めて ItemSearch のコントローラ、ビューを作ってみました。ドメインはデータ保存しないので今のところ必要ないかな。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
</pre></td><td class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**
 * Amazon Product Advertising API を使ったサンプル
 * API Version: 2009-03-31
 *  ItemSearch-Keywords で Book名を入手　とりあえず。
 *
 */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #a1a100;">com.yuruyakana</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #a1a100;">com.amazon.advertising.api.sample.SignedRequestsHelper</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #a1a100;">org.codehaus.groovy.grails.commons.*</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #a1a100;">net.sf.ehcache.Element</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> AmazonItemSearchService <span style="color: #66cc66;">&#123;</span>
&nbsp;
    <span style="color: #993333;">boolean</span> transactional <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">false</span>
&nbsp;
    <span style="color: #aaaadd; font-weight: bold;">String</span> AWS_ACCESS_KEY_ID
    <span style="color: #aaaadd; font-weight: bold;">String</span> ASSOCIATE_TAG
    <span style="color: #aaaadd; font-weight: bold;">String</span> AWS_SECRET_KEY
    <span style="color: #aaaadd; font-weight: bold;">String</span> ENDPOINT
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> getItemSearch<span style="color: #66cc66;">&#40;</span>searchIndex, keyword<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #808080; font-style: italic;">/* Set up the signed requests helper */</span>
        SignedRequestsHelper helper
&nbsp;
        <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #66cc66;">&#123;</span>
            helper <span style="color: #66cc66;">=</span> SignedRequestsHelper.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span>ENDPOINT, AWS_ACCESS_KEY_ID, AWS_SECRET_KEY<span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span><span style="color: #66cc66;">&#40;</span><span style="color: #aaaadd; font-weight: bold;">Exception</span> e<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            log.<span style="color: #006600;">error</span> <span style="color: #ff0000;">&quot;Problem communicating with SignedRequestsHelper: ${e.message}&quot;</span>, e
            <span style="color: #000000; font-weight: bold;">return</span>
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #aaaadd; font-weight: bold;">String</span> requestUrl <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> titles <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;_&quot;</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> author <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> imageUrl <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> price <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
        <span style="color: #aaaadd; font-weight: bold;">String</span> totalresults <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">null</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// map形式</span>
        <span style="color: #993399;">println</span> <span style="color: #ff0000;">&quot;Map form example:&quot;</span>
        <span style="color: #aaaadd; font-weight: bold;">Map</span> params <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">HashMap</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Service&quot;</span>, <span style="color: #ff0000;">&quot;AWSECommerceService&quot;</span><span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Operation&quot;</span>, <span style="color: #ff0000;">&quot;ItemSearch&quot;</span><span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;AWSAccessKeyId&quot;</span>, AWS_ACCESS_KEY_ID<span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;AssociateTag&quot;</span>, ASSOCIATE_TAG<span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SearchIndex&quot;</span>, searchIndex<span style="color: #66cc66;">&#41;</span>
        params.<span style="color: #006600;">put</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Keywords&quot;</span>, keyword<span style="color: #66cc66;">&#41;</span>
        <span style="color: #808080; font-style: italic;">/**　こっちの方が良いわな
        def params = ['Service':'AWSECommerceService',
	              'Operation':'ItemSearch',
	              'AWSAccessKeyId':'AWS_ACCESS_KEY_ID',
	              'AssociateTag':'ASSOCIATE_TAG',
	              'ResponseGroup':'Medium']
　　　　*/</span>
        requestUrl <span style="color: #66cc66;">=</span> helper.<span style="color: #006600;">sign</span><span style="color: #66cc66;">&#40;</span>params<span style="color: #66cc66;">&#41;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// XML構文解析</span>
        <span style="color: #000000; font-weight: bold;">def</span> uri <span style="color: #66cc66;">=</span> requestUrl.<span style="color: #006600;">toURI</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">def</span> ItemSearchResponse <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> XmlSlurper<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">parse</span><span style="color: #66cc66;">&#40;</span>uri<span style="color: #66cc66;">&#41;</span>
&nbsp;
        <span style="color: #993399;">println</span> <span style="color: #ff0000;">&quot;Total Results: &quot;</span> <span style="color: #66cc66;">+</span> ItemSearchResponse.<span style="color: #006600;">Items</span>.<span style="color: #006600;">TotalResults</span>
        <span style="color: #808080; font-style: italic;">//println &quot;Total Pages: &quot; + ItemSearchResponse.Items.TotalPages</span>
&nbsp;
        ItemSearchResponse.<span style="color: #006600;">Items</span>.<span style="color: #006600;">Item</span>.<span style="color: #006600;">ItemAttributes</span>.<span style="color: #006600;">Title</span>.<span style="color: #663399;">each</span><span style="color: #66cc66;">&#123;</span>
            <span style="color: #808080; font-style: italic;">//　リストをコントローラに渡す方法思いつかなかったのでアンダー</span>
　　　　　 <span style="color: #808080; font-style: italic;">//  スコアで芋づるにしちゃいました。</span>
            titles <span style="color: #66cc66;">=</span> titles <span style="color: #66cc66;">+</span> <span style="color: #ff0000;">&quot;_&quot;</span> <span style="color: #66cc66;">+</span> it
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">//println &quot;ITEM Author: &quot; + ItemSearchResponse.Items.Item.ItemAttributes.Author</span>
        <span style="color: #808080; font-style: italic;">//println &quot;ITEM Medium Image: &quot; + ItemSearchResponse.Items.Item.MediumImage.URL</span>
        <span style="color: #808080; font-style: italic;">//println &quot;ITEM Price: &quot; + ItemSearchResponse.Items.Item.ItemAttributes.ListPrice.FormattedPrice</span>
&nbsp;
        totalresults <span style="color: #66cc66;">=</span> ItemSearchResponse.<span style="color: #006600;">Items</span>.<span style="color: #006600;">TotalResults</span>     
&nbsp;
        <span style="color: #000000; font-weight: bold;">def</span> map <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#91;</span>TotalResults:totalresults, Title:titles<span style="color: #66cc66;">&#93;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">return</span> map
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/**
 * Amazon Product Advertising API を使ったサンプル
 * API Version: 2009-03-31
 *  keyword で Book名リストを入手　とりあえず。
 *
 */</span>
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #a1a100;">com.yuruyakana</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> AmazonItemSearchController <span style="color: #66cc66;">&#123;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">//def scaffold = AmazonItemSearch</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> AmazonItemSearchService
&nbsp;
    <span style="color: #aaaadd; font-weight: bold;">String</span> searchIndex <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;Books&quot;</span>
    <span style="color: #aaaadd; font-weight: bold;">String</span> keyword <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;IT経営&quot;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> index <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#123;</span>
        redirect<span style="color: #66cc66;">&#40;</span>action:<span style="color: #ff0000;">&quot;search&quot;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">def</span> searchFlow <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// 検索</span>
        search <span style="color: #66cc66;">&#123;</span>
            on<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;doSearch&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
&nbsp;
                <span style="color: #000000; font-weight: bold;">def</span> amazonBook <span style="color: #66cc66;">=</span> amazonItemSearchService.<span style="color: #006600;">getItemSearch</span><span style="color: #66cc66;">&#40;</span>searchIndex, keyword<span style="color: #66cc66;">&#41;</span>
                <span style="color: #808080; font-style: italic;">/**
                 * サービスからの戻り値を配列で渡す方法分からないので、リストをアンダー
                 * &lt;/code&gt;&lt;code&gt;スコアでつないで&lt;/code&gt;&lt;code&gt;マップで渡して、ここでまたスプリットにかけています。
                 * Groovy の each メソッドはすごい。
                */</span>
                amazonBook.<span style="color: #006600;">Title</span>.<span style="color: #FFCC33;">splitEachLine</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>titles<span style="color: #66cc66;">-&amp;</span>gt<span style="color: #66cc66;">;</span>
                    titles.<span style="color: #663399;">each</span><span style="color: #66cc66;">&#123;</span>
                        <span style="color: #808080; font-style: italic;">//println it</span>
                        <span style="color: #808080; font-style: italic;">//render(view:'search', model:[keyword:keyword, Title:titles])</span>
                    <span style="color: #66cc66;">&#125;</span>
                    <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;keyword&quot;</span>:keyword, <span style="color: #ff0000;">&quot;Title&quot;</span>:titles<span style="color: #66cc66;">&#93;</span>
                <span style="color: #66cc66;">&#125;</span>
            <span style="color: #66cc66;">&#125;</span>.<span style="color: #006600;">to</span> <span style="color: #ff0000;">&quot;search&quot;</span>
        <span style="color: #66cc66;">&#125;</span>
        <span style="color: #808080; font-style: italic;">// 詳細</span>
        displayDetail <span style="color: #66cc66;">&#123;</span>
            on<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;search&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
&nbsp;
            <span style="color: #66cc66;">&#125;</span>.<span style="color: #006600;">to</span> <span style="color: #ff0000;">&quot;search&quot;</span>
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>ビューはこんな感じ。</p>
<div id="attachment_101" class="wp-caption alignleft" style="width: 280px"><a href="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemLookupSample.png" rel="lightbox[95]"><img class="size-medium wp-image-101 " title="AmazonItemLookupSample" src="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemLookupSample-300x170.png" alt="AmazonItemLookup　Sample" width="270" height="153" /></a><p class="wp-caption-text">AmazonItemLookup　Sample</p></div>
<div id="attachment_102" class="wp-caption alignright" style="width: 310px"><a href="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemSearchSample.png" rel="lightbox[95]"><img class="size-medium wp-image-102 " title="AmazonItemSearchSample" src="http://www.yuruyakana.com/blog/wp-content/uploads/2009/08/AmazonItemSearchSample-300x236.png" alt="AmazonItemSearch　Sample" width="300" height="236" /></a><p class="wp-caption-text">AmazonItemSearch　Sample</p></div>
<p>さて、次は何をしましょうか？<br />
カートを付けて、plugin とか、GAE 上で実験してみるとか？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/08/amazon-product-adv-api-%e3%81%a7%e3%82%82%e3%81%86%e5%b0%91%e3%81%97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>appengine-java で遊ぼ！</title>
		<link>http://www.yuruyakana.com/2009/06/appengine-java-sdk-121/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=appengine-java-sdk-121</link>
		<comments>http://www.yuruyakana.com/2009/06/appengine-java-sdk-121/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 08:47:13 +0000</pubDate>
		<dc:creator>Morita</dc:creator>
				<category><![CDATA[日々是好日]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[GAE/Java]]></category>
		<category><![CDATA[GAE/Python]]></category>
		<category><![CDATA[Google Apps]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[kenai]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Quercus]]></category>

		<guid isPermaLink="false">http://www.yuruyakana.com/blog/?p=30</guid>
		<description><![CDATA[このブログは、ゆるやかなウェブ （Movable Type 版）からの非継続バージョンとして WordPress 版で始めようと思って、自宅サーバでテスト中ですが、もう一つ Google Apps を使った[隠れ]ゆるや [...]]]></description>
			<content:encoded><![CDATA[<p>このブログは、<a href="http://www.yuruyakana.com/tbmt/" target="_blank">ゆるやかなウェブ</a> （Movable Type 版）からの非継続バージョンとして WordPress 版で始めようと思って、自宅サーバでテスト中ですが、もう一つ Google Apps を使った[隠れ]ゆるやかなウェブサイトがあり、そこで連休明けから Google App Engine のサンプルを使って遊んでいました。GWT も使えば、シュワッウォーンてな感じです。</p>
<p>Eclipse で立派なプラグインも用意されているので 楽ちんなのですが、NetBeans の方は<a href="http://kenai.com/projects/nbappengine" target="_blank">KENAI</a>で少し具体的になってきたようです。４日ほど前にインストールの方法がアップされていました。Grails はEclipse より NetBeans で作るのがちょー楽ちんなので、NB のモジュールサポートに超期待。(他人の褌ばっかりでごめんなさい)<br />
今のところ、NB６．７Beta ではなくてNB の開発版で動作確認できます。<br />
下記の５つのモジュールをインストールします。</p>
<ol>
<li>GAE Server</li>
<li>GAE Configuration Editor</li>
<li>GAE Deployment</li>
<li>GAE Editor Hints</li>
<li>GAE Samples (今時点で GuestBook だけ、JDKのSAmple 取り込めば良いのか)</li>
</ol>
<p>Sample でProject に取り込んで、サーバにGoogle App Engine を登録して、構築して実行。<br />
構築は成功。localhost でこけた。ポート利用されてるていうメッセージ。Apache も Jettyも動かしていないのになんで？Deployment は、マウス右メニュークリックでOK。Eclipseみたいにアイコンまだないけど。GAE上には１０個までID登録できるけど、あんまりサンプルばっかしアップするのも気が引けるし。今日はここまで。</p>
<p>［閑話］<br />
GAE/Java 上でPHP（Quercus) を使って早速 WordPress 2.7.1 を 動かしていますね。デモはOKでした。星５つ付いていて結構面白がる人がいるみたい。カスタマイズが楽しい人向きかも。<br />
Pebble をアップしてる様子はまだないようだけど、こちらの方が扱いよさそうだし、GAE上でBlog を動かしたいと思うほど、まだ面倒になっているわけでもなし。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yuruyakana.com/2009/06/appengine-java-sdk-121/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

