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 di...@apache.org on 2002/11/20 15:59:17 UTC
cvs commit: xml-axis/java/test/encoding TestArray.java PackageTests.java
dims 2002/11/20 06:59:17
Modified: java/src/org/apache/axis/encoding/ser ArraySerializer.java
java/test/encoding PackageTests.java
Added: java/test/encoding TestArray.java
Log:
Fix and test case for Bug 14666 - NullPointerException taken in ArraySerializer when specifying array as input parameter.
from revans@viaserv.com (Randall Evans)
Revision Changes Path
1.39 +7 -3 xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializer.java
Index: ArraySerializer.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/ser/ArraySerializer.java,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- ArraySerializer.java 4 Nov 2002 17:01:27 -0000 1.38
+++ ArraySerializer.java 20 Nov 2002 14:59:17 -0000 1.39
@@ -109,8 +109,12 @@
throw new IOException(Messages.getMessage("cantDoNullArray00"));
MessageContext msgContext = context.getMessageContext();
- SchemaVersion schema = msgContext.getSchemaVersion();
- SOAPConstants soap = msgContext.getSOAPConstants();
+ SchemaVersion schema = SchemaVersion.SCHEMA_2001;
+ SOAPConstants soap = SOAPConstants.SOAP11_CONSTANTS;
+ if(msgContext != null) {
+ schema = msgContext.getSchemaVersion();
+ soap = msgContext.getSOAPConstants();
+ }
Class cls = value.getClass();
Collection list = null;
@@ -224,7 +228,7 @@
// actual schema array or for a maxOccurs usage.
// For the maxOccurs case, the currentXMLType of the context is
// the same as the componentQName.
- boolean maxOccursUsage = !context.getMessageContext().isEncoded() &&
+ boolean maxOccursUsage = (msgContext != null && !msgContext.isEncoded()) &&
componentQName.equals(context.getCurrentXMLType());
if (!maxOccursUsage) {
1.25 +1 -0 xml-axis/java/test/encoding/PackageTests.java
Index: PackageTests.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/encoding/PackageTests.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- PackageTests.java 16 Aug 2002 20:40:17 -0000 1.24
+++ PackageTests.java 20 Nov 2002 14:59:17 -0000 1.25
@@ -37,6 +37,7 @@
suite.addTestSuite(TestRoundTrip.class);
suite.addTestSuite(TestOmittedValues.class);
suite.addTestSuite(TestMultiRefIdentity.class);
+ suite.addTestSuite(TestArray.class);
return suite;
}
}
1.1 xml-axis/java/test/encoding/TestArray.java
Index: TestArray.java
===================================================================
package test.encoding;
import junit.framework.TestCase;
import org.apache.axis.Constants;
import org.apache.axis.Message;
import org.apache.axis.MessageContext;
import org.apache.axis.configuration.BasicServerConfig;
import org.apache.axis.encoding.SerializationContext;
import org.apache.axis.encoding.SerializationContextImpl;
import org.apache.axis.encoding.TypeMapping;
import org.apache.axis.encoding.TypeMappingRegistry;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
import org.apache.axis.encoding.ser.SimpleDeserializerFactory;
import org.apache.axis.encoding.ser.SimpleSerializerFactory;
import org.apache.axis.message.RPCElement;
import org.apache.axis.message.RPCParam;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.axis.server.AxisServer;
import org.apache.axis.components.logger.LogFactory;
import org.apache.commons.logging.Log;
import javax.xml.namespace.QName;
import java.io.StringWriter;
import java.io.Writer;
import java.util.Vector;
/**
* Test the serialization of an array. Test case for Bug 14666
* (NullPointerException taken in ArraySerializer when specifying array as input parameter.)
*/
public class TestArray extends TestCase {
static Log log =
LogFactory.getLog(TestArray.class.getName());
public TestArray(String name) {
super(name);
}
public void testArray1() {
String tab_items [] = new String[4];
tab_items[0] = "table item 1";
tab_items[1] = "table item 2";
tab_items[2] = "table item 3";
tab_items[3] = "table item 4";
RPCParam in_table = new RPCParam("http://local_service.com/", "Input_Array", tab_items);
RPCElement input = new RPCElement("http://localhost:8000/tester", "echoString",
new Object[]{in_table});
SOAPEnvelope env = new SOAPEnvelope();
env.addBodyElement(input);
String text = env.toString();
assertTrue(text != null);
for(int i=0;i<tab_items.length;i++){
assertTrue(text.indexOf(tab_items[i])!=-1);
}
}
}