コード例 #1
0
ファイル: ImageCacher.java プロジェクト: turenar/elnetw
 @Override
 public void onException(URLConnection connection, IOException e) {
   URL url = entry.url;
   if (connection instanceof HttpURLConnection) {
     int responseCode;
     try {
       responseCode = ((HttpURLConnection) connection).getResponseCode();
       if (responseCode >= 400 && responseCode < 500) { // CS-IGNORE
         // url is not local cache
         cachedImages.put(entry.getImageUrl(), new ErrorImageEntry(url, e));
         if (responseCode == HttpURLConnection.HTTP_NOT_FOUND) {
           logger.warn("not found: url={}", url);
         } else {
           logger.warn("Error while fetching: url={}, statusCode={}", url, responseCode, e);
         }
       } else {
         logger.warn("Error while fetching: url={}, statusCode={}", url, responseCode, e);
       }
     } catch (IOException responseCodeException) {
       logger.warn("Cannot retrieve http status code", responseCodeException);
     }
   } else {
     logger.warn("Error while fetching: {}", url, e);
   }
   if (entry.getAlternateEntry() != null) {
     entry = entry.getAlternateEntry();
     configuration.addJob(this);
   }
 }
コード例 #2
0
ファイル: ImageCacher.java プロジェクト: turenar/elnetw
 @Override
 public void run() {
   try {
     fetchImage(entry);
     ImageSetter setter = entry.getSetter();
     if (setter != null) {
       setter.setImageRecursively(entry.imageEntry.image);
     }
     fetchEntryMap.remove(entry.getImageUrl());
   } catch (InterruptedException e) {
     logger.warn("Interrupted: {}", entry.url);
   }
 }
コード例 #3
0
ファイル: ImageCacher.java プロジェクト: turenar/elnetw
  /**
   * 画像を取得する。
   *
   * @param entry イメージエントリ
   * @throws java.lang.InterruptedException interrupted
   */
  protected void fetchImage(FetchEntry entry) throws InterruptedException {
    synchronized (entry) {
      if (entry.isFinished()) {
        return;
      }

      byte[] imageData = NetworkSupport.fetchContents(entry.connectionInfo);
      ImageEntry imageEntry = entry.imageEntry;
      imageEntry.rawData = imageData;
      imageEntry.image = Toolkit.getDefaultToolkit().createImage(imageData);
      cachedImages.put(entry.getImageUrl(), entry.imageEntry);
      configuration.addJob(JobQueue.PRIORITY_IDLE, new ImageFlusher(imageEntry));
    }
  }