/* (c) 2016 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.web.resources; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URLConnection; import org.apache.wicket.util.resource.AbstractResourceStream; import org.apache.wicket.util.resource.ResourceStreamNotFoundException; import org.apache.wicket.util.time.Time; import org.geoserver.platform.resource.Resource; /** * * Adaptor for Resource -> wicket ResourceStream * * @author Niels Charlier * */ public class WicketResourceAdaptor extends AbstractResourceStream { private static final long serialVersionUID = -1009868612769713937L; protected Resource resource; public WicketResourceAdaptor(Resource resource) { this.resource = resource; } @Override public InputStream getInputStream() throws ResourceStreamNotFoundException { return resource.in(); } @Override public String getContentType() { String mimeType = URLConnection.guessContentTypeFromName(resource.name()); if (mimeType == null) { //try guessing from data try (InputStream is = new BufferedInputStream(resource.in())) { mimeType = URLConnection.guessContentTypeFromStream(is); } catch (IOException e) { //do nothing, we'll just use application/octet-stream } } return mimeType == null ? "application/octet-stream" : mimeType; } @Override public Time lastModifiedTime() { return Time.millis(resource.lastmodified()); } @Override public void close() throws IOException { //do nothing } }