def update_cache(source=@url, destination=@local_path, options={})
      unless destination
        raise ArgumentError, "Must specify destination directory when updatng resource", caller
      end
      file_exists = File.exists?(destination)
      if file_exists && @signature_verified == nil
        verify_signature
      end
      unless file_exists && @signature_verified
        FileUtils.mkdir_p(File.dirname(destination))
        puts "reading:     #{source}" if options[:verbose]
        tried_to_read = 0
        begin
          jarfile = open(source)
        rescue OpenURI::HTTPError => e
          puts e
          if tried_to_read < 1
            tried_to_read += 1
            retry
          end
        end
        if jarfile.class == Tempfile
          FileUtils.cp(jarfile.path, destination)
          puts "copying to:  #{destination}" if options[:verbose]
        else
          File.open(destination, 'w') {|f| f.write jarfile.read }
          puts "writing to:  #{destination}" if options[:verbose]
        end
        puts "#{jarfile.size} bytes written" if options[:verbose]
        verify_signature ? jarfile.size : false
      else
        File.size(destination)
      end
    end
def update_cache(source=@url, destination=@local_path, options={})
      unless destination
        raise ArgumentError, "Must specify destination directory when updatng resource", caller
      end
      file_exists = File.exists?(destination)
      if file_exists && @signature_verified == nil
        verify_signature
      end
      unless file_exists && @signature_verified
        FileUtils.mkdir_p(File.dirname(destination))
        puts "reading:     #{source}" if options[:verbose]
        tried_to_read = 0
        begin
          jarfile = open(source)
        rescue OpenURI::HTTPError => e
          puts e
          if tried_to_read < 1
            tried_to_read += 1
            retry
          end
        end
        if jarfile.class == Tempfile
          FileUtils.cp(jarfile.path, destination)
          puts "copying to:  #{destination}" if options[:verbose]
        else
          File.open(destination, 'w') {|f| f.write jarfile.read }
          puts "writing to:  #{destination}" if options[:verbose]
        end
        puts "#{jarfile.size} bytes written" if options[:verbose]
        verify_signature ? jarfile.size : false
      else
        File.size(destination)
      end
    end
Copies the file referenced in _source_ to _destination_
 _source_ can be a url or local file path
 _destination_ must be a local path

 Will copy file if the file does not exists
 OR if the the file exists but the signature has
 not been successfully verified.

 Returns file size if cached succesfully, false otherwise.