[MOBY-guts] biomoby commit

Eddie Kawas kawas at dev.open-bio.org
Wed Jan 20 14:35:59 UTC 2010


kawas
Wed Jan 20 09:35:58 EST 2010
Update of /home/repository/moby/moby-live/Perl/MOSES-MOBY/bin/scripts
In directory dev.open-bio.org:/tmp/cvs-serv4876/bin/scripts

Modified Files:
	moses-testing-service.pl 
Log Message:
fixed typo
moby-live/Perl/MOSES-MOBY/bin/scripts moses-testing-service.pl,1.16,1.17
===================================================================
RCS file: /home/repository/moby/moby-live/Perl/MOSES-MOBY/bin/scripts/moses-testing-service.pl,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- /home/repository/moby/moby-live/Perl/MOSES-MOBY/bin/scripts/moses-testing-service.pl	2009/10/26 16:06:00	1.16
+++ /home/repository/moby/moby-live/Perl/MOSES-MOBY/bin/scripts/moses-testing-service.pl	2010/01/20 14:35:58	1.17
@@ -5,17 +5,16 @@
 # $Id$
 # Contact: Martin Senger <martin.senger at gmail.com>
 # -----------------------------------------------------------
-
 BEGIN {
 
-	# some command-line options
-	use Getopt::Std;
-	use vars qw/ $opt_h $opt_d $opt_v $opt_l $opt_e $opt_c $opt_a $opt_C /;
-	getopts('hdvl:e:c:C:a:');
-
-	# usage
-	if ( $opt_h or ( @ARGV == 0 and ( not $opt_c or not $opt_C ) ) ) {
-		print STDOUT <<'END_OF_USAGE';
+    # some command-line options
+    use Getopt::Std;
+    use vars qw/ $opt_h $opt_d $opt_v $opt_l $opt_e $opt_c $opt_a $opt_C /;
+    getopts('hdvl:e:c:C:a:');
+
+    # usage
+    if ( $opt_h or ( @ARGV == 0 and ( not $opt_c or not $opt_C ) ) ) {
+        print STDOUT <<'END_OF_USAGE';
 Calling a BioMoby services (without using SOAP, just locally).
 Usage: # calling a local module representing a service, without using SOAP
        [-vd] [-l <lib-location>] <package-name> [<input-file>]
@@ -75,66 +74,66 @@
     -d ... debug
     -h ... help
 END_OF_USAGE
-		exit(0);
-	}
-	use HTTP::Request;
-	use LWP::UserAgent;
-	use XML::LibXML;
-	use MOBY::Async::WSRF;
-	use MOBY::Async::LSAE;
-
-	# use MOSES::MOBY::Base;
-	# load modules, depending on the mode of calling
-	if ($opt_e) {
-
-		# calling a real service, using SOAP
-		eval "use SOAP::Lite; 1;"
-		  or die "$@\n";
-	} elsif ($opt_c) {
-
-		# calling a real service, using cgi
-		eval "use HTTP::Request; 1;"
-		  or die "$@\n";
-		eval "use LWP::UserAgent; 1;"
-		  or die "$@\n";
-	} elsif ($opt_C) {
-
-		# calling a real service, using async cgi
-		eval "use HTTP::Request; 1;"
-		  or die "$@\n";
-		eval "use LWP::UserAgent; 1;"
-		  or die "$@\n";
-		eval "use XML::LibXML; 1;"
-		  or die "$@\n";
-		eval "use MOBY::Async::WSRF; 1;"
-		  or die "$@\n";
-		eval "use MOBY::Async::LSAE; 1;"
-		  or die "$@\n";
-	} else {
-
-		# calling a local service module, without SOAP
-		eval "use MOSES::MOBY::Base; 1;";
-
-		# take the lib location from the config file
-		require lib;
-		lib->import( MOSES::MOBY::Config->param("generators.impl.outdir") );
-		require lib;
-		lib->import( MOSES::MOBY::Config->param("generators.outdir") );
-		unshift( @INC, $opt_l ) if $opt_l;
-		$LOG->level('INFO')  if $opt_v;
-		$LOG->level('DEBUG') if $opt_d;
-	}
-
-	# load these modules always to get constants and to avoid warnings
-	eval "use MOBY::Async::LSAE; 1;"
-	  or die "$@\n";
-	eval "use MOBY::Async::WSRF; 1;"
-	  or die "$@\n";
+        exit(0);
+    }
+    use HTTP::Request;
+    use LWP::UserAgent;
+    use XML::LibXML;
+    use MOBY::Async::WSRF;
+    use MOBY::Async::LSAE;
+
+    # use MOSES::MOBY::Base;
+    # load modules, depending on the mode of calling
+    if ($opt_e) {
+
+        # calling a real service, using SOAP
+        eval "use SOAP::Lite; 1;"
+          or die "$@\n";
+    } elsif ($opt_c) {
+
+        # calling a real service, using cgi
+        eval "use HTTP::Request; 1;"
+          or die "$@\n";
+        eval "use LWP::UserAgent; 1;"
+          or die "$@\n";
+    } elsif ($opt_C) {
+
+        # calling a real service, using async cgi
+        eval "use HTTP::Request; 1;"
+          or die "$@\n";
+        eval "use LWP::UserAgent; 1;"
+          or die "$@\n";
+        eval "use XML::LibXML; 1;"
+          or die "$@\n";
+        eval "use MOBY::Async::WSRF; 1;"
+          or die "$@\n";
+        eval "use MOBY::Async::LSAE; 1;"
+          or die "$@\n";
+    } else {
+
+        # calling a local service module, without SOAP
+        eval "use MOSES::MOBY::Base; 1;";
+
+        # take the lib location from the config file
+        require lib;
+        lib->import( MOSES::MOBY::Config->param("generators.impl.outdir") );
+        require lib;
+        lib->import( MOSES::MOBY::Config->param("generators.outdir") );
+        unshift( @INC, $opt_l ) if $opt_l;
+        $LOG->level('INFO')  if $opt_v;
+        $LOG->level('DEBUG') if $opt_d;
+    }
+
+    # load these modules always to get constants and to avoid warnings
+    eval "use MOBY::Async::LSAE; 1;"
+      or die "$@\n";
+    eval "use MOBY::Async::WSRF; 1;"
+      or die "$@\n";
 }
 use strict;
 
 sub _empty_input {
-	return <<'END_OF_XML';
+    return <<'END_OF_XML';
 <?xml version="1.0" encoding="UTF-8"?>
 <moby:MOBY xmlns:moby="http://www.biomoby.org/moby">
   <moby:mobyContent>
@@ -145,457 +144,482 @@
 }
 
 sub _check_status {
-	my ( $status, $completed, $queryID, $opt_v ) = @_;
-	if ( $status->type == LSAE_PERCENT_PROGRESS_EVENT ) {
-		print "Current percentage for job $queryID: ", $status->percentage, "\n"
-		  if $opt_v;
-		if ( $status->percentage >= 100 ) {
-			$completed->{$queryID} = 1;
-		} elsif ( $status->percentage < 100 ) {
-			print "\tmsg: ",
-			  ( $status->message ? $status->message : "no message found ..." ), "\n"
-			  if $opt_v;
-
-			#sleep(20);
-		} else {
-			die "ERROR:  analysis event block not well formed.\n";
-		}
-	} elsif ( $status->type == LSAE_STATE_CHANGED_EVENT ) {
-		print "Current state for job $queryID: ", $status->new_state, "\n"
-		  if $opt_v;
-		if (    ( $status->new_state =~ m"completed"i )
-			 || ( $status->new_state =~ m"terminated_by_request"i )
-			 || ( $status->new_state =~ m"terminated_by_error"i ) )
-		{
-			$completed->{$queryID} = 1;
-		} elsif (    ( $status->new_state =~ m"created"i )
-				  || ( $status->new_state =~ m"running"i ) )
-		{
-			print "\tmsg: ",
-			  ( $status->message ? $status->message : "no message found ..." ), "\n"
-			  if $opt_v;
-
-			#sleep(20);
-		} else {
-			die "ERROR:  analysis event block not well formed.\n";
-		}
-	} elsif ( $status->type == LSAE_STEP_PROGRESS_EVENT ) {
-		print "Steps completed for job $queryID: ", $status - > steps_completed, "\n"
-		  if $opt_v;
-		if ( $status->steps_completed >= $status->total_steps ) {
-			$completed->{$queryID} = 1;
-		} elsif ( $status->steps_completed < $status->total_steps ) {
-			print "\tmsg: ",
-			  ( $status->message ? $status->message : "no message found ..." ), "\n"
-			  if $opt_v;
-
-			#sleep(20);
-		} else {
-			die "ERROR:  analysis event block not well formed.\n";
-		}
-	} elsif ( $status->type == LSAE_TIME_PROGRESS_EVENT ) {
-		print "Time remaining for job $queryID: ", $status->remaining, "\n"
-		  if $opt_v;
-		if ( $status->remaining == 0 ) {
-			$completed->{$queryID} = 1;
-		} elsif ( $status->remaining > 0 ) {
-			print "\tmsg: ",
-			  ( $status->message ? $status->message : "no message found ..." ), "\n"
-			  if $opt_v;
-
-			#sleep(20);
-		} else {
-			die "ERROR:  analysis event block not well formed.\n";
-		}
-	} else {
-		warn
+    my ( $status, $completed, $queryID, $opt_v ) = @_;
+    if ( $status->type == LSAE_PERCENT_PROGRESS_EVENT ) {
+        print "Current percentage for job $queryID: ", $status->percentage, "\n"
+          if $opt_v;
+        if ( $status->percentage >= 100 ) {
+            $completed->{$queryID} = 1;
+        } elsif ( $status->percentage < 100 ) {
+            print "\tmsg: ",
+              ( $status->message ? $status->message : "no message found ..." ),
+              "\n"
+              if $opt_v;
+
+            #sleep(20);
+        } else {
+            die "ERROR:  analysis event block not well formed.\n";
+        }
+    } elsif ( $status->type == LSAE_STATE_CHANGED_EVENT ) {
+        print "Current state for job $queryID: ", $status->new_state, "\n"
+          if $opt_v;
+        if (    ( $status->new_state =~ m"completed"i )
+             || ( $status->new_state =~ m"terminated_by_request"i )
+             || ( $status->new_state =~ m"terminated_by_error"i ) )
+        {
+            $completed->{$queryID} = 1;
+        } elsif (    ( $status->new_state =~ m"created"i )
+                  || ( $status->new_state =~ m"running"i ) )
+        {
+            print "\tmsg: ",
+              ( $status->message ? $status->message : "no message found ..." ),
+              "\n"
+              if $opt_v;
+
+            #sleep(20);
+        } else {
+            die "ERROR:  analysis event block not well formed.\n";
+        }
+    } elsif ( $status->type == LSAE_STEP_PROGRESS_EVENT ) {
+        print "Steps completed for job $queryID: ", $status->steps_completed,
+          "\n"
+          if $opt_v;
+        if ( $status->steps_completed >= $status->total_steps ) {
+            $completed->{$queryID} = 1;
+        } elsif ( $status->steps_completed < $status->total_steps ) {
+            print "\tmsg: ",
+              ( $status->message ? $status->message : "no message found ..." ),
+              "\n"
+              if $opt_v;
+
+            #sleep(20);
+        } else {
+            die "ERROR:  analysis event block not well formed.\n";
+        }
+    } elsif ( $status->type == LSAE_TIME_PROGRESS_EVENT ) {
+        print "Time remaining for job $queryID: ", $status->remaining, "\n"
+          if $opt_v;
+        if ( $status->remaining == 0 ) {
+            $completed->{$queryID} = 1;
+        } elsif ( $status->remaining > 0 ) {
+            print "\tmsg: ",
+              ( $status->message ? $status->message : "no message found ..." ),
+              "\n"
+              if $opt_v;
+
+            #sleep(20);
+        } else {
+            die "ERROR:  analysis event block not well formed.\n";
+        }
+    } else {
+        warn
 "Whilst checking the status of our resource, we entered into a possible infinite loop ...\n";
-	}
+    }
 }
 
 sub _get_query_ids {
-	my $input     = shift;
-	my @query_ids = ();
-	my $parser    = XML::LibXML->new();
-	my $doc       = $parser->parse_string($input);
-	my $iterator  = $doc->getElementsByLocalName("mobyData");
-	for ( 1 .. $iterator->size() ) {
-		my $node = $iterator->get_node($_);
-		my $id   = $node->getAttribute("queryID")
-		  || $node->getAttribute(
-						 $node->lookupNamespacePrefix($WSRF::Constants::MOBY_MESSAGE_NS)
-						   . ":queryID" );
-		push @query_ids, $id;
-	}
-	return @query_ids;
+    my $input     = shift;
+    my @query_ids = ();
+    my $parser    = XML::LibXML->new();
+    my $doc       = $parser->parse_string($input);
+    my $iterator  = $doc->getElementsByLocalName("mobyData");
+    for ( 1 .. $iterator->size() ) {
+        my $node = $iterator->get_node($_);
+        my $id   = $node->getAttribute("queryID")
+          || $node->getAttribute(
+                 $node->lookupNamespacePrefix($WSRF::Constants::MOBY_MESSAGE_NS)
+                   . ":queryID" );
+        push @query_ids, $id;
+    }
+    return @query_ids;
 }
 
 # --- what service to call
-my $module = shift unless $opt_c or $opt_C;    # eg. Service::Mabuhay, or just Mabuhay
+my $module = shift
+  unless $opt_c
+      or $opt_C;    # eg. Service::Mabuhay, or just Mabuhay
 my $service;
 ( $service = $module ) =~ s/.*::// unless $opt_c or $opt_C;
 
 # --- call the service
 if ($opt_e) {
 
-	# calling a real service, using SOAP
-	my $soap = SOAP::Lite->uri("http://biomoby.org/")->proxy($opt_e)->on_fault(
-		sub {
-			my $soap = shift;
-			my $res  = shift;
-			my $msg =
-			  ref $res
-			  ? "--- SOAP FAULT ---\n" . $res->faultcode . " " . $res->faultstring
-			  : "--- TRANSPORT ERROR ---\n" . $soap->transport->status . "\n$res\n";
-			die $msg;
-		}
-	);
-	my $input = '';
-	if ( @ARGV > 0 ) {
-		my $data = shift;    # a file name
-		open INPUT, "<$data"
-		  or die "Cannot read '$data': $!\n";
-		while (<INPUT>) { $input .= $_; }
-		close INPUT;
-	} else {
-		$input = _empty_input;
-	}
-	print $soap ->$service( SOAP::Data->type( 'string' => "$input" ) )->result;
+    # calling a real service, using SOAP
+    my $soap = SOAP::Lite->uri("http://biomoby.org/")->proxy($opt_e)->on_fault(
+        sub {
+            my $soap = shift;
+            my $res  = shift;
+            my $msg =
+              ref $res
+              ? "--- SOAP FAULT ---\n"
+              . $res->faultcode . " "
+              . $res->faultstring
+              : "--- TRANSPORT ERROR ---\n"
+              . $soap->transport->status
+              . "\n$res\n";
+            die $msg;
+        }
+    );
+    my $input = '';
+    if ( @ARGV > 0 ) {
+        my $data = shift;    # a file name
+        open INPUT, "<$data"
+          or die "Cannot read '$data': $!\n";
+        while (<INPUT>) { $input .= $_; }
+        close INPUT;
+    } else {
+        $input = _empty_input;
+    }
+    print $soap ->$service( SOAP::Data->type( 'string' => "$input" ) )->result;
 } elsif ($opt_c) {
 
-	# calling a real service, using cgi
-	my $ua    = LWP::UserAgent->new;
-	my $input = '';
-	if ( @ARGV > 0 ) {
-		my $data = shift;    # a file name
-		open INPUT, "<$data"
-		  or die "Cannot read '$data': $!\n";
-		while (<INPUT>) { $input .= $_; }
-		close INPUT;
-	} else {
-		$input = _empty_input;
-	}
-	my $req = HTTP::Request->new( POST => $opt_c );
-	$req->content_type('application/x-www-form-urlencoded');
-	$req->content("data=$input");
-	print "\n" . $ua->request($req)->as_string . "\n";
+    # calling a real service, using cgi
+    my $ua    = LWP::UserAgent->new;
+    my $input = '';
+    if ( @ARGV > 0 ) {
+        my $data = shift;    # a file name
+        open INPUT, "<$data"
+          or die "Cannot read '$data': $!\n";
+        while (<INPUT>) { $input .= $_; }
+        close INPUT;
+    } else {
+        $input = _empty_input;
+    }
+    my $req = HTTP::Request->new( POST => $opt_c );
+    $req->content_type('application/x-www-form-urlencoded');
+    $req->content("data=$input");
+    print "\n" . $ua->request($req)->as_string . "\n";
 } elsif ($opt_C) {
-	my $input = '';
-	if ( @ARGV > 0 ) {
-		my $data = shift;    # a file name
-		open INPUT, "<$data"
-		  or die "Cannot read '$data': $!\n";
-		while (<INPUT>) { $input .= $_; }
-		close INPUT;
-	} else {
-		$input = _empty_input;
-	}
-
-	# extract all of the query ids from $input
-	my @query_ids = _get_query_ids($input);
-	my %completed = ();
-	print "Sending the following data to $opt_C\n$input\n";
-
-	# post to the web service
-	my $ua = LWP::UserAgent->new;
-	my $req = HTTP::Request->new( POST => $opt_C );
-	$req->content_type('text/xml');
-	$req->content("$input");
-
-	# get the response
-	my $response = $ua->request($req);
-
-	# do we have an error?
-	die "Error calling service: " . $response->status_line
-	  if ( $response->code != 200 );
-	my $epr    = $response->header("moby-wsrf");
-	my $parser = XML::LibXML->new();
-	my $doc    = $parser->parse_string($epr);
-	my $ID =
-	  $doc->getElementsByLocalName("ServiceInvocationId")->get_node(1)->textContent;
-	$ID =~ s/ //gi;
-	my $searchTerm = "";
-	$searchTerm .=
+    my $input = '';
+    if ( @ARGV > 0 ) {
+        my $data = shift;    # a file name
+        open INPUT, "<$data"
+          or die "Cannot read '$data': $!\n";
+        while (<INPUT>) { $input .= $_; }
+        close INPUT;
+    } else {
+        $input = _empty_input;
+    }
+
+    # extract all of the query ids from $input
+    my @query_ids = _get_query_ids($input);
+    my %completed = ();
+    print "Sending the following data to $opt_C\n$input\n";
+
+    # post to the web service
+    my $ua = LWP::UserAgent->new;
+    my $req = HTTP::Request->new( POST => $opt_C );
+    $req->content_type('text/xml');
+    $req->content("$input");
+
+    # get the response
+    my $response = $ua->request($req);
+
+    # do we have an error?
+    die "Error calling service: " . $response->status_line
+      if ( $response->code != 200 );
+    my $epr    = $response->header("moby-wsrf");
+    my $parser = XML::LibXML->new();
+    my $doc    = $parser->parse_string($epr);
+    my $ID =
+      $doc->getElementsByLocalName("ServiceInvocationId")->get_node(1)
+      ->textContent;
+    $ID =~ s/ //gi;
+    my $searchTerm = "";
+    $searchTerm .=
 "<wsrf-rp:GetMultipleResourceProperties xmlns:wsrf-rp='$WSRF::Constants::WSRP' xmlns:mobyws='$WSRF::Constants::MOBY'>";
 
-	foreach my $queryID (@query_ids) {
-		$searchTerm .=
-		    "<wsrf-rp:ResourceProperty>mobyws:status_" 
-		  . $queryID
-		  . "</wsrf-rp:ResourceProperty>";
-	}
-	$searchTerm .= "</wsrf-rp:GetMultipleResourceProperties>";
-	my $header = _moby_wsrf_header( $opt_C, $ID );
-	$header =~ s/\n//gi;
+    foreach my $queryID (@query_ids) {
+        $searchTerm .=
+            "<wsrf-rp:ResourceProperty>mobyws:status_" 
+          . $queryID
+          . "</wsrf-rp:ResourceProperty>";
+    }
+    $searchTerm .= "</wsrf-rp:GetMultipleResourceProperties>";
+    my $header = _moby_wsrf_header( $opt_C, $ID );
+    $header =~ s/\n//gi;
 
-	# poll
-	while (1) {
+    # poll
+    while (1) {
 
 #
 # Poll the service for the status of all query IDs associated with this service invocation.
 #
-		$req = HTTP::Request->new( POST => $opt_C . "/status" );
-		$req->header( "moby-wsrf" => $header );
-		$req->content_type('application/x-www-form-urlencoded');
-		$req->content("data=$searchTerm");
-		$response = $ua->request($req);
-		my $xml    = $response->content();
-		my $parser = XML::LibXML->new();
-		my $doc    = $parser->parse_string($xml);
-
-		foreach my $queryID (@query_ids) {
-
-			# skip poll if current job completed
-			next if $completed{$queryID};
-
-			#
-			# Find status of this query ID.
-			#
-			#my $xpath = "//*[local-name() = 'analysis_event'][\@*='$queryID']";
-			#my $xpath = "//analysis_event[\@id='$queryID']";
-			my $xpath = "//*[local-name() = 'analysis_event'][\@id='$queryId']";
-			my $xpc = XML::LibXML::XPathContext->new();
-			my $nodes = $xpc->findnodes( $xpath, $doc->documentElement );
+        $req = HTTP::Request->new( POST => $opt_C . "/status" );
+        $req->header( "moby-wsrf" => $header );
+        $req->content_type('application/x-www-form-urlencoded');
+        $req->content("data=$searchTerm");
+        $response = $ua->request($req);
+        my $xml    = $response->content();
+        my $parser = XML::LibXML->new();
+        my $doc    = $parser->parse_string($xml);
+
+        foreach my $queryID (@query_ids) {
+
+            # skip poll if current job completed
+            next if $completed{$queryID};
+
+           #
+           # Find status of this query ID.
+           #
+           #my $xpath = "//*[local-name() = 'analysis_event'][\@id='$queryID']";
+           #my $xpath = "//analysis_event[\@id='$queryID']";
+            my $xpath = "//*[local-name() = 'analysis_event'][\@*='$queryID']";
+            my $xpc   = XML::LibXML::XPathContext->new();
+            my $nodes = $xpc->findnodes( $xpath, $doc->documentElement );
 
-			# should only be one ...
-			die
+            # should only be one ...
+            die
 "Service returned unexpected/malformed resource property XML, which should contain service status info."
-			  unless $nodes->size() == 1;
-			my $status =
-			  LSAE::AnalysisEventBlock->new( $nodes->get_node(1)->toString() );
-			&_check_status( $status, \%completed, $queryID, $opt_v );
-		}
-		last if scalar keys(%completed) == $#query_ids + 1;
-		my $interval = 20;
-		print "Checking job state again in $interval seconds.\n\n" if $opt_v;
-		sleep($interval);
-	}
-	last if scalar keys(%completed) == $#query_ids + 1;
-}
-
-# task is finished, obtain the result
-$searchTerm = "";
-$searchTerm .=
+              unless $nodes->size() == 1;
+            my $status =
+              LSAE::AnalysisEventBlock->new( $nodes->get_node(1)->toString() );
+            &_check_status( $status, \%completed, $queryID, $opt_v );
+        }    #end foreach
+        last if scalar keys(%completed) == $#query_ids + 1;
+        my $interval = 20;
+        print "Checking job state again in $interval seconds.\n\n" if $opt_v;
+        sleep($interval);
+    } #end while(1)
+    #last if scalar keys(%completed) == $#query_ids + 1;
+
+    # task is finished, obtain the result
+    $searchTerm = "";
+    $searchTerm .=
 "<wsrf-rp:GetMultipleResourceProperties xmlns:wsrf-rp='$WSRF::Constants::WSRP' xmlns:mobyws='$WSRF::Constants::MOBY'>";
-foreach my $queryID (@query_ids) {
-	$searchTerm .=
-	    "<wsrf-rp:ResourceProperty>mobyws:result_" 
-	  . $queryID
-	  . "</wsrf-rp:ResourceProperty>";
-}
-$searchTerm .= "</wsrf-rp:GetMultipleResourceProperties>";
-$header = _moby_wsrf_header( $opt_C, $ID );
-$header =~ s/\n//gi;
-$req = HTTP::Request->new( POST => $opt_C . "/results" );
-$req->header( "moby-wsrf" => $header );
-$req->content_type('application/x-www-form-urlencoded');
-$req->content("data=$searchTerm");
-$response = $ua->request($req);
-
-# create nicely formatted XML
-$parser = XML::LibXML->new();
-$doc    = $parser->parse_string( $response->content );
-print "\n" . $doc->toString(1);
-
-# destroy the job
-$searchTerm = '<Destroy xmlns="http://docs.oasis-open.org/wsrf/rl-2"/> ';
-$req = HTTP::Request->new( POST => $opt_C . "/destroy" );
-$req->header( "moby-wsrf" => $header );
-$req->content_type('application/x-www-form-urlencoded');
-$req->content("data=$searchTerm");
-$response = $ua->request($req);
-print "Destroying the resource returned:\n\t" . $response->content . "\n" if $opt_v;
-}
-elsif ($opt_a) {
-
-  # calling a real service, using async soap
-  # call using async mode for async service ... _submit
-  $service .= "_submit";
-
-  # set up the wsrf call
-  my $soap = WSRF::Lite->proxy($opt_a)->uri($WSRF::Constants::MOBY)->on_fault(
-	  sub {
-		  my $soap = shift;
-		  my $res  = shift;
-		  my $msg =
-			ref $res
-			? "--- SOAP FAULT ---\n" . $res->faultcode . " " . $res->faultstring
-			: "--- TRANSPORT ERROR ---\n" . $soap->transport->status . "\n$res\n";
-		  die $msg;
-	  }
-  );
-
-  # get the input
-  my $input = '';
-  if ( @ARGV > 0 ) {
-	  my $data = shift;    # a file name
-	  open INPUT, "<$data"
-		or die "Cannot read '$data': $!\n";
-	  while (<INPUT>) { $input .= $_; }
-	  close INPUT;
-  } else {
-	  $input = _empty_input;
-  }
-
-  # extract all of the query ids from $input
-  my @query_ids = _get_query_ids($input);
-  print "\nSending the following data to $service asynchronously:\n", $input, "\n"
-	if $opt_v;
-
-  # submit the job
-  my $epr = ( $soap->$service( SOAP::Data->type( 'string' => "$input" ) )->result );
-
-  # Get address from the returned Endpoint Reference
-  my $address = $epr->{'EndpointReference'}->{Address};
-
-  # Get resource identifier from the returned Endpoint Reference
-  my $identifier =
-	$epr->{'EndpointReference'}->{ReferenceParameters}->{ServiceInvocationId};
-
-  # Compose the Endpoint Reference
-  my $EPR = WSRF::WS_Address->new();
-  $EPR->Address($address);
-  $EPR->ReferenceParameters(   '<mobyws:ServiceInvocationId xmlns:mobyws="'
-							 . $WSRF::Constants::MOBY . '">'
-							 . $identifier
-							 . '</mobyws:ServiceInvocationId>' );
-  my %completed = ();
-  while (1) {
-	  foreach my $queryID (@query_ids) {
-
-		  # skip poll if current job completed
-		  next if $completed{$queryID};
-
-		  # poll the service for given query ID
-		  my $searchTerm = "";
-		  $searchTerm .=
+    foreach my $queryID (@query_ids) {
+        $searchTerm .=
+            "<wsrf-rp:ResourceProperty>mobyws:result_" 
+          . $queryID
+          . "</wsrf-rp:ResourceProperty>";
+    }
+    $searchTerm .= "</wsrf-rp:GetMultipleResourceProperties>";
+    $header = _moby_wsrf_header( $opt_C, $ID );
+    $header =~ s/\n//gi;
+    $req = HTTP::Request->new( POST => $opt_C . "/results" );
+    $req->header( "moby-wsrf" => $header );
+    $req->content_type('application/x-www-form-urlencoded');
+    $req->content("data=$searchTerm");
+    $response = $ua->request($req);
+
+    # create nicely formatted XML
+    $parser = XML::LibXML->new();
+    $doc    = $parser->parse_string( $response->content );
+    print "\n" . $doc->toString(1);
+
+    # destroy the job
+    $searchTerm = '<Destroy xmlns="http://docs.oasis-open.org/wsrf/rl-2"/> ';
+    $req = HTTP::Request->new( POST => $opt_C . "/destroy" );
+    $req->header( "moby-wsrf" => $header );
+    $req->content_type('application/x-www-form-urlencoded');
+    $req->content("data=$searchTerm");
+    $response = $ua->request($req);
+    print "Destroying the resource returned:\n\t" . $response->content . "\n"
+      if $opt_v;
+} elsif ($opt_a) {
+
+    # calling a real service, using async soap
+    # call using async mode for async service ... _submit
+    $service .= "_submit";
+
+    # set up the wsrf call
+    my $soap = WSRF::Lite->proxy($opt_a)->uri($WSRF::Constants::MOBY)->on_fault(
+        sub {
+            my $soap = shift;
+            my $res  = shift;
+            my $msg =
+              ref $res
+              ? "--- SOAP FAULT ---\n"
+              . $res->faultcode . " "
+              . $res->faultstring
+              : "--- TRANSPORT ERROR ---\n"
+              . $soap->transport->status
+              . "\n$res\n";
+            die $msg;
+        }
+    );
+
+    # get the input
+    my $input = '';
+    if ( @ARGV > 0 ) {
+        my $data = shift;    # a file name
+        open INPUT, "<$data"
+          or die "Cannot read '$data': $!\n";
+        while (<INPUT>) { $input .= $_; }
+        close INPUT;
+    } else {
+        $input = _empty_input;
+    }
+
+    # extract all of the query ids from $input
+    my @query_ids = _get_query_ids($input);
+    print "\nSending the following data to $service asynchronously:\n", $input,
+      "\n"
+      if $opt_v;
+
+    # submit the job
+    my $epr =
+      ( $soap->$service( SOAP::Data->type( 'string' => "$input" ) )->result );
+
+    # Get address from the returned Endpoint Reference
+    my $address = $epr->{'EndpointReference'}->{Address};
+
+    # Get resource identifier from the returned Endpoint Reference
+    my $identifier =
+      $epr->{'EndpointReference'}->{ReferenceParameters}->{ServiceInvocationId};
+
+    # Compose the Endpoint Reference
+    my $EPR = WSRF::WS_Address->new();
+    $EPR->Address($address);
+    $EPR->ReferenceParameters(   '<mobyws:ServiceInvocationId xmlns:mobyws="'
+                               . $WSRF::Constants::MOBY . '">'
+                               . $identifier
+                               . '</mobyws:ServiceInvocationId>' );
+    my %completed = ();
+    while (1) {
+        foreach my $queryID (@query_ids) {
+
+            # skip poll if current job completed
+            next if $completed{$queryID};
+
+            # poll the service for given query ID
+            my $searchTerm = "";
+            $searchTerm .=
 "<wsrp:ResourceProperty xmlns:wsrp='$WSRF::Constants::WSRP' xmlns:mobyws='$WSRF::Constants::MOBY'>";
-		  $searchTerm .= "mobyws:status_" . $queryID;
-		  $searchTerm .= "</wsrp:ResourceProperty>";
-		  $soap = WSRF::Lite->uri($WSRF::Constants::WSRP)->on_action(
-			  sub {
-				  sprintf '%s/%s/%sRequest', $WSRF::Constants::WSRPW, $_[1], $_[1];
-			  }
-			)->wsaddress($EPR)
-			->GetMultipleResourceProperties(
-										  SOAP::Data->value($searchTerm)->type('xml') );
-		  my $parser = XML::LibXML->new();
-		  my $xml    = $soap->raw_xml;
-		  my $doc    = $parser->parse_string($xml);
-		  $soap = $doc->getDocumentElement();
-		  my $prop_name = "status_" . $queryID;
-		  my ($prop) =
-			   $soap->getElementsByTagNameNS( $WSRF::Constants::MOBY, $prop_name )
-			|| $soap->getElementsByTagName($prop_name);
-		  my $event = $prop->getFirstChild->toString
-			unless ref $prop eq "XML::LibXML::NodeList";
-		  $event = $prop->pop()->getFirstChild->toString
-			if ref $prop eq "XML::LibXML::NodeList";
-		  my $status = LSAE::AnalysisEventBlock->new($event);
-
-		  if ( $status->type == LSAE_PERCENT_PROGRESS_EVENT ) {
-			  if ( $status->percentage >= 100 ) {
-				  $completed{$queryID} = 1;
-			  } elsif ( $status->percentage < 100 ) {
-				  print "Current percentage: ", $status->percentage, "\n" if $opt_v;
-				  sleep(20);
-			  } else {
-				  die "ERROR:  analysis event block not well formed.\n";
-			  }
-		  } elsif ( $status->type == LSAE_STATE_CHANGED_EVENT ) {
-			  if (    ( $status->new_state =~ m"completed"i )
-				   || ( $status->new_state =~ m"terminated_by_request"i )
-				   || ( $status->new_state =~ m"terminated_by_error"i ) )
-			  {
-				  $completed{$queryID} = 1;
-			  } elsif (    ( $status->new_state =~ m"created"i )
-						|| ( $status->new_state =~ m"running"i ) )
-			  {
-				  print "Current State: ", $status->new_state, "\n" if $opt_v;
-				  sleep(20);
-			  } else {
-				  die "ERROR:  analysis event block not well formed.\n";
-			  }
-		  } elsif ( $status->type == LSAE_STEP_PROGRESS_EVENT ) {
-			  if ( $status->steps_completed >= $status->total_steps ) {
-				  $completed{$queryID} = 1;
-			  } elsif ( $status->steps_completed < $status->total_steps ) {
-				  print "Steps completed: ", $status->steps_completed, "\n" if $opt_v;
-				  sleep(20);
-			  } else {
-				  die "ERROR:  analysis event block not well formed.\n";
-			  }
-		  } elsif ( $status->type == LSAE_TIME_PROGRESS_EVENT ) {
-			  if ( $status->remaining == 0 ) {
-				  $completed{$queryID} = 1;
-			  } elsif ( $status->remaining > 0 ) {
-				  print "Time remaining: ", $status->remaining, "\n" if $opt_v;
-				  sleep(20);
-			  } else {
-				  die "ERROR:  analysis event block not well formed.\n";
-			  }
-		  }
-	  }
-	  last if scalar keys(%completed) == $#query_ids + 1;
-  }
-  foreach my $queryID (@query_ids) {
+            $searchTerm .= "mobyws:status_" . $queryID;
+            $searchTerm .= "</wsrp:ResourceProperty>";
+            $soap = WSRF::Lite->uri($WSRF::Constants::WSRP)->on_action(
+                sub {
+                    sprintf '%s/%s/%sRequest', $WSRF::Constants::WSRPW, $_[1],
+                      $_[1];
+                }
+              )->wsaddress($EPR)
+              ->GetMultipleResourceProperties(
+                                  SOAP::Data->value($searchTerm)->type('xml') );
+            my $parser = XML::LibXML->new();
+            my $xml    = $soap->raw_xml;
+            my $doc    = $parser->parse_string($xml);
+            $soap = $doc->getDocumentElement();
+            my $prop_name = "status_" . $queryID;
+            my ($prop) =
+              $soap->getElementsByTagNameNS( $WSRF::Constants::MOBY,
+                                             $prop_name )
+              || $soap->getElementsByTagName($prop_name);
+            my $event = $prop->getFirstChild->toString
+              unless ref $prop eq "XML::LibXML::NodeList";
+            $event = $prop->pop()->getFirstChild->toString
+              if ref $prop eq "XML::LibXML::NodeList";
+            my $status = LSAE::AnalysisEventBlock->new($event);
+
+            if ( $status->type == LSAE_PERCENT_PROGRESS_EVENT ) {
+                if ( $status->percentage >= 100 ) {
+                    $completed{$queryID} = 1;
+                } elsif ( $status->percentage < 100 ) {
+                    print "Current percentage: ", $status->percentage, "\n"
+                      if $opt_v;
+                    sleep(20);
+                } else {
+                    die "ERROR:  analysis event block not well formed.\n";
+                }
+            } elsif ( $status->type == LSAE_STATE_CHANGED_EVENT ) {
+                if (    ( $status->new_state =~ m"completed"i )
+                     || ( $status->new_state =~ m"terminated_by_request"i )
+                     || ( $status->new_state =~ m"terminated_by_error"i ) )
+                {
+                    $completed{$queryID} = 1;
+                } elsif (    ( $status->new_state =~ m"created"i )
+                          || ( $status->new_state =~ m"running"i ) )
+                {
+                    print "Current State: ", $status->new_state, "\n" if $opt_v;
+                    sleep(20);
+                } else {
+                    die "ERROR:  analysis event block not well formed.\n";
+                }
+            } elsif ( $status->type == LSAE_STEP_PROGRESS_EVENT ) {
+                if ( $status->steps_completed >= $status->total_steps ) {
+                    $completed{$queryID} = 1;
+                } elsif ( $status->steps_completed < $status->total_steps ) {
+                    print "Steps completed: ", $status->steps_completed, "\n"
+                      if $opt_v;
+                    sleep(20);
+                } else {
+                    die "ERROR:  analysis event block not well formed.\n";
+                }
+            } elsif ( $status->type == LSAE_TIME_PROGRESS_EVENT ) {
+                if ( $status->remaining == 0 ) {
+                    $completed{$queryID} = 1;
+                } elsif ( $status->remaining > 0 ) {
+                    print "Time remaining: ", $status->remaining, "\n"
+                      if $opt_v;
+                    sleep(20);
+                } else {
+                    die "ERROR:  analysis event block not well formed.\n";
+                }
+            }
+        }
+        last if scalar keys(%completed) == $#query_ids + 1;
+    }
+    foreach my $queryID (@query_ids) {
 
-	  # get the result
-	  my $searchTerm .=
+        # get the result
+        my $searchTerm .=
 "<wsrp:ResourceProperty xmlns:wsrp='$WSRF::Constants::WSRP' xmlns:mobyws='$WSRF::Constants::MOBY'>";
-	  $searchTerm .= "mobyws:result_" . $queryID;
-	  $searchTerm .= "</wsrp:ResourceProperty>";
-	  my $ans = WSRF::Lite->uri($WSRF::Constants::WSRP)->on_action(
-		  sub {
-			  sprintf '%s/%s/%sRequest', $WSRF::Constants::WSRPW, $_[1], $_[1];
-		  }
-		)->wsaddress($EPR)
-		->GetMultipleResourceProperties( SOAP::Data->value($searchTerm)->type('xml') );
-	  die "ERROR:  " . $ans->faultstring if ( $ans->fault );
-	  my $parser = XML::LibXML->new();
-	  my $xml    = $ans->raw_xml;
-	  my $doc    = $parser->parse_string($xml);
-	  $soap = $doc->getDocumentElement();
-	  my $prop_name = "result_" . $queryID;
-	  my ($prop) = $soap->getElementsByTagNameNS( $WSRF::Constants::MOBY, $prop_name )
-		|| $soap->getElementsByTagName($prop_name);
-	  my $result = $prop->getFirstChild->toString
-		unless ref $prop eq "XML::LibXML::NodeList";
-	  $result = $prop->pop()->getFirstChild->toString
-		if ref $prop eq "XML::LibXML::NodeList";
-	  print $result;
-  }
-
-  # destroy the result
-  my $ans = WSRF::Lite->uri($WSRF::Constants::WSRL)->on_action(
-	  sub {
-		  sprintf '%s/ImmediateResourceTermination/%sRequest',
-			$WSRF::Constants::WSRLW, $_[1];
-	  }
-  )->wsaddress($EPR)->Destroy();
+        $searchTerm .= "mobyws:result_" . $queryID;
+        $searchTerm .= "</wsrp:ResourceProperty>";
+        my $ans = WSRF::Lite->uri($WSRF::Constants::WSRP)->on_action(
+            sub {
+                sprintf '%s/%s/%sRequest', $WSRF::Constants::WSRPW, $_[1],
+                  $_[1];
+            }
+          )->wsaddress($EPR)
+          ->GetMultipleResourceProperties(
+                                  SOAP::Data->value($searchTerm)->type('xml') );
+        die "ERROR:  " . $ans->faultstring if ( $ans->fault );
+        my $parser = XML::LibXML->new();
+        my $xml    = $ans->raw_xml;
+        my $doc    = $parser->parse_string($xml);
+        $soap = $doc->getDocumentElement();
+        my $prop_name = "result_" . $queryID;
+        my ($prop) =
+             $soap->getElementsByTagNameNS( $WSRF::Constants::MOBY, $prop_name )
+          || $soap->getElementsByTagName($prop_name);
+        my $result = $prop->getFirstChild->toString
+          unless ref $prop eq "XML::LibXML::NodeList";
+        $result = $prop->pop()->getFirstChild->toString
+          if ref $prop eq "XML::LibXML::NodeList";
+        print $result;
+    }
+
+    # destroy the result
+    my $ans = WSRF::Lite->uri($WSRF::Constants::WSRL)->on_action(
+        sub {
+            sprintf '%s/ImmediateResourceTermination/%sRequest',
+              $WSRF::Constants::WSRLW, $_[1];
+        }
+    )->wsaddress($EPR)->Destroy();
 } else {
 
-  # calling a local service module, without SOAP
-  my $data;
-  if ( @ARGV > 0 ) {
-	  $data = shift;    # a file name
-  } else {
-	  use File::Temp qw( tempfile );
-	  my $fh;
-	  ( $fh, $data ) = tempfile( UNLINK => 1 );
-	  print $fh _empty_input();
-	  close $fh;
-  }
-  eval "require $module" or croak $@;
-  eval {
-	  my $target = new $module;
-	  print $target->$service($data), "\n";
-  } or croak $@;
+    # calling a local service module, without SOAP
+    my $data;
+    if ( @ARGV > 0 ) {
+        $data = shift;    # a file name
+    } else {
+        use File::Temp qw( tempfile );
+        my $fh;
+        ( $fh, $data ) = tempfile( UNLINK => 1 );
+        print $fh _empty_input();
+        close $fh;
+    }
+    eval "require $module" or croak $@;
+    eval {
+        my $target = new $module;
+        print $target->$service($data), "\n";
+    } or croak $@;
 }
 
 sub _moby_wsrf_header {
-	my ( $url, $id ) = @_;
-	return <<"END OF XML";
+    my ( $url, $id ) = @_;
+    return <<"END OF XML";
 <moby-wsrf>
 <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest</wsa:Action>
 <wsa:To xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://www.w3.org/2005/08/addressing" wsu:Id="To">$url</wsa:To>




More information about the MOBY-guts mailing list