summaryrefslogtreecommitdiff
path: root/package/qa/storages/TestHelper.java
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:45 +0100
committerMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:45 +0100
commit2e626373db2412ac22e8c5c27a60d11cd29e875b (patch)
tree9e9f67205cd5b72f1031721273e1534a3a1e5b0f /package/qa/storages/TestHelper.java
parentf7ee7bbd5174b084f018c2ec94d8c70c98ee04da (diff)
replace obsolete "master" branch with README that points at new repoHEADmaster-deletedmaster
Diffstat (limited to 'package/qa/storages/TestHelper.java')
-rw-r--r--package/qa/storages/TestHelper.java1661
1 files changed, 0 insertions, 1661 deletions
diff --git a/package/qa/storages/TestHelper.java b/package/qa/storages/TestHelper.java
deleted file mode 100644
index b0b343477..000000000
--- a/package/qa/storages/TestHelper.java
+++ /dev/null
@@ -1,1661 +0,0 @@
-package complex.storages;
-
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.uno.XInterface;
-import com.sun.star.uno.AnyConverter;
-
-import com.sun.star.lang.*;
-import com.sun.star.embed.*;
-import com.sun.star.packages.*;
-import com.sun.star.io.*;
-import com.sun.star.beans.*;
-
-import share.LogWriter;
-
-public class TestHelper {
-
- LogWriter m_aLogWriter;
- String m_sTestPrefix;
-
- public TestHelper( LogWriter aLogWriter, String sTestPrefix )
- {
- m_aLogWriter = aLogWriter;
- m_sTestPrefix = sTestPrefix;
- }
-
- public boolean WriteBytesToStream( XStream xStream,
- String sStreamName,
- String sMediaType,
- boolean bCompressed,
- byte[] pBytes )
- {
- // get output stream of substream
- XOutputStream xOutput = xStream.getOutputStream();
- if ( xOutput == null )
- {
- Error( "Can't get XOutputStream implementation from substream '" + sStreamName + "'!" );
- return false;
- }
-
- // get XTrucate implementation from output stream
- XTruncate xTruncate = (XTruncate) UnoRuntime.queryInterface( XTruncate.class, xOutput );
- if ( xTruncate == null )
- {
- Error( "Can't get XTruncate implementation from substream '" + sStreamName + "'!" );
- return false;
- }
-
- // write requested byte sequence
- try
- {
- xTruncate.truncate();
- xOutput.writeBytes( pBytes );
- }
- catch( Exception e )
- {
- Error( "Can't write to stream '" + sStreamName + "', exception: " + e );
- return false;
- }
-
- // get access to the XPropertySet interface
- XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xStream );
- if ( xPropSet == null )
- {
- Error( "Can't get XPropertySet implementation from substream '" + sStreamName + "'!" );
- return false;
- }
-
- // set properties to the stream
- try
- {
- xPropSet.setPropertyValue( "MediaType", sMediaType );
- xPropSet.setPropertyValue( "Compressed", new Boolean( bCompressed ) );
- }
- catch( Exception e )
- {
- Error( "Can't set properties to substream '" + sStreamName + "', exception: " + e );
- return false;
- }
-
- // check size property of the stream
- try
- {
- int nSize = AnyConverter.toInt( xPropSet.getPropertyValue( "Size" ) );
- if ( nSize != pBytes.length )
- {
- Error( "The 'Size' property of substream '" + sStreamName + "' contains wrong value!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't get 'Size' property from substream '" + sStreamName + "', exception: " + e );
- return false;
- }
-
- return true;
- }
-
- public boolean WriteBytesToSubstreamDefaultCompressed( XStorage xStorage,
- String sStreamName,
- String sMediaType,
- byte[] pBytes )
- {
- // open substream element
- XStream xSubStream = null;
- try
- {
- Object oSubStream = xStorage.openStreamElement( sStreamName, ElementModes.WRITE );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't create substream '" + sStreamName + "'!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't create substream '" + sStreamName + "', exception : " + e + "!" );
- return false;
- }
-
- // get output stream of substream
- XOutputStream xOutput = xSubStream.getOutputStream();
- if ( xOutput == null )
- {
- Error( "Can't get XOutputStream implementation from substream '" + sStreamName + "'!" );
- return false;
- }
-
- // get XTrucate implementation from output stream
- XTruncate xTruncate = (XTruncate) UnoRuntime.queryInterface( XTruncate.class, xOutput );
- if ( xTruncate == null )
- {
- Error( "Can't get XTruncate implementation from substream '" + sStreamName + "'!" );
- return false;
- }
-
- // write requested byte sequence
- try
- {
- xTruncate.truncate();
- xOutput.writeBytes( pBytes );
- }
- catch( Exception e )
- {
- Error( "Can't write to stream '" + sStreamName + "', exception: " + e );
- return false;
- }
-
- // get access to the XPropertySet interface
- XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xSubStream );
- if ( xPropSet == null )
- {
- Error( "Can't get XPropertySet implementation from substream '" + sStreamName + "'!" );
- return false;
- }
-
- // set properties to the stream
- // do not set the compressed property
- try
- {
- xPropSet.setPropertyValue( "MediaType", sMediaType );
- }
- catch( Exception e )
- {
- Error( "Can't set properties to substream '" + sStreamName + "', exception: " + e );
- return false;
- }
-
- // check size property of the stream
- try
- {
- int nSize = AnyConverter.toInt( xPropSet.getPropertyValue( "Size" ) );
- if ( nSize != pBytes.length )
- {
- Error( "The 'Size' property of substream '" + sStreamName + "' contains wrong value!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't get 'Size' property from substream '" + sStreamName + "', exception: " + e );
- return false;
- }
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sStreamName ) )
- return false;
-
- return true;
- }
-
- public boolean WriteBytesToSubstream( XStorage xStorage,
- String sStreamName,
- String sMediaType,
- boolean bCompressed,
- byte[] pBytes )
- {
- // open substream element
- XStream xSubStream = null;
- try
- {
- Object oSubStream = xStorage.openStreamElement( sStreamName, ElementModes.WRITE );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't create substream '" + sStreamName + "'!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't create substream '" + sStreamName + "', exception : " + e + "!" );
- return false;
- }
-
- if ( !WriteBytesToStream( xSubStream, sStreamName, sMediaType, bCompressed, pBytes ) )
- return false;
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sStreamName ) )
- return false;
-
- return true;
- }
-
- public boolean WriteBytesToEncrSubstream( XStorage xStorage,
- String sStreamName,
- String sMediaType,
- boolean bCompressed,
- byte[] pBytes,
- String sPass )
- {
- // open substream element
- XStream xSubStream = null;
- try
- {
- Object oSubStream = xStorage.openEncryptedStreamElement( sStreamName, ElementModes.WRITE, sPass );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't create substream '" + sStreamName + "'!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't create substream '" + sStreamName + "', exception : " + e + "!" );
- return false;
- }
-
- if ( !WriteBytesToStream( xSubStream, sStreamName, sMediaType, bCompressed, pBytes ) )
- return false;
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sStreamName ) )
- return false;
-
- return true;
- }
-
- public boolean WBToSubstrOfEncr( XStorage xStorage,
- String sStreamName,
- String sMediaType,
- boolean bCompressed,
- byte[] pBytes,
- boolean bEncrypted )
- {
- // open substream element
- XStream xSubStream = null;
- try
- {
- Object oSubStream = xStorage.openStreamElement( sStreamName, ElementModes.WRITE );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't create substream '" + sStreamName + "'!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't create substream '" + sStreamName + "', exception : " + e + "!" );
- return false;
- }
-
- // get access to the XPropertySet interface
- XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xSubStream );
- if ( xPropSet == null )
- {
- Error( "Can't get XPropertySet implementation from substream '" + sStreamName + "'!" );
- return false;
- }
-
- // set properties to the stream
- try
- {
- xPropSet.setPropertyValue( "UseCommonStoragePasswordEncryption", new Boolean( bEncrypted ) );
- }
- catch( Exception e )
- {
- Error( "Can't set 'UseCommonStoragePasswordEncryption' property to substream '" + sStreamName + "', exception: " + e );
- return false;
- }
-
- if ( !WriteBytesToStream( xSubStream, sStreamName, sMediaType, bCompressed, pBytes ) )
- return false;
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sStreamName ) )
- return false;
-
- return true;
- }
-
- public boolean WriteBytesToStreamH( XStorage xStorage,
- String sStreamPath,
- String sMediaType,
- boolean bCompressed,
- byte[] pBytes,
- boolean bCommit )
- {
- // open substream element
- XStream xSubStream = null;
- try
- {
- XHierarchicalStorageAccess xHStorage =
- (XHierarchicalStorageAccess) UnoRuntime.queryInterface( XHierarchicalStorageAccess.class, xStorage );
- if ( xHStorage == null )
- {
- Error( "The storage does not support hierarchical access!" );
- return false;
- }
-
- Object oSubStream = xHStorage.openStreamElementByHierarchicalName( sStreamPath, ElementModes.WRITE );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't create substream '" + sStreamPath + "'!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't create substream '" + sStreamPath + "', exception : " + e + "!" );
- return false;
- }
-
- if ( !WriteBytesToStream( xSubStream, sStreamPath, sMediaType, bCompressed, pBytes ) )
- return false;
-
- XTransactedObject xTransact =
- (XTransactedObject) UnoRuntime.queryInterface( XTransactedObject.class, xSubStream );
- if ( xTransact == null )
- {
- Error( "Substream '" + sStreamPath + "', stream opened for writing must be transacted!" );
- return false;
- }
-
- if ( bCommit )
- {
- try {
- xTransact.commit();
- } catch( Exception e )
- {
- Error( "Can't commit storage after substream '" + sStreamPath + "' change, exception : " + e + "!" );
- return false;
- }
- }
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sStreamPath ) )
- return false;
-
- return true;
- }
-
- public boolean WriteBytesToEncrStreamH( XStorage xStorage,
- String sStreamPath,
- String sMediaType,
- boolean bCompressed,
- byte[] pBytes,
- String sPass,
- boolean bCommit )
- {
- // open substream element
- XStream xSubStream = null;
- try
- {
- XHierarchicalStorageAccess xHStorage =
- (XHierarchicalStorageAccess) UnoRuntime.queryInterface( XHierarchicalStorageAccess.class, xStorage );
- if ( xHStorage == null )
- {
- Error( "The storage does not support hierarchical access!" );
- return false;
- }
-
- Object oSubStream = xHStorage.openEncryptedStreamElementByHierarchicalName( sStreamPath,
- ElementModes.WRITE,
- sPass );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't create substream '" + sStreamPath + "'!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't create substream '" + sStreamPath + "', exception : " + e + "!" );
- return false;
- }
-
- if ( !WriteBytesToStream( xSubStream, sStreamPath, sMediaType, bCompressed, pBytes ) )
- return false;
-
- XTransactedObject xTransact =
- (XTransactedObject) UnoRuntime.queryInterface( XTransactedObject.class, xSubStream );
- if ( xTransact == null )
- {
- Error( "Substream '" + sStreamPath + "', stream opened for writing must be transacted!" );
- return false;
- }
-
- if ( bCommit )
- {
- try {
- xTransact.commit();
- } catch( Exception e )
- {
- Error( "Can't commit storage after substream '" + sStreamPath + "' change, exception : " + e + "!" );
- return false;
- }
- }
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sStreamPath ) )
- return false;
-
- return true;
- }
-
- public boolean WBToSubstrOfEncrH( XStorage xStorage,
- String sStreamPath,
- String sMediaType,
- boolean bCompressed,
- byte[] pBytes,
- boolean bEncrypted,
- boolean bCommit )
- {
- // open substream element
- XStream xSubStream = null;
- try
- {
- XHierarchicalStorageAccess xHStorage =
- (XHierarchicalStorageAccess) UnoRuntime.queryInterface( XHierarchicalStorageAccess.class, xStorage );
- if ( xHStorage == null )
- {
- Error( "The storage does not support hierarchical access!" );
- return false;
- }
-
- Object oSubStream = xHStorage.openStreamElementByHierarchicalName( sStreamPath, ElementModes.WRITE );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't create substream '" + sStreamPath + "'!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't create substream '" + sStreamPath + "', exception : " + e + "!" );
- return false;
- }
-
- // get access to the XPropertySet interface
- XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xSubStream );
- if ( xPropSet == null )
- {
- Error( "Can't get XPropertySet implementation from substream '" + sStreamPath + "'!" );
- return false;
- }
-
- // set properties to the stream
- try
- {
- xPropSet.setPropertyValue( "UseCommonStoragePasswordEncryption", new Boolean( bEncrypted ) );
- }
- catch( Exception e )
- {
- Error( "Can't set 'UseCommonStoragePasswordEncryption' property to substream '" + sStreamPath + "', exception: " + e );
- return false;
- }
-
- if ( !WriteBytesToStream( xSubStream, sStreamPath, sMediaType, bCompressed, pBytes ) )
- return false;
-
- XTransactedObject xTransact =
- (XTransactedObject) UnoRuntime.queryInterface( XTransactedObject.class, xSubStream );
- if ( xTransact == null )
- {
- Error( "Substream '" + sStreamPath + "', stream opened for writing must be transacted!" );
- return false;
- }
-
- if ( bCommit )
- {
- try {
- xTransact.commit();
- } catch( Exception e )
- {
- Error( "Can't commit storage after substream '" + sStreamPath + "' change, exception : " + e + "!" );
- return false;
- }
- }
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sStreamPath ) )
- return false;
-
- return true;
- }
-
- public int ChangeStreamPass( XStorage xStorage,
- String sStreamName,
- String sOldPass,
- String sNewPass )
- {
- // open substream element
- XStream xSubStream = null;
- try
- {
- Object oSubStream = xStorage.openEncryptedStreamElement( sStreamName, ElementModes.WRITE, sOldPass );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't open substream '" + sStreamName + "'!" );
- return 0;
- }
- }
- catch( Exception e )
- {
- Error( "Can't open substream '" + sStreamName + "', exception : " + e + "!" );
- return 0;
- }
-
-
- // change the password for the stream
- XEncryptionProtectedSource xStreamEncryption =
- (XEncryptionProtectedSource) UnoRuntime.queryInterface( XEncryptionProtectedSource.class, xSubStream );
-
- if ( xStreamEncryption == null )
- {
- Message( "Optional interface XEncryptionProtectedSource is not implemented, feature can not be tested!" );
- return -1;
- }
-
- try {
- xStreamEncryption.setEncryptionPassword( sNewPass );
- }
- catch( Exception e )
- {
- Error( "Can't change encryption key of the substream '" + sStreamName + "', exception:" + e );
- return 0;
- }
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sStreamName ) )
- return 0;
-
- return 1;
- }
-
- public int ChangeStreamPassH( XStorage xStorage,
- String sPath,
- String sOldPass,
- String sNewPass,
- boolean bCommit )
- {
- // open substream element
- XHierarchicalStorageAccess xHStorage =
- (XHierarchicalStorageAccess) UnoRuntime.queryInterface( XHierarchicalStorageAccess.class, xStorage );
- if ( xHStorage == null )
- {
- Error( "The storage does not support hierarchical access!" );
- return 0;
- }
-
- XStream xSubStream = null;
- try
- {
- Object oSubStream = xHStorage.openEncryptedStreamElementByHierarchicalName( sPath, ElementModes.WRITE, sOldPass );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't open encrypted substream '" + sPath + "'!" );
- return 0;
- }
- }
- catch( Exception e )
- {
- Error( "Can't open encrypted substream '" + sPath + "', exception : " + e + "!" );
- return 0;
- }
-
- // change the password for the stream
- XEncryptionProtectedSource xStreamEncryption =
- (XEncryptionProtectedSource) UnoRuntime.queryInterface( XEncryptionProtectedSource.class, xSubStream );
-
- if ( xStreamEncryption == null )
- {
- Message( "Optional interface XEncryptionProtectedSource is not implemented, feature can not be tested!" );
- return -1;
- }
-
- try {
- xStreamEncryption.setEncryptionPassword( sNewPass );
- }
- catch( Exception e )
- {
- Error( "Can't change encryption key of the substream '" + sPath + "', exception:" + e );
- return 0;
- }
-
- XTransactedObject xTransact =
- (XTransactedObject) UnoRuntime.queryInterface( XTransactedObject.class, xSubStream );
- if ( xTransact == null )
- {
- Error( "Substream '" + sPath + "', stream opened for writing must be transacted!" );
- return 0;
- }
-
- if ( bCommit )
- {
- try {
- xTransact.commit();
- } catch( Exception e )
- {
- Error( "Can't commit storage after substream '" + sPath + "' change, exception : " + e + "!" );
- return 0;
- }
- }
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sPath ) )
- return 0;
-
- return 1;
- }
-
- public boolean setStorageTypeAndCheckProps( XStorage xStorage, String sMediaType, boolean bIsRoot, int nMode )
- {
- boolean bOk = false;
-
- // get access to the XPropertySet interface
- XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xStorage );
- if ( xPropSet != null )
- {
- try
- {
- // set "MediaType" property to the stream
- xPropSet.setPropertyValue( "MediaType", sMediaType );
-
- // get "IsRoot" and "OpenMode" properties and control there values
- boolean bPropIsRoot = AnyConverter.toBoolean( xPropSet.getPropertyValue( "IsRoot" ) );
- int nPropMode = AnyConverter.toInt( xPropSet.getPropertyValue( "OpenMode" ) );
-
- bOk = true;
- if ( bPropIsRoot != bIsRoot )
- {
- Error( "'IsRoot' property contains wrong value!" );
- bOk = false;
- }
-
- if ( ( bIsRoot
- && ( nPropMode | ElementModes.READ ) != ( nMode | ElementModes.READ ) )
- || ( !bIsRoot && ( nPropMode & nMode ) != nMode ) )
- {
- Error( "'OpenMode' property contains wrong value, expected " + nMode + ", in reality " + nPropMode + "!" );
- bOk = false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't control properties of substorage, exception: " + e );
- }
- }
- else
- {
- Error( "Can't get XPropertySet implementation from storage!" );
- }
-
- return bOk;
- }
-
- public boolean checkStorageProperties( XStorage xStorage, String sMediaType, boolean bIsRoot, int nMode )
- {
- boolean bOk = false;
-
- // get access to the XPropertySet interface
- XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xStorage );
- if ( xPropSet != null )
- {
- try
- {
- // get "MediaType", "IsRoot" and "OpenMode" properties and control there values
- String sPropMediaType = AnyConverter.toString( xPropSet.getPropertyValue( "MediaType" ) );
- boolean bPropIsRoot = AnyConverter.toBoolean( xPropSet.getPropertyValue( "IsRoot" ) );
- int nPropMode = AnyConverter.toInt( xPropSet.getPropertyValue( "OpenMode" ) );
-
- bOk = true;
- if ( !sPropMediaType.equals( sMediaType ) )
- {
- Error( "'MediaType' property contains wrong value, expected '"
- + sMediaType + "', set '" + sPropMediaType + "' !" );
- bOk = false;
- }
-
- if ( bPropIsRoot != bIsRoot )
- {
- Error( "'IsRoot' property contains wrong value!" );
- bOk = false;
- }
-
- if ( ( bIsRoot
- && ( nPropMode | ElementModes.READ ) != ( nMode | ElementModes.READ ) )
- || ( !bIsRoot && ( nPropMode & nMode ) != nMode ) )
- {
- Error( "'OpenMode' property contains wrong value, expected " + nMode + ", in reality " + nPropMode + "!" );
- bOk = false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't get properties of substorage, exception: " + e );
- }
- }
- else
- {
- Error( "Can't get XPropertySet implementation from storage!" );
- }
-
- return bOk;
- }
-
- public boolean InternalCheckStream( XStream xStream,
- String sName,
- String sMediaType,
- boolean bCompressed,
- byte[] pBytes,
- boolean bCheckCompressed )
- {
- // get input stream of substream
- XInputStream xInput = xStream.getInputStream();
- if ( xInput == null )
- {
- Error( "Can't get XInputStream implementation from substream '" + sName + "'!" );
- return false;
- }
-
- byte pContents[][] = new byte[1][]; // ???
-
- // read contents
- try
- {
- xInput.readBytes( pContents, pBytes.length + 1 );
- }
- catch( Exception e )
- {
- Error( "Can't read from stream '" + sName + "', exception: " + e );
- return false;
- }
-
- // check size of stream data
- if ( pContents.length == 0 )
- {
- Error( "SubStream '" + sName + "' reading produced disaster!" );
- return false;
- }
-
- if ( pBytes.length != pContents[0].length )
- {
- Error( "SubStream '" + sName + "' contains wrong amount of data! (" + pContents[0].length + "/" + pBytes.length + ")" );
- return false;
- }
-
- // check stream data
- for ( int ind = 0; ind < pBytes.length; ind++ )
- {
- if ( pBytes[ind] != pContents[0][ind] )
- {
- Error( "SubStream '" + sName + "' contains wrong data! ( byte num. "
- + ind + " should be " + pBytes[ind] + " but it is " + pContents[0][ind] + ")" );
- return false;
- }
- }
-
- // check properties
- boolean bOk = false;
-
- // get access to the XPropertySet interface
- XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class, xStream );
- if ( xPropSet != null )
- {
- try
- {
- // get "MediaType" and "Size" properties and control there values
- String sPropMediaType = AnyConverter.toString( xPropSet.getPropertyValue( "MediaType" ) );
- int nPropSize = AnyConverter.toInt( xPropSet.getPropertyValue( "Size" ) );
- boolean bPropCompress = AnyConverter.toBoolean( xPropSet.getPropertyValue( "Compressed" ) );
-
- bOk = true;
- if ( !sPropMediaType.equals( sMediaType ) )
- {
- Error( "'MediaType' property contains wrong value for stream '" + sName + "',\nexpected: '"
- + sMediaType + "', set: '" + sPropMediaType + "'!" );
- bOk = false;
- }
-
- if ( nPropSize != pBytes.length )
- {
- Error( "'Size' property contains wrong value for stream'" + sName + "'!" );
- bOk = false;
- }
-
- if ( bCheckCompressed && bPropCompress != bCompressed )
- {
- Error( "'Compressed' property contains wrong value for stream'" + sName + "'!" );
- bOk = false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't get properties of substream '" + sName + "', exception: " + e );
- }
- }
- else
- {
- Error( "Can't get XPropertySet implementation from stream '" + sName + "'!" );
- }
-
- return bOk;
- }
-
- public boolean checkStream( XStorage xParentStorage,
- String sName,
- String sMediaType,
- boolean bCompressed,
- byte[] pBytes )
- {
- // open substream element first
- XStream xSubStream = null;
- try
- {
- Object oSubStream = xParentStorage.openStreamElement( sName, ElementModes.READ );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't open substream '" + sName + "'!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't open substream '" + sName + "', exception : " + e + "!" );
- return false;
- }
-
- boolean bResult = InternalCheckStream( xSubStream, sName, sMediaType, bCompressed, pBytes, true );
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sName ) )
- return false;
-
- return bResult;
- }
-
- public boolean checkEncrStream( XStorage xParentStorage,
- String sName,
- String sMediaType,
- byte[] pBytes,
- String sPass )
- {
- // Important: a common password for any of parent storage should not be set or
- // should be different from sPass
-
- try
- {
- Object oSubStream = xParentStorage.openStreamElement( sName, ElementModes.READ );
- Error( "Encrypted stream '" + sName + "' was opened without password!" );
- return false;
- }
- catch( WrongPasswordException wpe )
- {}
- catch( Exception e )
- {
- Error( "Unexpected exception in case of opening of encrypted stream '" + sName + "' without password: " + e + "!" );
- return false;
- }
-
- String sWrongPass = "11";
- sWrongPass += sPass;
- try
- {
- Object oSubStream = xParentStorage.openEncryptedStreamElement( sName, ElementModes.READ, sWrongPass );
- Error( "Encrypted stream '" + sName + "' was opened with wrong password!" );
- return false;
- }
- catch( WrongPasswordException wpe )
- {}
- catch( Exception e )
- {
- Error( "Unexpected exception in case of opening of encrypted stream '" + sName + "' with wrong password: " + e + "!" );
- return false;
- }
-
- XStream xSubStream = null;
- try
- {
- Object oSubStream = xParentStorage.openEncryptedStreamElement( sName, ElementModes.READ, sPass );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't open encrypted substream '" + sName + "'!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't open encrypted substream '" + sName + "', exception : " + e + "!" );
- return false;
- }
-
- // encrypted streams will be compressed always, so after the storing this property is always true,
- // although before the storing it can be set to false ( it is not always clear whether a stream is encrypted
- // before the storing )
- boolean bResult = InternalCheckStream( xSubStream, sName, sMediaType, true, pBytes, false );
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sName ) )
- return false;
-
- return bResult;
- }
-
- public boolean checkStreamH( XStorage xParentStorage,
- String sPath,
- String sMediaType,
- boolean bCompressed,
- byte[] pBytes )
- {
- // open substream element first
- XStream xSubStream = null;
- try
- {
- XHierarchicalStorageAccess xHStorage =
- (XHierarchicalStorageAccess) UnoRuntime.queryInterface( XHierarchicalStorageAccess.class, xParentStorage );
- if ( xHStorage == null )
- {
- Error( "The storage does not support hierarchical access!" );
- return false;
- }
-
- Object oSubStream = xHStorage.openStreamElementByHierarchicalName( sPath, ElementModes.READ );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't open substream '" + sPath + "'!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't open substream '" + sPath + "', exception : " + e + "!" );
- return false;
- }
-
- boolean bResult = InternalCheckStream( xSubStream, sPath, sMediaType, bCompressed, pBytes, true );
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sPath ) )
- return false;
-
- return bResult;
- }
-
- public boolean checkEncrStreamH( XStorage xParentStorage,
- String sPath,
- String sMediaType,
- byte[] pBytes,
- String sPass )
- {
- // Important: a common password for any of parent storage should not be set or
- // should be different from sPass
- XHierarchicalStorageAccess xHStorage =
- (XHierarchicalStorageAccess) UnoRuntime.queryInterface( XHierarchicalStorageAccess.class, xParentStorage );
- if ( xHStorage == null )
- {
- Error( "The storage does not support hierarchical access!" );
- return false;
- }
-
- try
- {
- Object oSubStream = xHStorage.openStreamElementByHierarchicalName( sPath, ElementModes.READ );
- XStream xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- Error( "Encrypted substream '" + sPath + "' was opened without password!" );
- return false;
- }
- catch( WrongPasswordException wpe )
- {}
- catch( Exception e )
- {
- Error( "Unexpected exception in case of opening of encrypted stream '" + sPath + "' without password: " + e + "!" );
- return false;
- }
-
- String sWrongPass = "11";
- sWrongPass += sPass;
- try
- {
- Object oSubStream = xHStorage.openEncryptedStreamElementByHierarchicalName( sPath, ElementModes.READ, sWrongPass );
- XStream xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- Error( "Encrypted substream '" + sPath + "' was opened with wrong password!" );
- return false;
- }
- catch( WrongPasswordException wpe )
- {}
- catch( Exception e )
- {
- Error( "Unexpected exception in case of opening of encrypted stream '" + sPath + "' with wrong password: " + e + "!" );
- return false;
- }
-
- XStream xSubStream = null;
- try
- {
- Object oSubStream = xHStorage.openEncryptedStreamElementByHierarchicalName( sPath, ElementModes.READ, sPass );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- {
- Error( "Can't open encrypted substream '" + sPath + "'!" );
- return false;
- }
- }
- catch( Exception e )
- {
- Error( "Can't open encrypted substream '" + sPath + "', exception : " + e + "!" );
- return false;
- }
-
- // encrypted streams will be compressed always, so after the storing this property is always true,
- // although before the storing it can be set to false ( it is not always clear whether a stream is encrypted
- // before the storing )
- boolean bResult = InternalCheckStream( xSubStream, sPath, sMediaType, true, pBytes, false );
-
- // free the stream resources, garbage collector may remove the object too late
- if ( !disposeStream( xSubStream, sPath ) )
- return false;
-
- return bResult;
- }
-
- public boolean copyStorage( XStorage xSourceStorage, XStorage xDestStorage )
- {
- // copy xSourceStorage to xDestStorage
- try
- {
- xSourceStorage.copyToStorage( xDestStorage );
- }
- catch( Exception e )
- {
- Error( "Storage copying failed, exception: " + e );
- return false;
- }
-
- return true;
- }
-
- public boolean commitStorage( XStorage xStorage )
- {
- // XTransactedObject must be supported by storages
- XTransactedObject xTransact = (XTransactedObject) UnoRuntime.queryInterface( XTransactedObject.class, xStorage );
- if ( xTransact == null )
- {
- Error( "Storage doesn't implement transacted access!" );
- return false;
- }
-
- try
- {
- xTransact.commit();
- }
- catch( Exception e )
- {
- Error( "Storage commit failed, exception:" + e );
- return false;
- }
-
- return true;
- }
-
- public boolean disposeStream( XStream xStream, String sStreamName )
- {
- XComponent xComponent = (XComponent) UnoRuntime.queryInterface( XComponent.class, xStream );
- if ( xComponent == null )
- {
- Error( "Can't get XComponent implementation from substream '" + sStreamName + "'!" );
- return false;
- }
-
- try
- {
- xComponent.dispose();
- }
- catch( Exception e )
- {
- Error( "Substream '" + sStreamName + "' disposing throws exception: " + e );
- return false;
- }
-
- return true;
- }
-
- public boolean disposeStorage( XStorage xStorage )
- {
- // dispose the storage
- XComponent xComponent = (XComponent) UnoRuntime.queryInterface( XComponent.class, xStorage );
- if ( xComponent == null )
- {
- Error( "Can't retrieve XComponent implementation from storage!" );
- return false;
- }
-
- try
- {
- xComponent.dispose();
- }
- catch( Exception e )
- {
- Error( "Storage disposing failed!" );
- return false;
- }
-
- return true;
- }
-
- public XInputStream getInputStream( XStream xStream )
- {
- XInputStream xInTemp = null;
- try
- {
- xInTemp = xStream.getInputStream();
- if ( xInTemp == null )
- Error( "Can't get the input part of a stream!" );
- }
- catch ( Exception e )
- {
- Error( "Can't get the input part of a stream, exception :" + e );
- }
-
- return xInTemp;
- }
-
- public boolean closeOutput( XStream xStream )
- {
- XOutputStream xOutTemp = null;
- try
- {
- xOutTemp = xStream.getOutputStream();
- if ( xOutTemp == null )
- {
- Error( "Can't get the output part of a stream!" );
- return false;
- }
- }
- catch ( Exception e )
- {
- Error( "Can't get the output part of a stream, exception :" + e );
- return false;
- }
-
- try
- {
- xOutTemp.closeOutput();
- }
- catch ( Exception e )
- {
- Error( "Can't close output part of a stream, exception :" + e );
- return false;
- }
-
- return true;
- }
-
- public XStorage openSubStorage( XStorage xStorage, String sName, int nMode )
- {
- // open existing substorage
- try
- {
- Object oSubStorage = xStorage.openStorageElement( sName, nMode );
- XStorage xSubStorage = (XStorage) UnoRuntime.queryInterface( XStorage.class, oSubStorage );
- return xSubStorage;
- }
- catch( Exception e )
- {
- Error( "Can't open substorage '" + sName + "', exception: " + e );
- }
-
- return null;
- }
-
- public XStream CreateTempFileStream( XMultiServiceFactory xMSF )
- {
- // try to get temporary file representation
- XStream xTempFileStream = null;
- try
- {
- Object oTempFile = xMSF.createInstance( "com.sun.star.io.TempFile" );
- xTempFileStream = (XStream)UnoRuntime.queryInterface( XStream.class, oTempFile );
- }
- catch( Exception e )
- {}
-
- if ( xTempFileStream == null )
- Error( "Can't create temporary file!" );
-
- return xTempFileStream;
- }
-
- public String CreateTempFile( XMultiServiceFactory xMSF )
- {
- String sResult = null;
-
- // try to get temporary file representation
- XPropertySet xTempFileProps = null;
- try
- {
- Object oTempFile = xMSF.createInstance( "com.sun.star.io.TempFile" );
- xTempFileProps = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, oTempFile );
- }
- catch( Exception e )
- {}
-
- if ( xTempFileProps != null )
- {
- try
- {
- xTempFileProps.setPropertyValue( "RemoveFile", new Boolean( false ) );
- sResult = AnyConverter.toString( xTempFileProps.getPropertyValue( "Uri" ) );
- }
- catch( Exception e )
- {
- Error( "Can't control TempFile properties, exception: " + e );
- }
- }
- else
- {
- Error( "Can't create temporary file representation!" );
- }
-
- // close temporary file explicitly
- try
- {
- XStream xStream = (XStream)UnoRuntime.queryInterface( XStream.class, xTempFileProps );
- if ( xStream != null )
- {
- XOutputStream xOut = xStream.getOutputStream();
- if ( xOut != null )
- xOut.closeOutput();
-
- XInputStream xIn = xStream.getInputStream();
- if ( xIn != null )
- xIn.closeInput();
- }
- else
- Error( "Can't close TempFile!" );
- }
- catch( Exception e )
- {
- Error( "Can't close TempFile, exception: " + e );
- }
-
- return sResult;
- }
-
- public boolean copyElementTo( XStorage xSource, String sName, XStorage xDest )
- {
- // copy element with name sName from xSource to xDest
- try
- {
- xSource.copyElementTo( sName, xDest, sName );
- }
- catch( Exception e )
- {
- Error( "Element copying failed, exception: " + e );
- return false;
- }
-
- return true;
- }
-
- public boolean copyElementTo( XStorage xSource, String sName, XStorage xDest, String sTargetName )
- {
- // copy element with name sName from xSource to xDest
- try
- {
- xSource.copyElementTo( sName, xDest, sTargetName );
- }
- catch( Exception e )
- {
- Error( "Element copying failed, exception: " + e );
- return false;
- }
-
- return true;
- }
-
- public boolean moveElementTo( XStorage xSource, String sName, XStorage xDest )
- {
- // move element with name sName from xSource to xDest
- try
- {
- xSource.moveElementTo( sName, xDest, sName );
- }
- catch( Exception e )
- {
- Error( "Element moving failed, exception: " + e );
- return false;
- }
-
- return true;
- }
-
- public boolean renameElement( XStorage xStorage, String sOldName, String sNewName )
- {
- // rename element with name sOldName to sNewName
- try
- {
- xStorage.renameElement( sOldName, sNewName );
- }
- catch( Exception e )
- {
- Error( "Element renaming failed, exception: " + e );
- return false;
- }
-
- return true;
- }
-
- public boolean removeElement( XStorage xStorage, String sName )
- {
- // remove element with name sName
- try
- {
- xStorage.removeElement( sName );
- }
- catch( Exception e )
- {
- Error( "Element removing failed, exception: " + e );
- return false;
- }
-
- return true;
- }
-
- public XStream OpenStream( XStorage xStorage,
- String sStreamName,
- int nMode )
- {
- // open substream element
- XStream xSubStream = null;
- try
- {
- Object oSubStream = xStorage.openStreamElement( sStreamName, nMode );
- xSubStream = (XStream) UnoRuntime.queryInterface( XStream.class, oSubStream );
- if ( xSubStream == null )
- Error( "Can't create substream '" + sStreamName + "'!" );
- }
- catch( Exception e )
- {
- Error( "Can't create substream '" + sStreamName + "', exception : " + e + "!" );
- }
-
- return xSubStream;
- }
-
- public boolean compareRawMethodsOnEncrStream( XStorage xStorage, String sStreamName )
- {
-
- XStorageRawAccess xRawStorage;
- try
- {
- xRawStorage = (XStorageRawAccess) UnoRuntime.queryInterface( XStorageRawAccess.class, xStorage );
- }
- catch( Exception e )
- {
- Error( "Can't get raw access to the storage, exception : " + e + "!" );
- return false;
- }
-
- if ( xRawStorage == null )
- {
- Error( "Can't get raw access to the storage!" );
- return false;
- }
-
- XInputStream xHeadRawStream = null;
- try
- {
- xHeadRawStream = xRawStorage.getRawEncrStreamElement( sStreamName );
- }
- catch( Exception e )
- {
- Error( "Can't open encrypted stream '" + sStreamName + "' in raw mode with header, exception : " + e + "!" );
- }
-
- XInputStream xPlainRawStream = null;
- try
- {
- xPlainRawStream = xRawStorage.getPlainRawStreamElement( sStreamName );
- }
- catch( Exception e )
- {
- Error( "Can't open encrypted stream '" + sStreamName + "' in raw mode with header, exception : " + e + "!" );
- }
-
- if ( xHeadRawStream == null || xPlainRawStream == null )
- {
- Error( "Can't open encrypted stream '" + sStreamName + "' in raw modes!" );
- return false;
- }
-
- try
- {
- byte pData[][] = new byte[1][38];
- if ( xHeadRawStream.readBytes( pData, 38 ) != 38 )
- {
- Error( "Can't read header of encrypted stream '" + sStreamName + "' raw representations!" );
- return false;
- }
-
- if ( pData[0][0] != 0x4d || pData[0][1] != 0x4d || pData[0][2] != 0x02 || pData[0][3] != 0x05 )
- {
- Error( "No signature in the header of encrypted stream '" + sStreamName + "' raw representations!" );
- return false;
- }
-
- int nVariableHeaderLength =
- ( pData[0][30] + pData[0][31] * 0x100 ) // salt length
- + ( pData[0][32] + pData[0][33] * 0x100 ) // iv length
- + ( pData[0][34] + pData[0][35] * 0x100 ) // digest length
- + ( pData[0][36] + pData[0][37] * 0x100 ); // mediatype length
-
- xHeadRawStream.skipBytes( nVariableHeaderLength );
-
- byte pRawData1[][] = new byte[1][32000];
- byte pRawData2[][] = new byte[1][32000];
- int nRead1 = 0;
- int nRead2 = 0;
-
- do
- {
- nRead1 = xHeadRawStream.readBytes( pRawData1, 32000 );
- nRead2 = xPlainRawStream.readBytes( pRawData2, 32000 );
-
- if ( nRead1 != nRead2 )
- {
- Error( "The encrypted stream '" + sStreamName + "' raw representations have different size! nRead1 - nRead2 = " + ( new Integer( nRead1 - nRead2 ) ).toString() );
- return false;
- }
-
- for ( int nInd = 0; nInd < nRead1; nInd++ )
- if ( pRawData1[0][nInd] != pRawData2[0][nInd] )
- {
- Error( "The encrypted stream '" + sStreamName + "' raw representations have different data!" );
- return false;
- }
- }
- while( nRead1 == 32000 );
- }
- catch ( Exception e )
- {
- Error( "Can't compare stream '" + sStreamName + "' raw representations, exception : " + e + "!" );
- return false;
- }
-
- return true;
- }
-
- public boolean cantOpenStorage( XStorage xStorage, String sName )
- {
- // try to open an opened substorage, open call must fail
- try
- {
- Object oDummyStorage = xStorage.openStorageElement( sName, ElementModes.READ );
- Error( "The trying to reopen opened substorage '" + sName + "' must fail!" );
- }
- catch( Exception e )
- {
- return true;
- }
-
- return false;
- }
-
- public boolean cantOpenStream( XStorage xStorage, String sName, int nMode )
- {
- // try to open the substream with specified mode must fail
- try
- {
- Object oDummyStream = xStorage.openStreamElement( sName, nMode );
- Error( "The trying to open substream '" + sName + "' must fail!" );
- }
- catch( Exception e )
- {
- return true;
- }
-
- return false;
- }
-
- public boolean cantOpenStreamH( XStorage xStorage, String sPath, int nMode )
- {
- // try to open the substream with specified mode must fail
-
- XHierarchicalStorageAccess xHStorage =
- (XHierarchicalStorageAccess) UnoRuntime.queryInterface( XHierarchicalStorageAccess.class, xStorage );
- if ( xHStorage == null )
- {
- Error( "The storage does not support hierarchical access!" );
- return false;
- }
-
- try
- {
- Object oDummyStream = xHStorage.openStreamElementByHierarchicalName( sPath, nMode );
- Error( "The trying to open substream '" + sPath + "' must fail!" );
- }
- catch( Exception e )
- {
- return true;
- }
-
- return false;
- }
-
- public boolean cantOpenEncrStreamH( XStorage xStorage, String sPath, int nMode, String aPass )
- {
- // try to open the substream with specified mode must fail
-
- XHierarchicalStorageAccess xHStorage =
- (XHierarchicalStorageAccess) UnoRuntime.queryInterface( XHierarchicalStorageAccess.class, xStorage );
- if ( xHStorage == null )
- {
- Error( "The storage does not support hierarchical access!" );
- return false;
- }
-
- try
- {
- Object oDummyStream = xHStorage.openEncryptedStreamElementByHierarchicalName( sPath, nMode, aPass );
- Error( "The trying to open substream '" + sPath + "' must fail!" );
- }
- catch( WrongPasswordException wpe )
- {
- Error( "The substream '" + sPath + "' must not exist!" );
- return false;
- }
- catch( Exception e )
- {
- return true;
- }
-
- return false;
- }
-
- public XStorage cloneStorage( XSingleServiceFactory xFactory, XStorage xStorage )
- {
- // create a copy of a last commited version of specified storage
- XStorage xResult = null;
- try
- {
- Object oTempStorage = xFactory.createInstance();
- xResult = (XStorage) UnoRuntime.queryInterface( XStorage.class, oTempStorage );
- if ( xResult != null )
- xStorage.copyLastCommitTo( xResult );
- }
- catch( Exception e )
- {
- Error( "Can't clone storage, exception: " + e );
- return null;
- }
-
- return xResult;
- }
-
- public XStorage cloneSubStorage( XSingleServiceFactory xFactory, XStorage xStorage, String sName )
- {
- // create a copy of a last commited version of specified substorage
- XStorage xResult = null;
- try
- {
- Object oTempStorage = xFactory.createInstance();
- xResult = (XStorage) UnoRuntime.queryInterface( XStorage.class, oTempStorage );
- if ( xResult != null )
- xStorage.copyStorageElementLastCommitTo( sName, xResult );
- }
- catch( Exception e )
- {
- Error( "Can't clone substorage '" + sName + "', exception: " + e );
- return null;
- }
-
- return xResult;
- }
-
- public XStream cloneSubStream( XStorage xStorage, String sName )
- {
- // clone existing substream
- try
- {
- XStream xStream = xStorage.cloneStreamElement( sName );
- return xStream;
- }
- catch( Exception e )
- {
- Error( "Can't clone substream '" + sName + "', exception: " + e );
- }
-
- return null;
- }
-
- public XStream cloneEncrSubStream( XStorage xStorage, String sName, String sPass )
- {
- // clone existing substream
- try
- {
- XStream xStream = xStorage.cloneEncryptedStreamElement( sName, sPass );
- return xStream;
- }
- catch( Exception e )
- {
- Error( "Can't clone encrypted substream '" + sName + "', exception: " + e );
- }
-
- return null;
- }
-
- public void Error( String sError )
- {
- m_aLogWriter.println( m_sTestPrefix + "Error: " + sError );
- }
-
- public void Message( String sMessage )
- {
- m_aLogWriter.println( m_sTestPrefix + sMessage );
- }
-}
-