Реализация стандартного шлюза Manad на BeanShell
Материал из BiTel WiKi
(Различия между версиями)
Stark (Обсуждение | вклад) |
Vdd (Обсуждение | вклад) м (Коррекция согласно текущему API) |
||
Строка 127: | Строка 127: | ||
} | } | ||
</source> | </source> | ||
+ | |||
+ | ManadUtils.generateRuleNew в 4.5 (ipn вер. 4.5 сборка 117 от 18.11.2008 15:53:19) вызывает исключение <source lang="java">java.lang.reflect.UndeclaredThrowableException | ||
+ | at bitel.billing.server.ipn.$Proxy0.doSync(Unknown Source) | ||
+ | at bitel.billing.server.ipn.GateWorker.runScriptSync(GateWorker.java:146) | ||
+ | at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:111) | ||
+ | at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:86) | ||
+ | Caused by: Error in method invocation: Static method generateRuleNew( java.lang.String, java.lang.String, null, bitel.billing.server.ip | ||
+ | n.bean.RuleType ) not found in class'bitel.billing.server.ipn.bean.ManadUtils' : at Line: 115 : in file: inline evaluation of: ``import | ||
+ | java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : ManadUtils .generateRuleNew ( ruleText , status . | ||
+ | rule .getRuleText ( ) , null , status .ruleType ) | ||
+ | </source> | ||
+ | Лечится заменой на ManadUtils.generateRule, согласно текущей документации API. |
Версия 11:38, 19 ноября 2008
конфигурация типа шлюза :
user_rule.editor.class=bitel.billing.module.services.ipn.editor.ManadContractRuleEditor gate_manager.class=bitel.billing.server.ipn.ManadGateWorker use.script=1
Код :
import java.io.*; import java.net.*; import java.util.*; import bitel.billing.common.module.ipn.*; import bitel.billing.server.ipn.bean.*; protected void doSync() { host = gate.getHost(); port = gate.getPort(); gid = gate.getId(); if ( log.isDebugEnabled() ) { log.debug( gid + " gate: " + host + ":" + port ); } try { socket = new Socket( host, port ); out = new PrintWriter( socket.getOutputStream(), true ); isr = new InputStreamReader( socket.getInputStream() ); in = new BufferedReader( isr ); out.println( "test" ); kods = in.readLine(); if ( log.isDebugEnabled() ) { log.debug( gid + " Test => " + kods + "\n" ); } // список открытых договоров с шлюза gateRules = new HashSet( 5, 5 ); st = new StringTokenizer( kods ); while ( st.hasMoreTokens() ) { gateRules.add( new Integer( st.nextToken() ) ); } for( i = 0; i < statusList.size(); i++ ) { status = statusList.get(i); cid = status.contractId; // флаг того то правило есть на шлюзе flag = false; // правило для этого договора есть на шлюзе if ( gateRules.contains( cid ) ) { // если правило есть а юзер заблокирован - удаляем правило if ( status.status > 0 ) { rule = generateRule( status ); command = "remove\t" + cid.intValue() + "\t" + rule; out.println( command ); if ( log.isDebugEnabled() ) { log.debug( gid + " " + command ); } } flag = true; gateRules.remove( cid ); } // правила нет, а юзер открыт if ( !flag && status.status == IPNContractStatus.STATUS_OPEN ) { rule = generateRule( status ); command = "add\t" + cid.intValue() + "\t" + rule; out.println( command ); if ( log.isDebugEnabled() ) { log.debug( gid + " " + command ); } } } in.close(); out.close(); socket.close(); } catch ( e ) { throw new RuntimeException ( e ); } } private generateRule( status ) { rule = null; // пользовательское правило, без типа if( status.ruleType == null ) { rule = status.rule.getRuleText(); } // типизированное правило else { ruleText = ManadUtils.getRule( status.gateType, status.ruleType ); rule = ManadUtils.generateRuleNew( ruleText, status.rule.getRuleText(), null, status.ruleType ); } rule = rule.replaceAll( "\r", "" ); rule = rule.replaceAll( "\n", "|" ); return rule; }
java.lang.reflect.UndeclaredThrowableException at bitel.billing.server.ipn.$Proxy0.doSync(Unknown Source) at bitel.billing.server.ipn.GateWorker.runScriptSync(GateWorker.java:146) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:111) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:86) Caused by: Error in method invocation: Static method generateRuleNew( java.lang.String, java.lang.String, null, bitel.billing.server.ip n.bean.RuleType ) not found in class'bitel.billing.server.ipn.bean.ManadUtils' : at Line: 115 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : ManadUtils .generateRuleNew ( ruleText , status . rule .getRuleText ( ) , null , status .ruleType )
Лечится заменой на ManadUtils.generateRule, согласно текущей документации API.