[Libreoffice-commits] core.git: qadevOOo/runner sfx2/qa

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Mar 13 14:47:22 UTC 2019


 qadevOOo/runner/util/DesktopTools.java           |   48 +++++++++++++++++++++++
 sfx2/qa/complex/sfx2/DocumentMetadataAccess.java |   15 +++++++
 sfx2/qa/complex/sfx2/tools/TestDocument.java     |    3 +
 3 files changed, 66 insertions(+)

New commits:
commit e9ce7acaf5cc87a4fb40f12ea0aac8cb9df3562f
Author:     Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
AuthorDate: Wed Mar 13 12:48:07 2019 +0100
Commit:     Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
CommitDate: Wed Mar 13 15:46:56 2019 +0100

    tdf#123293 Add test
    
    Test for commit 0a5ca5768f56db481dd3b947b3dddaab7ed96450
    
    Change-Id: I53b72c385d9ef4d51cefa687f07a75c9520d3e71
    Reviewed-on: https://gerrit.libreoffice.org/69165
    Tested-by: Jenkins
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/qadevOOo/runner/util/DesktopTools.java b/qadevOOo/runner/util/DesktopTools.java
index 1650a04fdb71..5b82a2dc3726 100644
--- a/qadevOOo/runner/util/DesktopTools.java
+++ b/qadevOOo/runner/util/DesktopTools.java
@@ -19,6 +19,10 @@ package util;
 
 import helper.ConfigHelper;
 
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.InputStream;
 import java.util.ArrayList;
 
 import lib.StatusException;
@@ -35,9 +39,11 @@ import com.sun.star.frame.XComponentLoader;
 import com.sun.star.frame.XDesktop;
 import com.sun.star.frame.XFrame;
 import com.sun.star.frame.XModel;
+import com.sun.star.io.XInputStream;
 import com.sun.star.lang.XComponent;
 import com.sun.star.lang.XMultiServiceFactory;
 import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lib.uno.adapter.ByteArrayToXInputStreamAdapter;
 import com.sun.star.uno.UnoRuntime;
 import com.sun.star.uno.XInterface;
 import com.sun.star.util.XCloseable;
@@ -253,6 +259,48 @@ public class DesktopTools
     }
 
     /**
+     * loads a document of from a given path using an input stream
+     *
+     * @param xMSF the MultiServiceFactory
+     * @param filePath the path of the document to load.
+     * @return the XComponent Interface of the document
+     */
+    public static XComponent loadDocUsingStream(XMultiServiceFactory xMSF, String filePath)
+    {
+        XInputStream inputStream = null;
+        try {
+            final InputStream inputFile = new BufferedInputStream(
+                    new FileInputStream(filePath));
+            final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+            final byte[] byteBuffer = new byte[4096];
+            int byteBufferLength = 0;
+            while ((byteBufferLength = inputFile.read(byteBuffer)) > 0)
+                bytes.write(byteBuffer, 0, byteBufferLength);
+            inputFile.close();
+            inputStream = new ByteArrayToXInputStreamAdapter(
+                    bytes.toByteArray());
+        } catch (java.io.IOException e) {
+            e.printStackTrace();
+        }
+
+        PropertyValue[] loadProps = new PropertyValue[1];
+        loadProps[0] = new PropertyValue();
+        loadProps[0].Name = "InputStream";
+        loadProps[0].Value = inputStream;
+
+        XComponent oDoc = null;
+        try
+        {
+            oDoc = getCLoader(xMSF).loadComponentFromURL("private:stream", "_blank", 0, loadProps);
+        }
+        catch (com.sun.star.uno.Exception e)
+        {
+            throw new IllegalArgumentException("Document could not be loaded", e);
+        }
+        return oDoc;
+    }
+
+    /**
      * closes a given document
      * @param DocumentToClose the document to close
      */
diff --git a/sfx2/qa/complex/sfx2/DocumentMetadataAccess.java b/sfx2/qa/complex/sfx2/DocumentMetadataAccess.java
index 9a0e7b8170a7..5697bba07e20 100644
--- a/sfx2/qa/complex/sfx2/DocumentMetadataAccess.java
+++ b/sfx2/qa/complex/sfx2/DocumentMetadataAccess.java
@@ -615,6 +615,21 @@ public class DocumentMetadataAccess
         }
     }
 
+    @Test
+    public void checkTdf123293() throws Exception
+    {
+        XComponent xComp = null;
+        try {
+            xComp = util.DesktopTools.loadDocUsingStream(xMSF, TestDocument.getPath("TESTRDFA.odt"));
+
+            // Metadata was discarded when loading from stream, make sure it's there now
+            XRepositorySupplier xRepoSupplier = UnoRuntime.queryInterface(XRepositorySupplier.class, xComp);
+            assertNotNull("No metadata loaded", xRepoSupplier);
+        } finally {
+            close(xComp);
+        }
+    }
+
     private void storeRDFa(XComponent xComp, String file) throws com.sun.star.io.IOException
     {
         System.out.println("Storing test document...");
diff --git a/sfx2/qa/complex/sfx2/tools/TestDocument.java b/sfx2/qa/complex/sfx2/tools/TestDocument.java
index d10a4b0cb5d6..462c97fb99b7 100644
--- a/sfx2/qa/complex/sfx2/tools/TestDocument.java
+++ b/sfx2/qa/complex/sfx2/tools/TestDocument.java
@@ -26,6 +26,9 @@ public final class TestDocument {
     public static String getUrl(String name) {
         return OfficeFileUrl.getAbsolute(new File(Argument.get("tdoc"), name));
     }
+    public static String getPath(String name) {
+        return new File(Argument.get("tdoc"), name).toString();
+    }
 
     private TestDocument() {}
 }


More information about the Libreoffice-commits mailing list