AbstractDriver::isTrue()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 4
nc 2
nop 1
dl 0
loc 8
ccs 5
cts 5
cp 1
crap 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * Soluble Japha
7
 *
8
 * @link      https://github.com/belgattitude/soluble-japha
9
 * @copyright Copyright (c) 2013-2020 Vanvelthem Sébastien
10
 * @license   MIT License https://github.com/belgattitude/soluble-japha/blob/master/LICENSE.md
11
 */
12
13
namespace Soluble\Japha\Bridge\Driver;
14
15
use Soluble\Japha\Interfaces;
16
17
abstract class AbstractDriver implements DriverInterface
18
{
19
    const CAST_TYPE_STRING = 'string';
20
    const CAST_TYPE_BOOLEAN = 'boolean';
21
    const CAST_TYPE_INTEGER = 'integer';
22
    const CAST_TYPE_FLOAT = 'float';
23
    const CAST_TYPE_ARRAY = 'array';
24
    const CAST_TYPE_NULL = 'null';
25
    const CAST_TYPE_OBJECT = 'object';
26
27
    /**
28
     * {@inheritdoc}
29
     */
30
    abstract public function instanciate(string $class_name, ...$args): Interfaces\JavaObject;
31
32
    /**
33
     * Fast retrieval of JavaObject values (one roundtrip),
34
     * use it on Java array structures (ArrayList...)
35
     * to avoid the need of iterations on the PHP side.
36
     *
37
     * @param Interfaces\JavaObject $javaObject
38
     *
39
     * @return mixed
40
     */
41
    abstract public function values(Interfaces\JavaObject $javaObject);
42
43
    /**
44
     * Inspect object.
45
     *
46
     * @param Interfaces\JavaObject $javaObject
47
     *
48
     * @return string
49
     */
50
    abstract public function inspect(Interfaces\JavaObject $javaObject): string;
51
52
    /**
53
     * {@inheritdoc}
54
     */
55
    abstract public function isInstanceOf(Interfaces\JavaObject $javaObject, $className): bool;
56
57
    /**
58
     * {@inheritdoc}
59
     */
60
    abstract public function getClassName(Interfaces\JavaObject $javaObject): string;
61
62
    /**
63
     * {@inheritdoc}
64
     */
65
    abstract public function getJavaClass(string $class_name): Interfaces\JavaClass;
66
67
    /**
68
     * {@inheritdoc}
69
     */
70
    abstract public function invoke(Interfaces\JavaType $javaObject = null, string $method, array $args = []);
71
72
    /**
73
     * {@inheritdoc}
74
     */
75
    abstract public function getContext(): Interfaces\JavaObject;
76
77
    /**
78
     * Return java servlet session.
79
     *
80
     * <code>
81
     * $session = $adapter->getDriver()->getJavaSession();
82
     * $counter = $session->get('counter');
83
     * if ($adapter->isNull($counter)) {
84
     *    $session->put('counter', 1);
85
     * } else {
86
     *    $session->put('counter', $counter + 1);
87
     * }
88
     * </code>
89
     *
90
     * @param array $args
91
     *
92
     * @return Interfaces\JavaObject
93
     */
94
    abstract public function getJavaSession(array $args = []): Interfaces\JavaObject;
95
96
    /**
97
     * Cast a java object into a php type.
98
     *(see self::CAST_TYPE_*).
99
     *
100
     * @throws \Soluble\Japha\Bridge\Exception\RuntimeException
101
     *
102
     * @param Interfaces\JavaObject|int|float|array|bool $javaObject
103
     * @param string                                     $cast_type
104
     *
105
     * @return mixed
106
     */
107
    abstract public function cast($javaObject, string $cast_type);
108
109
    /**
110
     * {@inheritdoc}
111
     */
112 5
    public function isNull(Interfaces\JavaObject $javaObject = null): bool
113
    {
114 5
        if ($javaObject === null) {
115 2
            return true;
116
        }
117
118 5
        return $this->values($javaObject) === null;
119
    }
120
121
    /**
122
     * {@inheritdoc}
123
     */
124 1
    public function isTrue(Interfaces\JavaObject $javaObject): bool
125
    {
126 1
        $values = $this->values($javaObject);
127 1
        if (is_int($values) || is_bool($values)) {
128 1
            return $values == true;
129
        }
130
131 1
        return false;
132
    }
133
}
134