in axis-codegen/src/main/java/org/apache/axis/wsdl/toJava/Utils.java [71:221]
public static String holder(Parameter p, Emitter emitter) {
String mimeType = (p.getMIMEInfo() == null)
? null
: p.getMIMEInfo().getType();
String mimeDimensions = (mimeType == null)
? ""
: p.getMIMEInfo().getDimensions();
// Add the holders that JAX-RPC forgot about - the MIME type holders.
if (mimeType != null) {
if (mimeType.equals("image/gif") || mimeType.equals("image/jpeg")) {
return "org.apache.axis.holders.ImageHolder" + mimeDimensions;
} else if (mimeType.equals("text/plain")) {
return "javax.xml.rpc.holders.StringHolder" + mimeDimensions;
} else if (mimeType.startsWith("multipart/")) {
return "org.apache.axis.holders.MimeMultipartHolder"
+ mimeDimensions;
} else if (mimeType.startsWith("application/octetstream")
|| mimeType.startsWith("application/octet-stream")) {
return "org.apache.axis.holders.OctetStreamHolder"
+ mimeDimensions;
} else if (mimeType.equals("text/xml")
|| mimeType.equals("application/xml")) {
return "org.apache.axis.holders.SourceHolder" + mimeDimensions;
} else {
return "org.apache.axis.holders.DataHandlerHolder"
+ mimeDimensions;
}
}
TypeEntry type = p.getType();
String typeValue = type.getName();
// For base types that are nillable and are mapped to primitives,
// need to switch to the corresponding wrapper types.
if ((p.isOmittable() && p.getType().getDimensions().equals(""))
|| (p.getType() instanceof CollectionType && ((CollectionType) p.getType()).isWrapped())
|| p.getType().getUnderlTypeNillable()) {
typeValue = getWrapperType(type);
}
// byte[] has a reserved holders.
if (typeValue.equals("byte[]") && type.isBaseType()) {
return "javax.xml.rpc.holders.ByteArrayHolder";
}
// Anything else with [] gets its holder from the qname
else if (typeValue.endsWith("[]")) {
String name = emitter.getJavaName(type.getQName());
String packagePrefix = "";
// Make sure that holders for arrays of either primitive Java types
// or their wrappers are generated at a predictable location.
if ((type instanceof CollectionType)
&& (type.getRefType() instanceof BaseType)) {
String uri = type.getRefType().getQName().getNamespaceURI();
// Capitalize the first character for primitive type
// array holder classes
if (TYPES.get(JavaUtils.replace(name,"[]","")) != null) {
name = capitalizeFirstChar(name);
}
// For wrapped primitive array holder classes append 'Wrapper' to name
if (((CollectionType) type).isWrapped() && !typeValue.equals(type.getName())) {
name = name + "Wrapper";
}
packagePrefix = emitter.getNamespaces().getCreate(uri, false);
if (packagePrefix == null) {
packagePrefix = "";
} else {
packagePrefix += '.';
}
}
name = JavaUtils.replace(name, "java.lang.", "");
// This could be a special QName for a indexed property.
// If so, change the [] to Array.
name = JavaUtils.replace(name, "[]", "Array");
name = addPackageName(name, "holders");
return packagePrefix + name + "Holder";
}
// String also has a reserved holder
else if (typeValue.equals("String")) {
return "javax.xml.rpc.holders.StringHolder";
} else if (typeValue.equals("java.lang.String")) {
return "javax.xml.rpc.holders.StringHolder";
}
// Object also has a reserved holder
else if (typeValue.equals("Object")) {
return "javax.xml.rpc.holders.ObjectHolder";
} else if (typeValue.equals("java.lang.Object")) {
return "javax.xml.rpc.holders.ObjectHolder";
}
// Java primitive types have reserved holders
else if (typeValue.equals("int") || typeValue.equals("long")
|| typeValue.equals("short") || typeValue.equals("float")
|| typeValue.equals("double") || typeValue.equals("boolean")
|| typeValue.equals("byte")) {
return "javax.xml.rpc.holders." + capitalizeFirstChar(typeValue)
+ "Holder";
}
// Java language classes have reserved holders (with ClassHolder)
else if (typeValue.startsWith("java.lang.")) {
return "javax.xml.rpc.holders"
+ typeValue.substring(typeValue.lastIndexOf("."))
+ "WrapperHolder";
} else if (typeValue.indexOf(".") < 0) {
return "javax.xml.rpc.holders" + typeValue + "WrapperHolder";
}
// The classes have reserved holders because they
// represent schema/soap encoding primitives
else if (typeValue.equals("java.math.BigDecimal")) {
return "javax.xml.rpc.holders.BigDecimalHolder";
} else if (typeValue.equals("java.math.BigInteger")) {
return "javax.xml.rpc.holders.BigIntegerHolder";
} else if (typeValue.equals("java.util.Date")) {
return "org.apache.axis.holders.DateHolder";
} else if (typeValue.equals("java.util.Calendar")) {
return "javax.xml.rpc.holders.CalendarHolder";
} else if (typeValue.equals("javax.xml.namespace.QName")) {
return "javax.xml.rpc.holders.QNameHolder";
} else if (typeValue.equals("javax.activation.DataHandler")) {
return "org.apache.axis.holders.DataHandlerHolder";
}
// Check for Axis specific types and return their holders
else if (typeValue.startsWith("org.apache.axis.types.")) {
int i = typeValue.lastIndexOf('.');
String t = typeValue.substring(i + 1);
return "org.apache.axis.holders." + t + "Holder";
}
// For everything else add "holders" package and append
// holder to the class name.
else {
return addPackageName(typeValue, "holders") + "Holder";
}
} // holder