⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javabeanhelperwriter.java

📁 Java有关XML编程需要用到axis 的源代码 把里面bin下的包导入相应的Java工程 进行使用
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                if (elementMetaData == null) {                    elementMetaData = new Vector();                }                elementMetaData.add(elem);                // }            }        }        pw.println("    // " + Messages.getMessage("typeMeta"));        pw.println(                "    private static org.apache.axis.description.TypeDesc typeDesc =");        pw.println("        new org.apache.axis.description.TypeDesc("                + Utils.getJavaLocalName(type.getName()) + ".class, "                + (this.canSearchParents                ? "true"                : "false") + ");");        pw.println();        pw.println("    static {");        pw.println("        typeDesc.setXmlType("                + Utils.getNewQName(type.getQName()) + ");");        // Add attribute and element field descriptors        if ((attributes != null) || (elementMetaData != null)) {            if (attributes != null) {                boolean wroteAttrDecl = false;                for (int i = 0; i < attributes.size(); i++) {                    ContainedAttribute attr = (ContainedAttribute) attributes.get(i);                    TypeEntry te = attr.getType();                    QName attrName = attr.getQName();                    String fieldName = getAsFieldName(attr.getName());                    QName attrXmlType = te.getQName();                    pw.print("        ");                    if (!wroteAttrDecl) {                        pw.print("org.apache.axis.description.AttributeDesc ");                        wroteAttrDecl = true;                    }                    pw.println(                            "attrField = new org.apache.axis.description.AttributeDesc();");                    pw.println("        attrField.setFieldName(\"" + fieldName                            + "\");");                    pw.println("        attrField.setXmlName("                            + Utils.getNewQNameWithLastLocalPart(attrName) + ");");                    if (attrXmlType != null) {                        pw.println("        attrField.setXmlType("                                + Utils.getNewQName(attrXmlType) + ");");                    }                    pw.println("        typeDesc.addFieldDesc(attrField);");                }            }            if (elementMetaData != null) {                boolean wroteElemDecl = false;                for (int i = 0; i < elementMetaData.size(); i++) {                    ElementDecl elem =                            (ElementDecl) elementMetaData.elementAt(i);                    if (elem.getAnyElement()) {                        continue;                    }                    String fieldName = getAsFieldName(elem.getName());                    QName xmlName = elem.getQName();                    // Some special handling for arrays.                    TypeEntry elemType = elem.getType();                    QName xmlType = null;                    if ((elemType.getDimensions().length() > 1)                            && (elemType.getClass() == DefinedType.class)) {                        // If we have a DefinedType with dimensions, it must                        // be a SOAP array derived type.  In this case, use                        // the refType's QName for the metadata.                        elemType = elemType.getRefType();                    } else if (elemType.getClass() == DefinedElement.class                            && elemType.getRefType() != null) {                        // If we have a DefinedElement which references other element                        //  (eg. <element ref="aRefEleme"/>)                        // use the refType's QName for the metadata (which can be anonymous type.)                        // see the schema of test/wsdl/axis2098                        elemType = elemType.getRefType();                    } else if (elemType.isSimpleType()                            && elemType.getRefType() != null) {                        // see wsdl in AXIS-2138                        elemType = elemType.getRefType();                    } else {                        // Otherwise, use the first non-Collection type we                        // encounter up the ref chain.                        while (elemType instanceof CollectionTE) {                            elemType = elemType.getRefType();                        }                    }                    xmlType = elemType.getQName();                    pw.print("        ");                    if (!wroteElemDecl) {                        pw.print("org.apache.axis.description.ElementDesc ");                        wroteElemDecl = true;                    }                    pw.println(                            "elemField = new org.apache.axis.description.ElementDesc();");                    pw.println("        elemField.setFieldName(\"" + fieldName                            + "\");");                    pw.println("        elemField.setXmlName("                            + Utils.getNewQNameWithLastLocalPart(xmlName) + ");");                    if (xmlType != null) {                        pw.println("        elemField.setXmlType("                                + Utils.getNewQName(xmlType) + ");");                    }                    if (elem.getMinOccursIs0()) {                        pw.println("        elemField.setMinOccurs(0);");                    }                    if (elem.getNillable()) {                        pw.println("        elemField.setNillable(true);");                    } else {                        pw.println("        elemField.setNillable(false);");                    }                    if(elem.getMaxOccursIsUnbounded()) {                        pw.println("        elemField.setMaxOccursUnbounded(true);");                    }                    QName itemQName = elem.getType().getItemQName();                    if (itemQName != null) {                        pw.println("        elemField.setItemQName(" +                                   Utils.getNewQName(itemQName) + ");");                    }                    pw.println("        typeDesc.addFieldDesc(elemField);");                }            }        }        pw.println("    }");        pw.println();        pw.println("    /**");        pw.println("     * " + Messages.getMessage("returnTypeMeta"));        pw.println("     */");        pw.println(                "    public static org.apache.axis.description.TypeDesc getTypeDesc() {");        pw.println("        return typeDesc;");        pw.println("    }");        pw.println();    }    /**     * Utility function to get the bean property name (as will be returned     * by the Introspector) for a given field name.  This just means     * we capitalize the first character if the second character is     * capitalized.  Example: a field named "fOO" will turn into     * getter/setter methods "getFOO()/setFOO()".  So when the Introspector     * looks at that bean, the property name will be "FOO", not "fOO" due     * to the rules in the JavaBeans spec.  So this makes sure the     * metadata will match. <p>     *     * The method also makes sure that the returned property name is not in     * the set of reserved properties as defined by {@link #reservedPropNames}.          *       * @param fieldName      * @return      */    private String getAsFieldName(String fieldName) {        // If there's a second character, and it is uppercase, then the        // bean property name will have a capitalized first character        // (because setURL() maps to a property named "URL", not "uRL")        if ((fieldName.length() > 1)                && Character.isUpperCase(fieldName.charAt(1))) {            fieldName = Utils.capitalizeFirstChar(fieldName);        }        // Make sure the property name is not reserved.        return JavaUtils.getUniqueValue(reservedPropNames, fieldName);    }    /**     * write Serializer getter code and pass in meta data to avoid     * undo introspection.     *      * @param pw      * @throws IOException      */    protected void writeSerializer(PrintWriter pw) throws IOException {        String typeDesc = "typeDesc";        String ser = " org.apache.axis.encoding.ser.BeanSerializer";        if (type.isSimpleType()) {            ser = " org.apache.axis.encoding.ser.SimpleSerializer";        }        pw.println("    /**");        pw.println("     * Get Custom Serializer");        pw.println("     */");        pw.println(                "    public static org.apache.axis.encoding.Serializer getSerializer(");        pw.println("           java.lang.String mechType, ");        pw.println("           java.lang.Class _javaType,  ");        pw.println("           javax.xml.namespace.QName _xmlType) {");        pw.println("        return ");        pw.println("          new " + ser + "(");        pw.println("            _javaType, _xmlType, " + typeDesc + ");");        pw.println("    }");        pw.println();    }    /**     * write Deserializer getter code and pass in meta data to avoid     * undo introspection.     *      * @param pw      * @throws IOException      */    protected void writeDeserializer(PrintWriter pw) throws IOException {        String typeDesc = "typeDesc";        String dser = " org.apache.axis.encoding.ser.BeanDeserializer";        if (type.isSimpleType()) {            dser = " org.apache.axis.encoding.ser.SimpleDeserializer";        }        pw.println("    /**");        pw.println("     * Get Custom Deserializer");        pw.println("     */");        pw.println(                "    public static org.apache.axis.encoding.Deserializer getDeserializer(");        pw.println("           java.lang.String mechType, ");        pw.println("           java.lang.Class _javaType,  ");        pw.println("           javax.xml.namespace.QName _xmlType) {");        pw.println("        return ");        pw.println("          new " + dser + "(");        pw.println("            _javaType, _xmlType, " + typeDesc + ");");        pw.println("    }");        pw.println();    }}    // class JavaBeanHelperWriter

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -