afBedSheet のドキュメントには、「フィルターを使用して、承認などの横断的な問題に対処できる」と記載されています。次のコード スニペットを示します。
@Contribute { serviceType=HttpPipeline# }
static Void contributeHttpPipeline(OrderedConfig conf, AuthFilter myAuthFilter) {
conf.addOrdered("AuthFilter", myAuthFilter, ["after: BedSheetFilters"])
}
AuthFilter を実装しようとしています (現在はダミーですが、実際の AuthFilter に進化させる必要があります) が、動作させることができません:
using afBedSheet
const mixin AuthFilter : HttpPipelineFilter { }
internal const class AuthFilterImpl : AuthFilter {
internal new make(|This|in) { in(this) }
override Bool service(HttpPipeline handler) {
echo("Dummy AuthFilter invoked!")
return handler.service
}
}
プロジェクトを正常にビルドできますが、プロジェクトを実行して HTTP サービスを呼び出すと、以下のエラーが発生します。AuthFilter をafIocサービスとして宣言するか、注釈を付ける必要があると思いますが、場所や方法がわかりません。誰か教えてください。
スレッド ローカル:
ThreadStash.01.BedSheetModule.0017.perThreadState: fan.afIoc.ModuleServices@1ab5e0b
ThreadStash.01.HttpRequest.0001.headers: fan.afBedSheet.HttpRequestHeaders@1ab6087
afIoc::ThreadStash.counter: 13
web.req: fan.wisp.WispReq@4e62cc
web.res: fan.wisp.WispRes@387bc2
web.session: 060f9951-41f1-e500-0fc2-0019b971d079
[05:27:18 05-Nov-13] [err] [web] 内部エラー処理: /info
afIoc::IocErr: タイプ mt::AuthFilter に一致する依存関係がありません。
Ioc 操作トレース:
[ 1] タイプ 'afBedSheet::HttpPipeline' による依存関係の特定
[2] REAL サービス「HttpPipeline」の作成
[ 3] ビルダー メソッド「afBedSheet::BedSheetModule.buildHttpPipeline」によるサービス「HttpPipeline」の作成
[ 4] afBedSheet::HttpPipeline buildHttpPipeline(afBedSheet::HttpPipelineFilter[] フィルター、afIoc::PipelineBuilder bob、afIoc::Registry reg) の注入パラメーターの決定
[ 5] タイプ afBedSheet::HttpPipelineFilter[] の依存関係を探しています
[ 6] タイプ afBedSheet::HttpPipelineFilter[] の ORDERED 構成の収集
[ 7] sys::Void のインジェクション パラメータの決定contributHttpPipeline(afIoc::OrderedConfig conf, mt::AuthFilter
myAuthFilter)
[ 8] mt::AuthFilter 型の依存関係を探す
スタックトレース:
afIoc::Utils.stackTraceFilter (Utils.fan:63)
afIoc::RegistryImpl.dependencyByType (RegistryImpl.fan:243)
afBedSheet::BedSheetWebMod.onService (BedSheetWebMod.fan:34)
wisp::WispActor.doService (WispActor.fan:197)
wisp::WispActor.process (WispActor.fan:78)
wisp::WispActor.receive (WispActor.fan:48)
並行::Actor._dispatch (Actor.java:228)
並行::Actor._work (Actor.java:199)
並行::ThreadPool$Worker.run (ThreadPool.java:255)