$ cat ChainOfResponsibilityIf.pm
package PM::1081903::ChainOfResponsibilityIf;
use Moose::Role;
requires 'handleRequest';
requires 'addHandler';
1;
####
$ cat CoRHandler.pm
package PM::1081903::CoRHandler;
use Moose;
use Carp qw(confess croak);
with 'PM::1081903::ChainOfResponsibilityIf';
sub handleRequest { 1 }
sub addHandler { 1 }
sub _processCommand { 1 }
1;
####
$ cat GenericCommandHandler.pm
package PM::1081903::GenericCommandHandler;
use Moose;
extends 'PM::1081903::CoRHandler';
override '_processCommand' => sub { };
1;
####
$ cat GCHSuccessor.pm
package PM::1081903::GCHSuccessor;
use Moose;
has 'successor' => (
is => 'rw',
isa => 'PM::1081903::ChainOfResposibilityIf',
);
1;
####
#!/usr/bin/env perl
use strict;
use warnings;
use PM::1081903::GenericCommandHandler;
use PM::1081903::GCHSuccessor;
my $gchs = PM::1081903::GCHSuccessor::->new(
successor => PM::1081903::GenericCommandHandler::->new()
);
####
Attribute (successor) does not pass the type constraint because: Validation failed for 'PM::1081903::ChainOfResposibilityIf' with value PM::1081903::GenericCommandHandler=HASH(0x7fa22882a610) (not isa PM::1081903::ChainOfResposibilityIf) at /Users/ken/perl5/perlbrew/perls/perl-5.18.1t/lib/site_perl/5.18.1/darwin-thread-multi-2level/Moose/Meta/Attribute.pm line 1279.
Moose::Meta::Attribute::verify_against_type_constraint('Moose::Meta::Attribute=HASH(0x7fa2292b89e0)', 'PM::1081903::GenericCommandHandler=HASH(0x7fa22882a610)', 'instance', 'PM::1081903::GCHSuccessor=HASH(0x7fa2288525c8)') called at /Users/ken/perl5/perlbrew/perls/perl-5.18.1t/lib/site_perl/5.18.1/darwin-thread-multi-2level/Moose/Meta/Attribute.pm line 1266
Moose::Meta::Attribute::_coerce_and_verify('Moose::Meta::Attribute=HASH(0x7fa2292b89e0)', 'PM::1081903::GenericCommandHandler=HASH(0x7fa22882a610)', 'PM::1081903::GCHSuccessor=HASH(0x7fa2288525c8)') called at /Users/ken/perl5/perlbrew/perls/perl-5.18.1t/lib/site_perl/5.18.1/darwin-thread-multi-2level/Moose/Meta/Attribute.pm line 536
Moose::Meta::Attribute::initialize_instance_slot('Moose::Meta::Attribute=HASH(0x7fa2292b89e0)', 'Moose::Meta::Instance=HASH(0x7fa228843e80)', 'PM::1081903::GCHSuccessor=HASH(0x7fa2288525c8)', 'HASH(0x7fa2290d5108)') called at /Users/ken/perl5/perlbrew/perls/perl-5.18.1t/lib/site_perl/5.18.1/darwin-thread-multi-2level/Class/MOP/Class.pm line 525
Class::MOP::Class::_construct_instance('Moose::Meta::Class=HASH(0x7fa22929a2e8)', 'HASH(0x7fa2290d5108)') called at /Users/ken/perl5/perlbrew/perls/perl-5.18.1t/lib/site_perl/5.18.1/darwin-thread-multi-2level/Class/MOP/Class.pm line 498
Class::MOP::Class::new_object('Moose::Meta::Class=HASH(0x7fa22929a2e8)', 'HASH(0x7fa2290d5108)') called at /Users/ken/perl5/perlbrew/perls/perl-5.18.1t/lib/site_perl/5.18.1/darwin-thread-multi-2level/Moose/Meta/Class.pm line 284
Moose::Meta::Class::new_object('Moose::Meta::Class=HASH(0x7fa22929a2e8)', 'HASH(0x7fa2290d5108)') called at /Users/ken/perl5/perlbrew/perls/perl-5.18.1t/lib/site_perl/5.18.1/darwin-thread-multi-2level/Moose/Object.pm line 28
Moose::Object::new('PM::1081903::GCHSuccessor', 'successor', 'PM::1081903::GenericCommandHandler=HASH(0x7fa22882a610)') called at ./pm_example.pl line 9
####
isa => 'PM::1081903::ChainOfResposibilityIf',
####
isa => 'PM::1081903::CoRHandler',
####
print $gchs->successor->handleRequest(), "\n";