Convert rtl_uString -> OUString in jfw_get/setVMParameters
Change-Id: I55f96873661f686cd9625d69523718ccb54659dc
diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx
index 84c9fef6..03a2c62 100644
--- a/cui/source/options/optjava.cxx
+++ b/cui/source/options/optjava.cxx
@@ -17,6 +17,10 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <sal/config.h>
#include <vector>
#include <config_features.h>
#include "optaboutconfig.hxx"
@@ -63,35 +67,6 @@ using namespace ::com::sun::star::ucb;
using namespace ::com::sun::star::ui::dialogs;
using namespace ::com::sun::star::uno;
#if HAVE_FEATURE_JAVA
static bool areListsEqual( const Sequence< OUString >& rListA, const Sequence< OUString >& rListB )
{
bool bRet = true;
const sal_Int32 nLen = rListA.getLength();
if ( rListB.getLength() != nLen )
bRet = false;
else
{
const OUString* pStringA = rListA.getConstArray();
const OUString* pStringB = rListB.getConstArray();
for ( sal_Int32 i = 0; i < nLen; ++i )
{
if ( *pStringA++ != *pStringB++ )
{
bRet = false;
break;
}
}
}
return bRet;
}
#endif
class SvxJavaListBox : public svx::SvxRadioButtonListBox
{
private:
@@ -138,10 +113,6 @@ SvxJavaOptionsPage::SvxJavaOptionsPage( vcl::Window* pParent, const SfxItemSet&
: SfxTabPage(pParent, "OptAdvancedPage", "cui/ui/optadvancedpage.ui", &rSet)
, m_pParamDlg(nullptr)
, m_pPathDlg(nullptr)
#if HAVE_FEATURE_JAVA
, m_parParameters(nullptr)
, m_nParamSize(0)
#endif
, m_aResetIdle("cui options SvxJavaOptionsPage Reset")
, xDialogListener(new ::svt::DialogClosedListener())
{
@@ -293,21 +264,14 @@ IMPL_LINK_NOARG(SvxJavaOptionsPage, AddHdl_Impl, Button*, void)
IMPL_LINK_NOARG(SvxJavaOptionsPage, ParameterHdl_Impl, Button*, void)
{
#if HAVE_FEATURE_JAVA
Sequence< OUString > aParameterList;
std::vector< OUString > aParameterList;
if ( !m_pParamDlg )
{
m_pParamDlg = VclPtr<SvxJavaParameterDlg>::Create( this );
javaFrameworkError eErr = jfw_getVMParameters( &m_parParameters, &m_nParamSize );
if ( JFW_E_NONE == eErr && m_parParameters && m_nParamSize > 0 )
javaFrameworkError eErr = jfw_getVMParameters( &m_parParameters );
if ( JFW_E_NONE == eErr && !m_parParameters.empty() )
{
rtl_uString** pParamArr = m_parParameters;
aParameterList.realloc( m_nParamSize );
OUString* pParams = aParameterList.getArray();
for ( sal_Int32 i = 0; i < m_nParamSize; ++i )
{
rtl_uString* pParam = *pParamArr++;
pParams[i] = OUString( pParam );
}
aParameterList = m_parParameters;
m_pParamDlg->SetParameters( aParameterList );
}
}
@@ -319,7 +283,7 @@ IMPL_LINK_NOARG(SvxJavaOptionsPage, ParameterHdl_Impl, Button*, void)
if ( m_pParamDlg->Execute() == RET_OK )
{
if ( !areListsEqual( aParameterList, m_pParamDlg->GetParameters() ) )
if ( aParameterList != m_pParamDlg->GetParameters() )
{
aParameterList = m_pParamDlg->GetParameters();
if ( jfw_isVMRunning() )
@@ -632,15 +596,8 @@ bool SvxJavaOptionsPage::FillItemSet( SfxItemSet* /*rCoreSet*/ )
javaFrameworkError eErr = JFW_E_NONE;
if ( m_pParamDlg )
{
Sequence< OUString > aParamList = m_pParamDlg->GetParameters();
sal_Int32 i, nSize = aParamList.getLength();
rtl_uString** pParamArr = static_cast<rtl_uString**>(rtl_allocateMemory( sizeof(rtl_uString*) * nSize ));
const OUString* pList = aParamList.getConstArray();
for ( i = 0; i < nSize; ++i )
pParamArr[i] = pList[i].pData;
eErr = jfw_setVMParameters( pParamArr, nSize );
eErr = jfw_setVMParameters( m_pParamDlg->GetParameters() );
SAL_WARN_IF(JFW_E_NONE != eErr, "cui.options", "SvxJavaOptionsPage::FillItemSet(): error in jfw_setVMParameters");
rtl_freeMemory( pParamArr );
bModified = true;
}
@@ -879,13 +836,12 @@ short SvxJavaParameterDlg::Execute()
}
Sequence< OUString > SvxJavaParameterDlg::GetParameters() const
std::vector< OUString > SvxJavaParameterDlg::GetParameters() const
{
sal_Int32 nCount = m_pAssignedList->GetEntryCount();
Sequence< OUString > aParamList( nCount );
OUString* pArray = aParamList.getArray();
std::vector< OUString > aParamList;
for ( sal_Int32 i = 0; i < nCount; ++i )
pArray[i] = OUString( m_pAssignedList->GetEntry(i) );
aParamList.push_back( m_pAssignedList->GetEntry(i) );
return aParamList;
}
@@ -897,14 +853,11 @@ void SvxJavaParameterDlg::DisableButtons()
DisableRemoveButton();
}
void SvxJavaParameterDlg::SetParameters( Sequence< OUString >& rParams )
void SvxJavaParameterDlg::SetParameters( std::vector< OUString > const & rParams )
{
m_pAssignedList->Clear();
sal_uLong i, nCount = rParams.getLength();
const OUString* pArray = rParams.getConstArray();
for ( i = 0; i < nCount; ++i )
for (auto const & sParam: rParams)
{
OUString sParam = OUString( *pArray++ );
m_pAssignedList->InsertEntry( sParam );
}
DisableEditButton();
diff --git a/cui/source/options/optjava.hxx b/cui/source/options/optjava.hxx
index 47fb0a8..6598dfd 100644
--- a/cui/source/options/optjava.hxx
+++ b/cui/source/options/optjava.hxx
@@ -66,9 +66,8 @@ private:
#if HAVE_FEATURE_JAVA
std::vector<std::unique_ptr<JavaInfo>> m_parJavaInfo;
rtl_uString** m_parParameters;
std::vector<OUString> m_parParameters;
OUString m_pClassPath;
sal_Int32 m_nParamSize;
#endif
OUString m_sInstallText;
OUString m_sAccessibilityText;
@@ -165,8 +164,8 @@ public:
virtual short Execute() override;
css::uno::Sequence< OUString > GetParameters() const;
void SetParameters( css::uno::Sequence< OUString >& rParams );
std::vector< OUString > GetParameters() const;
void SetParameters( std::vector< OUString > const & rParams );
void DisableButtons();
void EditParameter();
};
diff --git a/include/jvmfwk/framework.hxx b/include/jvmfwk/framework.hxx
index c0aff68..d6059bb 100644
--- a/include/jvmfwk/framework.hxx
+++ b/include/jvmfwk/framework.hxx
@@ -29,7 +29,6 @@
#include <jvmfwk/jvmfwkdllapi.hxx>
#include <rtl/byteseq.hxx>
#include <rtl/ustring.h>
#include <rtl/ustring.hxx>
#include <osl/mutex.h>
#include "jni.h"
@@ -587,9 +586,7 @@ JVMFWK_DLLPUBLIC javaFrameworkError jfw_getEnabled(bool *pbEnabled);
</p>
@param arParameters
[in] contains the arguments. It can be NULL if nSize is 0.
@param nSize
[i] the size of <code>arArgs</code>
[in] contains the arguments.
@return
JFW_E_NONE function ran successfully.<br/>
@@ -599,21 +596,12 @@ JVMFWK_DLLPUBLIC javaFrameworkError jfw_getEnabled(bool *pbEnabled);
JFW_E_DIRECT_MODE the function cannot be used in this mode.
*/
JVMFWK_DLLPUBLIC javaFrameworkError jfw_setVMParameters(
rtl_uString ** arArgs, sal_Int32 nSize);
std::vector<OUString> const & arArgs);
/** obtains the currently used start parameters.
<p>The caller needs to free the returned array with
<code>rtl_freeMemory</code>. The contained strings must be released with
<code>rtl_uString_release</code>.
</p>
@param parParameters
[out] on returns contains a pointer to the array of the start arguments.
If *parParameters is not NULL then the value is overwritten.
@param pSize
[out] on return contains the size of array returned in
<code>parParameters</code>
@return
JFW_E_NONE function ran successfully.<br/>
@@ -623,8 +611,7 @@ JVMFWK_DLLPUBLIC javaFrameworkError jfw_setVMParameters(
JFW_E_DIRECT_MODE the function cannot be used in this mode.
*/
JVMFWK_DLLPUBLIC javaFrameworkError jfw_getVMParameters(
rtl_uString *** parParameters,
sal_Int32 * pSize);
std::vector<OUString> * parParameters);
/** sets the user class path.
diff --git a/jvmfwk/inc/elements.hxx b/jvmfwk/inc/elements.hxx
index f99861a..f4766a5 100644
--- a/jvmfwk/inc/elements.hxx
+++ b/jvmfwk/inc/elements.hxx
@@ -205,7 +205,7 @@ public:
/java/vmParameters@xsi:nil will be set to true when write() is
called.
*/
void setVmParameters(rtl_uString * * arParameters, sal_Int32 size);
void setVmParameters(std::vector<OUString> const & arParameters);
/** adds a location to the already existing locations.
Note: call load() before, then add the location and then call write().
@@ -309,10 +309,7 @@ public:
bool getJavaInfoAttrAutoSelect() const;
#endif
/** returns an array.
Caller must free the strings and the array.
*/
void getVmParametersArray(rtl_uString *** parParameters, sal_Int32 * size) const;
void getVmParametersArray(std::vector<OUString> * parParameters) const;
const ::std::vector< OUString> & getJRELocations() const { return m_JRELocations;}
};
diff --git a/jvmfwk/source/elements.cxx b/jvmfwk/source/elements.cxx
index b25c49f..4da38c0 100644
--- a/jvmfwk/source/elements.cxx
+++ b/jvmfwk/source/elements.cxx
@@ -591,21 +591,9 @@ void NodeJava::setJavaInfo(const JavaInfo * pInfo, bool bAutoSelect)
}
}
void NodeJava::setVmParameters(rtl_uString * * arOptions, sal_Int32 size)
void NodeJava::setVmParameters(std::vector<OUString> const & arOptions)
{
assert( !(arOptions == nullptr && size != 0));
if ( ! m_vmParameters)
m_vmParameters = boost::optional<std::vector<OUString> >(
std::vector<OUString>());
m_vmParameters->clear();
if (arOptions != nullptr)
{
for (int i = 0; i < size; i++)
{
const OUString sOption(arOptions[i]);
m_vmParameters->push_back(sOption);
}
}
m_vmParameters = boost::optional<std::vector<OUString> >(arOptions);
}
void NodeJava::addJRELocation(OUString const & sLocation)
@@ -1024,26 +1012,13 @@ bool MergedSettings::getJavaInfoAttrAutoSelect() const
return m_javaInfo.bAutoSelect;
}
#endif
void MergedSettings::getVmParametersArray(
rtl_uString *** parParams, sal_Int32 * size) const
void MergedSettings::getVmParametersArray(std::vector<OUString> * parParams)
const
{
assert(parParams != nullptr && size != nullptr);
assert(parParams != nullptr);
osl::MutexGuard guard(FwkMutex::get());
*parParams = static_cast<rtl_uString **>(
rtl_allocateMemory(sizeof(rtl_uString*) * m_vmParams.size()));
if (*parParams == nullptr)
return;
int j=0;
typedef std::vector<OUString>::const_iterator it;
for (it i = m_vmParams.begin(); i != m_vmParams.end();
++i, ++j)
{
(*parParams)[j] = i->pData;
rtl_uString_acquire(i->pData);
}
*size = m_vmParams.size();
*parParams = m_vmParams;
}
}
diff --git a/jvmfwk/source/framework.cxx b/jvmfwk/source/framework.cxx
index 99b3e5e..dda5b3e 100644
--- a/jvmfwk/source/framework.cxx
+++ b/jvmfwk/source/framework.cxx
@@ -834,8 +834,7 @@ javaFrameworkError jfw_getEnabled(bool *pbEnabled)
}
javaFrameworkError jfw_setVMParameters(
rtl_uString * * arOptions, sal_Int32 nLen)
javaFrameworkError jfw_setVMParameters(std::vector<OUString> const & arOptions)
{
javaFrameworkError errcode = JFW_E_NONE;
try
@@ -844,7 +843,7 @@ javaFrameworkError jfw_setVMParameters(
if (jfw::getMode() == jfw::JFW_MODE_DIRECT)
return JFW_E_DIRECT_MODE;
jfw::NodeJava node(jfw::NodeJava::USER);
node.setVmParameters(arOptions, nLen);
node.setVmParameters(arOptions);
node.write();
}
catch (const jfw::FrameworkException& e)
@@ -857,8 +856,7 @@ javaFrameworkError jfw_setVMParameters(
return errcode;
}
javaFrameworkError jfw_getVMParameters(
rtl_uString *** parOptions, sal_Int32 * pLen)
javaFrameworkError jfw_getVMParameters(std::vector<OUString> * parOptions)
{
javaFrameworkError errcode = JFW_E_NONE;
try
@@ -868,7 +866,7 @@ javaFrameworkError jfw_getVMParameters(
return JFW_E_DIRECT_MODE;
const jfw::MergedSettings settings;
settings.getVmParametersArray(parOptions, pLen);
settings.getVmParametersArray(parOptions);
}
catch (const jfw::FrameworkException& e)
{