More std::unique_ptr<JavaInfo> lifecycle management
Change-Id: If53347633ec4b2f8c2b221ba2057e0c38fa97b67
This commit is contained in:
@@ -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].
|
||||
*/
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user