diff -r 7cee158cb8cd -r 26b2b12093af javamanager/javainstaller/installer/javasrc.s60/com/nokia/mj/impl/installer/utils/PropertyProvider.java --- a/javamanager/javainstaller/installer/javasrc.s60/com/nokia/mj/impl/installer/utils/PropertyProvider.java Wed Sep 15 12:05:25 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -/* -* Copyright (c) 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" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -package com.nokia.mj.impl.installer.utils; - -/** - * Provides notifications whenever the subscribed property value changes. - *
- * One PropertyProvider instance can be used to subscribe events - * for only one property. If events for more properties are needed - * use separate PropertyProvider instance for each property. - * - * @see PropertyListener - */ -public class PropertyProvider -{ - /** Property category. */ - private int iCategory = 0; - /** Property key. */ - private int iKey = 0; - /** Property listener. */ - private PropertyListener iListener = null; - /** Handle to native object. */ - private int iHandle = 0; - - /** - * Constructor. - */ - public PropertyProvider() - { - } - - /** - * Subscribe to listen changes of specified property value. - * One PropertyListener can subscribe to only one property - * value at a time. - * - * @param aCategory property category - * @param aKey property key - * @param aListener listener to be notified. - */ - public void subscribe(int aCategory, int aKey, PropertyListener aListener) - { - if (iHandle != 0) - { - InstallerException.internalError("PropertyProvider already in use."); - } - iCategory = aCategory; - iKey = aKey; - iListener = aListener; - // Start a new thread which blocks until unsubscribe is called. - final PropertyProvider provider = this; - new Thread(new Runnable() - { - public void run() - { - synchronized (provider) - { - iHandle = _subscribe(iCategory, iKey); - // Notify subscribe method after subscription - // result is available. - provider.notify(); - } - if (iHandle > 0) - { - // Subscription succeeded, start to process events. - _processEvents(iHandle, provider); - } - } - }, "PropertyProviderThread").start(); - synchronized (this) - { - try - { - if (iHandle == 0) - { - // Wait until subscription has been completed. - wait(); - } - } - catch (InterruptedException ie) - { - } - } - // Check if subscription failed. - if (iHandle < 0) - { - Log.logError("PropertyProvider.subscribe failed with code " + iHandle); - iHandle = 0; - } - } - - /** - * Unubscribe from listening changes. - */ - public void unsubscribe() - { - final PropertyProvider provider = this; - new Thread(new Runnable() - { - public void run() - { - synchronized (provider) - { - if (iHandle <= 0) - { - Log.logWarning( - "PropertyProvider.unsubscribe: no subscription."); - return; - } - int err = _unsubscribe(iHandle); - if (err < 0) - { - Log.logError( - "PropertyProvider.unsubscribe failed with code " + - err); - } - else - { - iHandle = 0; - } - } - } - }, "PropertyProviderUnsubscribeThread").start(); - } - - /** - * Called from native when value for the subscribed property changes. - */ - private void valueChanged(int aValue) - { - if (iListener != null) - { - iListener.valueChanged(iCategory, iKey, aValue); - } - } - - /** - * Subscribe to listen changes of specified property value. - * - * @param aCategory property category - * @param aKey property key - * @return handle to native side object or Symbian error - * code (negative number) - */ - private static native int _subscribe(int aCategory, int aKey); - - /** - * Starts to process events. This call blocks until unsubscribe is called. - * - * @param aHandle handle to native side object - * @param aProvider PropertyProvider class instance to be notified - * @return 0 or Symbian error code (negative number) - */ - private static native int _processEvents(int aHandle, PropertyProvider aProvider); - - /** - * Unubscribe from listening changes. - * - * @param aHandle handle to native side object - * @return 0 or Symbian error code (negative number) - */ - private static native int _unsubscribe(int aHandle); -}