Outline outline,
XSType xsType,
boolean isElement,
XmlString xmlDefaultValue,
boolean unbox) {
JType type = f.getRawType();
String typeName = type.fullName();
String defaultValue = xmlDefaultValue == null ? null : xmlDefaultValue.value;
if (defaultValue == null) {
return null;
}
JExpression dv = null;
if ("java.lang.Boolean".equals(typeName) && isElement) {
dv = JExpr.direct(Boolean.valueOf(defaultValue) ? "Boolean.TRUE" : "Boolean.FALSE");
} else if ("java.lang.Byte".equals(typeName) && isElement) {
dv = JExpr._new(type)
.arg(JExpr.cast(type.unboxify(),
JExpr.lit(new Byte(Short.valueOf(defaultValue).byteValue()))));
} else if ("java.lang.Double".equals(typeName) && isElement) {
dv = JExpr._new(type)
.arg(JExpr.lit(new Double(Double.valueOf(defaultValue).doubleValue())));
} else if ("java.lang.Float".equals(typeName) && isElement) {
dv = JExpr._new(type)
.arg(JExpr.lit(new Float(Float.valueOf(defaultValue).floatValue())));
} else if ("java.lang.Integer".equals(typeName) && isElement) {
dv = JExpr._new(type)
.arg(JExpr.lit(new Integer(Integer.valueOf(defaultValue).intValue())));
} else if ("java.lang.Long".equals(typeName) && isElement) {
dv = JExpr._new(type)
.arg(JExpr.lit(new Long(Long.valueOf(defaultValue).longValue())));
} else if ("java.lang.Short".equals(typeName) && isElement) {
dv = JExpr._new(type)
.arg(JExpr.cast(type.unboxify(),
JExpr.lit(new Short(Short.valueOf(defaultValue).shortValue()))));
} else if ("java.lang.String".equals(type.fullName()) && isElement) {
dv = JExpr.lit(defaultValue);
} else if ("java.math.BigInteger".equals(type.fullName()) && isElement) {
dv = JExpr._new(type).arg(JExpr.lit(defaultValue));
} else if ("java.math.BigDecimal".equals(type.fullName()) && isElement) {
dv = JExpr._new(type).arg(JExpr.lit(defaultValue));
} else if ("byte[]".equals(type.fullName()) && xsType.isSimpleType() && isElement) {
while (!"anySimpleType".equals(xsType.getBaseType().getName())) {
xsType = xsType.getBaseType();
}
if ("base64Binary".equals(xsType.getName())) {
dv = outline.getCodeModel().ref(DatatypeConverter.class)
.staticInvoke("parseBase64Binary").arg(defaultValue);
} else if ("hexBinary".equals(xsType.getName())) {
dv = JExpr._new(outline.getCodeModel().ref(HexBinaryAdapter.class))
.invoke("unmarshal").arg(defaultValue);
}
} else if ("javax.xml.namespace.QName".equals(typeName)) {
NamespaceContext nsc = new NamespaceContextAdapter(xmlDefaultValue);
QName qn = DatatypeConverter.parseQName(xmlDefaultValue.value, nsc);
dv = JExpr._new(outline.getCodeModel().ref(QName.class))
.arg(qn.getNamespaceURI())
.arg(qn.getLocalPart())
.arg(qn.getPrefix());
} else if ("javax.xml.datatype.Duration".equals(typeName)) {
dv = outline.getCodeModel().ref("org.apache.cxf.jaxb.DatatypeFactory")
.staticInvoke("createDuration").arg(defaultValue);
} else if (type instanceof JDefinedClass) {
JDefinedClass cls = (JDefinedClass)type;
if (cls.getClassType() == ClassType.ENUM) {
dv = cls.staticInvoke("fromValue").arg(defaultValue);
}
} else if (unbox) {
typeName = type.unboxify().fullName();
if ("int".equals(typeName)) {
dv = JExpr.lit(Integer.valueOf(defaultValue).intValue());
} else if ("long".equals(typeName)) {
dv = JExpr.lit(Long.valueOf(defaultValue).longValue());
} else if ("short".equals(typeName)) {