1 31 32 package org.opencms.frontend.templateone.form; 33 34 import org.opencms.file.CmsObject; 35 import org.opencms.main.CmsEvent; 36 import org.opencms.main.I_CmsEventListener; 37 import org.opencms.main.OpenCms; 38 39 import java.util.HashMap ; 40 import java.util.Map ; 41 42 import com.octo.captcha.service.image.ImageCaptchaService; 43 44 54 public final class CmsCaptchaServiceCache implements I_CmsEventListener { 55 56 57 private static CmsCaptchaServiceCache sharedInstance = null; 58 59 60 private Map m_captchaServices = null; 61 62 66 private CmsCaptchaServiceCache() { 67 68 super(); 69 70 OpenCms.addCmsEventListener(this, new int[] { 72 I_CmsEventListener.EVENT_CLEAR_CACHES, 73 I_CmsEventListener.EVENT_CLEAR_ONLINE_CACHES, 74 I_CmsEventListener.EVENT_CLEAR_OFFLINE_CACHES, 75 I_CmsEventListener.EVENT_PUBLISH_PROJECT}); 76 77 m_captchaServices = new HashMap (); 78 } 79 80 86 public static synchronized CmsCaptchaServiceCache getSharedInstance() { 87 88 if (sharedInstance == null) { 89 sharedInstance = new CmsCaptchaServiceCache(); 90 } 91 92 return sharedInstance; 93 } 94 95 98 public void cmsEvent(CmsEvent event) { 99 100 switch (event.getType()) { 101 case I_CmsEventListener.EVENT_CLEAR_CACHES: 102 case I_CmsEventListener.EVENT_CLEAR_ONLINE_CACHES: 103 case I_CmsEventListener.EVENT_CLEAR_OFFLINE_CACHES: 104 case I_CmsEventListener.EVENT_PUBLISH_PROJECT: 105 clearCaptchaServices(); 106 break; 107 108 default: 109 break; 111 } 112 } 113 114 124 public synchronized ImageCaptchaService getCaptchaService(CmsCaptchaSettings captchaSettings, CmsObject cms) { 125 126 String key = null; 127 128 if (m_captchaServices == null) { 129 m_captchaServices = new HashMap (); 130 } 131 132 133 key = captchaSettings.toRequestParams(cms); 134 CmsCaptchaService captchaService = (CmsCaptchaService)m_captchaServices.get(key); 135 if (captchaService == null) { 136 captchaService = new CmsCaptchaService(captchaSettings); 137 m_captchaServices.put(key, captchaService); 138 } else { 139 } 142 143 return captchaService; 144 } 145 146 150 private void clearCaptchaServices() { 151 152 if (m_captchaServices != null) { 153 m_captchaServices.clear(); 154 } 155 } 156 157 } 158 | Popular Tags |