getDynamic
小さなプラグインを作っているのですが、よく分からない事象が起きています。HudsonというよりはStaplerだとは思うのですが。
public class UtdocAction implements Action { (snip) public String getUrlName() { return "utdoc"; } public void getDynamic(final String id, final StaplerRequest req, final StaplerResponse rsp) throws IOException, ServletException { final File utdocDir = UtdocPublisher.getUtdocDir(project); final File documentDir = new File(utdocDir, id); final FilePath filePath = new FilePath(documentDir); new DirectoryBrowserSupport(this, filePath, project.getDisplayName() + " utdoc", "help.gif", false).generateResponse(req, rsp, this); } }
上記のようなActionで、/utdoc/XXXXX/ にアクセスするとgetDynamicが呼ばれて、そのidに対応するドキュメントが表示されるはず(つもり)なのですが、表示されるときもあれば次のようなエラーが表示されることもあります。
Stapler processed this HTTP request as follows, but couldn't find the resource to consume the request -> evaluate(<hudson.model.Hudson@1d6e77> :hudson.model.Hudson,"/job/wicket/utdoc/755227773") -> evaluate(((StaplerProxy)<hudson.model.Hudson@1d6e77>).getTarget(),"/job/wicket/utdoc/755227773") -> evaluate(<hudson.model.Hudson@1d6e77>.getJob("wicket"),"/utdoc/755227773") -> evaluate(<hudson.model.FreeStyleProject@a17e94[wicket]> :hudson.model.FreeStyleProject,"/utdoc/755227773") -> evaluate(<hudson.model.FreeStyleProject@a17e94[wicket]>.getDynamic("utdoc",...),"/755227773") -> evaluate(<hudson.plugins.utdoc.UtdocAction@1b3236f> :hudson.plugins.utdoc.UtdocAction,"/755227773") -> evaluate(<hudson.plugins.utdoc.UtdocAction@1b3236f>.getDynamic("755227773",...),"") hudson.plugins.utdoc.UtdocAction@1b3236f.getDynamic("755227773",...)==null. Back tracking. -> No matching rule was found on <hudson.plugins.utdoc.UtdocAction@1b3236f> for "/755227773"
StaplerのURLのマッピングが不安定?のように見えます。
もう少し調べたいのですが、ここしばらく仕事が停滞しているのでいつリリースできるのか全く分かりません。