class nu.xom.canonical.URIJoiner
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: nu.xom.canonical.URIJoiner
super_class: java.lang.Object
{
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lnu/xom/canonical/URIJoiner;
static java.lang.String absolutize(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: ldc ""
aload 0
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 1
aload 0
ifnonnull 2
StackMap locals:
StackMap stack:
1: aload 1
areturn
2: StackMap locals:
StackMap stack:
new nu.xom.canonical.URIJoiner$ParsedURI
dup
aload 0
invokespecial nu.xom.canonical.URIJoiner$ParsedURI.<init>:(Ljava/lang/String;)V
astore 2
start local 2 3: aload 2
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
ldc "/.."
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 4
aload 2
dup
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
new java.lang.StringBuilder
dup_x1
swap
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
bipush 47
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
4: StackMap locals: nu.xom.canonical.URIJoiner$ParsedURI
StackMap stack:
new nu.xom.canonical.URIJoiner$ParsedURI
dup
aload 1
invokespecial nu.xom.canonical.URIJoiner$ParsedURI.<init>:(Ljava/lang/String;)V
astore 3
start local 3 5: new nu.xom.canonical.URIJoiner$ParsedURI
dup
invokespecial nu.xom.canonical.URIJoiner$ParsedURI.<init>:()V
astore 4
start local 4 6: aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.scheme:Ljava/lang/String;
ifnull 12
7: aload 4
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.scheme:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.scheme:Ljava/lang/String;
8: aload 4
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.authority:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.authority:Ljava/lang/String;
9: aload 4
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.query:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.query:Ljava/lang/String;
10: aload 4
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
invokestatic nu.xom.canonical.URIJoiner.removeDotSegments:(Ljava/lang/String;)Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
11: goto 32
12: StackMap locals: nu.xom.canonical.URIJoiner$ParsedURI nu.xom.canonical.URIJoiner$ParsedURI
StackMap stack:
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.authority:Ljava/lang/String;
ifnull 17
13: aload 4
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.authority:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.authority:Ljava/lang/String;
14: aload 4
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.query:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.query:Ljava/lang/String;
15: aload 4
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
invokestatic nu.xom.canonical.URIJoiner.removeDotSegments:(Ljava/lang/String;)Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
16: goto 31
17: StackMap locals:
StackMap stack:
ldc ""
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 24
18: aload 4
aload 2
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
19: aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.query:Ljava/lang/String;
ifnull 22
20: aload 4
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.query:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.query:Ljava/lang/String;
21: goto 30
22: StackMap locals:
StackMap stack:
aload 4
aload 2
getfield nu.xom.canonical.URIJoiner$ParsedURI.query:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.query:Ljava/lang/String;
23: goto 30
24: StackMap locals:
StackMap stack:
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
ldc "/"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 27
25: aload 4
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
invokestatic nu.xom.canonical.URIJoiner.removeDotSegments:(Ljava/lang/String;)Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
26: goto 29
27: StackMap locals:
StackMap stack:
aload 4
aload 2
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
invokestatic nu.xom.canonical.URIJoiner.merge:(Lnu/xom/canonical/URIJoiner$ParsedURI;Ljava/lang/String;)Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
28: aload 4
aload 4
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
invokestatic nu.xom.canonical.URIJoiner.removeDotSegments:(Ljava/lang/String;)Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
29: StackMap locals:
StackMap stack:
aload 4
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.query:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.query:Ljava/lang/String;
30: StackMap locals:
StackMap stack:
aload 4
aload 2
getfield nu.xom.canonical.URIJoiner$ParsedURI.authority:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.authority:Ljava/lang/String;
31: StackMap locals:
StackMap stack:
aload 4
aload 2
getfield nu.xom.canonical.URIJoiner$ParsedURI.scheme:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.scheme:Ljava/lang/String;
32: StackMap locals:
StackMap stack:
aload 4
aload 3
getfield nu.xom.canonical.URIJoiner$ParsedURI.fragment:Ljava/lang/String;
putfield nu.xom.canonical.URIJoiner$ParsedURI.fragment:Ljava/lang/String;
33: aload 4
invokevirtual nu.xom.canonical.URIJoiner$ParsedURI.toString:()Ljava/lang/String;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 34 0 baseURI Ljava/lang/String;
0 34 1 spec Ljava/lang/String;
3 34 2 base Lnu/xom/canonical/URIJoiner$ParsedURI;
5 34 3 R Lnu/xom/canonical/URIJoiner$ParsedURI;
6 34 4 T Lnu/xom/canonical/URIJoiner$ParsedURI;
MethodParameters:
Name Flags
baseURI
spec
static java.lang.String merge(nu.xom.canonical.URIJoiner$ParsedURI, java.lang.String);
descriptor: (Lnu/xom/canonical/URIJoiner$ParsedURI;Ljava/lang/String;)Ljava/lang/String;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield nu.xom.canonical.URIJoiner$ParsedURI.authority:Ljava/lang/String;
ifnull 3
ldc ""
aload 0
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 3
1: ldc ""
aload 0
getfield nu.xom.canonical.URIJoiner$ParsedURI.authority:Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 3
2: new java.lang.StringBuilder
dup
ldc "/"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
3: StackMap locals:
StackMap stack:
aload 0
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
bipush 47
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 2
start local 2 4: iload 2
iconst_m1
if_icmpne 5
aload 1
areturn
5: StackMap locals: int
StackMap stack:
aload 0
getfield nu.xom.canonical.URIJoiner$ParsedURI.path:Ljava/lang/String;
iconst_0
iload 2
iconst_1
iadd
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 3
start local 3 6: new java.lang.StringBuilder
dup
aload 3
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 base Lnu/xom/canonical/URIJoiner$ParsedURI;
0 7 1 relativePath Ljava/lang/String;
4 7 2 lastSlash I
6 7 3 topPath Ljava/lang/String;
MethodParameters:
Name Flags
base
relativePath
static java.lang.String removeDotSegments(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: new java.lang.StringBuffer
dup
invokespecial java.lang.StringBuffer.<init>:()V
astore 1
start local 1 1: goto 27
2: StackMap locals: java.lang.StringBuffer
StackMap stack:
aload 0
ldc "/./"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 5
3: new java.lang.StringBuilder
dup
bipush 47
invokestatic java.lang.String.valueOf:(C)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
iconst_3
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 0
4: goto 27
5: StackMap locals:
StackMap stack:
aload 0
ldc "/."
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 8
6: ldc "/"
astore 0
7: goto 27
8: StackMap locals:
StackMap stack:
aload 0
ldc "/.."
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 13
9: ldc "/"
astore 0
10: aload 1
invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
bipush 47
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 2
start local 2 11: iload 2
iconst_m1
if_icmpeq 27
aload 1
iload 2
invokevirtual java.lang.StringBuffer.setLength:(I)V
end local 2 12: goto 27
13: StackMap locals:
StackMap stack:
aload 0
ldc "."
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 16
14: ldc ""
astore 0
15: goto 27
16: StackMap locals:
StackMap stack:
aload 0
ldc "./"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 19
17: aload 0
iconst_2
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 0
18: goto 27
19: StackMap locals:
StackMap stack:
aload 0
bipush 47
invokevirtual java.lang.String.indexOf:(I)I
istore 2
start local 2 20: iload 2
ifne 21
aload 0
bipush 47
iconst_1
invokevirtual java.lang.String.indexOf:(II)I
istore 2
21: StackMap locals: int
StackMap stack:
iload 2
iconst_m1
if_icmpne 25
22: aload 1
aload 0
invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
pop
23: ldc ""
astore 0
24: goto 27
25: StackMap locals:
StackMap stack:
aload 1
aload 0
iconst_0
iload 2
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
pop
26: aload 0
iload 2
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 0
end local 2 27: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.String.length:()I
ifgt 2
28: aload 1
invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 path Ljava/lang/String;
1 29 1 output Ljava/lang/StringBuffer;
11 12 2 lastSlash I
20 27 2 nextSlash I
MethodParameters:
Name Flags
path
}
SourceFile: "URIJoiner.java"
NestMembers:
nu.xom.canonical.URIJoiner$ParsedURI
InnerClasses:
ParsedURI = nu.xom.canonical.URIJoiner$ParsedURI of nu.xom.canonical.URIJoiner