view src/nabble/view/lib/MyJtpServlet.java @ 47:72765b66e2c3

remove mailing list code
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 18 Jun 2021 17:44:24 -0600
parents 7ecd1a4ef557
children
line wrap: on
line source

package nabble.view.lib;

import fschmidt.util.servlet.DbCache;
import fschmidt.util.servlet.HttpCache;
import fschmidt.util.servlet.JtpContext;
import fschmidt.util.servlet.MemCache;
import nabble.model.Db;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


// misnamed for historical reasons
public final class MyJtpServlet {
	private static final Logger logger = LoggerFactory.getLogger(MyJtpServlet.class);

	public static final HttpCache cache;
	private static volatile JtpContextServlet jtpContext = null;
	private static final Object jtpContextLock = new Object();

	static {
//	    SitemapGen.runSitemap(new SitemapTemplate());
		cache =
			new MemCache(
				new DbCache(Db.dbGlobal())
			)
		;
	    Cache.init();

		synchronized(jtpContextLock) {
			jtpContext = new JtpContextServlet();
			jtpContext.addDestroyListener( new JtpContextServlet.DestroyListener() {
				public void destroyed() {
					jtpContext = null;
				}
			} );
			jtpContext.setBase("nabble.view.web");
			jtpContextLock.notifyAll();
		}
		jtpContext.setUrlMapper(new UrlMapperImpl(new Class[]{
			nabble.view.web.Index.class,
			nabble.view.web.embed.NabbleEmbed.class,
			nabble.view.web.forum.Permalink.class,
			nabble.view.web.forum.FileDownload.class,
		    nabble.view.web.forum.Thumbnail.class,
			nabble.view.web.forum.AttachmentDownload.class,
			nabble.view.web.template.NamlDownload.class,
			nabble.view.web.more.Forum.class,
			nabble.view.web.more.ForumStart.class,
			nabble.view.web.seo.WidgetRedir.class,
			nabble.view.web.util.GradientImage.class,
			nabble.view.web.util.RoundedCorner.class,
			nabble.view.web.w3c.PolicyXML.class,
			nabble.view.web.w3c.PolicyHTML.class,
			nabble.view.web.w3c.P3PXML.class,
			nabble.view.web.tools.Index.class,
		}));
		if( cache != null ) {
			jtpContext.setHttpCache(cache);
		}

		/**
		 * Adds a P3P compact header information to a HttpServletResponse object.
		 * This is required for the embedding project because Internet Explorer (IE) blocks
		 * cookies from a third-party iframe (different domain). This piece of code
		 * solves the problem and allows IE to save the cookies without problems.
		 */
		jtpContext.addCustomHeader("p3p", "CP=\"IDC DSP TAIi PSAi PSDi OTPi OUR IND PHY ONL UNI NAV DEM PRE LOC\"");
	}

	public static JtpContext getJtpContext() {
		return jtpContext;
	}

	public static JtpContext getJtpContextNotNull() {
		synchronized(jtpContextLock) {
			if( jtpContext==null ) {
				try {
					jtpContextLock.wait(10000L);
				} catch(InterruptedException e) {
					throw new RuntimeException(e);
				}
				if( jtpContext==null )
					throw new NullPointerException("jtpContext is null");
			}
			return jtpContext;
		}
	}

	public static void nop() {}
}