switch to CX::Component::Traits
Rafael Kitover [Sun, 14 Jun 2009 02:49:36 +0000 (02:49 +0000)]
Makefile.PL
lib/Catalyst/Model/DBIC/Schema.pm
lib/Catalyst/Model/DBIC/Schema/Types.pm
lib/Catalyst/TraitFor/Model/DBIC/Schema/Caching.pm [moved from lib/Catalyst/Model/DBIC/Schema/Trait/Caching.pm with 95% similarity]
lib/Catalyst/TraitFor/Model/DBIC/Schema/Replicated.pm [moved from lib/Catalyst/Model/DBIC/Schema/Trait/Replicated.pm with 94% similarity]

index 1cbc871..2462475 100644 (file)
@@ -3,9 +3,9 @@ use inc::Module::Install 0.91;
 name 'Catalyst-Model-DBIC-Schema';
 all_from 'lib/Catalyst/Model/DBIC/Schema.pm';
 
-requires 'DBIx::Class'           => '0.08103';
+requires 'DBIx::Class'           => '0.08107';
 requires 'Catalyst::Runtime'     => '5.80005';
-requires 'MooseX::Traits'        => '0.05';
+requires 'CatalystX::Component::Traits';
 requires 'Moose';
 requires 'Moose::Autobox';
 requires 'MooseX::Types';
index c7f7c36..ad99846 100644 (file)
@@ -2,8 +2,8 @@ package Catalyst::Model::DBIC::Schema;
 
 use Moose;
 use mro 'c3';
-with 'MooseX::Traits';
 extends 'Catalyst::Model';
+with 'CatalystX::Component::Traits';
 
 our $VERSION = '0.24';
 
@@ -308,17 +308,18 @@ supported:
 
 Array of Traits to apply to the instance. Traits are L<Moose::Role>s.
 
-They are relative to the C<< MyApp::Model::DB::Trait:: >>, then the C<<
-Catalyst::Model::DBIC::Schema::Trait:: >> namespaces, unless prefixed with C<+>
+They are relative to the C<< MyApp::TraitFor::Model::DBIC::Schema:: >>, then the C<<
+Catalyst::TraitFor::Model::DBIC::Schema:: >> namespaces, unless prefixed with C<+>
 in which case they are taken to be a fully qualified name. E.g.:
 
     traits Caching
-    traits +MyApp::DB::Trait::Foo
+    traits +MyApp::TraitFor::Model::Foo
 
 A new instance is created at application time, so any consumed required
 attributes, coercions and modifiers will work.
 
-Traits are applied at L<Catalyst::Component/COMPONENT> time using L<MooseX::Traits>.
+Traits are applied at L<Catalyst::Component/COMPONENT> time using
+L<CatalystX::Component::Traits>.
 
 C<ref $self> will be an anon class if any traits are applied, C<<
 $self->_original_class_name >> will be the original class.
@@ -330,9 +331,9 @@ Traits that come with the distribution:
 
 =over 4
 
-=item L<Catalyst::Model::DBIC::Schema::Trait::Caching>
+=item L<Catalyst::TraitFor::Model::DBIC::Schema::Caching>
 
-=item L<Catalyst::Model::DBIC::Schema::Trait::Replicated>
+=item L<Catalyst::TraitFor::Model::DBIC::Schema::Replicated>
 
 =back
 
@@ -361,16 +362,18 @@ The model name L<Catalyst> uses to resolve this model, the part after
 C<::Model::> or C<::M::> in your class name. E.g. if your class name is
 C<MyApp::Model::DB> the L</model_name> will be C<DB>.
 
-=head2 _original_class_name
-
-The class name of your model before any L</traits> are applied. E.g.
-C<MyApp::Model::DB>.
-
 =head2 _default_cursor_class
 
 What to reset your L<DBIx::Class::Storage::DBI/cursor_class> to if a custom one
 doesn't work out. Defaults to L<DBIx::Class::Storage::DBI::Cursor>.
 
+=head1 ATTRIBUTES FROM L<MooseX::Traits::Pluggable>
+
+=head2 _original_class_name
+
+The class name of your model before any L</traits> are applied. E.g.
+C<MyApp::Model::DB>.
+
 =head2 _traits
 
 Unresolved arrayref of traits passed in the config.
@@ -448,9 +451,6 @@ has model_name => (
     lazy_build => 1,
 );
 
-has _traits => (is => 'ro', isa => ArrayRef);
-has _resolved_traits => (is => 'ro', isa => ArrayRef);
-
 has _default_cursor_class => (
     is => 'ro',
     isa => CursorClass,
@@ -458,32 +458,6 @@ has _default_cursor_class => (
     coerce => 1
 );
 
-has _original_class_name => (
-    is => 'ro',
-    required => 1,
-    isa => Str,
-    default => sub { blessed $_[0] },
-);
-
-sub COMPONENT {
-    my ($class, $app, $args) = @_;
-
-    $args = $class->merge_config_hashes($class->config, $args);
-
-    if (my $traits = delete $args->{traits}) {
-        my @traits = $class->_resolve_traits($traits->flatten);
-       return $class->new_with_traits(
-           traits => \@traits,
-           _original_class_name => $class,
-            _traits => $traits,
-            _resolved_traits => \@traits,
-           %$args
-       );
-    }
-
-    return $class->new($args);
-}
-
 sub BUILD {
     my $self = shift;
     my $class = $self->_original_class_name;
@@ -591,32 +565,6 @@ sub _reset_cursor_class {
     }
 }
 
-sub _resolve_traits {
-    my ($class, @names) = @_;
-    my $base  = 'Trait';
-
-    my @search_ns = grep !/^(?:Moose|Class::MOP)::/,
-        $class->meta->class_precedence_list;
-        
-    my @traits;
-
-    OUTER: for my $name (@names) {
-       if ($name =~ /^\+(.*)/) {
-           push @traits, $1;
-           next;
-       }
-       for my $ns (@search_ns) {
-           my $full = "${ns}::${base}::${name}";
-           if (eval { Class::MOP::load_class($full) }) {
-               push @traits, $full;
-               next OUTER;
-           }
-       }
-    }
-
-    return @traits;
-}
-
 sub _build_model_name {
     my $self  = shift;
     my $class = $self->_original_class_name;
@@ -642,8 +590,8 @@ L<MooseX::Object::Pluggable>
 
 Traits:
 
-L<Catalyst::Model::DBIC::Schema::Trait::Caching>,
-L<Catalyst::Model::DBIC::Schema::Trait::Replicated>
+L<Catalyst::TraitFor::Model::DBIC::Schema::Caching>,
+L<Catalyst::TraitFor::Model::DBIC::Schema::Replicated>
 
 =head1 AUTHOR
 
index c485fbe..4833616 100644 (file)
@@ -13,6 +13,8 @@ use List::MoreUtils 'all';
 
 use namespace::clean -except => 'meta';
 
+class_type 'DBIx::Class::Schema';
+
 subtype SchemaClass,
     as ClassName;
 
@@ -1,4 +1,4 @@
-package Catalyst::Model::DBIC::Schema::Trait::Caching;
+package Catalyst::TraitFor::Model::DBIC::Schema::Caching;
 
 use namespace::autoclean;
 use Moose::Role;
@@ -8,7 +8,7 @@ use MooseX::Types::Moose qw/Int Str/;
 
 =head1 NAME
 
-Catalyst::Model::DBIC::Schema::Trait::Caching - Query caching support for
+Catalyst::TraitFor::Model::DBIC::Schema::Caching - Query caching support for
 Catalyst::Model::DBIC::Schema
 
 =head1 SYNOPSIS
@@ -1,4 +1,4 @@
-package Catalyst::Model::DBIC::Schema::Trait::Replicated;
+package Catalyst::TraitFor::Model::DBIC::Schema::Replicated;
 
 use namespace::autoclean;
 use Moose::Role;
@@ -9,7 +9,7 @@ use Catalyst::Model::DBIC::Schema::Types 'ConnectInfos';
 
 =head1 NAME
 
-Catalyst::Model::DBIC::Schema::Trait::Replicated - Replicated storage support for
+Catalyst::TraitFor::Model::DBIC::Schema::Replicated - Replicated storage support for
 L<Catalyst::Model::DBIC::Schema>
 
 =head1 SYNOPSiS