Merge branch '6.2.x'
This commit is contained in:
@@ -195,7 +195,7 @@ public class ClassReader {
|
||||
this.b = classFileBuffer;
|
||||
// Check the class' major_version. This field is after the magic and minor_version fields, which
|
||||
// use 4 and 2 bytes respectively.
|
||||
if (checkClassVersion && readShort(classFileOffset + 6) > Opcodes.V24) {
|
||||
if (checkClassVersion && readShort(classFileOffset + 6) > Opcodes.V25) {
|
||||
throw new IllegalArgumentException(
|
||||
"Unsupported class file major version " + readShort(classFileOffset + 6));
|
||||
}
|
||||
|
||||
@@ -594,7 +594,7 @@ public abstract class MethodVisitor {
|
||||
* Visits a LOOKUPSWITCH instruction.
|
||||
*
|
||||
* @param dflt beginning of the default handler block.
|
||||
* @param keys the values of the keys.
|
||||
* @param keys the values of the keys. Keys must be sorted in increasing order.
|
||||
* @param labels beginnings of the handler blocks. {@code labels[i]} is the beginning of the
|
||||
* handler block for the {@code keys[i]} key.
|
||||
*/
|
||||
|
||||
@@ -289,6 +289,7 @@ public interface Opcodes {
|
||||
int V22 = 0 << 16 | 66;
|
||||
int V23 = 0 << 16 | 67;
|
||||
int V24 = 0 << 16 | 68;
|
||||
int V25 = 0 << 16 | 69;
|
||||
|
||||
/**
|
||||
* Version flag indicating that the class is using 'preview' features.
|
||||
|
||||
@@ -56,6 +56,7 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||
// Try a URL connection content-length header
|
||||
URLConnection con = url.openConnection();
|
||||
customizeConnection(con);
|
||||
|
||||
HttpURLConnection httpCon = (con instanceof HttpURLConnection huc ? huc : null);
|
||||
if (httpCon != null) {
|
||||
httpCon.setRequestMethod("HEAD");
|
||||
@@ -81,12 +82,16 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||
}
|
||||
}
|
||||
}
|
||||
// Check content-length entry but not for JarURLConnection where
|
||||
// this would open the jar file but effectively never close it ->
|
||||
// for jar entries, always fall back to stream existence instead.
|
||||
if (!(con instanceof JarURLConnection) && con.getContentLengthLong() > 0) {
|
||||
|
||||
if (con instanceof JarURLConnection jarCon) {
|
||||
// For JarURLConnection, do not check content-length but rather the
|
||||
// existence of the entry (or the jar root in case of no entryName).
|
||||
return (jarCon.getEntryName() == null || jarCon.getJarEntry() != null);
|
||||
}
|
||||
else if (con.getContentLengthLong() > 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (httpCon != null) {
|
||||
// No HTTP OK status, and no content-length header: give up
|
||||
httpCon.disconnect();
|
||||
@@ -346,8 +351,8 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||
*/
|
||||
protected void customizeConnection(URLConnection con) throws IOException {
|
||||
ResourceUtils.useCachesIfNecessary(con);
|
||||
if (con instanceof HttpURLConnection httpConn) {
|
||||
customizeConnection(httpConn);
|
||||
if (con instanceof HttpURLConnection httpCon) {
|
||||
customizeConnection(httpCon);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2024 the original author or authors.
|
||||
* Copyright 2002-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -233,8 +233,8 @@ public class UrlResource extends AbstractFileResolvingResource {
|
||||
}
|
||||
catch (IOException ex) {
|
||||
// Close the HTTP connection (if applicable).
|
||||
if (con instanceof HttpURLConnection httpConn) {
|
||||
httpConn.disconnect();
|
||||
if (con instanceof HttpURLConnection httpCon) {
|
||||
httpCon.disconnect();
|
||||
}
|
||||
throw ex;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user