More std::unique_ptr<JavaInfo> lifecycle management

Change-Id: If53347633ec4b2f8c2b221ba2057e0c38fa97b67
This commit is contained in:
Stephan Bergmann
2017-04-13 17:32:42 +02:00
parent 316536b2e8
commit 41a20d3b37
3 changed files with 15 additions and 16 deletions
+5 -2
View File
@@ -19,6 +19,9 @@
#ifndef INCLUDED_JVMFWK_SOURCE_ELEMENTS_HXX
#define INCLUDED_JVMFWK_SOURCE_ELEMENTS_HXX
#include <sal/config.h>
#include <memory>
#include <vector>
#include "jvmfwk/framework.hxx"
#include "fwkutil.hxx"
@@ -98,7 +101,7 @@ public:
/** returns NULL if javaInfo is nil.
*/
JavaInfo * makeJavaInfo() const;
std::unique_ptr<JavaInfo> makeJavaInfo() const;
};
/** this class represents the java settings based on a particular
@@ -294,7 +297,7 @@ public:
which needs to be freed by the caller.
If both, user and share settings are nil, then NULL is returned.
*/
JavaInfo * createJavaInfo() const;
std::unique_ptr<JavaInfo> createJavaInfo() const;
/** returns the value of the attribute /java/javaInfo[@vendorUpdate].
*/
+8 -12
View File
@@ -20,6 +20,7 @@
#include <sal/config.h>
#include <cassert>
#include <memory>
#include "elements.hxx"
#include "osl/mutex.hxx"
@@ -925,19 +926,14 @@ void CNodeJavaInfo::writeToNode(xmlDoc* pDoc,
xmlAddChild(pJavaInfoNode, nodeCrLf);
}
JavaInfo * CNodeJavaInfo::makeJavaInfo() const
std::unique_ptr<JavaInfo> CNodeJavaInfo::makeJavaInfo() const
{
if (bNil || m_bEmptyNode)
return nullptr;
JavaInfo * pInfo = new JavaInfo;
memset(pInfo, 0, sizeof(JavaInfo));
pInfo->sVendor = sVendor;
pInfo->sLocation = sLocation;
pInfo->sVersion = sVersion;
pInfo->nFeatures = nFeatures;
pInfo->nRequirements = nRequirements;
pInfo->arVendorData = arVendorData;
return pInfo;
return std::unique_ptr<JavaInfo>();
return std::unique_ptr<JavaInfo>(
new JavaInfo{
sVendor, sLocation, sVersion, nFeatures, nRequirements,
arVendorData});
}
@@ -1002,7 +998,7 @@ void MergedSettings::merge(const NodeJava & share, const NodeJava & user)
}
JavaInfo * MergedSettings::createJavaInfo() const
std::unique_ptr<JavaInfo> MergedSettings::createJavaInfo() const
{
return m_javaInfo.makeJavaInfo();
}
+2 -2
View File
@@ -213,7 +213,7 @@ javaFrameworkError jfw_startVM(
const jfw::MergedSettings settings;
if (!settings.getEnabled())
return JFW_E_JAVA_DISABLED;
aInfo.reset(settings.createJavaInfo());
aInfo = settings.createJavaInfo();
//check if a Java has ever been selected
if (!aInfo)
return JFW_E_NO_SELECT;
@@ -650,7 +650,7 @@ javaFrameworkError jfw_getSelectedJRE(std::unique_ptr<JavaInfo> *ppInfo)
}
const jfw::MergedSettings settings;
ppInfo->reset(settings.createJavaInfo());
*ppInfo = settings.createJavaInfo();
if (!*ppInfo)
{
return JFW_E_NONE;