public class org.springframework.core.io.UrlResource extends org.springframework.core.io.AbstractFileResolvingResource
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.core.io.UrlResource
  super_class: org.springframework.core.io.AbstractFileResolvingResource
{
  private final java.net.URI uri;
    descriptor: Ljava/net/URI;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private final java.net.URL url;
    descriptor: Ljava/net/URL;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.net.URL cleanedUrl;
    descriptor: Ljava/net/URL;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(java.net.URI);
    descriptor: (Ljava/net/URI;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.core.io.UrlResource this
        start local 1 // java.net.URI uri
         0: .line 68
            aload 0 /* this */
            invokespecial org.springframework.core.io.AbstractFileResolvingResource.<init>:()V
         1: .line 69
            aload 1 /* uri */
            ldc "URI must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 70
            aload 0 /* this */
            aload 1 /* uri */
            putfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
         3: .line 71
            aload 0 /* this */
            aload 1 /* uri */
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            putfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
         4: .line 72
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
            aload 1 /* uri */
            invokevirtual java.net.URI.toString:()Ljava/lang/String;
            invokevirtual org.springframework.core.io.UrlResource.getCleanedUrl:(Ljava/net/URL;Ljava/lang/String;)Ljava/net/URL;
            putfield org.springframework.core.io.UrlResource.cleanedUrl:Ljava/net/URL;
         5: .line 73
            return
        end local 1 // java.net.URI uri
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/springframework/core/io/UrlResource;
            0    6     1   uri  Ljava/net/URI;
    Exceptions:
      throws java.net.MalformedURLException
    MethodParameters:
      Name  Flags
      uri   

  public void <init>(java.net.URL);
    descriptor: (Ljava/net/URL;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.core.io.UrlResource this
        start local 1 // java.net.URL url
         0: .line 79
            aload 0 /* this */
            invokespecial org.springframework.core.io.AbstractFileResolvingResource.<init>:()V
         1: .line 80
            aload 1 /* url */
            ldc "URL must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 81
            aload 0 /* this */
            aload 1 /* url */
            putfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
         3: .line 82
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
            aload 1 /* url */
            invokevirtual java.net.URL.toString:()Ljava/lang/String;
            invokevirtual org.springframework.core.io.UrlResource.getCleanedUrl:(Ljava/net/URL;Ljava/lang/String;)Ljava/net/URL;
            putfield org.springframework.core.io.UrlResource.cleanedUrl:Ljava/net/URL;
         4: .line 83
            aload 0 /* this */
            aconst_null
            putfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
         5: .line 84
            return
        end local 1 // java.net.URL url
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/springframework/core/io/UrlResource;
            0    6     1   url  Ljava/net/URL;
    MethodParameters:
      Name  Flags
      url   

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.core.io.UrlResource this
        start local 1 // java.lang.String path
         0: .line 93
            aload 0 /* this */
            invokespecial org.springframework.core.io.AbstractFileResolvingResource.<init>:()V
         1: .line 94
            aload 1 /* path */
            ldc "Path must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 95
            aload 0 /* this */
            aconst_null
            putfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
         3: .line 96
            aload 0 /* this */
            new java.net.URL
            dup
            aload 1 /* path */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            putfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
         4: .line 97
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
            aload 1 /* path */
            invokevirtual org.springframework.core.io.UrlResource.getCleanedUrl:(Ljava/net/URL;Ljava/lang/String;)Ljava/net/URL;
            putfield org.springframework.core.io.UrlResource.cleanedUrl:Ljava/net/URL;
         5: .line 98
            return
        end local 1 // java.lang.String path
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/springframework/core/io/UrlResource;
            0    6     1  path  Ljava/lang/String;
    Exceptions:
      throws java.net.MalformedURLException
    MethodParameters:
      Name  Flags
      path  

  public void <init>(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.springframework.core.io.UrlResource this
        start local 1 // java.lang.String protocol
        start local 2 // java.lang.String location
         0: .line 111
            aload 0 /* this */
            aload 1 /* protocol */
            aload 2 /* location */
            aconst_null
            invokespecial org.springframework.core.io.UrlResource.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         1: .line 112
            return
        end local 2 // java.lang.String location
        end local 1 // java.lang.String protocol
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/springframework/core/io/UrlResource;
            0    2     1  protocol  Ljava/lang/String;
            0    2     2  location  Ljava/lang/String;
    Exceptions:
      throws java.net.MalformedURLException
    MethodParameters:
          Name  Flags
      protocol  
      location  

  public void <init>(java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // org.springframework.core.io.UrlResource this
        start local 1 // java.lang.String protocol
        start local 2 // java.lang.String location
        start local 3 // java.lang.String fragment
         0: .line 126
            aload 0 /* this */
            invokespecial org.springframework.core.io.AbstractFileResolvingResource.<init>:()V
         1: .line 128
            aload 0 /* this */
            new java.net.URI
            dup
            aload 1 /* protocol */
            aload 2 /* location */
            aload 3 /* fragment */
            invokespecial java.net.URI.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            putfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
         2: .line 129
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            putfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
         3: .line 130
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
            invokevirtual java.net.URI.toString:()Ljava/lang/String;
            invokevirtual org.springframework.core.io.UrlResource.getCleanedUrl:(Ljava/net/URL;Ljava/lang/String;)Ljava/net/URL;
            putfield org.springframework.core.io.UrlResource.cleanedUrl:Ljava/net/URL;
         4: .line 131
            goto 9
         5: .line 132
      StackMap locals: org.springframework.core.io.UrlResource java.lang.String java.lang.String java.lang.String
      StackMap stack: java.net.URISyntaxException
            astore 4 /* ex */
        start local 4 // java.net.URISyntaxException ex
         6: .line 133
            new java.net.MalformedURLException
            dup
            aload 4 /* ex */
            invokevirtual java.net.URISyntaxException.getMessage:()Ljava/lang/String;
            invokespecial java.net.MalformedURLException.<init>:(Ljava/lang/String;)V
            astore 5 /* exToThrow */
        start local 5 // java.net.MalformedURLException exToThrow
         7: .line 134
            aload 5 /* exToThrow */
            aload 4 /* ex */
            invokevirtual java.net.MalformedURLException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
         8: .line 135
            aload 5 /* exToThrow */
            athrow
        end local 5 // java.net.MalformedURLException exToThrow
        end local 4 // java.net.URISyntaxException ex
         9: .line 137
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.String fragment
        end local 2 // java.lang.String location
        end local 1 // java.lang.String protocol
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lorg/springframework/core/io/UrlResource;
            0   10     1   protocol  Ljava/lang/String;
            0   10     2   location  Ljava/lang/String;
            0   10     3   fragment  Ljava/lang/String;
            6    9     4         ex  Ljava/net/URISyntaxException;
            7    9     5  exToThrow  Ljava/net/MalformedURLException;
      Exception table:
        from    to  target  type
           1     4       5  Class java.net.URISyntaxException
    Exceptions:
      throws java.net.MalformedURLException
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.springframework.lang.Nullable()
    MethodParameters:
          Name  Flags
      protocol  
      location  
      fragment  

  private java.net.URL getCleanedUrl(java.net.URL, java.lang.String);
    descriptor: (Ljava/net/URL;Ljava/lang/String;)Ljava/net/URL;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.springframework.core.io.UrlResource this
        start local 1 // java.net.URL originalUrl
        start local 2 // java.lang.String originalPath
         0: .line 148
            aload 2 /* originalPath */
            invokestatic org.springframework.util.StringUtils.cleanPath:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* cleanedPath */
        start local 3 // java.lang.String cleanedPath
         1: .line 149
            aload 3 /* cleanedPath */
            aload 2 /* originalPath */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
         2: .line 151
            new java.net.URL
            dup
            aload 3 /* cleanedPath */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
         3: areturn
         4: .line 153
      StackMap locals: org.springframework.core.io.UrlResource java.net.URL java.lang.String java.lang.String
      StackMap stack: java.net.MalformedURLException
            pop
         5: .line 157
      StackMap locals:
      StackMap stack:
            aload 1 /* originalUrl */
            areturn
        end local 3 // java.lang.String cleanedPath
        end local 2 // java.lang.String originalPath
        end local 1 // java.net.URL originalUrl
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lorg/springframework/core/io/UrlResource;
            0    6     1   originalUrl  Ljava/net/URL;
            0    6     2  originalPath  Ljava/lang/String;
            1    6     3   cleanedPath  Ljava/lang/String;
      Exception table:
        from    to  target  type
           2     3       4  Class java.net.MalformedURLException
    MethodParameters:
              Name  Flags
      originalUrl   
      originalPath  

  public java.io.InputStream getInputStream();
    descriptor: ()Ljava/io/InputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // org.springframework.core.io.UrlResource this
         0: .line 170
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            astore 1 /* con */
        start local 1 // java.net.URLConnection con
         1: .line 171
            aload 1 /* con */
            invokestatic org.springframework.util.ResourceUtils.useCachesIfNecessary:(Ljava/net/URLConnection;)V
         2: .line 173
            aload 1 /* con */
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
         3: areturn
         4: .line 175
      StackMap locals: org.springframework.core.io.UrlResource java.net.URLConnection
      StackMap stack: java.io.IOException
            astore 2 /* ex */
        start local 2 // java.io.IOException ex
         5: .line 177
            aload 1 /* con */
            instanceof java.net.HttpURLConnection
            ifeq 7
         6: .line 178
            aload 1 /* con */
            checkcast java.net.HttpURLConnection
            invokevirtual java.net.HttpURLConnection.disconnect:()V
         7: .line 180
      StackMap locals: java.io.IOException
      StackMap stack:
            aload 2 /* ex */
            athrow
        end local 2 // java.io.IOException ex
        end local 1 // java.net.URLConnection con
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/springframework/core/io/UrlResource;
            1    8     1   con  Ljava/net/URLConnection;
            5    8     2    ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     3       4  Class java.io.IOException
    Exceptions:
      throws java.io.IOException

  public java.net.URL getURL();
    descriptor: ()Ljava/net/URL;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.core.io.UrlResource this
         0: .line 189
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
            areturn
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/core/io/UrlResource;

  public java.net.URI getURI();
    descriptor: ()Ljava/net/URI;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.core.io.UrlResource this
         0: .line 198
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
            ifnull 2
         1: .line 199
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
            areturn
         2: .line 202
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial org.springframework.core.io.AbstractFileResolvingResource.getURI:()Ljava/net/URI;
            areturn
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/core/io/UrlResource;
    Exceptions:
      throws java.io.IOException

  public boolean isFile();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.core.io.UrlResource this
         0: .line 208
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
            ifnull 2
         1: .line 209
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
            invokespecial org.springframework.core.io.AbstractFileResolvingResource.isFile:(Ljava/net/URI;)Z
            ireturn
         2: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial org.springframework.core.io.AbstractFileResolvingResource.isFile:()Z
            ireturn
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/core/io/UrlResource;

  public java.io.File getFile();
    descriptor: ()Ljava/io/File;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.core.io.UrlResource this
         0: .line 223
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
            ifnull 2
         1: .line 224
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.uri:Ljava/net/URI;
            invokespecial org.springframework.core.io.AbstractFileResolvingResource.getFile:(Ljava/net/URI;)Ljava/io/File;
            areturn
         2: .line 227
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial org.springframework.core.io.AbstractFileResolvingResource.getFile:()Ljava/io/File;
            areturn
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/core/io/UrlResource;
    Exceptions:
      throws java.io.IOException

  public org.springframework.core.io.Resource createRelative(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/springframework/core/io/Resource;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.springframework.core.io.UrlResource this
        start local 1 // java.lang.String relativePath
         0: .line 238
            aload 1 /* relativePath */
            ldc "/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 239
            aload 1 /* relativePath */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* relativePath */
         2: .line 241
      StackMap locals:
      StackMap stack:
            new org.springframework.core.io.UrlResource
            dup
            new java.net.URL
            dup
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
            aload 1 /* relativePath */
            invokespecial java.net.URL.<init>:(Ljava/net/URL;Ljava/lang/String;)V
            invokespecial org.springframework.core.io.UrlResource.<init>:(Ljava/net/URL;)V
            areturn
        end local 1 // java.lang.String relativePath
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lorg/springframework/core/io/UrlResource;
            0    3     1  relativePath  Ljava/lang/String;
    Exceptions:
      throws java.net.MalformedURLException
    MethodParameters:
              Name  Flags
      relativePath  

  public java.lang.String getFilename();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.core.io.UrlResource this
         0: .line 250
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.cleanedUrl:Ljava/net/URL;
            invokevirtual java.net.URL.getPath:()Ljava/lang/String;
            invokestatic org.springframework.util.StringUtils.getFilename:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/core/io/UrlResource;

  public java.lang.String getDescription();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.core.io.UrlResource this
         0: .line 258
            new java.lang.StringBuilder
            dup
            ldc "URL ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.url:Ljava/net/URL;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/core/io/UrlResource;

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.core.io.UrlResource this
        start local 1 // java.lang.Object other
         0: .line 267
            aload 0 /* this */
            aload 1 /* other */
            if_acmpeq 3
            aload 1 /* other */
            instanceof org.springframework.core.io.UrlResource
            ifeq 2
         1: .line 268
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.cleanedUrl:Ljava/net/URL;
            aload 1 /* other */
            checkcast org.springframework.core.io.UrlResource
            getfield org.springframework.core.io.UrlResource.cleanedUrl:Ljava/net/URL;
            invokevirtual java.net.URL.equals:(Ljava/lang/Object;)Z
            ifne 3
         2: .line 267
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 1 // java.lang.Object other
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/springframework/core/io/UrlResource;
            0    4     1  other  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      other  

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.core.io.UrlResource this
         0: .line 276
            aload 0 /* this */
            getfield org.springframework.core.io.UrlResource.cleanedUrl:Ljava/net/URL;
            invokevirtual java.net.URL.hashCode:()I
            ireturn
        end local 0 // org.springframework.core.io.UrlResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/core/io/UrlResource;
}
SourceFile: "UrlResource.java"