You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by sa...@apache.org on 2011/09/20 14:39:30 UTC
svn commit: r1173120 - in
/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2:
databinding/utils/BeanUtil.java rpc/receivers/RPCUtil.java
Author: sagara
Date: Tue Sep 20 12:39:29 2011
New Revision: 1173120
URL: http://svn.apache.org/viewvc?rev=1173120&view=rev
Log:
AXIS2-5151 - Introduced serialization/deserialization logic for XMLGregorianCalendar.
Modified:
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
Modified: axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java?rev=1173120&r1=1173119&r2=1173120&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java (original)
+++ axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java Tue Sep 20 12:39:29 2011
@@ -48,6 +48,9 @@ import java.util.concurrent.ConcurrentMa
import java.util.concurrent.LinkedBlockingQueue;
import javax.activation.DataHandler;
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamReader;
@@ -63,6 +66,7 @@ import org.apache.axis2.databinding.type
import org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl;
import org.apache.axis2.deployment.util.BeanExcludeInfo;
import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.java2wsdl.Java2WSDLConstants;
import org.apache.axis2.description.java2wsdl.TypeTable;
import org.apache.axis2.engine.ObjectSupplier;
import org.apache.axis2.util.Loader;
@@ -530,6 +534,11 @@ public class BeanUtil {
}
}else if(SimpleTypeMapper.isDomDocument(beanClass)){
return convertOMtoDOM(beanElement);
+
+ } else if (XMLGregorianCalendar.class.getName().equals(
+ beanClass.getName())) {
+ return getXMLGregorianCalendar(beanElement);
+
} else {
if (SimpleTypeMapper.isSimpleType(beanClass)) {
return getSimpleTypeObjectChecked(beanClass, beanElement);
@@ -641,6 +650,8 @@ public class BeanUtil {
throw new AxisFault("InvocationTargetException : " + e);
} catch (IntrospectionException e) {
throw new AxisFault("IntrospectionException : " + e);
+ } catch (DatatypeConfigurationException e) {
+ throw new AxisFault("DatatypeConfigurationException : " + e);
}
@@ -1299,7 +1310,11 @@ public class BeanUtil {
element.declareNamespace(xsiNS);
element.declareNamespace(xsdNS);
QName xsdType = typeTable.getSchemaTypeName(resObject.getClass()
- .getName());
+ .getName());
+ if (xsdType == null && resObject instanceof XMLGregorianCalendar) {
+ xsdType = new QName(Java2WSDLConstants.URI_2001_SCHEMA_XSD, "date",
+ "xs");
+ }
String attrValue = xsdType.getPrefix() + ":" + xsdType.getLocalPart();
element.addAttribute(Constants.XSI_TYPE_ATTRIBUTE, attrValue, xsiNS);
}
@@ -1713,7 +1728,11 @@ public class BeanUtil {
if (SimpleTypeMapper.isSimpleType(value)) {
omValue.addChild(fac.createOMText(SimpleTypeMapper
.getStringValue(value)));
- } else {
+ } else if (value instanceof XMLGregorianCalendar) {
+ omValue.addChild(fac
+ .createOMText(((XMLGregorianCalendar) value)
+ .toXMLFormat()));
+ } else {
QName name;
if(elementFormDefault) {
name = new QName(ns.getNamespaceURI(), elementName,
@@ -1990,5 +2009,12 @@ public class BeanUtil {
}
}
+ private static XMLGregorianCalendar getXMLGregorianCalendar(
+ OMElement beanElement) throws DatatypeConfigurationException {
+ String greCal = beanElement.getText();
+ XMLGregorianCalendar xmlCal = DatatypeFactory.newInstance()
+ .newXMLGregorianCalendar(greCal);
+ return xmlCal;
+ }
}
Modified: axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java?rev=1173120&r1=1173119&r2=1173120&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java (original)
+++ axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java Tue Sep 20 12:39:29 2011
@@ -41,6 +41,7 @@ import org.apache.axis2.description.java
import org.apache.axis2.engine.ObjectSupplier;
import org.apache.axis2.util.StreamWrapper;
+import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamReader;
import java.lang.reflect.Array;
@@ -99,6 +100,20 @@ public class RPCUtil {
child.addChild(fac.createOMText(child, SimpleTypeMapper.getStringValue(resObject)));
addInstanceTypeInfo(fac, child, method, resObject, typeTable);
bodyContent.addChild(child);
+
+ } else if (resObject instanceof XMLGregorianCalendar) {
+ bodyContent = fac.createOMElement(
+ method.getName() + "Response", ns);
+ OMElement child;
+ if (qualified) {
+ child = fac.createOMElement(Constants.RETURN_WRAPPER, ns);
+ } else {
+ child = fac.createOMElement(Constants.RETURN_WRAPPER, null);
+ }
+ child.addChild(fac.createOMText(child, ((XMLGregorianCalendar)resObject).toXMLFormat()));
+ addInstanceTypeInfo(fac, child, method, resObject, typeTable);
+ bodyContent.addChild(child);
+
} else {
bodyContent = fac.createOMElement(
method.getName() + "Response", ns);