import SOAP-WSDL 2.00_33 from CPAN
git-cpan-module: SOAP-WSDL git-cpan-version: 2.00_33 git-cpan-authorid: MKUTTER git-cpan-file: authors/id/M/MK/MKUTTER/SOAP-WSDL-2.00_33.tar.gz
This commit is contained in:
1 parent
51db446428
commit
0cbf981665
146 files changed
+3364
-1280
No files matched your search
@@ -1,8 +1,5 @@
|
||||
[% USE XSD -%]
|
||||
[% interface_name = interface_prefix _ '::'
|
||||
_ service.get_name.replace('\.', '::') _ '::'
|
||||
_ port.get_name.replace('^.+\.','');
|
||||
interface_name = interface_name.replace('-','_'); -%]
|
||||
[% interface_name = XSD.create_interface_name(service, port) -%]
|
||||
package [% interface_name %];
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -11,20 +8,20 @@ use Scalar::Util qw(blessed);
|
||||
use base qw(SOAP::WSDL::Client::Base);
|
||||
|
||||
# only load if it hasn't been loaded before
|
||||
require [% typemap_prefix %]::[% service.get_name.replace('\.', '::').replace('-', '_') %]
|
||||
if not [% typemap_prefix %]::[% service.get_name.replace('\.', '::').replace('-', '_') %]->can('get_class');
|
||||
require [% XSD.create_typemap_name(service) %]
|
||||
if not [% XSD.create_typemap_name(service) %]->can('get_class');
|
||||
|
||||
sub START {
|
||||
$_[0]->set_proxy('[% port.first_address.get_location %]') if not $_[2]->{proxy};
|
||||
$_[0]->set_class_resolver('[% typemap_prefix %]::[% service.get_name.replace('\.', '::').replace('-', '_') %]')
|
||||
$_[0]->set_class_resolver('[% XSD.create_typemap_name(service) %]')
|
||||
if not $_[2]->{class_resolver};
|
||||
}
|
||||
|
||||
[% binding = definitions.find_binding( port.expand( port.get_binding ) );
|
||||
FOREACH operation = binding.get_operation;
|
||||
%][% INCLUDE Interface/Operation.tt %]
|
||||
[%
|
||||
|
||||
[%
|
||||
END;
|
||||
%]
|
||||
|
||||
@@ -83,7 +80,6 @@ All arguments are forwarded to L<SOAP::WSDL::Client|SOAP::WSDL::Client>.
|
||||
|
||||
[% INCLUDE Interface/POD/method_info.tt %]
|
||||
|
||||
|
||||
[% FOREACH operation = binding.get_operation;
|
||||
%][% INCLUDE Interface/POD/Operation.tt %]
|
||||
[% END %]
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
[% RETURN IF NOT item;
|
||||
type = definitions.find_portType( binding.expand( binding.get_type ) );
|
||||
port_op = type.find_operation( definitions.get_targetNamespace, operation.get_name );
|
||||
port_op = type.find_operation( type.get_targetNamespace, operation.get_name );
|
||||
message = definitions.find_message( port_op.first_input.expand( port_op.first_input.get_message ) );
|
||||
part_from = message.get_part;
|
||||
PERL %]
|
||||
my $item = $stash->{ item };
|
||||
my $def = $stash->{ definitions };
|
||||
my $part_from = $stash->{ part_from };
|
||||
my $type_prefix = $stash->{ type_prefix };
|
||||
my $element_prefix = $stash->{ element_prefix };
|
||||
my $part_from = $stash->{ message }->get_part();
|
||||
|
||||
my @body_part_from = split m{\s}, $item->get_parts;
|
||||
|
||||
@@ -25,14 +23,17 @@
|
||||
my $name;
|
||||
($name = $part->get_element)
|
||||
? do {
|
||||
$name =~s{ ^[^:]+: }{}xms;
|
||||
$element_prefix . '::' . $name;
|
||||
}
|
||||
my $element = $def->first_types->find_element($part->expand($name));
|
||||
my $resolver = $context->plugin('XSD');
|
||||
$resolver->create_xsd_name($element);
|
||||
|
||||
}
|
||||
: ($name = $part->get_type)
|
||||
? do {
|
||||
$name =~s{ ^[^:]+: }{}xms;
|
||||
$type_prefix . '::' . $name;
|
||||
}
|
||||
my $element = $def->first_types->find_type($part->expand($name));
|
||||
my $resolver = $context->plugin('XSD');
|
||||
$resolver->create_xsd_name($element);
|
||||
}
|
||||
: die "input must have either type or element"
|
||||
}
|
||||
: ()
|
||||
@@ -44,13 +45,15 @@
|
||||
my $name;
|
||||
($name = $part->get_element)
|
||||
? do {
|
||||
$name =~s{ ^[^:]+: }{}xms;
|
||||
"$element_prefix\::$name"
|
||||
}
|
||||
my $element = $def->first_types->find_element($part->expand($name));
|
||||
my $resolver = $context->plugin('XSD');
|
||||
$resolver->create_xsd_name($element);
|
||||
}
|
||||
: ($name = $part->get_type)
|
||||
? do {
|
||||
$name =~s{ ^[^:]+: }{}xms;
|
||||
"$type_prefix\::$name"
|
||||
my $element = $def->first_types->find_type($part->expand($name));
|
||||
my $resolver = $context->plugin('XSD');
|
||||
$resolver->create_xsd_name($element);
|
||||
}
|
||||
: die "input must have either type or element";
|
||||
} @{ $part_from };
|
||||
@@ -63,7 +66,10 @@
|
||||
$stash->{ parts } = \@parts;
|
||||
|
||||
[% END %]
|
||||
'use' => '[% item.get_use %]',
|
||||
namespace => '[% item.get_namespace %]',
|
||||
encodingStyle => '[% item.get_encodingStyle %]',
|
||||
parts => [qw( [% parts.join(' ') %] )],
|
||||
[% IF item.get_use != 'literal';
|
||||
THROW NOT_SUPPORTED "Body: SOAP::WSDL supports literal encoding only - ${ item.get_use } found";
|
||||
END %]
|
||||
'use' => '[% item.get_use %]',
|
||||
namespace => '[% item.get_namespace %]',
|
||||
encodingStyle => '[% item.get_encodingStyle %]',
|
||||
parts => [qw( [% parts.join(' ') %] )],
|
||||
@@ -19,19 +19,25 @@
|
||||
my $name;
|
||||
($name = $part->get_element)
|
||||
? do {
|
||||
$name =~s{ ^[^:]+: }{}xms;
|
||||
$element_prefix . '::' . $name;
|
||||
my $element = $def->first_types->find_element($part->expand($name));
|
||||
my $resolver = $context->plugin('XSD');
|
||||
$resolver->create_xsd_name($element);
|
||||
}
|
||||
: ($name = $part->get_type)
|
||||
? do {
|
||||
$name =~s{ ^[^:]+: }{}xms;
|
||||
$type_prefix . '::' . $name;
|
||||
}
|
||||
my $element = $def->first_types->find_type($part->expand($name));
|
||||
my $resolver = $context->plugin('XSD');
|
||||
$resolver->create_xsd_name($element);
|
||||
}
|
||||
: die "input must have either type or element"
|
||||
};
|
||||
$stash->{ part_class } = $part_class;
|
||||
[% END;
|
||||
%]
|
||||
%]
|
||||
[% IF item.get_use != 'literal';
|
||||
THROW NOT_SUPPORTED "Header: SOAP::WSDL supports literal encoding only - ${ item.get_use } found";
|
||||
END %]
|
||||
|
||||
'use' => '[% item.get_use %]',
|
||||
namespace => '[% item.get_namespace %]',
|
||||
encodingStyle => '[% item.get_encodingStyle %]',
|
||||
|
||||
@@ -4,7 +4,12 @@ sub [% operation.get_name %] {
|
||||
return $self->SUPER::call({
|
||||
operation => '[% operation.get_name %]',
|
||||
soap_action => '[% operation.first_operation.get_soapAction %]',
|
||||
style => '[% operation.get_style || binding.get_style %]',
|
||||
style => [% style = operation.first_operation.get_style || binding.get_style;
|
||||
IF style != "document";
|
||||
THROW NOT_SUPPORTED "SOAP::WSDL supports document encoding only - $style found";
|
||||
END;
|
||||
-%]
|
||||
'[% style %]',
|
||||
body => {
|
||||
[% INCLUDE Interface/Body.tt( item = operation.first_input.first_body ); %]
|
||||
},
|
||||
|
||||
@@ -5,3 +5,12 @@ of the corresponding class can be passed instead of the marked hash ref.
|
||||
|
||||
You may pass any combination of objects, hash and list refs to these
|
||||
methods, as long as you meet the structure.
|
||||
|
||||
List items (i.e. multiple occurences) are not displayed in the synopsis.
|
||||
You may generally pass a list ref of hash refs (or objects) instead of a hash
|
||||
ref - this may result in invalid XML if used improperly, though. Note that
|
||||
SOAP::WSDL always expects list references at maximum depth position.
|
||||
|
||||
XML attributes are not displayed in this synopsis and cannot be set using
|
||||
hash refs. See the respective class' documentation for additional information.
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
[% node.get_annotation.0.get_documentation %]
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
[% server_name = server_prefix _ '::'
|
||||
_ service.get_name.replace('\.', '::') _ '::'
|
||||
_ port.get_name.replace('^.+\.','');
|
||||
server_name = server_name.replace('-','_'); -%]
|
||||
[% USE XSD;
|
||||
server_name = XSD.create_server_name(service, port);
|
||||
-%]
|
||||
package [% server_name %];
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -10,8 +9,8 @@ use Scalar::Util qw(blessed);
|
||||
use base qw(SOAP::WSDL::Client::Base);
|
||||
|
||||
# only load if it hasn't been loaded before
|
||||
require [% typemap_prefix %]::[% service.get_name.replace('\.', '::') %]
|
||||
if not [% typemap_prefix %]::[% service.get_name.replace('\.', '::') %]->can('get_class');
|
||||
require [% XSD.create_typemap_name(service) %]
|
||||
if not [% XSD.create_typemap_name(service) %]->can('get_class');
|
||||
|
||||
my %transport_class_of :ATTR(:name<transport_class> :default<SOAP::WSDL::Server::CGI>);
|
||||
my %transport_of :ATTR(:name<transport> :default<()>);
|
||||
@@ -31,13 +30,13 @@ sub START {
|
||||
or die "Cannot load transport class $transport_class_of{ $ident }: $@";
|
||||
$transport_of{ $ident } = $transport_class_of{ $ident }->new({
|
||||
action_map_ref => $action_map_ref,
|
||||
class_resolver => '[% typemap_prefix %]::[% service.get_name.replace('\.', '::') %]',
|
||||
class_resolver => '[% XSD.create_typemap_name(service) %]',
|
||||
dispatch_to => $dispatch_to{ $ident },
|
||||
});
|
||||
}
|
||||
|
||||
sub handle {
|
||||
$transport_of{ ${ $_[0] } }->handle();
|
||||
$transport_of{ ${ shift @_ } }->handle(@_);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#element;
|
||||
#STOP;
|
||||
-%]
|
||||
[% element_prefix %]::[% element.get_name.replace('\.', '::') %]->new([%
|
||||
[% XSD.create_xsd_name(element) %]->new([%
|
||||
type = element.first_complexType || element.first_simpleType || definitions.first_types.find_type(
|
||||
element.expand( element.get_type ) );
|
||||
INCLUDE Interface/POD/Type.tt; %]
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
package [% typemap_prefix %]::[% service.get_name.replace('\.','::') %];
|
||||
[% USE XSD %]
|
||||
package [% XSD.create_typemap_name(service) %];
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
@@ -27,7 +28,7 @@ __END__
|
||||
|
||||
[% head1 %] NAME
|
||||
|
||||
[% typemap_prefix %]::[% service.get_name.replace('\.','::').replace('-', '_') %]; - typemap for ::[% service.get_name %];
|
||||
[% XSD.create_typemap_name(service) %] - typemap for [% service.get_name %]
|
||||
|
||||
[% head1 %] DESCRIPTION
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
[% type_name = node.expand( type );
|
||||
IF (type_name.0 == 'http://www.w3.org/2001/XMLSchema'); -%]
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::[% type_name.1 %]
|
||||
[% ELSE -%]
|
||||
[% type_prefix %]::[% type_name.1 %]
|
||||
[% END -%]
|
||||
@@ -0,0 +1,83 @@
|
||||
[% USE XSD(context) %]
|
||||
package [% XSD.create_xsd_name(attribute) %];
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
{ # BLOCK to scope variables
|
||||
|
||||
sub get_xmlns { '[% attribute.get_targetNamespace %]' }
|
||||
|
||||
__PACKAGE__->__set_name('[% attribute.get_name %]');
|
||||
__PACKAGE__->__set_ref([% IF attribute.get_ref; %]'[% attribute.get_ref %]'[% END %]);
|
||||
|
||||
[%- IF (type_name = attribute.get_type); -%]
|
||||
use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Attribute
|
||||
[% type = definitions.get_types.0.find_type(attribute.expand(type_name));
|
||||
IF ! type;
|
||||
THROW NOT_FOUND "type " _ type_name _ " not found in attribute " _ attribute.get_name;
|
||||
END;
|
||||
XSD.create_xsd_name(type) %]
|
||||
);
|
||||
|
||||
}
|
||||
[%- ELSIF (ref = attribute.get_ref);
|
||||
ref_from = ref.split(':');
|
||||
-%]
|
||||
# attribute ref="[% ref %]"
|
||||
use base qw(
|
||||
[% ref_element = definitions.get_types.0.find_attribute(attribute.expand(ref));
|
||||
XSD.create_xsd_name( ref_element ); %]
|
||||
);
|
||||
|
||||
}
|
||||
[%- ELSIF (simpleType = attribute.first_simpleType) %]
|
||||
# atomic simpleType: <attribute><simpleType
|
||||
use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Attribute
|
||||
);
|
||||
[% INCLUDE simpleType/contentModel.tt -%]
|
||||
|
||||
}
|
||||
|
||||
[% END %]
|
||||
|
||||
1;
|
||||
|
||||
[%# work around for CPAN's indexer, which gets disturbed by pod in templates -%]
|
||||
[% pod = BLOCK %]=pod[% END -%]
|
||||
[% head1 = BLOCK %]=head1[% END -%]
|
||||
[% head2 = BLOCK %]=head2[% END -%]
|
||||
[% head3 = BLOCK %]=head3[% END -%]
|
||||
|
||||
[% pod %]
|
||||
|
||||
[% head1 %] NAME
|
||||
|
||||
[% XSD.create_xsd_name(attribute) %]
|
||||
|
||||
[% head1 %] DESCRIPTION
|
||||
|
||||
Perl data type class for the XML Schema defined attribute
|
||||
[% attribute.get_name %] from the namespace [% attribute.get_targetNamespace %].
|
||||
|
||||
[% INCLUDE POD/annotation.tt(node = attribute) %]
|
||||
|
||||
[% INCLUDE element/POD/contentModel.tt(element = attribute) %]
|
||||
|
||||
[% head1 %] METHODS
|
||||
|
||||
[% head2 %] new
|
||||
|
||||
my $element = [% XSD.create_xsd_name(attribute) %]->new($data);
|
||||
|
||||
Constructor. The following data structure may be passed to new():
|
||||
|
||||
{ value => $value }
|
||||
|
||||
[% head1 %] AUTHOR
|
||||
|
||||
Generated by SOAP::WSDL
|
||||
|
||||
=cut
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
[% USE XSD(context) -%]
|
||||
package [% type_prefix %]::[% complexType.get_name.replace('\.','::').replace('-','_') %];
|
||||
[% USE XSD -%]
|
||||
package [% XSD.create_xsd_name(complexType) %];
|
||||
use strict;
|
||||
use warnings;
|
||||
[% INCLUDE complexType/contentModel.tt %]
|
||||
|
||||
[%#
|
||||
# Don't include any perl source here - there may be sub-packages...
|
||||
# Don't include any perl source for this package below this line - there
|
||||
# may be sub-packages...
|
||||
#-%]
|
||||
|
||||
[% INCLUDE complexType/attributeSet.tt %]
|
||||
[% INCLUDE complexType/contentModel.tt %]
|
||||
|
||||
1;
|
||||
|
||||
[%# work around for CPAN's indexer, which gets disturbed by pod in templates -%]
|
||||
@@ -20,22 +22,35 @@ use warnings;
|
||||
|
||||
[% head1 %] NAME
|
||||
|
||||
[% type_prefix %]::[% complexType.get_name.replace('\.','::').replace('-','_') %]
|
||||
[% XSD.create_xsd_name(complexType) %]
|
||||
|
||||
[% head1 %] DESCRIPTION
|
||||
|
||||
Perl data type class for the XML Schema defined complextype
|
||||
Perl data type class for the XML Schema defined complexType
|
||||
[% complexType.get_name %] from the namespace [% complexType.get_targetNamespace %].
|
||||
|
||||
[% INCLUDE POD/annotation.tt(node = complexType) %]
|
||||
|
||||
[% IF (complexType.get_element); %]
|
||||
[% head2 %] PROPERTIES
|
||||
|
||||
The following properties may be accessed using get_PROPERTY / set_PROPERTY
|
||||
methods:
|
||||
|
||||
=over
|
||||
|
||||
[% FOREACH element = complexType.get_element -%]
|
||||
[% element.get_name %]
|
||||
=item * [% element.get_name %]
|
||||
|
||||
[% IF element.get_annotation.get_documentation; %]
|
||||
[% element.get_annotation.get_documentation %]
|
||||
[% END -%]
|
||||
[% END %]
|
||||
|
||||
=back
|
||||
|
||||
[% END -%]
|
||||
|
||||
[% head1 %] METHODS
|
||||
|
||||
[% head2 %] new
|
||||
@@ -44,6 +59,8 @@ Constructor. The following data structure may be passed to new():
|
||||
|
||||
[% indent = ' '; INCLUDE complexType/POD/structure.tt %]
|
||||
|
||||
[% INCLUDE complexType/POD/attributeSet.tt %]
|
||||
|
||||
[% head1 %] AUTHOR
|
||||
|
||||
Generated by SOAP::WSDL
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[% indent %]{
|
||||
[%- IF complexType.get_name %] # [% XSD.get_type_prefix(complexType.get_targetNamespace) %]::[% complexType.get_name %][% END %]
|
||||
{
|
||||
[%- IF complexType.get_name %] # [% XSD.create_xsd_name(complexType) %][% END %]
|
||||
[%- indent = indent _ ' ';
|
||||
FOREACH element = complexType.get_element %]
|
||||
[% indent %][% element.get_name %] => [% INCLUDE element/POD/structure.tt -%]
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
[% head2 = BLOCK %]=head2[% END -%]
|
||||
[% IF (complexType.get_attribute.size) %]
|
||||
|
||||
[% head2 %] attr
|
||||
|
||||
NOTE: Attribute documentation is experimental, and may be inaccurate.
|
||||
See the correspondent WSDL/XML Schema if in question.
|
||||
|
||||
This class has additional attributes, accessibly via the C<attr()> method.
|
||||
|
||||
attr() returns an object of the class [% XSD.create_xmlattr_name(complexType) %].
|
||||
|
||||
The following attributes can be accessed on this object via the corresponding
|
||||
get_/set_ methods:
|
||||
|
||||
=over
|
||||
|
||||
[% FOREACH element = complexType.get_attribute -%]
|
||||
=item * [% element.get_name %]
|
||||
|
||||
[%- IF (element.get_annotation && element.get_annotation.0.get_documentation) %]
|
||||
[% element.get_annotation.0.get_documentation %]
|
||||
[% END; %]
|
||||
|
||||
[% IF (type_name=element.get_type);
|
||||
type = definitions.get_types.0.find_type(element.expand(type_name));
|
||||
IF (! type);
|
||||
THROW NOT_FOUND "type " _ type_name _ " for attribute " _ element.get_name _ " not found";
|
||||
END; %]
|
||||
This attribute is of type L<[% XSD.create_xsd_name(type) %]|[% XSD.create_xsd_name(type) %]>.
|
||||
[% END %]
|
||||
|
||||
[%- END -%]
|
||||
[% END %]
|
||||
@@ -1,5 +1,5 @@
|
||||
[% indent %]{
|
||||
[%- IF complexType.get_name %] # [% XSD.get_type_prefix(complexType.get_targetNamespace) %]::[% complexType.get_name %][% END %]
|
||||
[%- IF complexType.get_name %] # [% XSD.create_xsd_name(complexType) %][% END %]
|
||||
[%- indent = indent _ ' ' %]
|
||||
[% indent %]# One of the following elements.
|
||||
[% indent %]# No occurance checks yet, so be sure to pass just one...
|
||||
|
||||
Whitespace-only changes.
@@ -1,5 +1,5 @@
|
||||
[% indent %]{
|
||||
[%- IF complexType.get_name %] # [% XSD.get_type_prefix(complexType.get_targetNamespace) %]::[% complexType.get_name %][% END %]
|
||||
[%- IF complexType.get_name %] # [% XSD.create_xsd_name(complexType) %][% END %]
|
||||
[%- indent = indent _ ' ';
|
||||
FOREACH element = complexType.get_element %]
|
||||
[% indent %][% element.get_name %] => [% INCLUDE element/POD/structure.tt -%]
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
[% IF (complexType.get_variety == 'restriction');
|
||||
INCLUDE complexType/POD/restriction.tt(complexType = complexType);
|
||||
INCLUDE complexType/POD/simpleContent/restriction.tt(complexType = complexType);
|
||||
ELSIF (complexType.get_variety == 'extension');
|
||||
#THROW NOT_IMPLEMENTED, "${ complexType.get_name } - complexType complexContent extension not implemented yet";
|
||||
%]
|
||||
# No documentation generated for complexContent / extension yet
|
||||
[%
|
||||
INCLUDE complexType/POD/simpleContent/restriction.tt(complexType = complexType);
|
||||
ELSE;
|
||||
THROW UNKNOWN, "unknown variety ${ complexType.get_variety }";
|
||||
END;
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
# No documentation generated for simpleContent / extension yet
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
value => $some_value, # simple perl scalar. See below for restrictions
|
||||
}
|
||||
|
||||
NOTE: This type is derived by restriction as complexType with simpleContent.
|
||||
Documentation generation for this derivation method is experimental and may
|
||||
be erroneous/incomplete.
|
||||
|
||||
This clase is derived from [%-
|
||||
IF (name = complexType.get_base);
|
||||
# type_name = complexType.expand( name );
|
||||
-%]
|
||||
[% XSD.create_xsd_name(complexType) %]
|
||||
[% ELSE;
|
||||
%] an atomic base type. Unfortunately there's no documentation generated
|
||||
on atomic base types' base type yet.[%
|
||||
END -%]
|
||||
|
||||
SOAP::WSDL's schema implementation does not validate data yet - however, the
|
||||
following restrictions apply for this type's value:
|
||||
|
||||
[%- FOREACH facet = [
|
||||
'length',
|
||||
'minLength',
|
||||
'maxLength',
|
||||
'totalDigits',
|
||||
'fractionDigits',
|
||||
'minInclusive',
|
||||
'maxInclusive',
|
||||
'minExclusive',
|
||||
'maxExclusive',
|
||||
'pattern',
|
||||
'enumeration'
|
||||
];
|
||||
IF (facet_method = complexType.can( "get_" _ facet ));
|
||||
facet_value = facet_method( complexType );
|
||||
IF (facet_value.size());
|
||||
%]
|
||||
[% IF (facet == 'enumeration');
|
||||
%]valid values (enumeration)
|
||||
[%- ELSE;
|
||||
facet;
|
||||
END -%]:[% FOREACH value = facet_value %] [% value.get_value; END -%]
|
||||
[% END;
|
||||
END;
|
||||
END %]
|
||||
@@ -7,7 +7,7 @@ ELSIF (complexType.get_variety == 'group');
|
||||
ELSIF (complexType.get_variety == 'choice');
|
||||
INCLUDE complexType/POD/choice.tt(complexType = complexType);
|
||||
ELSIF (complexType.get_contentModel == 'simpleContent');
|
||||
INCLUDE complexType/POD/simpleContent.tt(complexType = complexType);
|
||||
INCLUDE complexType/POD/structure/simpleContent.tt(complexType = complexType);
|
||||
ELSIF (complexType.get_contentModel == 'complexContent');
|
||||
INCLUDE complexType/POD/complexContent.tt(complexType = complexType);
|
||||
END %],
|
||||
END -%],
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
[%- IF complexType.get_name %] # [% XSD.create_xsd_name(complexType) %][% END %]
|
||||
[%- indent = indent _ ' ';
|
||||
FOREACH element = complexType.get_element %]
|
||||
[% indent %][% element.get_name %] => [% INCLUDE element/POD/structure.tt -%]
|
||||
[% END %]
|
||||
[% indent.replace('\s{2}$', ''); %]}
|
||||
@@ -0,0 +1 @@
|
||||
{ value => $some_value }
|
||||
@@ -8,7 +8,7 @@ Class::Std::initialize();
|
||||
atomic_types = {};
|
||||
|
||||
FOREACH element = complexType.get_element %]
|
||||
my %[% element.get_name %]_of :ATTR(:get<[% element.get_name %]>);
|
||||
my %[% XSD.perl_name(element.get_name) %]_of :ATTR(:get<[% XSD.perl_name(element.get_name) %]>);
|
||||
[%- END %]
|
||||
|
||||
__PACKAGE__->_factory(
|
||||
@@ -18,23 +18,23 @@ __PACKAGE__->_factory(
|
||||
) ],
|
||||
{
|
||||
[% FOREACH element = complexType.get_element -%]
|
||||
[% element.get_name %] => \%[% element.get_name %]_of,
|
||||
'[% element.get_name %]' => \%[% XSD.perl_name(element.get_name) %]_of,
|
||||
[% END -%]
|
||||
},
|
||||
{
|
||||
[% FOREACH element = complexType.get_element;
|
||||
IF (type = element.get_type);
|
||||
element_type = complexType.expand( type ); -%]
|
||||
[% element.get_name %] => '[% XSD.get_type_prefix(element_type.0) %]::[% element_type.1 %]',
|
||||
element_type = definitions.first_types.find_type(complexType.expand( type )); -%]
|
||||
'[% element.get_name %]' => '[% XSD.create_xsd_name(element_type) %]',
|
||||
[% ELSE;
|
||||
IF (element.first_simpleType);
|
||||
atomic_types.${ element.get_name } = element.first_simpleType;
|
||||
ELSIF (element.first_complexType);
|
||||
atomic_types.${ element.get_name } = element.first_complexType;
|
||||
ELSE;
|
||||
THROW NOT_IMPLEMENTED , "Neither simple nor complex atomic type - don't know what to do with it";
|
||||
THROW NOT_IMPLEMENTED , "Neither simple nor complex atomic type for element ${ element.get_name } - don't know what to do with it";
|
||||
END; %]
|
||||
[% element.get_name %] => '[% XSD.get_type_prefix(complexType.get_targetNamespace) %]::[% complexType.get_name %]::_[% element.get_name %]',
|
||||
'[% element.get_name %]' => '[% XSD.create_subpackage_name({ value => element }) %]',
|
||||
[% END;
|
||||
END -%]
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
[% FOREACH type IN atomic_types; %]
|
||||
|
||||
package [% XSD.get_type_prefix(complexType.get_targetNamespace) %]::[% complexType.get_name %]::_[% type.key %];
|
||||
[%# TODO generate name create_name method %]
|
||||
package [% XSD.create_subpackage_name(type); %];
|
||||
use strict;
|
||||
use warnings;
|
||||
{
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
[% IF (complexType.get_attribute.size) %]
|
||||
package [% XSD.get_type_prefix(complexType.get_targetNamespace) %]::[% complexType.get_name.replace('\.','::').replace('-','_') %]::_ATTR;
|
||||
[% IF (complexType.get_attribute.size) -%]
|
||||
package [% XSD.create_xmlattr_name(complexType) %];
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::AttributeSet);
|
||||
|
||||
{ # BLOCK to scope variables
|
||||
[%
|
||||
|
||||
FOREACH element = complexType.get_attribute %]
|
||||
[% FOREACH element = complexType.get_attribute %]
|
||||
my %[% element.get_name %]_of :ATTR(:get<[% element.get_name %]>);
|
||||
[%- END %]
|
||||
|
||||
__PACKAGE__->_factory(
|
||||
[ qw([% FOREACH element = complexType.get_attribute %]
|
||||
[ qw(
|
||||
[%- FOREACH element = complexType.get_attribute %]
|
||||
[% element.get_name -%]
|
||||
[% END %]
|
||||
) ],
|
||||
@@ -22,23 +21,24 @@ __PACKAGE__->_factory(
|
||||
{
|
||||
[% FOREACH element = complexType.get_attribute;
|
||||
IF (type = element.get_type);
|
||||
element_type = complexType.expand( type );
|
||||
element_type = definitions.first_types.find_type(complexType.expand( type ));
|
||||
-%]
|
||||
[% element.get_name %] => '[% XSD.get_type_prefix(element_type.0) %]::[% element_type.1 %]',
|
||||
[% element.get_name %] => '[% XSD.create_xsd_name(element_type) %]',
|
||||
[%
|
||||
ELSE;
|
||||
IF (element.first_simpleType);
|
||||
ELSIF (ref = element.get_ref);
|
||||
attribute = definitions.first_types.find_attribute( complexType.expand(ref) );
|
||||
# element_type = definitions.get_types.0.find_type(complexType.expand( attribute.get_type ));
|
||||
%]
|
||||
[% attribute.get_name %] => '[% XSD.create_xsd_name(attribute) %]',
|
||||
[% ELSIF (element.first_simpleType);
|
||||
THROW NOT_IMPLEMENTED , "Attributes with atomic simpleType definition are not implemented yet";
|
||||
atomic_types.${ element.get_name } = element.first_simpleType;
|
||||
ELSE;
|
||||
THROW NOT_IMPLEMENTED , "Neither simple nor complex atomic type - don't know what to do with it";
|
||||
END; %]
|
||||
[% element.get_name %] => '[% XSD.get_type_prefix(complexType.get_targetNamespace) %]::[% complexType.get_name %]::_[% element.get_name %]',
|
||||
[% END;
|
||||
ELSE;
|
||||
THROW NOT_IMPLEMENTED , "Neither simple nor complex atomic type for attribute ${ element.get_name } in ${ complexType.get_name } - don't know what to do with it";
|
||||
END;
|
||||
END -%]
|
||||
}
|
||||
);
|
||||
|
||||
} # end BLOCK
|
||||
|
||||
[% END %]
|
||||
@@ -1,7 +1,19 @@
|
||||
[% IF (complexType.get_attribute.size) -%]
|
||||
our $XML_ATTRIBUTE_CLASS = '[% XSD.create_xmlattr_name(complexType) %]';
|
||||
[% ELSE -%]
|
||||
our $XML_ATTRIBUTE_CLASS;
|
||||
undef $XML_ATTRIBUTE_CLASS;
|
||||
[% END %]
|
||||
sub __get_attr_class {
|
||||
return $XML_ATTRIBUTE_CLASS;
|
||||
}
|
||||
|
||||
[% IF (complexType.get_contentModel == 'simpleContent');
|
||||
INCLUDE complexType/simpleContent.tt(complexType = complexType);
|
||||
ELSIF (complexType.get_contentModel == 'complexContent');
|
||||
INCLUDE complexType/complexContent.tt(complexType = complexType);
|
||||
ELSE;
|
||||
INCLUDE complexType/variety.tt(complexType = complexType);
|
||||
END %]
|
||||
END -%]
|
||||
|
||||
[% INCLUDE complexType/attributeSet.tt %]
|
||||
@@ -20,7 +20,7 @@ END;
|
||||
complexType.set_element( element_list );
|
||||
|
||||
-%]
|
||||
use base qw([% XSD.get_type_prefix(base_name.0) %]::[% base_name.1.replace('\.', '::') %]);
|
||||
use base qw([% XSD.create_xsd_name( base_type ) %]);
|
||||
[%
|
||||
|
||||
INCLUDE complexType/variety.tt(complexType = complexType);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[% IF (base=complexType.get_base);
|
||||
base_name=complexType.expand(base);
|
||||
base_type=definitions.get_types.0.find_type(complexType.expand(base));
|
||||
-%]
|
||||
use base qw([% XSD.get_type_prefix(base_name.0) %]::[% base_name.1.replace('\.', '::') %]);
|
||||
use base qw([% XSD.create_xsd_type(base_type) %]);
|
||||
[%
|
||||
ELSE;
|
||||
THROW NOT_IMPLEMENTED, "restriction without base not supported";
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
[% IF (complexType.get_variety == 'restriction');
|
||||
INCLUDE complexType/restriction.tt(complexType = complexType);
|
||||
ELSIF (complexType.get_variety == 'extension');
|
||||
THROW NOT_IMPLEMENTED, "${ complexType.get_name } - complexType simpleContent extension not implemented yet";
|
||||
INCLUDE complexType/simpleContent/extension.tt(complexType = complexType);
|
||||
# THROW NOT_IMPLEMENTED, "${ complexType.get_name } - complexType simpleContent extension not implemented yet";
|
||||
ELSE;
|
||||
THROW UNKNOWN, "unknown variety ${ complexType.get_variety }";
|
||||
THROW UNKNOWN, "unknown variety ${ complexType.get_variety } in complexType name='${complexType.get_name}'";
|
||||
END;
|
||||
%]
|
||||
@@ -0,0 +1,11 @@
|
||||
[% IF (base=complexType.get_base);
|
||||
base_type=definitions.get_types.0.find_type(complexType.expand(base));
|
||||
-%]
|
||||
use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||
[% XSD.create_xsd_name(base_type) %]
|
||||
);
|
||||
[%
|
||||
ELSE;
|
||||
THROW NOT_IMPLEMENTED, "extension without base not supported";
|
||||
END %]
|
||||
@@ -1,5 +1,5 @@
|
||||
[% USE XSD(context) %]
|
||||
package [% XSD.get_element_prefix(element.get_targetNamespace) %]::[% element.get_name.replace('\.','::') %];
|
||||
package [% XSD.create_xsd_name(element) %];
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
@@ -13,17 +13,21 @@ __PACKAGE__->__set_minOccurs([% element.get_minOccurs %]);
|
||||
__PACKAGE__->__set_maxOccurs([% element.get_maxOccurs %]);
|
||||
__PACKAGE__->__set_ref([% IF element.get_ref; %]'[% element.get_ref %]'[% END %]);
|
||||
|
||||
[%- IF (type = element.get_type); -%]
|
||||
[%- IF (type_name = element.get_type); -%]
|
||||
use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Element
|
||||
[% INCLUDE _type_class.tt( type = type, node = element ) %]
|
||||
[% type = definitions.get_types.0.find_type(element.expand(type_name));
|
||||
XSD.create_xsd_name(type) %]
|
||||
);
|
||||
|
||||
}
|
||||
[%- ELSIF (ref = element.get_ref); -%]
|
||||
[%- ELSIF (ref = element.get_ref);
|
||||
ref_from = ref.split(':');
|
||||
-%]
|
||||
# element ref="[% ref %]"
|
||||
use base qw(
|
||||
[% element_prefix %]::[% ref.split(':').1 %]
|
||||
[% ref_element = definitions.get_types.0.find_element(element.expand(ref));
|
||||
XSD.create_xsd_name( ref_element ); %]
|
||||
);
|
||||
|
||||
}
|
||||
@@ -41,16 +45,9 @@ use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Element
|
||||
SOAP::WSDL::XSD::Typelib::ComplexType
|
||||
);
|
||||
|
||||
[% INCLUDE complexType/contentModel.tt -%]
|
||||
|
||||
}
|
||||
|
||||
package [% XSD.get_element_prefix(element.get_targetNamespace) %]::[% element.get_name.replace('\.','::').replace('-','_') %]::_ATTR;
|
||||
use base qw(SOAP::WSDL::XSD::Typelib::AttributeSet);
|
||||
[% INCLUDE complexType/attributeSet.tt %]
|
||||
|
||||
[% ELSE %]
|
||||
|
||||
} # end of BLOCK
|
||||
|
||||
[% END %]
|
||||
@@ -67,18 +64,20 @@ use base qw(SOAP::WSDL::XSD::Typelib::AttributeSet);
|
||||
|
||||
[% head1 %] NAME
|
||||
|
||||
[% XSD.get_element_prefix(element.get_targetNamespace) %]::[% element.get_name %]
|
||||
[% XSD.create_xsd_name(element) %]
|
||||
|
||||
[% head1 %] DESCRIPTION
|
||||
|
||||
Perl data type class for the XML Schema defined element
|
||||
[% element.get_name %] from the namespace [% element.get_targetNamespace %].
|
||||
|
||||
[% INCLUDE POD/annotation.tt(node = element) %]
|
||||
|
||||
[% head1 %] METHODS
|
||||
|
||||
[% head2 %] new
|
||||
|
||||
my $element = [% XSD.get_element_prefix(element.get_targetNamespace) %]::[% element.get_name %]->new($data);
|
||||
my $element = [% XSD.create_xsd_name(element) %]->new($data);
|
||||
|
||||
Constructor. The following data structure may be passed to new():
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
[% IF (type = element.get_type);
|
||||
ELSIF (simpleType = element.get_simpleType) %]
|
||||
This XML element type class has a atomic simpleType as it's base:
|
||||
[%
|
||||
INCLUDE simpleType/POD/contentModel.tt(simpleType = simpleType);
|
||||
ELSIF (simpleType = element.get_complexType);
|
||||
ELSIF (ref_element = element.get_ref);
|
||||
END %]
|
||||
@@ -1,5 +1,5 @@
|
||||
[% USE XSD(context) -%]
|
||||
package [% XSD.get_type_prefix(simpleType.get_targetNamespace) %]::[% simpleType.get_name.replace('\.','::').replace('-','_') %];
|
||||
package [% XSD.create_xsd_name(simpleType) %];
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
@@ -21,20 +21,18 @@ __END__
|
||||
|
||||
[% pod %]
|
||||
|
||||
[% head1 %] [% XSD.get_type_prefix(simpleType.get_targetNamespace) %]::[% simpleType.get_name.replace('\.','::').replace('-','_') %]
|
||||
[% head1 %] NAME
|
||||
|
||||
[% XSD.create_name(simpleType) %]
|
||||
|
||||
[% head1 %] DESCRIPTION
|
||||
|
||||
Perl data type class for the XML Schema defined simpleType
|
||||
[% simpleType.get_name %] from the namespace [% simpleType.get_targetNamespace %].
|
||||
|
||||
[% IF (simpleType.get_variety == 'list');
|
||||
INCLUDE simpleType/POD/list.tt;
|
||||
ELSIF (simpleType.get_variety == 'restriction');
|
||||
INCLUDE simpleType/POD/restriction.tt;
|
||||
ELSE;
|
||||
THROW NOT_IMPLEMENTED "simpleType union not implemented yet in $simpleType.get_name";
|
||||
END %]
|
||||
[% INCLUDE POD/annotation.tt(node = simpleType) %]
|
||||
|
||||
[% INCLUDE simpleType/POD/contentModel.tt(simpleType = simpleType) %]
|
||||
|
||||
[% head1 %] METHODS
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
[% IF (simpleType.get_variety == 'list');
|
||||
INCLUDE simpleType/POD/list.tt;
|
||||
ELSIF (simpleType.get_variety == 'restriction');
|
||||
INCLUDE simpleType/POD/restriction.tt;
|
||||
ELSIF (simpleType.get_variety == 'union');
|
||||
INCLUDE simpleType/POD/union.tt;
|
||||
ELSE;
|
||||
# THROW NOT_IMPLEMENTED "simpleType " _ simpleType.get_variety _ "not implemented yet in $simpleType.get_name";
|
||||
END %]
|
||||
@@ -1,13 +1,9 @@
|
||||
This clase is derived from
|
||||
[%-
|
||||
IF (name = simpleType.get_itemType);
|
||||
type_name = simpleType.expand( name );
|
||||
IF (type_name.0 == 'http://www.w3.org/2001/XMLSchema'); -%]
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::[% type_name.1 %]
|
||||
[% ELSE -%]
|
||||
[% type_prefix %]::[% type_name.1 %]
|
||||
[% END;
|
||||
ELSE;
|
||||
type = definitions.get_types.0.find_type(simpleType.expand( name )); %]
|
||||
[% XSD.create_xsd_name(type) %]
|
||||
[% ELSE;
|
||||
# THROW NOT_IMPLEMENTED "atomic simpleType list not implemented yet in $simpleType.get_name";
|
||||
%] a atomic base type. Unfortunately there's no documenatation generation for atomic base types yet. [%
|
||||
END -%].
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
This clase is derived from [%-
|
||||
IF (name = simpleType.get_base);
|
||||
type_name = simpleType.expand( name );
|
||||
IF (type_name.0 == 'http://www.w3.org/2001/XMLSchema'); -%]
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::[% type_name.1 %]
|
||||
[% ELSE -%]
|
||||
[% type_prefix %]::[% type_name.1 %]
|
||||
[% END;
|
||||
ELSE;
|
||||
type = definitions.get_types.0.find_type(simpleType.expand(name)); %]
|
||||
[% XSD.create_xsd_name(type); %]
|
||||
[% ELSE;
|
||||
# THROW NOT_IMPLEMENTED "atomic simpleType restriction not implemented yet in $simpleType.get_name";
|
||||
%] a atomic base type. Unfortunately there's no documenatation generation for atomic base types yet. [%
|
||||
END -%]
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
This type class is derived by union.
|
||||
|
||||
Derivation by union is not fully supported yet - value space constraints are
|
||||
not checked yet.
|
||||
|
||||
The current implementation of union resorts to inheriting from the base type,
|
||||
which means (quoted from the XML Schema specs): "If the <list> or <union>
|
||||
alternative is chosen, then the simple ur-type definition·."
|
||||
@@ -2,6 +2,8 @@
|
||||
INCLUDE simpleType/list.tt(simpleType = simpleType);
|
||||
ELSIF (simpleType.get_variety == 'restriction');
|
||||
INCLUDE simpleType/restriction.tt(type = simpleType);
|
||||
ELSIF (simpleType.get_variety == 'union');
|
||||
INCLUDE simpleType/union.tt(type = simpleType);
|
||||
ELSE;
|
||||
THROW NOT_IMPLEMENTED "${ element.get_name } - ${ simpleType.get_variety } not supported yet";
|
||||
END %]
|
||||
@@ -1,17 +1,13 @@
|
||||
[% USE XSD %]
|
||||
# list derivation
|
||||
use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::list
|
||||
[%
|
||||
IF (name = simpleType.get_itemType);
|
||||
type_name = simpleType.expand( name );
|
||||
IF (type_name.0 == 'http://www.w3.org/2001/XMLSchema'); -%]
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::[% type_name.1 %]
|
||||
type = definitions.get_types.0.find_type(simpleType.expand( name )); -%]
|
||||
[% XSD.create_xsd_name(type) %]
|
||||
);
|
||||
[% ELSE -%]
|
||||
[% type_prefix %]::[% type_name.1 %]
|
||||
);
|
||||
[% END;
|
||||
ELSIF (type = simpleType.first_simpleType); %]
|
||||
[% ELSIF (type = simpleType.first_simpleType); %]
|
||||
);
|
||||
|
||||
[% INCLUDE simpleType/atomicType.tt(type = type);
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
# derivation by restriction
|
||||
[% IF (base = simpleType.get_base) -%]
|
||||
use base qw(
|
||||
[% INCLUDE _type_class.tt(type = base, node=simpleType) %]);
|
||||
[%
|
||||
base_type = definitions.get_types.0.find_type(simpleType.expand(base));
|
||||
IF ! base_type;
|
||||
THROW NOT_FOUND "No base type in " _ simpleType.get_parent.get_name;
|
||||
END;
|
||||
XSD.create_xsd_name(base_type) %]);
|
||||
[% ELSIF (type = simpleType.first_simpleType() );
|
||||
INCLUDE simpleType/atomicType.tt(type = type);
|
||||
ELSE;
|
||||
THROW "neither base nor atomic type - don't know what to do" %]
|
||||
[% END %]
|
||||
[% END %]
|
||||
@@ -0,0 +1,11 @@
|
||||
# derivation by union
|
||||
# union is not fully supported yet - value space constraints are not
|
||||
# checked yet.
|
||||
# This implementation of union resorts to the simplest possible base, which
|
||||
# is: "If the <list> or <union> alternative is chosen, then the
|
||||
# simple ur-type definition·."
|
||||
#
|
||||
|
||||
use base qw(
|
||||
SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType
|
||||
);
|
||||
Reference in new issue
Block a user