void GSetPersonalityMsgCommand::Execute() throw(GException)
{
	LOG_LEVEL4("Execute()");
	
	std::auto_ptr<GResponseMsgData> poResponse(CreateInitializedResponse(GSetPersonalityMsgDataXML::CXMLTag, GMsgCmdDataFactory::CInterfaceVersion));
	
	try
	{
		GSetPersonalityMsgData *pRequestData(static_cast<GSetPersonalityMsgData *>(m_pData));
		if( pRequestData == NULL )
		{
			throw GEXCEPTION("Null pointer for GSetPersonalityMsgData *pRequestData");
		}
		pRequestData->Validate();

		QString strPersonality("");
		static QString const qsDefaultPersonality("default");

		if( pRequestData->GetPersonality() == qsDefaultPersonality )
		{
			strPersonality = GETCONF_STR_FROM_FILESYSTEM(eDisplayManagerPersonalityName);
		}
		else if( GPersonality::IsAValidPersonality(pRequestData->GetPersonality()) )
		{
			strPersonality = pRequestData->GetPersonality();
		}

		if( (!strPersonality.isEmpty()) && (SETCONF(eDisplayManagerPersonalityName, strPersonality)) )
		{
			poResponse->SetResponseCode(GResponseMsgData::eOk);

			QSharedPointer<GPersonalityView> pGPersonalityView = GPersonalityView::GetInstance();

			pGPersonalityView->RefreshPersonality();
		}
		else
		{
			poResponse->SetResponseCode(GResponseMsgData::eInvalidPersonality);
		}
	}
	catch( GException& e )
	{
		LOG_LEVEL1(QString("Excepcion: ")+e.GetMessage());

		poResponse->SetResponseCode(GResponseMsgData::eInvalidPersonality);
	}

	SetResponseNamespace(poResponse);
	m_pResponse=poResponse.release();
}