Skip to content

Commit 888fd4e

Browse files
authored
Merge pull request #86 from php-java/add-sdk-version-resolver
Add sdk version resolver
2 parents ae14cc4 + 0461428 commit 888fd4e

3 files changed

Lines changed: 72 additions & 1 deletion

File tree

src/Core/JavaClass.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use PHPJava\Utilities\ClassResolver;
1717
use PHPJava\Utilities\DebugTool;
1818
use PHPJava\Utilities\Formatter;
19+
use PHPJava\Utilities\SDKVersionResolver;
1920

2021
class JavaClass implements JavaClassInterface
2122
{
@@ -126,7 +127,9 @@ public function __construct(ReaderInterface $reader, array $options = [])
126127
// read major version
127128
$this->versions['major'] = $reader->getBinaryReader()->readUnsignedShort();
128129

129-
$this->debugTool->getLogger()->info('Major version: ' . $this->versions['minor']);
130+
$this->debugTool->getLogger()->info('Major version: ' . $this->versions['major']);
131+
132+
$this->debugTool->getLogger()->info('JDK version: ' . SDKVersionResolver::resolve($this->versions['major'] . '.' . $this->versions['minor']));
130133

131134
// read constant pool size
132135
$this->constantPool = new ConstantPool(
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php
2+
namespace PHPJava\Exceptions;
3+
4+
class UnknownVersionException extends \Exception
5+
{
6+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
namespace PHPJava\Utilities;
3+
4+
use PHPJava\Exceptions\TypeException;
5+
use PHPJava\Exceptions\UnknownVersionException;
6+
7+
class SDKVersionResolver
8+
{
9+
public static function resolve($version)
10+
{
11+
if (version_compare($version, '45.0', '>=') &&
12+
version_compare($version, '45.3', '<=')
13+
) {
14+
return '1.0.2';
15+
}
16+
17+
if (version_compare($version, '45.65535', '<=')) {
18+
return '1.1';
19+
}
20+
21+
if (version_compare($version, '46.0', '<=')) {
22+
return '1.2';
23+
}
24+
25+
if (version_compare($version, '47.0', '<=')) {
26+
return '1.3';
27+
}
28+
29+
if (version_compare($version, '48.0', '<=')) {
30+
return '1.4';
31+
}
32+
33+
if (version_compare($version, '49.0', '<=')) {
34+
return '5.0';
35+
}
36+
37+
if (version_compare($version, '50.0', '<=')) {
38+
return '6';
39+
}
40+
41+
if (version_compare($version, '51.0', '<=')) {
42+
return '7';
43+
}
44+
45+
if (version_compare($version, '52.0', '<=')) {
46+
return '8';
47+
}
48+
49+
if (version_compare($version, '53.0', '<=')) {
50+
return '9';
51+
}
52+
53+
if (version_compare($version, '54.0', '<=')) {
54+
return '10';
55+
}
56+
57+
if (version_compare($version, '55.0', '<=')) {
58+
return '11';
59+
}
60+
throw new UnknownVersionException('Does not supported JDK version ' . $version);
61+
}
62+
}

0 commit comments

Comments
 (0)