lib/javonet-ruby-sdk/Binaries/Perl/MacOs/X64/lib/Javonet/Sdk/Internal/InvocationContext.pm in javonet-ruby-sdk-2.4.7 vs lib/javonet-ruby-sdk/Binaries/Perl/MacOs/X64/lib/Javonet/Sdk/Internal/InvocationContext.pm in javonet-ruby-sdk-2.4.8

- old
+ new

@@ -1,10 +1,11 @@ package Javonet::Sdk::Internal::InvocationContext; use strict; use warnings FATAL => 'all'; use Moose; +use aliased 'Javonet::Sdk::Core::PerlCommand' => 'PerlCommand'; use aliased 'Javonet::Core::Handler::PerlHandler' => 'PerlHandler'; use aliased 'Javonet::Core::Interpreter::Interpreter' => 'Interpreter', qw(execute_); use aliased 'Javonet::Core::Exception::ExceptionThrower' => 'ExceptionThrower'; extends 'Javonet::Sdk::Internal::Abstract::AbstractInstanceContext', @@ -28,33 +29,28 @@ bless $self, $class; return $self; } -DESTROY { - my $self = $_[0]; - if ($self->{current_command}->{command_type} == Javonet::Sdk::Core::PerlCommandType::get_command_type('Reference') && - $self->{isExecuted} == 1) { - $self->{current_command} = Javonet::Sdk::Core::PerlCommand->new( - runtime => $self->{runtime_name}, - command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('DestructReference'), - payload => $self->{current_command}->{payload} - ); - $self->execute(); - } -} +# DESTROY { +# my $self = $_[0]; +# if ($self->{current_command}->{command_type} == Javonet::Sdk::Core::PerlCommandType::get_command_type('Reference') && +# $self->{isExecuted} == 1) { +# $self->{current_command} = PerlCommand->new( +# runtime => $self->{runtime_name}, +# command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('DestructReference'), +# payload => $self->{current_command}->{payload} +# ); +# $self->execute(); +# } +# } #@override sub execute { my $self = $_[0]; + $self->{response_command} = Interpreter->execute_($self->{current_command}, $self->{connection_type}, $self->{tcp_address}); - if($self->{current_command}->{runtime} eq Javonet::Sdk::Core::RuntimeLib::get_runtime('Perl')) { - $self->{response_command} = $perl_handler->handle_command($self->{current_command}); - } else { - $self->{response_command} = Interpreter->execute_($self->{current_command}, $self->{connection_type}, $self->{tcp_address}); - } - if ($self->{response_command}->{command_type} == Javonet::Sdk::Core::PerlCommandType::get_command_type('Exception')) { ExceptionThrower->throwException($self->{response_command}) } if ($self->{current_command}->{command_type} == Javonet::Sdk::Core::PerlCommandType::get_command_type('CreateClassInstance')) { @@ -74,11 +70,11 @@ #@override sub invoke_instance_method { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('InvokeInstanceMethod'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -91,11 +87,11 @@ } #@override sub get_instance_field { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('GetInstanceField'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -108,11 +104,11 @@ } #@override sub set_instance_field { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('SetInstanceField'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -125,11 +121,11 @@ } #@override sub create_instance { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('CreateClassInstance'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -142,11 +138,11 @@ } #@override sub invoke_static_method { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('InvokeStaticMethod'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -163,11 +159,11 @@ } #@override sub get_static_field { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('GetStaticField'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -180,11 +176,11 @@ } #@override sub set_static_field { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('SetStaticField'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -196,11 +192,11 @@ ); } sub get_index { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('ArrayGetItem'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -212,11 +208,11 @@ ); } sub get_size { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('ArrayGetSize'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -228,11 +224,11 @@ ); } sub get_rank { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('ArrayGetRank'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -244,11 +240,11 @@ ); } sub set_index { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('ArraySetItem'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -260,11 +256,11 @@ ); } sub invoke_generic_static_method { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('InvokeGenericStaticMethod'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -276,11 +272,11 @@ ); } sub invoke_generic_method { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('InvokeGenericMethod'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -293,11 +289,11 @@ } #@override sub get_enum_name { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('GetEnumName'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -310,11 +306,11 @@ } #@override sub get_enum_value { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('GetEnumValue'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -326,11 +322,11 @@ ); } sub get_ref_value { my ($self, @arguments) = @_; - my $command = Javonet::Sdk::Core::PerlCommand->new( + my $command = PerlCommand->new( runtime => $self->{runtime_name}, command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('GetRefValue'), payload => \@arguments ); return Javonet::Sdk::Internal::InvocationContext->new( @@ -338,11 +334,26 @@ $self->get_connection_type(), $self->get_tcp_address(), $self->build_command($command), 0 ); +} +sub create_null { + my ($self, @arguments) = @_; + my $command = PerlCommand->new( + runtime => $self->{runtime_name}, + command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('CreateNull'), + payload => \@arguments + ); + return Javonet::Sdk::Internal::InvocationContext->new( + $self->{runtime_name}, + $self->get_connection_type(), + $self->get_tcp_address(), + $self->build_command($command), + 0 + ); } sub get_current_command { my $self = shift; return $self->{current_command}; @@ -354,28 +365,54 @@ return $self->{current_command}->{payload}[0] } sub build_command { my ($self, $command) = @_; - my $command_payload_length = @{$command->{payload}}; - - for (my $i = 0; $i < $command_payload_length; $i++) { + my $payload_length = @{$command->{payload}}; + for (my $i = 0; $i < $payload_length; $i++) { $command->{payload}[$i] = $self->encapsulate_payload_item($command->{payload}[$i]); } return $command->prepend_arg_to_payload($self->{current_command}); } sub encapsulate_payload_item { my ($self, $payload_item) = @_; - if (blessed($payload_item) and $payload_item->isa('Javonet::Sdk::Internal::InvocationContext')) { - # return Javonet::Sdk::Core::PerlCommand->new( - # runtime => $self->{runtime_name}, - # command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('Value'), - # payload => $payload_item->get_current_command(), - # ); - return $payload_item->get_current_command(); - } else { + + if(!defined $payload_item) { + return PerlCommand->new( + runtime => $self->{runtime_name}, + command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('Value'), + payload => [] + ); + } + + if ($payload_item->isa('Command')) { + my $payload_length = @{$payload_item->{payload}}; + for (my $i = 0; $i < $payload_length; $i++) { + $payload_item->{payload}[$i] = $self->encapsulate_payload_item($payload_item->{payload}[$i]); + } return $payload_item; + } + elsif ($payload_item->isa('Javonet::Sdk::Internal::InvocationContext')) { + return $payload_item->get_current_command(); + } + elsif (ref($payload_item) eq 'ARRAY') { + my $payload_length = @$payload_item; + for (my $i = 0; $i < $payload_length; $i++) { + $payload_item->[$i] = $self->encapsulate_payload_item($payload_item->[$i]); + } + return PerlCommand->new( + runtime => $self->{runtime_name}, + command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('Array'), + payload => $payload_item + ); + } + else { + return PerlCommand->new( + runtime => $self->{runtime_name}, + command_type => Javonet::Sdk::Core::PerlCommandType::get_command_type('Value'), + payload => [$payload_item] + ); } } no Moose; 1; \ No newline at end of file