チェンジセット 202

差分発生行の前後
無視リスト:
コミット日時:
2008/04/08 22:10:12 (14 年前)
コミッタ:
shinomiya
ログメッセージ:
  • FileオブジェクトでWSDLを指定できるように修正。
  • 以下のオプションを指定できるように、コンストラクタの第3、第4引数を追加。
    • 第3引数 → -pn <port_name> Choose a specific port when there are multiple portsin the wsdl.
    • 第4引数 → -sn <service_name> Choose a specific service when there are multiple services in the wsdl.
ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • trunk/im-jssp-extention/src/main/java/org/intra_mart/jssp/script/api/SOAPClientObject.java

    r199 r202  
    7272 
    7373        private static StubGenerationMode _stubGenMode = StubGenerationMode.Once; 
    74         private static File _soapClientWorkDir = ScriptScopeBuilderManager.getBuilder().getOutputDirectory()
     74        private static File _soapClientWorkDir
    7575         
    7676        private static Method _method4getConfiguration; 
     
    9393                } 
    9494 
    95                 if (args.length == 0) { 
    96                         // TODO ヘルプ的な内容を表示? 
     95                if (args.length == 0 || args[0] == null) { 
    9796                        throw new IllegalArgumentException("Please set one or more arguments."); 
    9897                } 
    99                 else { 
    100                         // TODO 引数の場合わけ。サービス名指定とか、キャッシュ有り無しとか、、、引数インターフェースを決定せよ! 
    101                         // TODO AppruntimeやStorage上のWSDLも読み込めるように。 
    102                         SOAPClientObject instance = new SOAPClientObject(args);  
    103                         return instance; 
    104                 } 
    105         } 
    106  
    107         public SOAPClientObject(){ 
    108         } 
    109  
    110         public SOAPClientObject(Object[] args) { 
    111                 String wsdlUri = Context.toString(args[0]); 
    112  
     98         
     99                String wsdlUri = getURI4WSDL(args[0]); 
    113100                String targetEndpoint = null; 
     101                String portName = null; 
     102                String serviceName = null; 
     103 
    114104                if(args.length > 1 && args[1] != null){ 
    115105                        targetEndpoint = Context.toString(args[1]); 
    116106                } 
    117                  
     107                if(args.length > 2 && args[2] != null){ 
     108                        portName = Context.toString(args[2]); 
     109                } 
     110                if(args.length > 3 && args[3] != null){ 
     111                        serviceName = Context.toString(args[3]); 
     112                } 
     113                 
     114                SOAPClientObject instance = new SOAPClientObject(wsdlUri, targetEndpoint, portName, serviceName);  
     115                return instance; 
     116        } 
     117 
     118        private static String getURI4WSDL(Object object) { 
     119                String wsdlUri = null; 
     120                 
     121                if(object instanceof String){ 
     122                        wsdlUri = Context.toString(object); 
     123                } 
     124                else if(object instanceof FileAccessObject){ 
     125                        FileAccessObject wsdlFileAccessObject = (FileAccessObject) object; 
     126                        File wsdlFile= new File(wsdlFileAccessObject.jsFunction_path()); 
     127                        wsdlUri = wsdlFile.toURI().toString(); 
     128                } 
     129                else { 
     130                        throw new IllegalStateException("WSDL must be specified.: " + object); 
     131                } 
     132 
     133                return wsdlUri; 
     134        } 
     135 
     136        public SOAPClientObject(){ 
     137        } 
     138 
     139        public SOAPClientObject(String wsdlUri, 
     140                                                        String targetEndpoint, 
     141                                                        String portName, 
     142                                                        String serviceName) { 
     143 
    118144                ClassLoader origin = Thread.currentThread().getContextClassLoader(); 
    119145 
     
    129155                try { 
    130156                        // エンジン生成 
    131                         CodeGenerationEngine engine = createEngine(wsdlUri, _soapClientWorkDir); 
     157                        CodeGenerationEngine engine = createEngine(wsdlUri, _soapClientWorkDir, portName, serviceName); 
    132158                         
    133159                        // Stubクラス名取得 
     
    198224                                _soapClientWorkDir = new File(HomeDirectory.instance(), dir.getPath()); 
    199225                        } 
    200  
    201                         _logger.debug("{} -> {}", tagName, _soapClientWorkDir); 
    202                 } 
     226                } 
     227                else{ 
     228                        _soapClientWorkDir = ScriptScopeBuilderManager.getBuilder().getOutputDirectory(); 
     229                } 
     230                 
     231                _logger.debug("{} -> {}", tagName, _soapClientWorkDir); 
    203232        } 
    204233 
     
    238267        } 
    239268 
    240         private CodeGenerationEngine createEngine(String wsdlLocationURI, File outputLocation) throws CodeGenerationException { 
    241                 // TODO SoapClientのコンストラクタ引数に以下を追加か? 
    242                 // -pn <port_name> Choose a specific port when there are multiple portsin the wsdl. 
    243                 // -sn <service_name> Choose a specific service when there are multiple services in the wsdl. 
    244  
     269        private CodeGenerationEngine createEngine(String wsdlLocationURI,  
     270                                                                                          File outputLocation, 
     271                                                                                          String portName, 
     272                                                                                          String serviceName ) throws CodeGenerationException { 
    245273                // 引数を作成 
    246                 String[] args = generateArgs(wsdlLocationURI, outputLocation, null, null); 
     274                String[] args = generateArgs(wsdlLocationURI, outputLocation, portName, serviceName); 
    247275                 
    248276