diff -r bf7ee68962da -r 773449708c84 javaextensions/iapinfo/javasrc.s60/com/nokia/mid/iapinfo/IAPInfoImpl.java --- a/javaextensions/iapinfo/javasrc.s60/com/nokia/mid/iapinfo/IAPInfoImpl.java Wed Aug 18 09:43:15 2010 +0300 +++ b/javaextensions/iapinfo/javasrc.s60/com/nokia/mid/iapinfo/IAPInfoImpl.java Thu Sep 02 20:20:40 2010 +0300 @@ -35,16 +35,14 @@ class IAPInfoImpl extends IAPInfo { - // variable to store the network preferences - private IAPTable iIAPTable = null; - + private int iSessionHandle; static { try { - Logger.ILOG(Logger.ESOCKET, "loading javaiapinfo"); + Logger.LOG(Logger.EJavaIapInfo,Logger.EInfo, "loading javaiapinfo"); Jvm.loadSystemLibrary("javaiapinfo"); - Logger.ILOG(Logger.ESOCKET, "javaiapinfo loaded"); + Logger.LOG(Logger.EJavaIapInfo,Logger.EInfo, "javaiapinfo loaded"); } catch (Exception e) { @@ -57,42 +55,48 @@ */ public IAPInfoImpl() throws IAPInfoException { + iSessionHandle = _createSession(); + if (iSessionHandle <0) + throw new IAPInfoException("Error: symbian os error: "+iSessionHandle); + + } + + /** + * Please refer IapInfo Spec. + */ + public synchronized AccessPoint[] getAccessPoints() throws IAPInfoException + { + IAPTable iIAPTable = null; + Logger.LOG(Logger.EJavaIapInfo,Logger.EInfo, "+getAccessPoints() - this = "+Thread.currentThread().toString() +"hascode= " +Thread.currentThread().hashCode()); try { - this.iIAPTable = new IAPTable(); + iIAPTable = new IAPTable(); } catch (CommDBException e) { e.printStackTrace(); throw new IAPInfoException(e.getMessage()); } - } - - /** - * Please refer IapInfo Spec. - */ - public AccessPoint[] getAccessPoints() throws IAPInfoException - { AccessPoint[] _ac = null; try { - this.iIAPTable.open(); - int _nr_of_access_points = this.iIAPTable.getRecordCount(); + iIAPTable.open(iSessionHandle); + int _nr_of_access_points = iIAPTable.getRecordCount(); _ac = new AccessPoint[_nr_of_access_points]; for (int i = 0; i < _nr_of_access_points; i++) { - AccessPoint _c = new AccessPoint(this.iIAPTable.iRecordId, - this.iIAPTable.iRecordName, this.iIAPTable.iBearerType, - this.iIAPTable.iServiceType); + AccessPoint _c = new AccessPoint(iIAPTable.iRecordId, + iIAPTable.iRecordName, iIAPTable.iBearerType, + iIAPTable.iServiceType); _ac[i] = _c; if (i != _nr_of_access_points - 1) - this.iIAPTable.nextRecord(); + iIAPTable.nextRecord(); } - this.iIAPTable.close(); + iIAPTable.close(); } catch (CommDBException _exception) { - this.iIAPTable.close(); + iIAPTable.close(); throw new IAPInfoException(_exception.getMessage()); }// end of catch return _ac; @@ -101,24 +105,35 @@ /** * Please refer IapInfo Spec. */ - public AccessPoint getAccessPoint(int aID) throws IAPInfoException + public synchronized AccessPoint getAccessPoint(int aID) throws IAPInfoException { AccessPoint _ac = null; + IAPTable iIAPTable = null; + Logger.LOG(Logger.EJavaIapInfo,Logger.EInfo, "+getAccessPoint() - aID = "+aID +" this = "+Thread.currentThread().toString() +"hascode= " +Thread.currentThread().hashCode()); try { - this.iIAPTable.open(); - int _ret = this.iIAPTable.findById(aID); + iIAPTable = new IAPTable(); + } + catch (CommDBException e) + { + e.printStackTrace(); + throw new IAPInfoException(e.getMessage()); + } + try + { + iIAPTable.open(iSessionHandle); + int _ret = iIAPTable.findById(aID); if (_ret != IAPTable.RECORD_NOT_FOUND) { - _ac = new AccessPoint(this.iIAPTable.iRecordId, - this.iIAPTable.iRecordName, this.iIAPTable.iBearerType, - this.iIAPTable.iServiceType); + _ac = new AccessPoint(iIAPTable.iRecordId, + iIAPTable.iRecordName, iIAPTable.iBearerType, + iIAPTable.iServiceType); } - this.iIAPTable.close(); + iIAPTable.close(); } catch (CommDBException _exception) { - this.iIAPTable.close(); + iIAPTable.close(); throw new IAPInfoException(_exception.getMessage()); }// end catch return _ac; @@ -127,8 +142,19 @@ /** * Please refer IapInfo Spec. */ - public AccessPoint getAccessPoint(String aName) throws IAPInfoException + public synchronized AccessPoint getAccessPoint(String aName) throws IAPInfoException { + Logger.LOG(Logger.EJavaIapInfo,Logger.EInfo, "+getAccessPoint() - aName = "+aName +" this = "+Thread.currentThread().toString() +"hascode= " +Thread.currentThread().hashCode()); + IAPTable iIAPTable = null; + try + { + iIAPTable = new IAPTable(); + } + catch (CommDBException e) + { + e.printStackTrace(); + throw new IAPInfoException(e.getMessage()); + } if (aName == null) { throw new IAPInfoException("Parameter is NULL"); @@ -136,57 +162,71 @@ AccessPoint _ac = null; try { - this.iIAPTable.open(); - int _ret = this.iIAPTable.findByName(aName); + iIAPTable.open(iSessionHandle); + Logger.LOG(Logger.EJavaIapInfo,Logger.EInfo, "+getAccessPoint() - aName = after iaptable.open()"); + int _ret = iIAPTable.findByName(aName); if (_ret != IAPTable.RECORD_NOT_FOUND) { - _ac = new AccessPoint(this.iIAPTable.iRecordId, - this.iIAPTable.iRecordName, this.iIAPTable.iBearerType, - this.iIAPTable.iServiceType); + _ac = new AccessPoint(iIAPTable.iRecordId, + iIAPTable.iRecordName, iIAPTable.iBearerType, + iIAPTable.iServiceType); } - this.iIAPTable.close(); + iIAPTable.close(); } catch (CommDBException _exception) { - this.iIAPTable.close(); + iIAPTable.close(); throw new IAPInfoException(_exception.getMessage()); }// end catch + Logger.LOG(Logger.EJavaIapInfo,Logger.EInfo, "-getAccessPoint() - aName = "+aName); return _ac; +//return null; } /** * Please refer IapInfo Spec. */ - public AccessPoint getLastUsedAccessPoint() throws IAPInfoException + public synchronized AccessPoint getLastUsedAccessPoint() throws IAPInfoException { + Logger.LOG(Logger.EJavaIapInfo,Logger.EInfo, "+getLastUsedAccessPoint() " +" this = "+Thread.currentThread().toString() +"hascode= " +Thread.currentThread().hashCode()); + IAPTable iIAPTable = null; + try + { + iIAPTable = new IAPTable(); + } + catch (CommDBException e) + { + e.printStackTrace(); + throw new IAPInfoException(e.getMessage()); + } APNControl _control = new APNControl(); int _lastIAP = _control.getLastIAP(); AccessPoint _ac = null; int _nr_of_access_points = 0; try { - this.iIAPTable.open(); - _nr_of_access_points = this.iIAPTable.getRecordCount(); + iIAPTable.open(iSessionHandle); + _nr_of_access_points = iIAPTable.getRecordCount(); for (int i = 0; i < _nr_of_access_points; i++) { - if (this.iIAPTable.iRecordId == _lastIAP) + if (iIAPTable.iRecordId == _lastIAP) { - _ac = new AccessPoint(this.iIAPTable.iRecordId, - this.iIAPTable.iRecordName, - this.iIAPTable.iBearerType, - this.iIAPTable.iServiceType); + _ac = new AccessPoint(iIAPTable.iRecordId, + iIAPTable.iRecordName, + iIAPTable.iBearerType, + iIAPTable.iServiceType); break; }// end if if (i != _nr_of_access_points - 1) { - this.iIAPTable.nextRecord(); + iIAPTable.nextRecord(); } }// end for - this.iIAPTable.close(); + iIAPTable.close(); } catch (CommDBException _exception) { - this.iIAPTable.close(); + iIAPTable.close(); throw new IAPInfoException(_exception.getMessage()); } return _ac; @@ -294,16 +334,27 @@ /** * Please refer IapInfo Spec. */ - public AccessPoint[] getConnectionPreferences() throws IAPInfoException + public synchronized AccessPoint[] getConnectionPreferences() throws IAPInfoException { ConnectionPreferencesTable _prefTable = null; AccessPoint[] _ac = null; + IAPTable iIAPTable = null; + Logger.LOG(Logger.EJavaIapInfo,Logger.EInfo, "+getConnectionPreferences() " +" this = "+Thread.currentThread().toString() +"hascode= " +Thread.currentThread().hashCode()); + try + { + iIAPTable = new IAPTable(); + } + catch (CommDBException e) + { + e.printStackTrace(); + throw new IAPInfoException(e.getMessage()); + } try { _prefTable = new ConnectionPreferencesTable(); - _prefTable.open(); + _prefTable.open(iSessionHandle); int recNr = _prefTable.getRecordCount(); HelperObject[] hp = new HelperObject[recNr]; @@ -336,20 +387,20 @@ }// end while // get the AccesssPoints from IAPTable - this.iIAPTable.open(); + iIAPTable.open(iSessionHandle); Vector apv = new Vector(); for (int i = 0; i < recNr; i++) { - // int _ret = this.iIAPTable.findById( ids[ i ] ); - int _ret = this.iIAPTable.findById(hp[i].Id); + // int _ret = iIAPTable.findById( ids[ i ] ); + int _ret = iIAPTable.findById(hp[i].Id); if (_ret != IAPTable.RECORD_NOT_FOUND) { - apv.addElement(new AccessPoint(this.iIAPTable.iRecordId, - this.iIAPTable.iRecordName, - this.iIAPTable.iBearerType, - this.iIAPTable.iServiceType)); + apv.addElement(new AccessPoint(iIAPTable.iRecordId, + iIAPTable.iRecordName, + iIAPTable.iBearerType, + iIAPTable.iServiceType)); }// end if }// end for @@ -359,14 +410,14 @@ _ac[i] = (AccessPoint) apv.elementAt(i); } - this.iIAPTable.close(); + iIAPTable.close(); _prefTable.close(); } catch (CommDBException e) { _prefTable.close(); - this.iIAPTable.close(); + iIAPTable.close(); throw new IAPInfoException(e.getMessage()); } return _ac; @@ -427,4 +478,6 @@ static native String _getDestinationNetworkByName(String aName) throws IAPInfoException; + private native int _createSession(); + }