package org.vaadin.smartgwt.server; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import javax.inject.Singleton; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; @Singleton public class ImageServerResourcesServlet extends HttpServlet { private Bundle applicationBundle; public void activate(BundleContext context) { for (Bundle bundle : context.getBundles()) { if ("org.vaadin.org.vaadin.smartgwt".equals(bundle.getSymbolicName())) { this.applicationBundle = bundle; break; } } } public void deactivate(BundleContext context) { applicationBundle = null; } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String path = req.getPathInfo(); String resourcePath = "/img" + path; URL u = applicationBundle.getResource(resourcePath); if (null == u) { resp.sendError(HttpServletResponse.SC_NOT_FOUND); return; } final InputStream in = u.openStream(); final OutputStream out = resp.getOutputStream(); final byte[] buffer = new byte[1024]; int read = 0; while (-1 != (read = in.read(buffer))) { out.write(buffer, 0, read); } } }