ContextPathHolderWriter.java 文件源码

java
阅读 34 收藏 0 点赞 0 评论 0

项目:jax-rs-linker 作者:
public void write(ClassName linkers) throws IOException {
    TypeSpec.Builder typeBuilder = TypeSpec.classBuilder(linkers.className())
        .addModifiers(PUBLIC, FINAL)
        .addSuperinterface(ServletContextListener.class)
        .addAnnotation(AnnotationSpec.builder(WebListener.class).build())
        .addAnnotation(AnnotationSpec.builder(Generated.class)
                .addMember("value", "$S", LinkerAnnotationProcessor.class.getName())
                .build()
        )
        .addField(FieldSpec.builder(String.class, "contextPath", PRIVATE, STATIC)
            .initializer("\"\"")
            .build())
        .addField(FieldSpec.builder(String.class, "applicationName", PRIVATE, STATIC)
            .initializer("$T.get()", get("fr.vidal.oss.jax_rs_linker", "ApplicationName"))
            .build())
        .addMethod(MethodSpec.methodBuilder("contextInitialized")
            .addModifiers(PUBLIC)
            .addAnnotation(Override.class)
            .returns(void.class)
            .addParameter(ServletContextEvent.class, "sce")
            .addCode(
                "$L = $T.contextPath($L.getServletContext(), $L);\n",
                "contextPath",
                ContextPaths.class,
                "sce",
                "applicationName")
            .build())
        .addMethod(MethodSpec.methodBuilder("contextDestroyed")
            .addModifiers(PUBLIC)
            .addAnnotation(Override.class)
            .returns(void.class)
            .addParameter(ServletContextEvent.class, "sce")
            .build())
        .addMethod(MethodSpec.methodBuilder("getContextPath")
            .addModifiers(PUBLIC, STATIC)
            .returns(String.class)
            .addCode(
                "return contextPath;\n")
            .build());


    JavaFile.builder(linkers.packageName(), typeBuilder.build())
        .indent("\t")
        .build()
        .writeTo(filer);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号