PlusWrapperClassGenerator.java 文件源码

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

项目:cxf-plus 作者:
private void generatePackageInfo(String className, String ns, Class clz) {
ClassWriter cw = createClassWriter();
      String classFileName = periodToSlashes(className);
      cw.visit(Opcodes.V1_5, Opcodes.ACC_ABSTRACT + Opcodes.ACC_INTERFACE, classFileName, null,
               "java/lang/Object", null);

      boolean q = qualified;
      SchemaInfo si = interfaceInfo.getService().getSchema(ns);
      if (si != null) {
          q = si.isElementFormQualified();
      }
      AnnotationVisitor av0 = cw.visitAnnotation("Ljavax/xml/bind/annotation/XmlSchema;", true);
      av0.visit("namespace", ns);
      av0.visitEnum("elementFormDefault",
                    getClassCode(XmlNsForm.class),
                    q ? "QUALIFIED" : "UNQUALIFIED");
      av0.visitEnd();

      if (clz.getPackage() != null && clz.getPackage().getAnnotations() != null) {
          for (Annotation ann : clz.getPackage().getAnnotations()) {
              if (ann instanceof XmlJavaTypeAdapters) {
                  av0 = cw.visitAnnotation("Ljavax/xml/bind/annotation/adapters/XmlJavaTypeAdapters;",
                                           true);
                  generateXmlJavaTypeAdapters(av0, (XmlJavaTypeAdapters)ann);
                  av0.visitEnd();
              } else if (ann instanceof XmlJavaTypeAdapter) {
                  av0 = cw.visitAnnotation("Ljavax/xml/bind/annotation/adapters/XmlJavaTypeAdapter;",
                                           true);
                  generateXmlJavaTypeAdapter(av0, (XmlJavaTypeAdapter)ann);
                  av0.visitEnd();
              }
          }
      }
      cw.visitEnd();

      loadClass(className, clz, cw.toByteArray());
  }
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号