1
22
23 package com.liferay.portal.cms.servlet;
24
25 import com.liferay.portal.kernel.cache.MultiVMPoolUtil;
26 import com.liferay.portal.kernel.cache.PortalCache;
27 import com.liferay.portal.kernel.util.StringMaker;
28 import com.liferay.portal.kernel.util.StringPool;
29 import com.liferay.portal.kernel.util.Validator;
30 import com.liferay.portal.theme.ThemeDisplay;
31 import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
32
33 import org.apache.commons.logging.Log;
34 import org.apache.commons.logging.LogFactory;
35
36
43 public class CMSServletUtil {
44
45 public static final String CACHE_NAME = CMSServletUtil.class.getName();
46
47 public static String LANGUAGE = "_LANGUAGE_";
48
49 public static void clearCache() {
50 _cache.removeAll();
51 }
52
53 public static String getContent(
54 long groupId, String articleId, String languageId,
55 ThemeDisplay themeDisplay) {
56
57 if (Validator.isNull(articleId)) {
58 return null;
59 }
60
61 articleId = articleId.trim().toUpperCase();
62
63 String key = _encodeKey(articleId, languageId);
64
65 String content = (String)MultiVMPoolUtil.get(_cache, key);
66
67 if (content == null) {
68 try {
69 content = JournalArticleLocalServiceUtil.getArticleContent(
70 groupId, articleId, languageId, themeDisplay);
71 }
72 catch (Exception e) {
73 if (_log.isWarnEnabled()) {
74 _log.warn(e.getMessage());
75 }
76 }
77
78 if (content != null) {
79 MultiVMPoolUtil.put(_cache, key, content);
80 }
81 }
82
83 return content;
84 }
85
86 private static String _encodeKey(String articleId, String languageId) {
87 StringMaker sm = new StringMaker();
88
89 sm.append(CACHE_NAME);
90 sm.append(StringPool.POUND);
91 sm.append(articleId);
92 sm.append(StringPool.POUND);
93 sm.append(languageId);
94
95 return sm.toString();
96 }
97
98 private static Log _log = LogFactory.getLog(CMSServletUtil.class);
99
100 private static PortalCache _cache = MultiVMPoolUtil.getCache(CACHE_NAME);
101
102 }