Kaydet (Commit) e9ce7aca authored tarafından Samuel Mehrbrodt's avatar Samuel Mehrbrodt

tdf#123293 Add test

Test for commit 0a5ca576

Change-Id: I53b72c385d9ef4d51cefa687f07a75c9520d3e71
Reviewed-on: https://gerrit.libreoffice.org/69165
Tested-by: Jenkins
Reviewed-by: 's avatarSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
üst 893862c3
......@@ -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;
......@@ -252,6 +258,48 @@ public class DesktopTools
return oDoc;
}
/**
* 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
......
......@@ -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...");
......
......@@ -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() {}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment