PropertyInfoImpl.java 文件源码

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

项目:cxf-plus 作者:
protected PropertyInfoImpl(ClassInfoImpl<T, C, F, M> parent, PropertySeed<T, C, F, M> spi) {
    this.seed = spi;
    this.parent = parent;
    if (parent == null)
        /*
         * Various people reported a bug where this parameter is somehow
         * null. In an attempt to catch the error better, let's do an
         * explicit check here.
         * 
         * http://forums.java.net/jive/thread.jspa?threadID=18479
         * http://forums.java.net/jive/thread.jspa?messageID=165946
         */
        throw new AssertionError();
    MimeType mt = Util.calcExpectedMediaType(seed, parent.builder);
    if (mt != null && !kind().canHaveXmlMimeType) {
        parent.builder.reportError(new IllegalAnnotationException(Messages.ILLEGAL_ANNOTATION.format(XmlMimeType.class.getName()), seed.readAnnotation(XmlMimeType.class)));
        mt = null;
    }
    this.expectedMimeType = mt;
    this.inlineBinary = seed.hasAnnotation(XmlInlineBinaryData.class);
    T t = seed.getRawType();
    // check if there's an adapter applicable to the whole property
    XmlJavaTypeAdapter xjta = getApplicableAdapter(t);
    if (xjta != null) {
        isCollection = false;
        adapter = new Adapter<T, C>(xjta, reader(), nav());
    } else {
        // check if the adapter is applicable to the individual item in the
        // property
        this.isCollection = nav().isSubClassOf(t, nav().ref(Collection.class)) || nav().isArrayButNotByteArray(t);
        xjta = getApplicableAdapter(getIndividualType());
        if (xjta == null) {
            // ugly ugly hack, but we implement swaRef as adapter
            XmlAttachmentRef xsa = seed.readAnnotation(XmlAttachmentRef.class);
            if (xsa != null) {
                parent.builder.hasSwaRef = true;
                adapter = new Adapter<T, C>(nav().asDecl(SwaRefAdapter.class), nav());
            } else {
                adapter = null;
                // if this field has adapter annotation but not applicable,
                // that must be an error of the user
                xjta = seed.readAnnotation(XmlJavaTypeAdapter.class);
                if (xjta != null) {
                    T ad = reader().getClassValue(xjta, "value");
                    parent.builder.reportError(new IllegalAnnotationException(Messages.UNMATCHABLE_ADAPTER.format(nav().getTypeName(ad), nav().getTypeName(t)), xjta));
                }
            }
        } else {
            adapter = new Adapter<T, C>(xjta, reader(), nav());
        }
    }
    this.id = calcId();
    this.schemaType = Util.calcSchemaType(reader(), seed, parent.clazz, getIndividualType(), this);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号