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)