add __local_object__
Matt S Trout [Mon, 15 Oct 2012 11:47:51 +0000 (11:47 +0000)]
lib/Object/Remote/Connection.pm
t/lib/ORTestObjects.pm

index ed78e0e..da80bac 100644 (file)
@@ -104,6 +104,10 @@ sub _build__json {
       tie *$handle, 'Object::Remote::GlobProxy', $glob_container;
       return $handle;
     }
+  )->filter_json_single_key_object(
+    __local_object__ => sub {
+      $self->local_objects_by_id->{$_[0]}
+    }
   );
 }
 
@@ -243,7 +247,14 @@ sub _local_object_to_id {
 sub _deobjectify {
   my ($self, $data) = @_;
   if (blessed($data)) {
-    return +{ __remote_object__ => $self->_local_object_to_id($data) };
+    if (
+      $data->isa('Object::Remote::Proxy')
+      and $data->{remote}->connection == $self
+    ) {
+      return +{ __local_object__ => $data->{remote}->id };
+    } else {
+      return +{ __remote_object__ => $self->_local_object_to_id($data) };
+    }
   } elsif (my $ref = ref($data)) {
     if ($ref eq 'HASH') {
       return +{ map +($_ => $self->_deobjectify($data->{$_})), keys %$data };
index 0e2195c..28bbf52 100644 (file)
@@ -19,7 +19,6 @@ sub give_back {
 sub takes_object {
     my ($self, $object) = @_;
 
-    print STDERR ref($object);
     if($object->isa('ORTestObjects')) {
         return 1;
     }