📄 javabeanhelperwriter.java
字号:
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 + -