You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by fr...@apache.org on 2007/04/10 14:43:34 UTC

svn commit: r527109 - in /incubator/tuscany/java/sdo/impl/src: main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java test/java/org/apache/tuscany/sdo/test/JavaSerializeDeserializeTestCase.java

Author: frankb
Date: Tue Apr 10 05:43:33 2007
New Revision: 527109

URL: http://svn.apache.org/viewvc?view=rev&rev=527109
Log:
Fix for TUSCANY-1205

Modified:
    incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java
    incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/JavaSerializeDeserializeTestCase.java

Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java?view=diff&rev=527109&r1=527108&r2=527109
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/HelperProviderImpl.java Tue Apr 10 05:43:33 2007
@@ -201,7 +201,15 @@
         // Root object: [rootXML] = length + XML contents
         int length = objectInput.readInt();
         byte[] compressedBytes = new byte [length];
-        objectInput.read(compressedBytes, 0, length);
+
+        int index = 0;
+        int bytesRead;
+        while (index < length) {
+            if ((bytesRead = objectInput.read(compressedBytes, index, length-index)) == -1) {
+                break;
+            }
+            index += bytesRead;
+        }
         
         GZIPInputStream gzipInputStream = new GZIPInputStream(new ByteArrayInputStream(compressedBytes));
         XMLHelper xmlHelperLocal = xmlHelper;

Modified: incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/JavaSerializeDeserializeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/JavaSerializeDeserializeTestCase.java?view=diff&rev=527109&r1=527108&r2=527109
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/JavaSerializeDeserializeTestCase.java (original)
+++ incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/JavaSerializeDeserializeTestCase.java Tue Apr 10 05:43:33 2007
@@ -56,6 +56,62 @@
         
         runSerializeDeserializeWithDataGraph(testDO, hc);
     }
+    
+    private String xsdString = "<xsd:schema targetNamespace=\"http://www.example.com/simple\" " +
+        "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " + 
+        "xmlns:simple=\"http://www.example.com/simple\">" +
+        "<xsd:element name=\"company\" type=\"simple:Company\"/>" +
+        "<xsd:complexType name=\"Company\">" +
+        "<xsd:sequence>" +
+        "<xsd:element name=\"symbol\" type=\"xsd:string\"/>" +
+        "<xsd:element name=\"companyName\" type=\"xsd:string\"/>" +
+        "<xsd:element name=\"employees\" type=\"simple:Employee\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>" +
+        "</xsd:sequence>" +
+        "</xsd:complexType>" +
+        
+        "<xsd:complexType name=\"Employee\">" +
+        "<xsd:sequence>" +
+        "<xsd:element name=\"employeeID\" type=\"xsd:string\"/>" +
+        "<xsd:element name=\"employeeName\" type=\"xsd:string\"/>" +
+        "</xsd:sequence>" +
+        "</xsd:complexType>" +       
+        "</xsd:schema>";
+    
+    public void testLargePayload()
+    {
+        HelperContext hc = SDOUtil.createHelperContext();
+        hc.getXSDHelper().define(xsdString);
+        DataObject company = hc.getDataFactory().create("http://www.example.com/simple", "Company");
+        company.setString("symbol", "EXAMPLE");
+        company.setString("companyName", "Example Inc.");
+        List employees = company.getList("employees");
+        DataObject employee;
+        for (int i=0; i<1000; i++) {
+            employee = hc.getDataFactory().create("http://www.example.com/simple", "Employee");
+            employee.setString("employeeID", "ID #" + i);
+            employee.setString("employeeName", "Empoyee #" + i);
+            employees.add(employee);
+        }
+        try {
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            ObjectOutputStream oos = SDOUtil.createObjectOutputStream(bos, hc);
+            oos.writeObject(company);
+            oos.flush();
+            byte[] bytes = bos.toByteArray();
+            oos.close();
+            bos.close();
+            
+            ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
+            ObjectInputStream ois = SDOUtil.createObjectInputStream(bis, hc);
+            ois.readObject();
+            ois.close();
+            bis.close();
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+            fail("An Exception occurred while deserializing the output of the serialization: "  + e.toString());
+        }
+    }
 	
         
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org