Add a clone method to ResultSource, switch obvious spots to it
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / DB.pm
index 93eec58..ea4a5a6 100644 (file)
@@ -37,7 +37,9 @@ use, documentation has been removed as of 0.08000
 
 Hidden.
 
-=begin hidden head2 storage
+=begin hidden
+
+=head2 storage
 
 Sets or gets the storage backend. Defaults to L<DBIx::Class::Storage::DBI>.
 
@@ -45,7 +47,9 @@ Sets or gets the storage backend. Defaults to L<DBIx::Class::Storage::DBI>.
 
 =cut
 
-=begin hidden head2 class_resolver
+=begin hidden
+
+=head2 class_resolver
 
 ****DEPRECATED****
 
@@ -57,10 +61,12 @@ it. See resolve_class below.
 
 =cut
 
-__PACKAGE__->mk_classdata('class_resolver' =>
+__PACKAGE__->mk_classaccessor('class_resolver' =>
                           'DBIx::Class::ClassResolver::PassThrough');
 
-=begin hidden head2 connection
+=begin hidden
+
+=head2 connection
 
   __PACKAGE__->connection($dsn, $user, $pass, $attrs);
 
@@ -77,7 +83,9 @@ sub connection {
   $class->schema_instance->connection(@info);
 }
 
-=begin hidden head2 setup_schema_instance
+=begin hidden
+
+=head2 setup_schema_instance
 
 Creates a class method ->schema_instance which contains a DBIx::Class::Schema;
 all class-method operations are proxies through to this object. If you don't
@@ -93,10 +101,12 @@ sub setup_schema_instance {
   my $class = shift;
   my $schema = {};
   bless $schema, 'DBIx::Class::Schema';
-  $class->mk_classdata('schema_instance' => $schema);
+  $class->mk_classaccessor('schema_instance' => $schema);
 }
 
-=begin hidden head2 txn_begin
+=begin hidden
+
+=head2 txn_begin
 
 Begins a transaction (does nothing if AutoCommit is off).
 
@@ -106,7 +116,9 @@ Begins a transaction (does nothing if AutoCommit is off).
 
 sub txn_begin { shift->schema_instance->txn_begin(@_); }
 
-=begin hidden head2 txn_commit
+=begin hidden
+
+=head2 txn_commit
 
 Commits the current transaction.
 
@@ -116,7 +128,9 @@ Commits the current transaction.
 
 sub txn_commit { shift->schema_instance->txn_commit(@_); }
 
-=begin hidden head2 txn_rollback
+=begin hidden
+
+=head2 txn_rollback
 
 Rolls back the current transaction.
 
@@ -126,7 +140,9 @@ Rolls back the current transaction.
 
 sub txn_rollback { shift->schema_instance->txn_rollback(@_); }
 
-=begin hidden head2 txn_do
+=begin hidden
+
+=head2 txn_do
 
 Executes a block of code transactionally. If this code reference
 throws an exception, the transaction is rolled back and the exception
@@ -147,7 +163,9 @@ sub txn_do { shift->schema_instance->txn_do(@_); }
   }
 }
 
-=begin hidden head2 resultset_instance
+=begin hidden
+
+=head2 resultset_instance
 
 Returns an instance of a resultset for this class - effectively
 mapping the L<Class::DBI> connection-as-classdata paradigm into the
@@ -161,7 +179,9 @@ sub resultset_instance {
   $_[0]->result_source_instance->resultset
 }
 
-=begin hidden head2 result_source_instance
+=begin hidden
+
+=head2 result_source_instance
 
 Returns an instance of the result source for this class
 
@@ -169,7 +189,7 @@ Returns an instance of the result source for this class
 
 =cut
 
-__PACKAGE__->mk_classdata('_result_source_instance' => []);
+__PACKAGE__->mk_classaccessor('_result_source_instance' => []);
 
 # Yep. this is horrific. Basically what's happening here is that
 # (with good reason) DBIx::Class::Schema copies the result source for
@@ -202,22 +222,23 @@ sub result_source_instance {
   }
 
   my($source, $result_class) = @{$class->_result_source_instance};
-  return unless blessed $source;
+  return undef unless blessed $source;
 
   if ($result_class ne $class) {  # new class
     # Give this new class its own source and register it.
-    $source = $source->new({
-        %$source,
+    $source = $source->clone(
         source_name  => $class,
         result_class => $class
-    } );
+    );
     $class->_result_source_instance([$source, $class]);
     $class->_maybe_attach_source_to_schema($source);
   }
   return $source;
 }
 
-=begin hidden head2 resolve_class
+=begin hidden
+
+=head2 resolve_class
 
 ****DEPRECATED****
 
@@ -225,7 +246,9 @@ See L</class_resolver>
 
 =end hidden
 
-=begin hidden head2 dbi_commit
+=begin hidden
+
+=head2 dbi_commit
 
 ****DEPRECATED****
 
@@ -233,7 +256,9 @@ Alias for L</txn_commit>
 
 =end hidden
 
-=begin hidden head2 dbi_rollback
+=begin hidden
+
+=head2 dbi_rollback
 
 ****DEPRECATED****
 
@@ -241,13 +266,16 @@ Alias for L</txn_rollback>
 
 =end hidden
 
-=head1 AUTHORS
+=head1 FURTHER QUESTIONS?
 
-Matt S. Trout <mst@shadowcatsystems.co.uk>
+Check the list of L<additional DBIC resources|DBIx::Class/GETTING HELP/SUPPORT>.
 
-=head1 LICENSE
+=head1 COPYRIGHT AND LICENSE
 
-You may distribute this code under the same terms as Perl itself.
+This module is free software L<copyright|DBIx::Class/COPYRIGHT AND LICENSE>
+by the L<DBIx::Class (DBIC) authors|DBIx::Class/AUTHORS>. You can
+redistribute it and/or modify it under the same terms as the
+L<DBIx::Class library|DBIx::Class/COPYRIGHT AND LICENSE>.
 
 =cut