mayaa

-さらに備忘録

既知の問題として放置していたのが、/WEB-INFの下のファイルも丸見えになる問題。web.xmlも読めれば、/WEB-INF/libの下のJarもダウンロードできちゃう。そりゃまずいですよね。ということで、ページは以下の順で探すこととしました。 コンテキストルート相対…

-荒業

public File getBaseDir(Class testClass) { String resourceName = testClass.getName().replace('.', '/') + ".class"; ClassLoader loader = testClass.getClassLoader(); URL url = loader.getResource(resourceName); File file = new File(url.toStrin…

-WebWork2.2

http://blogs.opensymphony.com/plightbo/archives/000179.html WebWork2.2がPortlet(JSR168)をサポートだそうです。どういう(どのレベルで)サポートをしているのかがピンと来ないのですが、時間作って調べたいところです。たぶん、ActiorRequest/Resonse…

-Portlet対応

やっとPortlet(JSR168)が様子がつかめてきました。目先の案件にMaya投入するための締め切りに追われてしまい、当面必要無いPortlet対応については後回しになってました。 MayaでのPortlet対応は一番軽いレベルだと、Portletからのディスパッチで描画のみ対…

-今日の備忘録

Skirnirさんとsugaさんとでディスカッション。で、備忘録。 ページを読み込む際に、KvasirではURLの取り扱いが問題となるかもしれないので、ページを読むPageSourceDescriptorを決め打ちで使ってるところをProviderFactoryのところで設定可能とする。 maya.c…

-備忘録

別件で二川さんが来てたので、ちょっとだけMayaの話。二川さんはMayaですでにアプリを作ってくれています。 TilesSourceDescriptor Welcomeファイルの対応 話で出てきたのはこの2件。いままでTilesの対応は特殊なHTMLパーサを書かないといけないと思ってまし…

-Native-JSTL

Native-JSTLの一式を、trunk/maya-jstlに別プロジェクトとして切り出しました。maya-jstlプロジェクトは他と同様にmayaプロジェクトに依存します。

-ScriptletProcessor

scriptlet.html <html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <title>Maya samples</title> </head> <body> <div id="script" class="box"> テンプレート上のダミー文字列 </div> </body> </html> scriptlet.maya

-ソースロード

スクリプトをこれまでのテンプレや.mayaファイルに書く方法のほか、別途スクリプトソースファイルを読み込んで実行する機能を作ってます。実はこれがここ一連の式言語廃止、スクリプトエンジン採用のゴール。基本的にJavaを書かないJavaテンプレートエンジン…

-RhinoのCollection対応方法

まったくMaya固有の内容ではないので、明日つかえるトリビアかな。。。まずはWrapFactoryのオーバーライド。型をみてラッパーを選択するだけの内容です。 public class MayaWrapFactory extends WrapFactory { public Scriptable wrapAsJavaObject(Context c…

-RhinoのCollection対応

さて、RhinoはOGNLにある機能で、JavaのListやMapといったCollectionに対する対応が入ってないようです。${ map.hoge } や &{ map['hoge'] } というスクリプトでMapのエントリを取得したり、${ list[3] } というようにListをインデックスでダイレクトにアク…

-仕上げ

仕上げ開発(?)をひとつづつやってます。先のJar読み込みなどのソースローダー周り、J2EEのエンティティ解決と続いて、MLDプロパティ周辺、Writer出力周り、テンプレや.mayaのロードイベント周り、ScriptletProcessor。このへんで水曜日のMaya-Kvasirコー…

-エンティティ解決

今日の昼間、ずっと懸念のまま放置していたJ2EEのエンティティ解決を仕上げました。web.xmlやTLDを一時バリデーションなしでパースしていましたが、ローカルでエンティティをしっかり解決できるように作りこんだので、ネットワークにつながってない状態でも…

-ClassLoaderで修行

さて、地道に修行してみました。下記のコードは読み出しターゲットとするためだけに、XercesのJARをクラスパスに入れています。 public void testMetaInfLoading() throws IOException { ClassLoader loader = Thread.currentThread().getContextClassLoader…

-プロジェクト分割

これまで、本体・サンプル・テストとひとつのプロジェクトだったところ、maya、maya-sample、maya-test に分割しました。これは以下の理由があります。 ディストロに、サンプル・テストが混在してて、クラスパス、ソース共にすっきりしてなかった。分割して…

-パッケージ名の制約

さて、ClassLoaderでJarのMETA-INFフォルダの下を読めないと思いこんでいた理由を書いてなかったので追記です。それはJavaのパッケージ名の制約からです。META-INFという名前はパッケージ名としてNGなんですよね。ハイフンがパッケージ名には使えないのです…

-予約語

OGNLに無くて、JavaScriptにあるもの。。。それは予約語。サンプルで「var」という名前の変数を用いていたところはしばらく原因不明で全滅してた。。。あせるぜ。

-prototype

JavaScriptのprototypeという概念は、面白く、かつRhinoやSpiderMonkeyといったエンジンをJavaやCのコードでオブジェクトのprototype操作をすると、直感的には不可能なことが可能になります。 class Person { public String getName() { return "Maya"; } } …

-そろそろ、まとめに入ります

さて、風呂敷を広げ続けて早、9ヶ月。そろそろMaya開発もまとめに入ります。いままでまったく畳む気がなかったが、OGNLを脱してRhinoに入れ替えた今日、当初考えていたことの大体は網羅できた。後は、2点(おいおい、まだあるかとも思うが)。 Portlet対応 …

-OGNLをどうするか

OGNLは廃止することを検討中です。代わりに、Rhinoを入れようかと思います。が、まだ決定ではありません。まず作ってみて考えます。OGNLをRhinoに代えたら、作りかけのコードレットも廃止します。いまの式言語の位置で、フルセットのJavaScript1.5が書ければ…

-コードレット

Mayaのコードレット対応の下地ができました。テンプレに「<% コードレットスクリプト %>」を書いたときに、NekoHTMLでXNIイベントを発火する仕組みです。この後、スクリプトエンジンにコードレットスクリプトを渡す仕組みを作ります。こっちはRhino決め打ち…

-デバッグ

アプリケーションを作っているときに、Mayaのようなテンプレエンジンではデバッグが大変です。どこで落ちたかも分かりにくい。Eclipse3.1においてAntが一行ずつ実行できるようになったのはすごいことですが、まあ、Eclipseプラグインを作ってそういうことを…

-引数

引数からServiceCycleを取り除こうかと。まずは影響の少ないEL周りから。 追記 TemplateProcessor以外は取り除き完了。内部の構造も自ずとシンプルになってきました。

-ThreadLocal対応

ServiceProviderの周囲を整理して、ThreadLocalを用いたギミックをいれてSVNコミットしました。このため、StrutsのActionの中からMayaの機能を使ったりするのに便利なようになりました。 この後、悩ましいのはExpressionResolver、TemplateProcessorなどのSe…

-ThreadLocal

Hangmanのデモを、徐々にMaya風(まあ、私の思うところのユースケースなのですが)にしていこうと思ってます。が、やはりStrutsから使って面倒なことが細かく残ってます。特にリクエスト毎にオブジェクトの連鎖ルートとなるようなモノ(コンテキストとでも言…

-Maya0.9.8リリース

http://maya.sandbox.seasar.org/ 変更点 0.9.7.1 -> 0.9.8 PageContextなどJSP-APIへの依存を局所化し、ServiceCycleオブジェクトに Servlet-APIも隠蔽しました。 未来日付のファイルを処理するときに、無限ループにはいる問題を修正しました。 スペックを…

-HTML

MayaのテンプレートがHTMLであるということは知られてないのでしょうか。XHTMLもOKですが、サンプルなどは全部HTMLなんです。HTMLもXHTMLもさらにはXMLもMayaではパースしてドキュメントモデルを保持しています。これはNekoHTMLのがんばりによるところが大き…

-バグ

0.9.8のリリースパッケージを作ったのですが、Hangmanデモだけが動かないのでリリースストップ。0.9.7からはJSP-APIへの依存性を除いたりして、やはりマイナーアップの域ではない変更が入ってるので、そのへんに原因があるのでしょう。 HangmanもSVNに追加し…

-名前

やはり、商標に問題を抱えるかと思案。調べたところ日本では商標OKだけど、海外じゃNGです。まあ、しばらく前から分かってたことですが。。。こっちもまいったな。

-XmlDecl

SAXの仕様より、XML文書冒頭のXML宣言はXMLパーサはイベントを発火しないことで困ってます。NekoHTML内部ではXNIのxmlDecl()イベントを発火しているのですが、SAXにイベントが無いこととNekoHTMLの内部XNIフィルタが食いつぶしているのでNG。 NekoHTMLを改造…