2024/07/20

Mayaa 1.3.0-alpha1 をリリースしました。

pkg:maven/com.github.seasarorg.mayaa/mayaa@1.3.0-alpha1
https://central.sonatype.com/artifact/com.github.seasarorg.mayaa/mayaa/1.3.0-alpha1

更新内容(Github)

Changes

挙動が変わる部分がありますのでご確認ください。

HTMLパーサ関連

  • HTMLテンプレート内のXML宣言の直後に余分な改行が含まれないようになりました。 XercesやNekoHTMLの制約に起因して 1.1.34まではのXML宣言の直後に改行を挿入していましたが、テンプレートに合わせるようにしました。
  • 空文字指定(Empty attribute)の属性をHTML仕様に合わせて出力するように変更しました。( disabled="" から disabled に変更)
  • 既存のNekoHTMLパーサでもsourceembedなどの対応してなかった Void Element(閉じタグを伴わないタグ)に対応しました。 #74
    対応していないのは下記の通りです。
    • Unquoted attribute value のパース
    • @attr:attr のパース(HTMLとしては非標準。新パーサでは対応)
    • HTML Living Standardで規定されている省略可能なタグの補完 (html, head, body など)
  • xml宣言やmetaタグでcharset変更を検知した時に文字コードを指定して再読み込みするように変更しました。#75
  • <meta charset="UTF-8"> 形式の記述も http-equiv=”content-type” のMayaa処理と同様の変換、HTMLレスポンスヘッダ送出に対応しました。
  • [Experimental] NekoHTMLを使用しないHTML Living Standardの定義に近いHTMLパーサを実装しました(デフォルトはNekoHTML版)。#77 #102 #89 #77 #73 org.seasar.mayaa.provider.ServiceProvider の templateBuilder の useNewParser 属性で有効にします。
    • 新パーサで空白を伴わないHTML属性値(Unquoted attribute value)をパースできるようにしました。 '=' 以後の最初の空白文字までを値とみなします。出力は常に二重引用符で囲みます。
    • @attr:attr といった本来属性名として許可されない名称を利用可能にしました。Vueなどのフロントエンドのフレームワークにて利用される記法です。

システム環境・運用関連

  • Mayaa動作要件の最低JavaバージョンをJava8としました。#79 #80
  • JMX経由でSpecificationを無効化する操作を追加しました。 #71 #70
  • プロセッサダンプでTemplateのプロセッサ、オリジナルノード、Pageの内容を追加表示しました。 #99

設定関連

  • WEB-INF配下を明示指定でスキャンできるWebInfSourceScannerを新設しました。ビルトインの設定はWebInfSourceScannerを使うようにしました。 #106
  • ビルトインのライブラリマネージャの読み込みでWebXMLTaglibSourceScannerを使用しないようにしました。
    web.xmlのServletバージョンをあげたときに追従しきれないためです。明確にweb.xmlのタグライブラリ定義を使用したい場合は WEB-INF/org.seasar.mayaa.provider.ServiceProvider にて WebXMLTaglibSourceScannerを含めてください。 #106
  • ResourceScannerで全てのJarをスキャンしないように除外指定できるようにしました。 #87
  • 各ファクトリクラス、ServiceProviderの読み込みで書式にエラーがあっても起動できてしまっていたため、明確にエラーとするようにした。
  • 各ファクトリクラス、ServiceProviderの生成時の順序を現在のビルトイン、ロード中のMETA-INF内、WEB-INF内から、逆順に変更しました。 #88
    これまでは順に生成されてもより後から生成されたもので破棄および上書きされていたため無駄となっていました。 ただし、class属性で指定されたクラスにインタフェースクラスを1つ引数にとるコンストラクタが定義されている場合は互換性のため元の順序で生成を行います。
  • ServiceProvider定義のXMLのclass属性を任意指定とし、省略された場合はビルトインの設定ファイルと同じ実装をデフォルトとして用いるようにしました。実装を変更したい場合のみ旧来通りclass属性で指定します。 (ビルトインの設定ファイルのパス) org/seasar/mayaa/impl/provider/factory/org.seasar.mayaa.provider.ServiceProvider
エレメント名 要求されるインタフェース デフォルト実装クラス名
provider org.seasar.mayaa.provider.ServiceProvider org.seasar.mayaa.impl.provider.ServiceProviderImpl
engine org.seasar.mayaa.engine.Engine org.seasar.mayaa.impl.engine.EngineImpl
parentSpecificationResolver org.seasar.mayaa.engine.specification.ParentSpecificationResolver org.seasar.mayaa.impl.engine.specification.ParentSpecificationResolverImpl
scriptEnvironment org.seasar.mayaa.cycle.script.rhino.ScriptEnvironment org.seasar.mayaa.impl.cycle.script.rhino.ScriptEnvironmentImpl
templateBuilder org.seasar.mayaa.builder.TemplateBuilder org.seasar.mayaa.impl.builder.TemplateBuilderImpl
templateAttributeReader org.seasar.mayaa.builder.library.TemplateAttributeReader org.seasar.mayaa.impl.builder.library.TemplateAttributeReaderImpl
specificationBuilder org.seasar.mayaa.builder.SpecificationBuilder org.seasar.mayaa.impl.builder.SpecificationBuilderImpl
templateBuilder org.seasar.mayaa.builder.TemplateBuilder org.seasar.mayaa.impl.builder.TemplateBuilderImpl
pathAdjuster org.seasar.mayaa.builder.PathAdjuster org.seasar.mayaa.impl.builder.PathAdjusterImpl
libraryManager org.seasar.mayaa.builder.library.LibraryManager org.seasar.mayaa.impl.builder.library.LibraryManagerImpl
templateAttributeReader org.seasar.mayaa.builder.library.TemplateAttributeReader org.seasar.mayaa.impl.builder.library.TemplateAttributeReaderImpl

Fixes

  • balanceTag を無効にするとDOCTYPEがheadタグ内に余分に付加される問題を修正しました。 #75 #76
  • MetaInfSourceScanner の ignore パラメータが効いていないのを修正しました。 #103 #104
  • [mayaa-user:1087] 独自プロセッサーを使うとエラーが発生する場合があったのを修正しました。 #13 #91 #97
  • TemplateProcessor.notifyBeginRenderが実質的に呼ばれていないことに対処しました。 #96 #97

Internal (Performance)

  • ファクトリ参照を効率化しました。 #88

Internal (Maintenancability)

  • シリアライズ処理を適正化しました。 #93 #68 #67 #66
  • IS_SECURE_WEB 設定をParameterAwareからEngineUtilに移動しました。 #65
  • ライブラリファイルのスキャンおよびServiceProviderファイル読み込みのログを出力しました。 #105
  • Java8 向けのAPI利用に制限する。 #82
  • Not use AccessControlExcepton for JEP 411 #78
  • Bump spring-web from 3.2.18.RELEASE to 6.0.0 #84
  • Bump xercesImpl from 2.12.0 to 2.12.2 #72
  • 静的ソースチェックの警告の解消 #63
  • unusedの警告を解消 #94
  • Fix GitHub format #64

Internal (Testing)

  • テストフレームワークをJUnit5に変更しました。 #86 #85
  • UTでもAccept-Languageを送出しfmt:formatNumberが動作するようにしました。 #101
  • 主にテスト向けに動的に登録されたインメモリコンテンツを返却するSourceHolderを追加しました。 #81
  • test-warにJMeter実行シナリオを追加しました。 #69
  • テスト時に org.w3c.dom.ElementTraversal 不足エラー #62
  • Selenideをアップデート #100
  • test-war ディレクトリ内に旧パッケージとの互換性確認のために比較テストを用意しました。 doc/TESTING.md#過去バージョンとの比較
  • test-warを用いたMayaaバージョン間の比較のテストケースで例外期待の際も一致を確認するようにしました。 #107