Merge branch '5.3.x'
# Conflicts: # build.gradle
This commit is contained in:
@@ -28,7 +28,7 @@ configure(allprojects) { project ->
|
|||||||
dependencyManagement {
|
dependencyManagement {
|
||||||
imports {
|
imports {
|
||||||
mavenBom "com.fasterxml.jackson:jackson-bom:2.13.1"
|
mavenBom "com.fasterxml.jackson:jackson-bom:2.13.1"
|
||||||
mavenBom "io.netty:netty-bom:4.1.75.Final"
|
mavenBom "io.netty:netty-bom:4.1.76.Final"
|
||||||
mavenBom "io.projectreactor:reactor-bom:2020.0.18"
|
mavenBom "io.projectreactor:reactor-bom:2020.0.18"
|
||||||
mavenBom "io.r2dbc:r2dbc-bom:Borca-SR1"
|
mavenBom "io.r2dbc:r2dbc-bom:Borca-SR1"
|
||||||
mavenBom "io.rsocket:rsocket-bom:1.1.2"
|
mavenBom "io.rsocket:rsocket-bom:1.1.2"
|
||||||
@@ -177,7 +177,7 @@ configure(allprojects) { project ->
|
|||||||
exclude group: "org.hamcrest", name: "hamcrest-core"
|
exclude group: "org.hamcrest", name: "hamcrest-core"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dependencySet(group: 'org.mockito', version: '4.4.0') {
|
dependencySet(group: 'org.mockito', version: '4.5.1') {
|
||||||
entry('mockito-core') {
|
entry('mockito-core') {
|
||||||
exclude group: "org.hamcrest", name: "hamcrest-core"
|
exclude group: "org.hamcrest", name: "hamcrest-core"
|
||||||
}
|
}
|
||||||
@@ -185,10 +185,10 @@ configure(allprojects) { project ->
|
|||||||
}
|
}
|
||||||
dependency "io.mockk:mockk:1.12.1"
|
dependency "io.mockk:mockk:1.12.1"
|
||||||
|
|
||||||
dependency("net.sourceforge.htmlunit:htmlunit:2.60.0") {
|
dependency("net.sourceforge.htmlunit:htmlunit:2.61.0") {
|
||||||
exclude group: "commons-logging", name: "commons-logging"
|
exclude group: "commons-logging", name: "commons-logging"
|
||||||
}
|
}
|
||||||
dependency("org.seleniumhq.selenium:htmlunit-driver:2.60.0") {
|
dependency("org.seleniumhq.selenium:htmlunit-driver:2.61.0") {
|
||||||
exclude group: "commons-logging", name: "commons-logging"
|
exclude group: "commons-logging", name: "commons-logging"
|
||||||
}
|
}
|
||||||
dependency("org.seleniumhq.selenium:selenium-java:3.141.59") {
|
dependency("org.seleniumhq.selenium:selenium-java:3.141.59") {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2016 the original author or authors.
|
* Copyright 2002-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -43,6 +43,7 @@ import org.springframework.core.io.ContextResource;
|
|||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
import org.springframework.core.io.ResourceEditor;
|
import org.springframework.core.io.ResourceEditor;
|
||||||
import org.springframework.core.io.ResourceLoader;
|
import org.springframework.core.io.ResourceLoader;
|
||||||
|
import org.springframework.core.io.WritableResource;
|
||||||
import org.springframework.core.io.support.ResourceArrayPropertyEditor;
|
import org.springframework.core.io.support.ResourceArrayPropertyEditor;
|
||||||
import org.springframework.core.io.support.ResourcePatternResolver;
|
import org.springframework.core.io.support.ResourcePatternResolver;
|
||||||
|
|
||||||
@@ -102,6 +103,7 @@ public class ResourceEditorRegistrar implements PropertyEditorRegistrar {
|
|||||||
ResourceEditor baseEditor = new ResourceEditor(this.resourceLoader, this.propertyResolver);
|
ResourceEditor baseEditor = new ResourceEditor(this.resourceLoader, this.propertyResolver);
|
||||||
doRegisterEditor(registry, Resource.class, baseEditor);
|
doRegisterEditor(registry, Resource.class, baseEditor);
|
||||||
doRegisterEditor(registry, ContextResource.class, baseEditor);
|
doRegisterEditor(registry, ContextResource.class, baseEditor);
|
||||||
|
doRegisterEditor(registry, WritableResource.class, baseEditor);
|
||||||
doRegisterEditor(registry, InputStream.class, new InputStreamEditor(baseEditor));
|
doRegisterEditor(registry, InputStream.class, new InputStreamEditor(baseEditor));
|
||||||
doRegisterEditor(registry, InputSource.class, new InputSourceEditor(baseEditor));
|
doRegisterEditor(registry, InputSource.class, new InputSourceEditor(baseEditor));
|
||||||
doRegisterEditor(registry, File.class, new FileEditor(baseEditor));
|
doRegisterEditor(registry, File.class, new FileEditor(baseEditor));
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2021 the original author or authors.
|
* Copyright 2002-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -22,6 +22,7 @@ import javax.lang.model.element.Element;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Provide the list of stereotypes that match an {@link Element}.
|
* Provide the list of stereotypes that match an {@link Element}.
|
||||||
|
*
|
||||||
* <p>If an element has one or more stereotypes, it is referenced in the index
|
* <p>If an element has one or more stereotypes, it is referenced in the index
|
||||||
* of candidate components and each stereotype can be queried individually.
|
* of candidate components and each stereotype can be queried individually.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public abstract class AnnotationVisitor {
|
|||||||
* @param api the ASM API version implemented by this visitor. Must be one of the {@code
|
* @param api the ASM API version implemented by this visitor. Must be one of the {@code
|
||||||
* ASM}<i>x</i> values in {@link Opcodes}.
|
* ASM}<i>x</i> values in {@link Opcodes}.
|
||||||
*/
|
*/
|
||||||
public AnnotationVisitor(final int api) {
|
protected AnnotationVisitor(final int api) {
|
||||||
this(api, null);
|
this(api, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ public abstract class AnnotationVisitor {
|
|||||||
* @param annotationVisitor the annotation visitor to which this visitor must delegate method
|
* @param annotationVisitor the annotation visitor to which this visitor must delegate method
|
||||||
* calls. May be {@literal null}.
|
* calls. May be {@literal null}.
|
||||||
*/
|
*/
|
||||||
public AnnotationVisitor(final int api, final AnnotationVisitor annotationVisitor) {
|
protected AnnotationVisitor(final int api, final AnnotationVisitor annotationVisitor) {
|
||||||
if (api != Opcodes.ASM9
|
if (api != Opcodes.ASM9
|
||||||
&& api != Opcodes.ASM8
|
&& api != Opcodes.ASM8
|
||||||
&& api != Opcodes.ASM7
|
&& api != Opcodes.ASM7
|
||||||
|
|||||||
@@ -65,6 +65,15 @@ public class ByteVector {
|
|||||||
this.length = data.length;
|
this.length = data.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the actual number of bytes in this vector.
|
||||||
|
*
|
||||||
|
* @return the actual number of bytes in this vector.
|
||||||
|
*/
|
||||||
|
public int size() {
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Puts a byte into this byte vector. The byte vector is automatically enlarged if necessary.
|
* Puts a byte into this byte vector. The byte vector is automatically enlarged if necessary.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public abstract class ClassVisitor {
|
|||||||
* @param api the ASM API version implemented by this visitor. Must be one of the {@code
|
* @param api the ASM API version implemented by this visitor. Must be one of the {@code
|
||||||
* ASM}<i>x</i> values in {@link Opcodes}.
|
* ASM}<i>x</i> values in {@link Opcodes}.
|
||||||
*/
|
*/
|
||||||
public ClassVisitor(final int api) {
|
protected ClassVisitor(final int api) {
|
||||||
this(api, null);
|
this(api, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ public abstract class ClassVisitor {
|
|||||||
* @param classVisitor the class visitor to which this visitor must delegate method calls. May be
|
* @param classVisitor the class visitor to which this visitor must delegate method calls. May be
|
||||||
* null.
|
* null.
|
||||||
*/
|
*/
|
||||||
public ClassVisitor(final int api, final ClassVisitor classVisitor) {
|
protected ClassVisitor(final int api, final ClassVisitor classVisitor) {
|
||||||
if (api != Opcodes.ASM9
|
if (api != Opcodes.ASM9
|
||||||
&& api != Opcodes.ASM8
|
&& api != Opcodes.ASM8
|
||||||
&& api != Opcodes.ASM7
|
&& api != Opcodes.ASM7
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public abstract class FieldVisitor {
|
|||||||
* @param api the ASM API version implemented by this visitor. Must be one of the {@code
|
* @param api the ASM API version implemented by this visitor. Must be one of the {@code
|
||||||
* ASM}<i>x</i> values in {@link Opcodes}.
|
* ASM}<i>x</i> values in {@link Opcodes}.
|
||||||
*/
|
*/
|
||||||
public FieldVisitor(final int api) {
|
protected FieldVisitor(final int api) {
|
||||||
this(api, null);
|
this(api, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ public abstract class FieldVisitor {
|
|||||||
* @param fieldVisitor the field visitor to which this visitor must delegate method calls. May be
|
* @param fieldVisitor the field visitor to which this visitor must delegate method calls. May be
|
||||||
* null.
|
* null.
|
||||||
*/
|
*/
|
||||||
public FieldVisitor(final int api, final FieldVisitor fieldVisitor) {
|
protected FieldVisitor(final int api, final FieldVisitor fieldVisitor) {
|
||||||
if (api != Opcodes.ASM9
|
if (api != Opcodes.ASM9
|
||||||
&& api != Opcodes.ASM8
|
&& api != Opcodes.ASM8
|
||||||
&& api != Opcodes.ASM7
|
&& api != Opcodes.ASM7
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public abstract class MethodVisitor {
|
|||||||
* @param api the ASM API version implemented by this visitor. Must be one of the {@code
|
* @param api the ASM API version implemented by this visitor. Must be one of the {@code
|
||||||
* ASM}<i>x</i> values in {@link Opcodes}.
|
* ASM}<i>x</i> values in {@link Opcodes}.
|
||||||
*/
|
*/
|
||||||
public MethodVisitor(final int api) {
|
protected MethodVisitor(final int api) {
|
||||||
this(api, null);
|
this(api, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ public abstract class MethodVisitor {
|
|||||||
* @param methodVisitor the method visitor to which this visitor must delegate method calls. May
|
* @param methodVisitor the method visitor to which this visitor must delegate method calls. May
|
||||||
* be null.
|
* be null.
|
||||||
*/
|
*/
|
||||||
public MethodVisitor(final int api, final MethodVisitor methodVisitor) {
|
protected MethodVisitor(final int api, final MethodVisitor methodVisitor) {
|
||||||
if (api != Opcodes.ASM9
|
if (api != Opcodes.ASM9
|
||||||
&& api != Opcodes.ASM8
|
&& api != Opcodes.ASM8
|
||||||
&& api != Opcodes.ASM7
|
&& api != Opcodes.ASM7
|
||||||
@@ -349,12 +349,12 @@ public abstract class MethodVisitor {
|
|||||||
*
|
*
|
||||||
* @param opcode the opcode of the local variable instruction to be visited. This opcode is either
|
* @param opcode the opcode of the local variable instruction to be visited. This opcode is either
|
||||||
* ILOAD, LLOAD, FLOAD, DLOAD, ALOAD, ISTORE, LSTORE, FSTORE, DSTORE, ASTORE or RET.
|
* ILOAD, LLOAD, FLOAD, DLOAD, ALOAD, ISTORE, LSTORE, FSTORE, DSTORE, ASTORE or RET.
|
||||||
* @param var the operand of the instruction to be visited. This operand is the index of a local
|
* @param varIndex the operand of the instruction to be visited. This operand is the index of a
|
||||||
* variable.
|
* local variable.
|
||||||
*/
|
*/
|
||||||
public void visitVarInsn(final int opcode, final int var) {
|
public void visitVarInsn(final int opcode, final int varIndex) {
|
||||||
if (mv != null) {
|
if (mv != null) {
|
||||||
mv.visitVarInsn(opcode, var);
|
mv.visitVarInsn(opcode, varIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -466,7 +466,8 @@ final class MethodWriter extends MethodVisitor {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates what must be computed. Must be one of {@link #COMPUTE_ALL_FRAMES}, {@link
|
* Indicates what must be computed. Must be one of {@link #COMPUTE_ALL_FRAMES}, {@link
|
||||||
* #COMPUTE_INSERTED_FRAMES}, {@link #COMPUTE_MAX_STACK_AND_LOCAL} or {@link #COMPUTE_NOTHING}.
|
* #COMPUTE_INSERTED_FRAMES}, {@link COMPUTE_MAX_STACK_AND_LOCAL_FROM_FRAMES}, {@link
|
||||||
|
* #COMPUTE_MAX_STACK_AND_LOCAL} or {@link #COMPUTE_NOTHING}.
|
||||||
*/
|
*/
|
||||||
private final int compute;
|
private final int compute;
|
||||||
|
|
||||||
@@ -904,26 +905,26 @@ final class MethodWriter extends MethodVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitVarInsn(final int opcode, final int var) {
|
public void visitVarInsn(final int opcode, final int varIndex) {
|
||||||
lastBytecodeOffset = code.length;
|
lastBytecodeOffset = code.length;
|
||||||
// Add the instruction to the bytecode of the method.
|
// Add the instruction to the bytecode of the method.
|
||||||
if (var < 4 && opcode != Opcodes.RET) {
|
if (varIndex < 4 && opcode != Opcodes.RET) {
|
||||||
int optimizedOpcode;
|
int optimizedOpcode;
|
||||||
if (opcode < Opcodes.ISTORE) {
|
if (opcode < Opcodes.ISTORE) {
|
||||||
optimizedOpcode = Constants.ILOAD_0 + ((opcode - Opcodes.ILOAD) << 2) + var;
|
optimizedOpcode = Constants.ILOAD_0 + ((opcode - Opcodes.ILOAD) << 2) + varIndex;
|
||||||
} else {
|
} else {
|
||||||
optimizedOpcode = Constants.ISTORE_0 + ((opcode - Opcodes.ISTORE) << 2) + var;
|
optimizedOpcode = Constants.ISTORE_0 + ((opcode - Opcodes.ISTORE) << 2) + varIndex;
|
||||||
}
|
}
|
||||||
code.putByte(optimizedOpcode);
|
code.putByte(optimizedOpcode);
|
||||||
} else if (var >= 256) {
|
} else if (varIndex >= 256) {
|
||||||
code.putByte(Constants.WIDE).put12(opcode, var);
|
code.putByte(Constants.WIDE).put12(opcode, varIndex);
|
||||||
} else {
|
} else {
|
||||||
code.put11(opcode, var);
|
code.put11(opcode, varIndex);
|
||||||
}
|
}
|
||||||
// If needed, update the maximum stack size and number of locals, and stack map frames.
|
// If needed, update the maximum stack size and number of locals, and stack map frames.
|
||||||
if (currentBasicBlock != null) {
|
if (currentBasicBlock != null) {
|
||||||
if (compute == COMPUTE_ALL_FRAMES || compute == COMPUTE_INSERTED_FRAMES) {
|
if (compute == COMPUTE_ALL_FRAMES || compute == COMPUTE_INSERTED_FRAMES) {
|
||||||
currentBasicBlock.frame.execute(opcode, var, null, null);
|
currentBasicBlock.frame.execute(opcode, varIndex, null, null);
|
||||||
} else {
|
} else {
|
||||||
if (opcode == Opcodes.RET) {
|
if (opcode == Opcodes.RET) {
|
||||||
// No stack size delta.
|
// No stack size delta.
|
||||||
@@ -945,9 +946,9 @@ final class MethodWriter extends MethodVisitor {
|
|||||||
|| opcode == Opcodes.DLOAD
|
|| opcode == Opcodes.DLOAD
|
||||||
|| opcode == Opcodes.LSTORE
|
|| opcode == Opcodes.LSTORE
|
||||||
|| opcode == Opcodes.DSTORE) {
|
|| opcode == Opcodes.DSTORE) {
|
||||||
currentMaxLocals = var + 2;
|
currentMaxLocals = varIndex + 2;
|
||||||
} else {
|
} else {
|
||||||
currentMaxLocals = var + 1;
|
currentMaxLocals = varIndex + 1;
|
||||||
}
|
}
|
||||||
if (currentMaxLocals > maxLocals) {
|
if (currentMaxLocals > maxLocals) {
|
||||||
maxLocals = currentMaxLocals;
|
maxLocals = currentMaxLocals;
|
||||||
@@ -1307,21 +1308,21 @@ final class MethodWriter extends MethodVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitIincInsn(final int var, final int increment) {
|
public void visitIincInsn(final int varIndex, final int increment) {
|
||||||
lastBytecodeOffset = code.length;
|
lastBytecodeOffset = code.length;
|
||||||
// Add the instruction to the bytecode of the method.
|
// Add the instruction to the bytecode of the method.
|
||||||
if ((var > 255) || (increment > 127) || (increment < -128)) {
|
if ((varIndex > 255) || (increment > 127) || (increment < -128)) {
|
||||||
code.putByte(Constants.WIDE).put12(Opcodes.IINC, var).putShort(increment);
|
code.putByte(Constants.WIDE).put12(Opcodes.IINC, varIndex).putShort(increment);
|
||||||
} else {
|
} else {
|
||||||
code.putByte(Opcodes.IINC).put11(var, increment);
|
code.putByte(Opcodes.IINC).put11(varIndex, increment);
|
||||||
}
|
}
|
||||||
// If needed, update the maximum stack size and number of locals, and stack map frames.
|
// If needed, update the maximum stack size and number of locals, and stack map frames.
|
||||||
if (currentBasicBlock != null
|
if (currentBasicBlock != null
|
||||||
&& (compute == COMPUTE_ALL_FRAMES || compute == COMPUTE_INSERTED_FRAMES)) {
|
&& (compute == COMPUTE_ALL_FRAMES || compute == COMPUTE_INSERTED_FRAMES)) {
|
||||||
currentBasicBlock.frame.execute(Opcodes.IINC, var, null, null);
|
currentBasicBlock.frame.execute(Opcodes.IINC, varIndex, null, null);
|
||||||
}
|
}
|
||||||
if (compute != COMPUTE_NOTHING) {
|
if (compute != COMPUTE_NOTHING) {
|
||||||
int currentMaxLocals = var + 1;
|
int currentMaxLocals = varIndex + 1;
|
||||||
if (currentMaxLocals > maxLocals) {
|
if (currentMaxLocals > maxLocals) {
|
||||||
maxLocals = currentMaxLocals;
|
maxLocals = currentMaxLocals;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public abstract class ModuleVisitor {
|
|||||||
* @param api the ASM API version implemented by this visitor. Must be one of {@link Opcodes#ASM6}
|
* @param api the ASM API version implemented by this visitor. Must be one of {@link Opcodes#ASM6}
|
||||||
* or {@link Opcodes#ASM7}.
|
* or {@link Opcodes#ASM7}.
|
||||||
*/
|
*/
|
||||||
public ModuleVisitor(final int api) {
|
protected ModuleVisitor(final int api) {
|
||||||
this(api, null);
|
this(api, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ public abstract class ModuleVisitor {
|
|||||||
* @param moduleVisitor the module visitor to which this visitor must delegate method calls. May
|
* @param moduleVisitor the module visitor to which this visitor must delegate method calls. May
|
||||||
* be null.
|
* be null.
|
||||||
*/
|
*/
|
||||||
public ModuleVisitor(final int api, final ModuleVisitor moduleVisitor) {
|
protected ModuleVisitor(final int api, final ModuleVisitor moduleVisitor) {
|
||||||
if (api != Opcodes.ASM9
|
if (api != Opcodes.ASM9
|
||||||
&& api != Opcodes.ASM8
|
&& api != Opcodes.ASM8
|
||||||
&& api != Opcodes.ASM7
|
&& api != Opcodes.ASM7
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public abstract class RecordComponentVisitor {
|
|||||||
* @param api the ASM API version implemented by this visitor. Must be one of {@link Opcodes#ASM8}
|
* @param api the ASM API version implemented by this visitor. Must be one of {@link Opcodes#ASM8}
|
||||||
* or {@link Opcodes#ASM9}.
|
* or {@link Opcodes#ASM9}.
|
||||||
*/
|
*/
|
||||||
public RecordComponentVisitor(final int api) {
|
protected RecordComponentVisitor(final int api) {
|
||||||
this(api, null);
|
this(api, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ public abstract class RecordComponentVisitor {
|
|||||||
* @param recordComponentVisitor the record component visitor to which this visitor must delegate
|
* @param recordComponentVisitor the record component visitor to which this visitor must delegate
|
||||||
* method calls. May be null.
|
* method calls. May be null.
|
||||||
*/
|
*/
|
||||||
public RecordComponentVisitor(
|
protected RecordComponentVisitor(
|
||||||
final int api, final RecordComponentVisitor recordComponentVisitor) {
|
final int api, final RecordComponentVisitor recordComponentVisitor) {
|
||||||
if (api != Opcodes.ASM9
|
if (api != Opcodes.ASM9
|
||||||
&& api != Opcodes.ASM8
|
&& api != Opcodes.ASM8
|
||||||
|
|||||||
@@ -440,7 +440,7 @@ public final class Type {
|
|||||||
case '(':
|
case '(':
|
||||||
return new Type(METHOD, descriptorBuffer, descriptorBegin, descriptorEnd);
|
return new Type(METHOD, descriptorBuffer, descriptorBegin, descriptorEnd);
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException("Invalid descriptor: " + descriptorBuffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2018 the original author or authors.
|
* Copyright 2002-2022 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -99,14 +99,14 @@ public interface Resource extends InputStreamSource {
|
|||||||
/**
|
/**
|
||||||
* Return a URL handle for this resource.
|
* Return a URL handle for this resource.
|
||||||
* @throws IOException if the resource cannot be resolved as URL,
|
* @throws IOException if the resource cannot be resolved as URL,
|
||||||
* i.e. if the resource is not available as descriptor
|
* i.e. if the resource is not available as a descriptor
|
||||||
*/
|
*/
|
||||||
URL getURL() throws IOException;
|
URL getURL() throws IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a URI handle for this resource.
|
* Return a URI handle for this resource.
|
||||||
* @throws IOException if the resource cannot be resolved as URI,
|
* @throws IOException if the resource cannot be resolved as URI,
|
||||||
* i.e. if the resource is not available as descriptor
|
* i.e. if the resource is not available as a descriptor
|
||||||
* @since 2.5
|
* @since 2.5
|
||||||
*/
|
*/
|
||||||
URI getURI() throws IOException;
|
URI getURI() throws IOException;
|
||||||
|
|||||||
Reference in New Issue
Block a user