You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by sc...@apache.org on 2007/04/10 22:37:23 UTC
svn commit: r527287 - in
/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws:
marshaller/impl/alt/DocLitWrappedMethodMarshaller.java
utility/PropertyDescriptorPlus.java wrapper/impl/JAXBWrapperToolImpl.java
Author: scheu
Date: Tue Apr 10 13:37:22 2007
New Revision: 527287
URL: http://svn.apache.org/viewvc?view=rev&rev=527287
Log:
AXIS2-2502
Contributor:Rich Scheuerle
Some more small performance tweaks to the doc/literal wrapped flow.
Modified:
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/utility/PropertyDescriptorPlus.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java?view=diff&rev=527287&r1=527286&r2=527287
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java Tue Apr 10 13:37:22 2007
@@ -313,7 +313,7 @@
ParameterDescription[] pds = operationDesc.getParameterDescriptions();
// Create the message
- MessageFactory mf = (MessageFactory)FactoryRegistry.getFactory(MessageFactory.class);
+ MessageFactory mf = marshalDesc.getMessageFactory();
Message m = mf.create(protocol);
// In usage=WRAPPED, there will be a single block in the body.
@@ -412,7 +412,7 @@
ParameterDescription[] pds = operationDesc.getParameterDescriptions();
// Create the message
- MessageFactory mf = (MessageFactory)FactoryRegistry.getFactory(MessageFactory.class);
+ MessageFactory mf = marshalDesc.getMessageFactory();
Message m = mf.create(protocol);
// In usage=WRAPPED, there will be a single block in the body.
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/utility/PropertyDescriptorPlus.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/utility/PropertyDescriptorPlus.java?view=diff&rev=527287&r1=527286&r2=527287
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/utility/PropertyDescriptorPlus.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/utility/PropertyDescriptorPlus.java Tue Apr 10 13:37:22 2007
@@ -47,8 +47,10 @@
public class PropertyDescriptorPlus {
PropertyDescriptor descriptor;
String xmlName = null;
+ Object[] SINGLE_PARAM = new Object[1];
private static Log log = LogFactory.getLog(PropertyDescriptorPlus.class);
+ private static final boolean DEBUG_ENABLED = log.isDebugEnabled();
/**
* Package protected constructor. Only created by XMLRootElementUtil.createPropertyDescriptorMap
@@ -166,24 +168,31 @@
* @throws IllegalAccessException
* @throws JAXBWrapperException
*/
- private void setAtomic(Object targetBean, Object propValue, Method writeMethod)
- throws InvocationTargetException, IllegalAccessException, JAXBWrapperException {
+ private void setAtomic(Object targetBean, Object propValue, Method writeMethod)
+ throws InvocationTargetException, IllegalAccessException, JAXBWrapperException {
// JAXB provides setters for atomic value.
- Object[] object = new Object[] { propValue };
- Class[] paramTypes = writeMethod.getParameterTypes();
- if (paramTypes != null && paramTypes.length == 1) {
- Class paramType = paramTypes[0];
- if (paramType.isPrimitive() && propValue == null) {
- //Ignoring null value for primitive type, this could potentially be the way of a customer indicating to set
- //default values defined in JAXBObject/xmlSchema.
- if (log.isDebugEnabled()) {
- log.debug(
- "Ignoring null value for primitive type, this is the way to set default values defined in JAXBObject/xmlSchema. for primitive types");
+
+ if (propValue != null) {
+ // Normal case
+ SINGLE_PARAM[0] = propValue;
+ writeMethod.invoke(targetBean, SINGLE_PARAM);
+ } else {
+ Class[] paramTypes = writeMethod.getParameterTypes();
+
+ if(paramTypes !=null && paramTypes.length ==1){
+ Class paramType = paramTypes[0];
+ if(paramType.isPrimitive() && propValue == null){
+ // TODO NLS
+ //Ignoring null value for primitive type, this could potentially be the way of a customer indicating to set
+ //default values defined in JAXBObject/xmlSchema.
+ if(DEBUG_ENABLED){
+ log.debug("Ignoring null value for primitive type, this is the way to set default values defined in JAXBObject/xmlSchema. for primitive types");
+ }
+ return;
}
- return;
}
}
- writeMethod.invoke(targetBean, object);
+
}
/**
@@ -202,9 +211,9 @@
Class paramType = writeMethod.getParameterTypes()[0];
Object value = asArray(propValue, paramType);
// JAXB provides setters for atomic value.
- Object[] object = new Object[] { value };
-
- writeMethod.invoke(targetBean, value);
+ SINGLE_PARAM[0] =value;
+
+ writeMethod.invoke(targetBean, SINGLE_PARAM);
}
/**
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java?view=diff&rev=527287&r1=527286&r2=527287
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java Tue Apr 10 13:37:22 2007
@@ -165,26 +165,27 @@
List<String> xmlChildNames,
Map<String, PropertyDescriptorPlus> pdMap)
throws JAXBWrapperException {
- Map<String, PropertyDescriptorPlus> map = new HashMap<String, PropertyDescriptorPlus>();
-
- // Now check the property info map
- for (int i = 0; i < xmlChildNames.size(); i++) {
- String xmlChildName = xmlChildNames.get(i);
- PropertyDescriptorPlus pd = pdMap.get(xmlChildName);
- if (pd == null) {
- // Each xml child name must have a matching property.
- if (log.isDebugEnabled()) {
+ // The following code is slow, and doc/lit wrapped is in the main
+ // performance flow. So only do this check if debug is enabled.
+ if (log.isDebugEnabled()) {
+ for (int i = 0; i < xmlChildNames.size(); i++) {
+ String xmlChildName = xmlChildNames.get(i);
+ PropertyDescriptorPlus pd = pdMap.get(xmlChildName);
+ if (pd == null) {
+ // Each xml child name must have a matching property.
+
log.debug(
- "Error occurred trying to match an xml name to a child of a jaxb object");
+ "Error occurred trying to match an xml name to a child of a jaxb object");
log.debug(" The JAXBClass is:" + jaxbClass.getName());
log.debug(" The child name that we are looking for is:" + xmlChildName);
log.debug(" The JAXBClass has the following child xml names:" +
toString(pdMap.keySet()));
log.debug(" Complete list of child names that we are looking for:" +
toString(xmlChildNames));
+
+ throw new JAXBWrapperException(
+ Messages.getMessage("JAXBWrapperErr6", jaxbClass.getName(), xmlChildName));
}
- throw new JAXBWrapperException(
- Messages.getMessage("JAXBWrapperErr6", jaxbClass.getName(), xmlChildName));
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org