public class org.springframework.web.servlet.resource.CssLinkResourceTransformer extends org.springframework.web.servlet.resource.ResourceTransformerSupport
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.web.servlet.resource.CssLinkResourceTransformer
super_class: org.springframework.web.servlet.resource.ResourceTransformerSupport
{
private static final java.nio.charset.Charset DEFAULT_CHARSET;
descriptor: Ljava/nio/charset/Charset;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final org.apache.commons.logging.Log logger;
descriptor: Lorg/apache/commons/logging/Log;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.util.List<org.springframework.web.servlet.resource.CssLinkResourceTransformer$LinkParser> linkParsers;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Lorg/springframework/web/servlet/resource/CssLinkResourceTransformer$LinkParser;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
putstatic org.springframework.web.servlet.resource.CssLinkResourceTransformer.DEFAULT_CHARSET:Ljava/nio/charset/Charset;
1: ldc Lorg/springframework/web/servlet/resource/CssLinkResourceTransformer;
invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
putstatic org.springframework.web.servlet.resource.CssLinkResourceTransformer.logger:Lorg/apache/commons/logging/Log;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.springframework.web.servlet.resource.ResourceTransformerSupport.<init>:()V
1: aload 0
new java.util.ArrayList
dup
iconst_2
invokespecial java.util.ArrayList.<init>:(I)V
putfield org.springframework.web.servlet.resource.CssLinkResourceTransformer.linkParsers:Ljava/util/List;
2: aload 0
getfield org.springframework.web.servlet.resource.CssLinkResourceTransformer.linkParsers:Ljava/util/List;
new org.springframework.web.servlet.resource.CssLinkResourceTransformer$ImportStatementLinkParser
dup
invokespecial org.springframework.web.servlet.resource.CssLinkResourceTransformer$ImportStatementLinkParser.<init>:()V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
3: aload 0
getfield org.springframework.web.servlet.resource.CssLinkResourceTransformer.linkParsers:Ljava/util/List;
new org.springframework.web.servlet.resource.CssLinkResourceTransformer$UrlFunctionLinkParser
dup
invokespecial org.springframework.web.servlet.resource.CssLinkResourceTransformer$UrlFunctionLinkParser.<init>:()V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/web/servlet/resource/CssLinkResourceTransformer;
public org.springframework.core.io.Resource transform(javax.servlet.http.HttpServletRequest, org.springframework.core.io.Resource, org.springframework.web.servlet.resource.ResourceTransformerChain);
descriptor: (Ljavax/servlet/http/HttpServletRequest;Lorg/springframework/core/io/Resource;Lorg/springframework/web/servlet/resource/ResourceTransformerChain;)Lorg/springframework/core/io/Resource;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=15, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 3
aload 1
aload 2
invokeinterface org.springframework.web.servlet.resource.ResourceTransformerChain.transform:(Ljavax/servlet/http/HttpServletRequest;Lorg/springframework/core/io/Resource;)Lorg/springframework/core/io/Resource;
astore 2
1: aload 2
invokeinterface org.springframework.core.io.Resource.getFilename:()Ljava/lang/String;
astore 4
start local 4 2: ldc "css"
aload 4
invokestatic org.springframework.util.StringUtils.getFilenameExtension:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 5
3: aload 2
instanceof org.springframework.web.servlet.resource.EncodedResourceResolver$EncodedResource
ifne 5
4: aload 2
instanceof org.springframework.web.servlet.resource.GzipResourceResolver$GzippedResource
ifeq 6
5: StackMap locals: java.lang.String
StackMap stack:
aload 2
areturn
6: StackMap locals:
StackMap stack:
aload 2
invokeinterface org.springframework.core.io.Resource.getInputStream:()Ljava/io/InputStream;
invokestatic org.springframework.util.FileCopyUtils.copyToByteArray:(Ljava/io/InputStream;)[B
astore 5
start local 5 7: new java.lang.String
dup
aload 5
getstatic org.springframework.web.servlet.resource.CssLinkResourceTransformer.DEFAULT_CHARSET:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
astore 6
start local 6 8: new java.util.TreeSet
dup
invokespecial java.util.TreeSet.<init>:()V
astore 7
start local 7 9: aload 0
getfield org.springframework.web.servlet.resource.CssLinkResourceTransformer.linkParsers:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 9
goto 12
StackMap locals: org.springframework.web.servlet.resource.CssLinkResourceTransformer javax.servlet.http.HttpServletRequest org.springframework.core.io.Resource org.springframework.web.servlet.resource.ResourceTransformerChain java.lang.String byte[] java.lang.String java.util.SortedSet top java.util.Iterator
StackMap stack:
10: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.springframework.web.servlet.resource.CssLinkResourceTransformer$LinkParser
astore 8
start local 8 11: aload 8
aload 6
aload 7
invokeinterface org.springframework.web.servlet.resource.CssLinkResourceTransformer$LinkParser.parse:(Ljava/lang/String;Ljava/util/SortedSet;)V
end local 8 12: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
13: aload 7
invokeinterface java.util.SortedSet.isEmpty:()Z
ifeq 15
14: aload 2
areturn
15: StackMap locals: org.springframework.web.servlet.resource.CssLinkResourceTransformer javax.servlet.http.HttpServletRequest org.springframework.core.io.Resource org.springframework.web.servlet.resource.ResourceTransformerChain java.lang.String byte[] java.lang.String java.util.SortedSet
StackMap stack:
iconst_0
istore 8
start local 8 16: new java.io.StringWriter
dup
invokespecial java.io.StringWriter.<init>:()V
astore 9
start local 9 17: aload 7
invokeinterface java.util.SortedSet.iterator:()Ljava/util/Iterator;
astore 11
goto 29
StackMap locals: org.springframework.web.servlet.resource.CssLinkResourceTransformer javax.servlet.http.HttpServletRequest org.springframework.core.io.Resource org.springframework.web.servlet.resource.ResourceTransformerChain java.lang.String byte[] java.lang.String java.util.SortedSet int java.io.StringWriter top java.util.Iterator
StackMap stack:
18: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.springframework.web.servlet.resource.CssLinkResourceTransformer$ContentChunkInfo
astore 10
start local 10 19: aload 9
aload 6
iload 8
aload 10
invokevirtual org.springframework.web.servlet.resource.CssLinkResourceTransformer$ContentChunkInfo.getStart:()I
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
invokevirtual java.io.StringWriter.write:(Ljava/lang/String;)V
20: aload 6
aload 10
invokevirtual org.springframework.web.servlet.resource.CssLinkResourceTransformer$ContentChunkInfo.getStart:()I
aload 10
invokevirtual org.springframework.web.servlet.resource.CssLinkResourceTransformer$ContentChunkInfo.getEnd:()I
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 12
start local 12 21: aconst_null
astore 13
start local 13 22: aload 0
aload 12
invokevirtual org.springframework.web.servlet.resource.CssLinkResourceTransformer.hasScheme:(Ljava/lang/String;)Z
ifne 25
23: aload 0
aload 12
aload 1
invokevirtual org.springframework.web.servlet.resource.CssLinkResourceTransformer.toAbsolutePath:(Ljava/lang/String;Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String;
astore 14
start local 14 24: aload 0
aload 14
aload 1
aload 2
aload 3
invokevirtual org.springframework.web.servlet.resource.CssLinkResourceTransformer.resolveUrlPath:(Ljava/lang/String;Ljavax/servlet/http/HttpServletRequest;Lorg/springframework/core/io/Resource;Lorg/springframework/web/servlet/resource/ResourceTransformerChain;)Ljava/lang/String;
astore 13
end local 14 25: StackMap locals: org.springframework.web.servlet.resource.CssLinkResourceTransformer javax.servlet.http.HttpServletRequest org.springframework.core.io.Resource org.springframework.web.servlet.resource.ResourceTransformerChain java.lang.String byte[] java.lang.String java.util.SortedSet int java.io.StringWriter org.springframework.web.servlet.resource.CssLinkResourceTransformer$ContentChunkInfo java.util.Iterator java.lang.String java.lang.String
StackMap stack:
aload 9
aload 13
ifnull 26
aload 13
goto 27
StackMap locals:
StackMap stack: java.io.StringWriter
26: aload 12
StackMap locals: org.springframework.web.servlet.resource.CssLinkResourceTransformer javax.servlet.http.HttpServletRequest org.springframework.core.io.Resource org.springframework.web.servlet.resource.ResourceTransformerChain java.lang.String byte[] java.lang.String java.util.SortedSet int java.io.StringWriter org.springframework.web.servlet.resource.CssLinkResourceTransformer$ContentChunkInfo java.util.Iterator java.lang.String java.lang.String
StackMap stack: java.io.StringWriter java.lang.String
27: invokevirtual java.io.StringWriter.write:(Ljava/lang/String;)V
28: aload 10
invokevirtual org.springframework.web.servlet.resource.CssLinkResourceTransformer$ContentChunkInfo.getEnd:()I
istore 8
end local 13 end local 12 end local 10 29: StackMap locals: org.springframework.web.servlet.resource.CssLinkResourceTransformer javax.servlet.http.HttpServletRequest org.springframework.core.io.Resource org.springframework.web.servlet.resource.ResourceTransformerChain java.lang.String byte[] java.lang.String java.util.SortedSet int java.io.StringWriter top java.util.Iterator
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 18
30: aload 9
aload 6
iload 8
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokevirtual java.io.StringWriter.write:(Ljava/lang/String;)V
31: new org.springframework.web.servlet.resource.TransformedResource
dup
aload 2
aload 9
invokevirtual java.io.StringWriter.toString:()Ljava/lang/String;
getstatic org.springframework.web.servlet.resource.CssLinkResourceTransformer.DEFAULT_CHARSET:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokespecial org.springframework.web.servlet.resource.TransformedResource.<init>:(Lorg/springframework/core/io/Resource;[B)V
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lorg/springframework/web/servlet/resource/CssLinkResourceTransformer;
0 32 1 request Ljavax/servlet/http/HttpServletRequest;
0 32 2 resource Lorg/springframework/core/io/Resource;
0 32 3 transformerChain Lorg/springframework/web/servlet/resource/ResourceTransformerChain;
2 32 4 filename Ljava/lang/String;
7 32 5 bytes [B
8 32 6 content Ljava/lang/String;
9 32 7 links Ljava/util/SortedSet<Lorg/springframework/web/servlet/resource/CssLinkResourceTransformer$ContentChunkInfo;>;
11 12 8 parser Lorg/springframework/web/servlet/resource/CssLinkResourceTransformer$LinkParser;
16 32 8 index I
17 32 9 writer Ljava/io/StringWriter;
19 29 10 linkContentChunkInfo Lorg/springframework/web/servlet/resource/CssLinkResourceTransformer$ContentChunkInfo;
21 29 12 link Ljava/lang/String;
22 29 13 newLink Ljava/lang/String;
24 25 14 absolutePath Ljava/lang/String;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
request
resource
transformerChain
private boolean hasScheme(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
bipush 58
invokevirtual java.lang.String.indexOf:(I)I
istore 2
start local 2 1: iload 2
ifle 2
aload 1
iconst_0
iload 2
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
ldc "/"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 3
StackMap locals: int
StackMap stack:
2: aload 1
ldc "//"
invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
ifeq 3
iconst_0
ireturn
StackMap locals:
StackMap stack:
3: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/web/servlet/resource/CssLinkResourceTransformer;
0 4 1 link Ljava/lang/String;
1 4 2 schemeIndex I
MethodParameters:
Name Flags
link
}
SourceFile: "CssLinkResourceTransformer.java"
NestMembers:
org.springframework.web.servlet.resource.CssLinkResourceTransformer$AbstractLinkParser org.springframework.web.servlet.resource.CssLinkResourceTransformer$ContentChunkInfo org.springframework.web.servlet.resource.CssLinkResourceTransformer$ImportStatementLinkParser org.springframework.web.servlet.resource.CssLinkResourceTransformer$LinkParser org.springframework.web.servlet.resource.CssLinkResourceTransformer$UrlFunctionLinkParser
InnerClasses:
protected abstract AbstractLinkParser = org.springframework.web.servlet.resource.CssLinkResourceTransformer$AbstractLinkParser of org.springframework.web.servlet.resource.CssLinkResourceTransformer
private ContentChunkInfo = org.springframework.web.servlet.resource.CssLinkResourceTransformer$ContentChunkInfo of org.springframework.web.servlet.resource.CssLinkResourceTransformer
private ImportStatementLinkParser = org.springframework.web.servlet.resource.CssLinkResourceTransformer$ImportStatementLinkParser of org.springframework.web.servlet.resource.CssLinkResourceTransformer
protected abstract LinkParser = org.springframework.web.servlet.resource.CssLinkResourceTransformer$LinkParser of org.springframework.web.servlet.resource.CssLinkResourceTransformer
private UrlFunctionLinkParser = org.springframework.web.servlet.resource.CssLinkResourceTransformer$UrlFunctionLinkParser of org.springframework.web.servlet.resource.CssLinkResourceTransformer
final EncodedResource = org.springframework.web.servlet.resource.EncodedResourceResolver$EncodedResource of org.springframework.web.servlet.resource.EncodedResourceResolver
final GzippedResource = org.springframework.web.servlet.resource.GzipResourceResolver$GzippedResource of org.springframework.web.servlet.resource.GzipResourceResolver