- From: Philippe Le Hegaret via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 09 Jul 2007 20:33:17 +0000
- To: public-ws-addressing-eds@w3.org
Update of /sources/public/2004/ws/addressing/testsuite/documents/echo
In directory hutz:/tmp/cvs-serv18419/documents/echo
Added Files:
gen-mids.pl
Log Message:
Moved from cvs.w3.org
--- NEW FILE: gen-mids.pl ---
# Tired to inserting MessageID and RelatesTo in the examples?
# Try running this
use strict;
use XML::Dom;
my $testcases = '../../testcases/testcases.xml';
my $parser = new XML::DOM::Parser;
my $doc = $parser->parsefile($testcases);
my $nodes = $doc->getElementsByTagName('message-exchange');
my $n = $nodes->getLength();
my @docs;
for (my $i = 0; $i < $n; $i++) {
my $node = $nodes->item($i);
my @messages;
my $nc = $node->getChildNodes();
my $nnc = $nc->getLength();
for (my $j = 0; $j < $nnc; $j++) {
my $m = $nc->item($j);
if ($m->getNodeType() == 1 && $m->getNodeName() eq "message") {
my $d = $m->getAttributeNode('document');
push(@messages, $d->getValue());
}
}
if ($#messages == 1) {
push(@docs, @messages);
}
}
# Check for duplicates
my $i = 0;
my $errors = 0;
my %responses;
while ($i < $#docs) {
$i++;
if (! $responses{$docs[$i]}) {
$responses{$docs[$i]} = 1;
} else {
printf("Error: duplicate %s\n", $docs[$i]);
$errors++;
}
$i++;
}
if ($errors > 0) {
exit(1);
}
sub genUniqueHeader() {
my ($filename, $name, $value) = @_;
my $parser = new XML::DOM::Parser;
my $doc = $parser->parsefile($filename);
my $nodes = $doc->getElementsByTagName($name);
my $l = $nodes->getLength();
if ($l > 1) {
# Skip duplicate MID message
return '';
}
my $mid = $doc->createElement($name);
my $textnode = $doc->createTextNode($value);
my $l = $nodes->getLength();
$mid->appendChild($textnode);
my $hnodes = $doc->getElementsByTagName('env:Header');
if ($hnodes->getLength() == 0) {
$hnodes = $doc->getElementsByTagName('soap11:Header');
}
if ($hnodes->getLength() == 0) {
$hnodes = $doc->getElementsByTagName('soap12:Header');
}
if ($hnodes->getLength() == 0) {
print "Ouch, what were you thinking when you started using a DOM Level 1 module, Hugo?!\n";
exit(2);
}
my $header = $hnodes->item(0);
if ($l == 1) {
my $oldmid = $nodes->item(0);
$header->replaceChild($mid, $oldmid);
} else {
$header->appendChild($mid);
my $textnode = $doc->createTextNode("\n");
$header->appendChild($textnode);
}
return $doc->toString();
}
sub save() {
my ($fn, $s) = @_;
# Don't touch the mustUnderstand stuff!
if ($fn eq '../notify/soap12/fault5.xml') {
print "U-turn! Don't touch this one!\n";
return;
}
open(F, "> $fn");
print F $s;
close(F);
}
# Generate message ids
my $i = 0;
while ($i < $#docs) {
my $filename = "../$docs[$i++]";
print "$filename\n";
my $uuidgen = "urn:uuid:" . `uuidgen`;
chomp($uuidgen);
my $out = &genUniqueHeader($filename, "wsa:MessageID", $uuidgen);
if ($out eq '') {
# Skipping duplicate ID test
$i++;
next;
}
&save($filename, $out);
$filename = "../$docs[$i]";
print "$filename\n";
&save($filename, &genUniqueHeader($filename, "wsa:RelatesTo", $uuidgen));
$uuidgen = "urn:uuid:" . `uuidgen`;
chomp($uuidgen);
&save($filename, &genUniqueHeader($filename, "wsa:MessageID", $uuidgen));
$i++;
}
Received on Monday, 9 July 2007 20:33:19 UTC