SiteJavascriptHandler.java
- /*
- * Copyright (C) 2003-2012 eXo Platform SAS.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see<http://www.gnu.org/licenses/>.
- */
- package org.exoplatform.services.handler;
- import java.io.PrintWriter;
- import javax.jcr.Node;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.commons.lang3.StringUtils;
- import org.exoplatform.ecm.utils.MessageDigester;
- import org.exoplatform.services.cache.CacheService;
- import org.exoplatform.services.cache.ExoCache;
- import org.exoplatform.services.jcr.ext.common.SessionProvider;
- import org.exoplatform.services.security.ConversationState;
- import org.exoplatform.services.security.IdentityConstants;
- import org.exoplatform.services.wcm.portal.LivePortalManagerService;
- import org.exoplatform.services.wcm.utils.WCMCoreUtils;
- import org.exoplatform.web.ControllerContext;
- import org.exoplatform.web.WebRequestHandler;
- import org.exoplatform.web.controller.QualifiedName;
- /**
- * Created by The eXo Platform SAS
- * Author : Dang Viet Ha
- * hadv@exoplatform.com
- * Feb 20, 2012
- */
- public class SiteJavascriptHandler extends WebRequestHandler {
-
- private ExoCache<String, Object> jsCache_;
- private String siteName_;
- private LivePortalManagerService livePortalManagerService_;
- public static final String CACHE_REGION = "ecms.site.javascript.cache";
- @Override
- public String getHandlerName() {
- return "javascript";
- }
- @Override
- public synchronized boolean execute(ControllerContext context) throws Exception {
- if (jsCache_ == null) {
- jsCache_ = WCMCoreUtils.getService(CacheService.class)
- .getCacheInstance(SiteJavascriptHandler.CACHE_REGION);
- }
- siteName_ = context.getParameter(QualifiedName.create("gtn", "sitename"));
- String key = MessageDigester.getHash(siteName_);
- String jsData = (String) jsCache_.get(key);
- if (jsData == null) {
- SessionProvider sessionProvider = WCMCoreUtils.getSystemSessionProvider();
- livePortalManagerService_ = WCMCoreUtils.getService(LivePortalManagerService.class);
- Node portalNode = null;
- if ("shared".equals(siteName_)) {
- portalNode = livePortalManagerService_.getLiveSharedPortal(sessionProvider);
- } else {
- portalNode = livePortalManagerService_.getLivePortal(sessionProvider, siteName_);
- }
- jsData = WCMCoreUtils.getSiteGlobalActiveJs(portalNode, sessionProvider);
- jsCache_.put(key, jsData);
- }
- HttpServletResponse res = context.getResponse();
- res.setContentType("text/javascript");
- PrintWriter out = res.getWriter();
- out.println(jsData);
- return true;
- }
-
- @Override
- protected boolean getRequiresLifeCycle() {
- return true;
- }
- }