Skip to content

Commit ea31741

Browse files
authored
Deprecate the low-level REST client on JDK 7 (#38542)
This commit deprecates the use of the low-level REST client in JDK 7. Support for the low-level REST client on JDK 7 will be removed in 7.0.0.
1 parent 1a8d6ff commit ea31741

File tree

10 files changed

+119
-6
lines changed

10 files changed

+119
-6
lines changed
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
/*
2+
* Licensed to Elasticsearch under one or more contributor
3+
* license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright
5+
* ownership. Elasticsearch licenses this file to you under
6+
* the Apache License, Version 2.0 (the "License"); you may
7+
* not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
package org.elasticsearch.client;
21+
22+
import java.util.ArrayList;
23+
import java.util.Collections;
24+
import java.util.Iterator;
25+
import java.util.List;
26+
import java.util.Objects;
27+
28+
public class JavaVersion implements Comparable<JavaVersion> {
29+
30+
private final List<Integer> version;
31+
32+
public List<Integer> getVersion() {
33+
return version;
34+
}
35+
36+
private JavaVersion(List<Integer> version) {
37+
if (version.size() >= 2 && version.get(0) == 1 && version.get(1) == 8) {
38+
// for Java 8 there is ambiguity since both 1.8 and 8 are supported,
39+
// so we rewrite the former to the latter
40+
version = new ArrayList<>(version.subList(1, version.size()));
41+
}
42+
this.version = Collections.unmodifiableList(version);
43+
}
44+
45+
public static JavaVersion parse(String value) {
46+
Objects.requireNonNull(value);
47+
if (!isValid(value)) {
48+
throw new IllegalArgumentException("value");
49+
}
50+
51+
List<Integer> version = new ArrayList<>();
52+
String[] components = value.split("\\.");
53+
for (String component : components) {
54+
version.add(Integer.valueOf(component));
55+
}
56+
57+
return new JavaVersion(version);
58+
}
59+
60+
public static boolean isValid(String value) {
61+
return value.matches("^0*[0-9]+(\\.[0-9]+)*$");
62+
}
63+
64+
private static final JavaVersion CURRENT = parse(System.getProperty("java.specification.version"));
65+
66+
public static JavaVersion current() {
67+
return CURRENT;
68+
}
69+
70+
@Override
71+
public int compareTo(JavaVersion o) {
72+
int len = Math.max(version.size(), o.version.size());
73+
for (int i = 0; i < len; i++) {
74+
int d = (i < version.size() ? version.get(i) : 0);
75+
int s = (i < o.version.size() ? o.version.get(i) : 0);
76+
if (s < d)
77+
return 1;
78+
if (s > d)
79+
return -1;
80+
}
81+
return 0;
82+
}
83+
84+
@Override
85+
public boolean equals(Object o) {
86+
if (o == null || o.getClass() != getClass()) {
87+
return false;
88+
}
89+
return compareTo((JavaVersion) o) == 0;
90+
}
91+
92+
@Override
93+
public int hashCode() {
94+
return version.hashCode();
95+
}
96+
97+
@Override
98+
public String toString() {
99+
final StringBuilder sb = new StringBuilder();
100+
final Iterator<Integer> it = version.iterator();
101+
sb.append(it.next());
102+
while (it.hasNext()) {
103+
sb.append(".").append(it.next());
104+
}
105+
106+
return sb.toString();
107+
}
108+
}

client/rest/src/main/java/org/elasticsearch/client/RestClient.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ public class RestClient implements Closeable {
122122
this.nodeSelector = nodeSelector;
123123
this.warningsHandler = strictDeprecationMode ? WarningsHandler.STRICT : WarningsHandler.PERMISSIVE;
124124
setNodes(nodes);
125+
if (JavaVersion.current().compareTo(JavaVersion.parse("1.8.0")) < 0) {
126+
logger.warn("use of the low-level REST client on JDK 7 is deprecated and will be removed in version 7.0.0 of the client");
127+
}
125128
}
126129

127130
/**

libs/core/src/test/java/org/elasticsearch/bootstrap/JarHellTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
package org.elasticsearch.bootstrap;
2121

22+
import org.elasticsearch.client.JavaVersion;
2223
import org.elasticsearch.common.Strings;
2324
import org.elasticsearch.common.io.PathUtils;
2425
import org.elasticsearch.test.ESTestCase;

modules/lang-painless/src/test/java/org/elasticsearch/painless/ArrayTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
package org.elasticsearch.painless;
2121

2222
import org.apache.lucene.util.Constants;
23-
import org.elasticsearch.bootstrap.JavaVersion;
23+
import org.elasticsearch.client.JavaVersion;
2424
import org.hamcrest.Matcher;
2525

2626
import java.lang.invoke.MethodHandle;

plugins/repository-hdfs/src/test/java/org/elasticsearch/repositories/hdfs/HdfsTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
2323
import org.elasticsearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
2424
import org.elasticsearch.action.support.master.AcknowledgedResponse;
25-
import org.elasticsearch.bootstrap.JavaVersion;
25+
import org.elasticsearch.client.JavaVersion;
2626
import org.elasticsearch.client.Client;
2727
import org.elasticsearch.cluster.ClusterState;
2828
import org.elasticsearch.common.settings.Settings;

server/src/test/java/org/elasticsearch/bootstrap/JavaVersionTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
package org.elasticsearch.bootstrap;
2121

22+
import org.elasticsearch.client.JavaVersion;
2223
import org.elasticsearch.test.ESTestCase;
2324

2425
import java.util.List;

server/src/test/java/org/elasticsearch/common/joda/JavaJodaTimeDuellingTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
package org.elasticsearch.common.joda;
2121

22-
import org.elasticsearch.bootstrap.JavaVersion;
22+
import org.elasticsearch.client.JavaVersion;
2323
import org.elasticsearch.common.time.DateFormatter;
2424
import org.elasticsearch.common.time.DateFormatters;
2525
import org.elasticsearch.test.ESTestCase;

server/src/test/java/org/elasticsearch/monitor/jvm/JvmInfoTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
package org.elasticsearch.monitor.jvm;
2121

2222
import org.apache.lucene.util.Constants;
23-
import org.elasticsearch.bootstrap.JavaVersion;
23+
import org.elasticsearch.client.JavaVersion;
2424
import org.elasticsearch.test.ESTestCase;
2525

2626
public class JvmInfoTests extends ESTestCase {

server/src/test/java/org/elasticsearch/plugins/IndexStorePluginTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
package org.elasticsearch.plugins;
2121

22-
import org.elasticsearch.bootstrap.JavaVersion;
22+
import org.elasticsearch.client.JavaVersion;
2323
import org.elasticsearch.common.settings.Settings;
2424
import org.elasticsearch.index.IndexModule;
2525
import org.elasticsearch.index.IndexSettings;

x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/expression/function/scalar/datetime/NamedDateTimeProcessorTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
package org.elasticsearch.xpack.sql.expression.function.scalar.datetime;
77

8-
import org.elasticsearch.bootstrap.JavaVersion;
8+
import org.elasticsearch.client.JavaVersion;
99
import org.elasticsearch.common.Strings;
1010
import org.elasticsearch.common.io.stream.Writeable.Reader;
1111
import org.elasticsearch.test.AbstractWireSerializingTestCase;

0 commit comments

Comments
 (0)