File Coverage

blib/lib/ebXML.pm
Criterion Covered Total %
statement 10 12 83.3
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 14 16 87.5


line stmt bran cond sub pod time code
1             package ebXML;
2              
3             # standard
4 1     1   30631 use strict;
  1         3  
  1         44  
5 1     1   6 use vars qw($AUTOLOAD $VERSION);
  1         2  
  1         71  
6 1     1   1858 use Data::Dumper;
  1         14886  
  1         77  
7              
8             # XML stuff
9 1     1   489 use XML::Xerces;
  0            
  0            
10             use ebXML::Message;
11              
12             # Xerces parsers (one for Schema, DTD and neither)
13             my $validate = $XML::Xerces::AbstractDOMParser::Val_Auto;
14             my $schemaparser = XML::Xerces::XercesDOMParser->new();
15             my $dtdparser = XML::Xerces::XercesDOMParser->new();
16             my $plainparser = XML::Xerces::XercesDOMParser->new();
17             my $error_handler = XML::Xerces::PerlErrorHandler->new();
18             my $c = 0;
19             foreach ( $schemaparser, $dtdparser, $plainparser) {
20             $_->setValidationScheme ($validate);
21             $_->setDoNamespaces (1);
22             $_->setCreateEntityReferenceNodes(1);
23             $_->setErrorHandler($error_handler);
24             }
25             $schemaparser->setDoSchema (1);
26              
27             $VERSION = 0.01;
28              
29             =head1 NAME
30              
31             ebXML - a module for ebXML message services
32              
33             =head1 DESCRIPTION
34              
35             This module provides some basic ebXML Messaging functionality
36             using ebXML::Message objects and XML::Xerces XML parser.
37              
38             =head1 SYNOPSIS
39              
40             use ebXML;
41             use ebXML::Message;
42              
43             my $message = ebXML->process_header($xml);
44              
45             =head1 METHODS
46              
47             =over
48              
49             =cut
50              
51             # Message Packaging.
52             # The final enveloping of an ebXML Message (ebXML header elements and payload) into its SOAP Messages with Attachments container.
53              
54              
55             sub build_header {
56             warn "error : not implemented yet\n";
57             return 0;
58             }
59              
60             sub build_message {
61             warn "error : not implemented yet\n";
62             return 0;
63             }
64              
65              
66             #
67             # Processing functions
68              
69             =head2 process_header($request)
70              
71             returns ebXML::Message object with status, etc set
72              
73             my $message = process_header($request, %options) or die "err:$!";
74              
75             if ($message->isActionRequired) {
76             # do stuff
77              
78             ebXML->add_to_queue($message);
79              
80             log("foo\n");
81              
82             . . . do stuff . . .
83              
84             } else {
85             # leave it to the module to handler error, ack, duplicates, etc
86             log ("bar\n");
87             }
88              
89             $reponse->set_message($message);
90              
91             $reponse->issue();
92              
93             =cut
94             sub process_header {
95             my ($class, $xml, %options) = (@_);
96              
97             my $parser = $plainparser;
98             my $tmpfile = "/tmp/ebXML-".time.".xml";
99             open (XML,">$tmpfile") or die "couldn't open tmp file ($tmpfile) : $! \n";
100             print XML $xml;
101             close XML;
102             my $error_handler = XML::Xerces::PerlErrorHandler->new();
103             $parser->setErrorHandler($error_handler);
104             eval { $parser->parse ($tmpfile); };
105             XML::Xerces::error($@) if ($@);
106              
107             my $doc = $parser->getDocument ();
108             my $message = ebXML::Message->new_from_DOMDocument ($doc);
109              
110             unlink $tmpfile;
111              
112             return $message;
113             }
114              
115             =head2 process_message($request)
116              
117             =cut
118             sub process_message {
119             my ($class, $xml, %options) = (@_);
120              
121             my $parser = $plainparser;
122             my $tmpfile = "/tmp/ebXML-".time.".xml";
123             open (XML,">$tmpfile") or die "couldn't open tmp file ($tmpfile) : $! \n";
124             print XML $xml;
125             close XML;
126             my $error_handler = XML::Xerces::PerlErrorHandler->new();
127             $parser->setErrorHandler($error_handler);
128             eval { $parser->parse ($tmpfile); };
129             XML::Xerces::error($@) if ($@);
130              
131             my $doc = $parser->getDocument ();
132             my $message = ebXML::Message->new_from_DOMDocument ($doc);
133              
134             unlink $tmpfile;
135              
136             return $message;
137             }
138              
139             =back
140              
141             =head1 AUTHOR
142              
143             Aaron Trevena
144              
145             =head1 COPYRIGHT
146              
147             (C)Copyright 2003 Surrey Technologies, Ltd
148              
149             =cut
150              
151             ###########################################################
152             ###########################################################
153              
154             1;