gwt-gadgetでビルドできない問題。整理してみる
gwtquery-1.0.0 を使いたいんだけど、gwtquery-1.0.0-SNAPSHOTを今でも仕方なく使い続けている。理由は、gwt-gadget1.2.0がGWT2.2以上でビルドしたものを扱えないからっぽい。以下のようなエラーが出てビルドできない。
java.lang.IncompatibleClassChangeError: Found interface com.google.gwt.core.ext.typeinfo.JClassType, but class was expected
これがgwt-query-1.0.0-SNAPSHOTだとビルドが通る。JClassTypeはGWT2.1.1ではabstract classで、GWT2.2.0ではinterface に変わってしまった。これにより扱う側がextendsするかimplementsするかでソースが変わってしまうため、ビルドができなくなったようだ。しかしオリジナルのgwtquery-1.0.0-SNAPSHOTのあるリポジトリは消されてしまった。
それではと、gwt-gadget-1.2.1-r1を試してみた。途中deprecatedっぽいワーニングは出るものの、IncompatibleClassChangeErrorは発生せずにビルドが最後までいこうとするので、1.2.1-r1がGWT2.2.0以降に対応したと思われる。しかしビルドの最後の最後で、「gwt.xmlで、<script>定義するんじゃないよー!」と、ちゃぶ台返しされる。GWT2.1.1+gwt-gadget1.2.0ではライブラリでjsを使っていても大丈夫だったのに。
Linking into /Users/katochin/Documents/workspace/myapp/war/myapp Invoking Linker Google Gadget Building gadget manifest [ERROR] The Google Gadget linker does not support <script> tags in the gwt.xml files [ERROR] Failed to link com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries) at com.google.gwt.core.linker.CrossSiteIframeLinker.fillSelectionScriptTemplate(CrossSiteIframeLinker.java:79)
このCrossSiteIframeLinkerクラスは、GWTに含まれるもので、GWT2.2.0だけでなくGWT2.1.1にも含まれていた。しかしどうも実装が変わってしまったようだ。もしかするとgwt-gadgetのコンパイラが面倒を見なければならなくなったのかもしれない(それをgwt-gadget側がScriptのありかを提供していないために起きているように見える)。
それにしてもどうしたもんかなぁ。いつまでも古いGWTを使うわけにもいかないし。頑張ってgwt.xmlのscriptの記述をGWTコード内で書くのが良いのだろうか?
場所の設定画面で突然韓国が出てくる
言語:日本語、場所:日本、タイムゾーン:韓国ソウル...ってΣ(゚Д゚;エーッ!?
同じ+9:00だからだと思うが初期値がおかしい。今度はSQLExceptionにならずに「日本東京」に直せた。
会社名の修正ができない
モデレータ設定というので会社名を変更しようとすると、
java.sql.SQLException: ORA-20018: ORA-06512: at "SLEEPY.CUSER", line 4061 ORA-06512: at "SLEEPY.SORGANIZATION", line 260 ORA-06512: at "SLEEPY.CORGANIZATION", line 1874 ORA-06512: at line 1 : {call cOrganization.update_detail(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)})} エラー: 情報が無効またはありません。 以下のエラーメッセージを参照して情報を修正してください。
って、出ちゃってるし。特別なことをしていないのに、なんでエラー?ORACLE使ってることもバレバレだし。
アカウント管理がひどい
chatter Free, 1ヶ月使用版のsalesforce+chatter, 他のユーザーが立てたchatterとで、全部別管理になっている。で、同じアカウントでそれぞれに行き来できると思いきや「すでに存在する!」と言われ、常に新規アカウントでジョインしなければならない。
しかたがないので、+エイリアス をメールアカウントに付けて凌いでいるが、あっちこっち行き来するのが辛いんだけど。どういう要件があったらこんな仕様になるんだろうか。何も考えてないで起きているバグとしか思えない。
またMarketplaceのProvisioningのScopeが足りない。
マルチドメインのスコープが無いのはともかく、基本的なやつ、https://apps-apis.google.com/a/feeds/domain/#readonly ぐらいは用意しておくれよ〜。
organaization nameぐらい教えてくれー。
うお!billingに$0指定ができなくなった
blobstoreを有効にしたいだけとかでやっていたのに、デフォルト $2/Day、最低でも$1/Dayは出さないと駄目になった。
と思ったら、随分前からだったようで、2010年秋ごろにはすでにそうなっていたようだ。僕がセットしたアプリは2009年夏ごろだったが、そっちは$0のままのようだ。
gdata-java-clientのmvnリポジトリへのデプロイ(続き)
http://d.hatena.ne.jp/t-katochin/20110318/1300432259 で実行したシェルは、個々にインストールしているだけで、dependenciesが無いので、いまいち。。。。
各gdata jar内のMANIFESTのclasspathにある他のgdata jarの記述からdependenciesを起こしてPOM吐いてdeployまでできるよう改良したいなぁ.... うーん重い。
4になってから色々動かない。
Google AppsでGmailのその他メニューがfirefox4にあげた途端展開されなくなった。しばらくしたらGoogleの方が対策したようだけど。
それ以外に、text-overflow: ellipsis; が効かなくなった感じ。
http://mattsnider.com/css/css-string-truncation-with-ellipsis/ ←これに従えば3.6までは動いていたんだけど、4.0では表示されているデモも動かない。
manifestのrealmの記述ミス
ずいぶん昔にはまったけど、どこにも記録を残していなかったのか思い出せなかった。。。orz なので改めてちゃんと記憶に残すよう大きく書いておきます。
realmのUrlには、https://アプリケーションサーバーアドレス/ のように末尾にスラッシュを書いてはイケナイ
例) https://myapp.appspot.com ... OK https://myapp.appspot.com/ ... NG
これをつけると、
- マーケットプレイスアプリなのに「このアプリを許可しますか?」とユーザー単位に承認を要求される。
- インストール先のドメインの[高度なツール]-[OpenID を使用した連携ログイン]-[OpenID を使用したサードパーティのウェブサイトへのログインを許可]のチェックが必要になってしまう。
...という症状が出ます。
後者が特に致命的でGoogleが表示するエラー画面が文字化け(クライアントのエンコードの問題ではなく、レスポンスがすでに???? のようになっているので読めない)て表示されます*1。
Marketplaceのアプリは、ドメインが認めてドメインにインストールする対象です。openidによるサインオンの許可は、Marketplaceからアプリをインストールする際にadminが既に承認したものです。一方、[高度なツール]-[OpenID を使用した連携ログイン]は、ドメイン内メンバーが個々に認めてインストールしたものが対象となっています。
もっと言えば、Google Apps Standardでは[高度なツール]-[OpenID を使用した連携ログイン]をコントロールする方法がない*2ので、そこに頼るのはやはりスマートじゃないということになります。
...よし復習したぞ。もう忘れまい。