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);
          }
      }
  }