/* * 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.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.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_; private 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")); 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_); } String jsData = (String)jsCache_.get(MessageDigester.getHash(siteName_)); if (jsData == null || jsData.trim().length() == 0) { jsData = WCMCoreUtils.getSiteGlobalActiveJs(portalNode); jsCache_.put(MessageDigester.getHash(siteName_), jsData); } HttpServletResponse res = context.getResponse(); res.setContentType("text/javascript"); PrintWriter out = res.getWriter(); out.println(jsData); return true; } @Override protected boolean getRequiresLifeCycle() { return true; } }