加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 迭代Test中的所有Play Framework路由

发布时间:2020-12-15 03:08:32 所属栏目:Java 来源:网络整理
导读:有没有办法迭代路由文件中的所有描述的服务?需要URL和HTTP方法. 我需要此功能来运行一些集成测试. 我正在使用Play for Java. 解决方法 不容易.我不久前设法破解了我的方式(没有scala诀窍).我会发布那些可能有用的代码. public static ListString[] parseRou
有没有办法迭代路由文件中的所有描述的服务?需要URL和HTTP方法.

我需要此功能来运行一些集成测试.

我正在使用Play for Java.

解决方法

不容易.我不久前设法破解了我的方式(没有scala诀窍).我会发布那些可能有用的代码.
public static List<String[]> parseRoutes() {
    scala.Option<play.core.Router.Routes> option = Play.application().getWrappedApplication().routes();
    if (option.isDefined()) {
        play.core.Router.Routes routes = option.get();
        scala.collection.Seq<scala.Tuple3<String,String,String>> doc = routes.documentation();
        scala.collection.Iterator<scala.Tuple3<String,String>> it = doc.iterator();

        List<String[]> listOfRoutes = new ArrayList<String[]>();

        while(it.hasNext()) {
            scala.Tuple3<String,String> tuple = it.next();
            //tuple._1() is the method and tuple._2() the url... tuple._3() is the controller name
            String[] route = {tuple._1(),tuple._2()};
            listOfRoutes.add(route);
            Logger.debug("route -> " + Arrays.toString(route));  
        }
        return listOfRoutes;
    }
    return null;
}

不要担心.iterator()显示一个方法iterator()对于Seq< Tuple3< String,String>>类型是不明确的.它在游戏中编译得很好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读