forum.bitel.ru http://forum.bitel.ru/ |
|
скрипт 5.2 ошибка на equals http://forum.bitel.ru/viewtopic.php?f=22&t=6960 |
Страница 1 из 1 |
Автор: | madmax [ 12 июл 2012, 17:22 ] |
Заголовок сообщения: | скрипт 5.2 ошибка на equals |
Имеем кусок кода в котором выходит ошибка, не пойму почему она выходит Код: import bitel.billing.server.contract.bean.*; import java.util.*; import bitel.billing.server.util.*; import bitel.billing.server.radius.*; import java.sql.*; import java.util.*; import bitel.billing.common.TimeUtils; import bitel.billing.server.util.Utils; import bitel.billing.server.card.bean.*; import ru.bitel.bgbilling.kernel.network.radius.*; alias = request.getStringAttribute( -1, RadiusStandartAttributes.Calling_Station_Id, "" ); if( login == null || alias == null || alias.equals("") ) { response.setPacketType((byte)3); // Reject } Код: Attempt to resolve method: equals() on undefined variable or class name: alias : at Line: 73 : in file: Function [id:1; title:Test] : alias .equals ( "" )
java.util.concurrent.ExecutionException: Sourced file: Function [id:1; title:Test] : Attempt to resolve method: equals() on undefined variable or class name: alias : at Line: 73 : in file: Function [id:1; title:Test] : alias .equals ( "" ) |
Автор: | stark [ 13 июл 2012, 09:48 ] |
Заголовок сообщения: | Re: скрипт 5.2 ошибка на equals |
код точно такой ? может целиком покажите ? есть подозрение что у вас alias где-то внутри скобок {} присваивается, а потом к нему обращаются . |
Автор: | madmax [ 13 июл 2012, 10:02 ] |
Заголовок сообщения: | Re: скрипт 5.2 ошибка на equals |
так и есть alias указывается внутри {} а далее по коду к нему обращается. На версии 5,1 отрабатывало без ошибок Код: if( cmds.get("set-ani") != null ) {
// ставим аон или сбрасываем if( "1".equals(cmds.get("set-ani")) ) { //alias = request.getStringAttribute( RadiusStandartAttributes.Calling_Station_Id ); alias = request.getStringAttribute( -1, RadiusStandartAttributes.Calling_Station_Id, "" ); } else { alias = "x"; } if( login == null || alias == null || alias.equals("") ) { // ошибка print("Error: "+login+" cid:"+alias); response.setPacketType((byte)3); // Reject } else { print("Updating alias_"+event.moduleID+" "+login.getId()+" to:"+alias); // ищем у чел логин тип == 3 (авторизация по номеру) int loginType=3; loginid=0; lid=0; isOk = true; if(! "x".equals(alias)) { // первым делом проверяем есть ли у когото уже такой алиас // и активен ли он ps = con.prepareStatement("select cid,login_id,date1,date2 from user_alias_"+event.moduleID+" a join user_login_"+event.moduleID+" l on l.id=a.login_id where (date1 is null or date1 <= now()) and (date2 is null or date2>=now()) and login_alias = ?"); ps.setString(1, alias); ResultSet rs=ps.executeQuery(); if(rs.next()) { // если активен и не наш то облом... if( rs.getInt(1) != contract.getId() ) { print("Active and in use on cid="+rs.getInt(1)); response.setPacketType((byte)3); // Reject //response.setVendorStringAttribute( 103, String.valueOf(113)); response.setStringAttribute(9, 103, String.valueOf(113)); isOk=false; } } else { // убиваем не наши активные алиасы (если есть) ps = con.prepareStatement("delete from user_alias_"+event.moduleID+" where login_alias = ?"); ps.setString(1, alias); ps.executeUpdate(); } ps.close(); } if(isOk) { ps = con.prepareStatement("SELECT login,id FROM user_login_"+event.moduleID+" WHERE cid=? and type=? order by login"); ps.setInt(1, contract.getId()); ps.setInt(2, loginType); ResultSet rs=ps.executeQuery(); if(rs.next()) { loginid = rs.getInt(1); lid = rs.getInt(2); } ps.close(); if ( loginid == 0 ) { // нет старого логина ... создаем новый логин int loginid=1000000; ps = con.prepareStatement("SELECT max(login) FROM user_login_"+event.moduleID+" WHERE login>"+loginid); ResultSet rs=ps.executeQuery(); if(rs.next()) loginid = rs.getInt(1); if(loginid < 1000000) loginid=1000000; loginid++; ps.close(); print("Create new login "+loginid); ps = con.prepareStatement("INSERT INTO user_login_"+event.moduleID+" ( cid, login, date1, date2, status, comment, type ) VALUES (?,?,?,?,?,?,?)"); ps.setInt(1, contract.getId()); ps.setInt(2, loginid); // ps.setDate(3,TimeUtils.convertCalendarToSqlDate(contract.getDate1())); ps.setDate(3, contract.getDateFrom()); // ps.setDate(4,TimeUtils.convertCalendarToSqlDate(contract.getDate2())); ps.setDate(4, contract.getDateTo()); ps.setInt(5, 0); ps.setString(6, "set via IVR "); ps.setInt(7, loginType); ps.executeUpdate(); int lid = Utils.lastInsertId(con); ps.close(); } else { print("Using old login "+loginid); } ps = con.prepareStatement("DELETE FROM user_alias_"+event.moduleID+" WHERE login_id=?"); ps.setInt(1, lid); ps.executeUpdate(); ps.close(); if(! "x".equals(alias)) { ps = con.prepareStatement("REPLACE INTO user_alias_"+event.moduleID+" VALUES ( ?, ? )"); ps.setInt(1, lid); ps.setString(2, alias); ps.executeUpdate(); print("Set lod="+lid+" alias="+alias); } response.setPacketType((byte)2); // Accept } } } |
Автор: | Феанор [ 13 июл 2012, 10:31 ] |
Заголовок сообщения: | Re: скрипт 5.2 ошибка на equals |
При объявлении внутри скобок переменная только внутри этих скобок и живет. Объявите переменную явно в самом начале. Пусть как нулл даже. |
Автор: | stark [ 13 июл 2012, 11:07 ] |
Заголовок сообщения: | Re: скрипт 5.2 ошибка на equals |
тут описано |
Автор: | madmax [ 13 июл 2012, 11:28 ] |
Заголовок сообщения: | Re: скрипт 5.2 ошибка на equals |
Да, прописал переменную в начале скрипта и все заработало. Ссылку которую дали на wiki не работает. |
Автор: | stark [ 13 июл 2012, 11:52 ] |
Заголовок сообщения: | Re: скрипт 5.2 ошибка на equals |
madmax писал(а): Да, прописал переменную в начале скрипта и все заработало. Ссылку которую дали на wiki не работает. поправил ссылку |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |