EN · DE · RU · FR · ES

#3183: BatikImage.java

projectforge-wicket/src/main/java/org/projectforge/web/wicket/BatikImage.java Type: Java · Role: Component · Source: projectforge-wicket/src/main/java/org/projectforge/web/wicket/BatikImage.java 86 lines · 48 code · 24 comments · 14 blank
Source code file at projectforge-wicket/src/main/java/org/projectforge/web/wicket/BatikImage.java containing Java code for the Component layer.

Code Structure

Package: org.projectforge.web.wicket

Classes: BatikImage

Extends: Image

Methods (2): getImageResource, configureResponse

Fields (2): serialVersionUID, width

Imports: 8 packages

Source Code (abridged)

package org.projectforge.web.wicket;

import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.request.http.WebResponse.CacheScope;
import org.apache.wicket.request.resource.AbstractResource;
import org.apache.wicket.request.resource.DynamicImageResource;
import org.projectforge.framework.renderer.BatikImageRenderer;
import org.projectforge.framework.renderer.ImageFormat;
import org.w3c.dom.Document;

import java.time.Duration;

public class BatikImage extends Image
{
  private static final long serialVersionUID = -167624996888880342L;

  private final int width;

  private byte[] ba;

  private transient Document document;

  public BatikImage(final String id, final Document document, final int width)
  {
    super(id);
    this.document = document;
    this.width = width;
  }

  private byte[] getByteArray()
  {
    if (ba == null) {
      ba = BatikImageRenderer.getByteArray(document, width, ImageFormat.PNG);
    }
    return ba;
  }

  @SuppressWarnings("serial")
  @Override
  protected AbstractResource getImageResource()
  {
    return new DynamicImageResource() {

      @Override
      protected byte[] getImageData(final Attributes attributes)
      {
        return getByteArray();
      }

      @Override
      protected void configureResponse(final ResourceResponse response, final Attributes attributes)
      {
        super.configureResponse(response, attributes);

        // if (isCacheable() == false) {
        response.setCacheDuration(Duration.ofMillis(0));
        response.setCacheScope(CacheScope.PRIVATE);
        // }
      }
    };
  }

}

Git History

868d6abb7 2025 -> 2026
63081666f Source file headers: 2024-> 2025.
57935eb50 Java 11, but Wicket 9. Runs more or less (tbd: Kotlin scripts, Wicket-Serialization-issues on WicketMenuBuilder, jupiter-tests, ...)
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.