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