diff -r d5e927d5853b -r 7cee158cb8cd javauis/coreui/inc/javacoreui.h --- a/javauis/coreui/inc/javacoreui.h Tue Sep 14 21:06:50 2010 +0300 +++ b/javauis/coreui/inc/javacoreui.h Wed Sep 15 12:05:25 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -20,9 +20,11 @@ #include +#include "libraryloaderexception.h" #include "dynamiclibloader.h" #include "javauid.h" #include "javacoreuiparams.h" +#include "logger.h" namespace java // codescanner::namespace { @@ -72,93 +74,88 @@ * @param[out] loader User must store this argument as long as it needs * to run any code in the shared library. No other APIs of the loader is needed to use. - * @return A reference to instance implementing CoreUi in + * @return true if the dll could be loaded and the start method was + * succesfully called. * success case. * @throws java::util::ExceptionBase or std::exception in error cases. */ - static CoreUi& - getUiInstance(std::auto_ptr& loader); + static bool start(std::auto_ptr& loader, + const java::util::Uid& appUid, + CoreUiParams* uiParams = 0); /** * This inline method will close the core UI unless already closed and * clean resources. * * @param[in] loader A loeader that was used to load the dll. + * @return true if the dll could be loaded and the release method was + * succesfully called. * @throws java::util::ExceptionBase or std::exception in error cases. */ - static void releaseUi(const std::auto_ptr& loader); + static bool releaseUi(std::auto_ptr& loader); }; -#if defined RD_JAVA_UI_QT -// This is an empty CoreUi impl for Java 3.0 -class CoreUiStub : public CoreUi -{ -public: - CoreUiStub() {} - virtual ~CoreUiStub() {} - virtual void init(const java::util::Uid& /*midletUid*/, - CoreUiParams* /*uiParams*/) {} - - virtual void start(const java::util::Uid& appUid, - CoreUiParams* uiParams = 0) {} -}; -#endif // RD_JAVA_UI_QT - -} //end namespace ui -} //end namespace java +} // end namespace ui +} // end namespace java -//START OF INLINE METHODS +const char* const COREUI_LIB_NAME = "javacoreui"; +// START OF INLINE METHODS inline java::ui::CoreUi::~CoreUi() {} -inline java::ui::CoreUi& java::ui::CoreUi::getUiInstance -(std::auto_ptr& loader) +inline bool java::ui::CoreUi::start( + std::auto_ptr& loader, + const java::util::Uid& appUid, + CoreUiParams* uiParams) { -#if defined RD_JAVA_UI_QT - - // The stub impl leaks memory, but is ok, since this - // is not in use in MCL, but is for future development - // enabler. - CoreUiStub* stub = new CoreUiStub(); - return *stub; - -#else // RD_JAVA_UI_QT - if (loader.get() == 0) { - //Create an instance of DynamicLibLoader. - loader.reset(new java::util::DynamicLibLoader("javacoreui")); + // Create an instance of DynamicLibLoader. + loader.reset(new java::util::DynamicLibLoader(COREUI_LIB_NAME)); } - //Load the javaui and locates method getUiInstance. If getFunction - //succeeds were are certain that createUiFunc points to valid method. - GetUiInstance getUiInstance = - reinterpret_cast(loader->getFunction("getUiInstance", - true)); - - //Call the method which will create the UI. - return getUiInstance(); - -#endif // RD_JAVA_UI_QT + try + { + // Load the javaui and locates method getUiInstance. If getFunction + // succeeds were are certain that createUiFunc points to valid method. + GetUiInstance getUiInstance = + reinterpret_cast(loader->getFunction("getUiInstance", + true)); + // Call the method which will create the UI. + getUiInstance().start(appUid, uiParams); + return true; + } + catch (java::util::LibraryLoaderException& ex) + { + loader.reset(); + LOG1(EJavaUI, EInfo, "No coreUi available (start): %s", ex.toString().c_str()); + } + return false; } -inline void java::ui::CoreUi::releaseUi( - const std::auto_ptr& loader) +inline bool java::ui::CoreUi::releaseUi( + std::auto_ptr& loader) { -#ifndef RD_JAVA_UI_QT - //Load the javaui and locates method getUiInstance. If getFunction - //succeeds were are certain that createUiFunc points to valid method. - ReleaseUi releaseUi = - reinterpret_cast(loader->getFunction("releaseUi", true)); + if (loader.get() == 0) + { + // Create an instance of DynamicLibLoader. + loader.reset(new java::util::DynamicLibLoader(COREUI_LIB_NAME)); + } + try + { + ReleaseUi releaseUi = + reinterpret_cast(loader->getFunction("releaseUi", true)); - //Call the method which will release UI resources. - releaseUi(); - -#else // RD_JAVA_UI_QT - - return; - -#endif // RD_JAVA_UI_QT + // Call the method which will release UI resources. + releaseUi(); + return true; + } + catch (java::util::LibraryLoaderException& ex) + { + loader.reset(); + LOG1(EJavaUI, EInfo, "No coreUi available (release): %s", ex.toString().c_str()); + } + return false; } #endif // JAVACOREUI_H