0

SOAP 経由で Jira からデータを読み取り、オブジェクトの配列をRemoteIssue受け取ります。ここで、これらを繰り返し処理して、各チケットのステータスを取得したいと思います。RemoteIssueのドキュメントには、getStatus()-Method があると記載されています。オブジェクトでそれを呼び出すと、プログラムがエラーをスローします。

いくつかのコード:

my $soap = SOAP::Lite->uri($soap_uri)->proxy($soap_proxy);
my $login = $soap->login( $soap_user, $soap_password)->result;

if ($login) {
    # This works
    my $issues = $soap->getIssuesFromJqlSearch( $login, "project = \"$project\" AND fixVersion = \"$project_version\"", 500 );

    if ($issues) {
        foreach my $issue (@{$issues->result}) {
            my $foo = $issue->getStatus(); # This doesn't work
            print Dumper $foo;
        }
    }
}
$soap->logout();

スローされたエラー:

Can't locate object method "getStatus" via package "RemoteIssue" at D:\ZeuS\lib/ZeuS.pm line 81

他のすべてのオブジェクト メソッドも機能しません。

私が間違っていることを誰かが知っていますか?

4

1 に答える 1

1

私が収集したものからすると、Java コンシューマーで操作する Java オブジェクトを受け取っているという印象を受けます。

SOAP呼び出しでない限り$issue->getStatus()(そうではないと思います)、APIを扱っているのではなくSOAP::Lite、XMLでの応答のPerlでの表現を扱っています。

getIssuesFromJqlSearchリモートコールのようです。$issuesそこから、オブジェクトとして取得する必要がありSOAP::SOMます。次に、resultメソッドで適切に対処します。

これには、このオブジェクトが bless されるクラスに対して定義されているメソッドが含まれます。

このすべてのオブジェクトが何に応答するかを確認するには、次を試してください。

use mro ();
use Scalar::Util qw<blessed>;
...
    foreach my $issue (@{$issues->result}) {
        say '$issue ISA ('
          . join( ',', @{ mro::get_linear_isa( blessed( $issue )) } )
          . ')'
          ;
          ...
    }

$issuePerl 側で定義されたメソッドのみが含まれます。

  • 注:コードからZeuS.pmは、この問題がどこにあるのかは明確ではありません。
于 2012-05-31T11:42:31.117 に答える