KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > infoglue > deliver > applications > actions > ViewPageAction


1 /* ===============================================================================
2  *
3  * Part of the InfoGlue Content Management Platform (www.infoglue.org)
4  *
5  * ===============================================================================
6  *
7  * Copyright (C)
8  *
9  * This program is free software; you can redistribute it and/or modify it under
10  * the terms of the GNU General Public License version 2, as published by the
11  * Free Software Foundation. See the file LICENSE.html for more information.
12  *
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along with
18  * this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
19  * Place, Suite 330 / Boston, MA 02111-1307 / USA.
20  *
21  * ===============================================================================
22  */

23
24 package org.infoglue.deliver.applications.actions;
25
26 import java.net.URLEncoder JavaDoc;
27 import java.security.Principal JavaDoc;
28 import java.util.Date JavaDoc;
29 import java.util.HashMap JavaDoc;
30 import java.util.Iterator JavaDoc;
31 import java.util.List JavaDoc;
32 import java.util.Map JavaDoc;
33 import java.util.Properties JavaDoc;
34
35 import javax.servlet.ServletException JavaDoc;
36 import javax.servlet.http.Cookie JavaDoc;
37 import javax.servlet.http.HttpServletRequest JavaDoc;
38 import javax.servlet.http.HttpServletRequestWrapper JavaDoc;
39 import javax.servlet.http.HttpServletResponse JavaDoc;
40
41 import org.apache.log4j.Logger;
42 import org.exolab.castor.jdo.Database;
43 import org.infoglue.cms.applications.common.actions.InfoGlueAbstractAction;
44 import org.infoglue.cms.controllers.kernel.impl.simple.AccessRightController;
45 import org.infoglue.cms.controllers.kernel.impl.simple.CastorDatabaseService;
46 import org.infoglue.cms.controllers.kernel.impl.simple.SiteNodeController;
47 import org.infoglue.cms.controllers.kernel.impl.simple.UserControllerProxy;
48 import org.infoglue.cms.entities.management.LanguageVO;
49 import org.infoglue.cms.entities.management.SiteNodeTypeDefinitionVO;
50 import org.infoglue.cms.entities.structure.SiteNode;
51 import org.infoglue.cms.entities.structure.SiteNodeVO;
52 import org.infoglue.cms.entities.structure.SiteNodeVersionVO;
53 import org.infoglue.cms.entities.structure.impl.simple.SiteNodeImpl;
54 import org.infoglue.cms.exception.SystemException;
55 import org.infoglue.cms.security.AuthenticationModule;
56 import org.infoglue.cms.security.InfoGluePrincipal;
57 import org.infoglue.cms.util.CmsPropertyHandler;
58 import org.infoglue.cms.util.DesEncryptionHelper;
59 import org.infoglue.deliver.applications.databeans.DatabaseWrapper;
60 import org.infoglue.deliver.applications.databeans.DeliveryContext;
61 import org.infoglue.deliver.applications.filters.ViewPageFilter;
62 import org.infoglue.deliver.controllers.kernel.impl.simple.BasicTemplateController;
63 import org.infoglue.deliver.controllers.kernel.impl.simple.EditOnSiteBasicTemplateController;
64 import org.infoglue.deliver.controllers.kernel.impl.simple.ExtranetController;
65 import org.infoglue.deliver.controllers.kernel.impl.simple.IntegrationDeliveryController;
66 import org.infoglue.deliver.controllers.kernel.impl.simple.LanguageDeliveryController;
67 import org.infoglue.deliver.controllers.kernel.impl.simple.NodeDeliveryController;
68 import org.infoglue.deliver.controllers.kernel.impl.simple.RepositoryDeliveryController;
69 import org.infoglue.deliver.controllers.kernel.impl.simple.TemplateController;
70 import org.infoglue.deliver.invokers.PageInvoker;
71 import org.infoglue.deliver.portal.PortalService;
72 import org.infoglue.deliver.services.StatisticsService;
73 import org.infoglue.deliver.util.BrowserBean;
74 import org.infoglue.deliver.util.CacheController;
75 import org.infoglue.deliver.util.RequestAnalyser;
76 import org.infoglue.deliver.util.ThreadMonitor;
77
78
79 /**
80  * This is the main delivery action. Gets called when the user clicks on a link that goes inside the site.
81  *
82  * @author Mattias Bogeblad
83  */

84
85 public class ViewPageAction extends InfoGlueAbstractAction
86 {
87     private static final long serialVersionUID = 1L;
88
89     public final static Logger logger = Logger.getLogger(ViewPageAction.class.getName());
90
91     //These are the standard parameters which uniquely defines which page to show.
92
private Integer JavaDoc siteNodeId = null;
93     private Integer JavaDoc contentId = null;
94     private Integer JavaDoc languageId = null;
95     
96     private boolean showSimple = false;
97     
98     //This parameter are set if you want to access a certain repository startpage
99
private String JavaDoc repositoryName = null;
100     
101     //A cached nodeDeliveryController
102
protected NodeDeliveryController nodeDeliveryController = null;
103     protected IntegrationDeliveryController integrationDeliveryController = null;
104     protected TemplateController templateController = null;
105         
106     private static final boolean USE_LANGUAGE_FALLBACK = true;
107     private static final boolean DO_NOT_USE_LANGUAGE_FALLBACK = false;
108     
109     //The browserbean
110
private BrowserBean browserBean = null;
111     private Principal JavaDoc principal = null;
112         
113     //A possibility to set the referer address
114
private String JavaDoc referer = null;
115
116     private boolean isRecacheCall = false;
117     
118     //For statistics only and debug
119
public static long contentVersionTime = 0;
120     public static long serviceBindingTime = 0;
121     public static long contentAttributeTime = 0;
122     public static long boundContentTime = 0;
123     public static long inheritedServiceBindingTime = 0;
124     public static long selectMatchingEntitiesTime = 0;
125     public static long isValidTime = 0;
126     public static long qualifyersTime = 0;
127     public static long sortQualifyersTime = 0;
128     public static long commitTime = 0;
129     public static long rollbackTime = 0;
130     public static long closeTime = 0;
131     
132     private ThreadMonitor tk = null;
133     
134     /**
135      * The constructor for this action - contains nothing right now.
136      */

137     
138     public ViewPageAction()
139     {
140     }
141     
142     /**
143      * This method is the application entry-point. The parameters has been set through the setters
144      * and now we just have to render the appropriate output.
145      */

146          
147     public String JavaDoc doExecute() throws Exception JavaDoc
148     {
149         if(isRecacheCall)
150         {
151             //logger.warn("ThreadId:" + Thread.currentThread().getName());
152
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
153         }
154         
155         /*
156         while(RequestAnalyser.getNumberOfCurrentRequests() > 0)
157         {
158             //System.out.println("Queing up...:" + RequestAnalyser.getNumberOfCurrentRequests());
159             //System.out.println("Current Thread...:" + Thread.currentThread().getName() + ":" + Thread.activeCount());
160             Thread.sleep(10);
161         }
162         */

163         //TODO - Can this be removed perhaps
164
while(!CmsPropertyHandler.getOperatingMode().equals("3") && RequestAnalyser.getRequestAnalyser().getBlockRequests())
165         {
166             //System.out.println("Queing up requests as cache eviction are taking place..");
167
Thread.sleep(10);
168         }
169         
170         HttpServletRequest JavaDoc request = getRequest();
171         
172         long start = System.currentTimeMillis();
173         RequestAnalyser.getRequestAnalyser().incNumberOfCurrentRequests();
174
175         long elapsedTime = 0;
176         
177         logger.info("************************************************");
178         logger.info("* ViewPageAction was called.... *");
179         logger.info("************************************************");
180         
181         if(!CmsPropertyHandler.getOperatingMode().equals("3"))
182             tk = new ThreadMonitor(new Long JavaDoc(CmsPropertyHandler.getDeliverRequestTimeout()).longValue(), request, "Page view took to long!", true);
183         
184         DatabaseWrapper dbWrapper = new DatabaseWrapper(CastorDatabaseService.getDatabase());
185         
186         beginTransaction(dbWrapper.getDatabase());
187
188         try
189         {
190             //if(request.getParameter("sleep") != null && request.getParameter("sleep").equals("true"))
191
// Thread.sleep(60000);
192

193             validateAndModifyInputParameters(dbWrapper.getDatabase());
194             
195             this.nodeDeliveryController = NodeDeliveryController.getNodeDeliveryController(this.siteNodeId, this.languageId, this.contentId);
196             this.integrationDeliveryController = IntegrationDeliveryController.getIntegrationDeliveryController(this.siteNodeId, this.languageId, this.contentId);
197             
198             logger.info("before pageKey...");
199             String JavaDoc pageKey = this.nodeDeliveryController.getPageCacheKey(dbWrapper.getDatabase(), this.getHttpSession(), getRequest(), this.siteNodeId, this.languageId, this.contentId, browserBean.getUseragent(), this.getRequest().getQueryString(), "");
200             //String pageKey = CacheController.getPageCacheKey(this.siteNodeId, this.languageId, this.contentId, browserBean.getUseragent(), this.getRequest().getQueryString(), "");
201

202             logger.info("pageKey:" + pageKey);
203             String JavaDoc pagePath = null;
204             
205             boolean isUserRedirected = false;
206             Integer JavaDoc protectedSiteNodeVersionId = this.nodeDeliveryController.getProtectedSiteNodeVersionIdForPageCache(dbWrapper.getDatabase(), siteNodeId);
207             logger.info("protectedSiteNodeVersionId:" + protectedSiteNodeVersionId);
208             String JavaDoc protectWorking = CmsPropertyHandler.getProtectDeliverWorking();
209             String JavaDoc protectPreview = CmsPropertyHandler.getProtectDeliverPreview();
210             boolean protectDeliver = false;
211
212             if(protectWorking.equals("true") && !CmsPropertyHandler.getOperatingMode().equals("0"))
213                 protectDeliver = true;
214             else if(protectPreview.equals("true") && !CmsPropertyHandler.getOperatingMode().equals("2"))
215                 protectDeliver = true;
216                 
217             if(protectedSiteNodeVersionId != null || protectDeliver)
218                 isUserRedirected = handleExtranetLogic(dbWrapper.getDatabase(), protectedSiteNodeVersionId, protectDeliver);
219         
220             this.templateController = getTemplateController(dbWrapper, getSiteNodeId(), getLanguageId(), getContentId(), getRequest(), (InfoGluePrincipal)this.principal, false);
221             
222             logger.info("handled extranet users: " + isUserRedirected);
223     
224             // ----
225
// -- portlet
226
// ----
227

228             // -- check if the portal is active
229
String JavaDoc portalEnabled = CmsPropertyHandler.getEnablePortal();
230             boolean portalActive = ((portalEnabled != null) && portalEnabled.equals("true"));
231             
232             if (portalActive && !isRecacheCall)
233             {
234                 logger.info("---> Checking for portlet action");
235                 PortalService service = new PortalService();
236                 //TODO: catch PortalException?
237
boolean actionExecuted = service.service(getRequest(), getResponse());
238                 
239                 // -- if an action was executed return NONE as a redirect is issued
240
if (actionExecuted)
241                 {
242                     logger.info("---> PortletAction was executed, returning NONE as a redirect has been issued");
243                     isUserRedirected = true;
244                     return NONE;
245                 }
246             }
247     
248             logger.info("handled portal action: " + isUserRedirected);
249             
250             if(!isUserRedirected)
251             {
252                 logger.info("this.templateController.getPrincipal():" + this.templateController.getPrincipal());
253                 DeliveryContext deliveryContext = DeliveryContext.getDeliveryContext(/*(InfoGluePrincipal)this.principal*/);
254                 deliveryContext.setRepositoryName(this.repositoryName);
255                 deliveryContext.setSiteNodeId(this.siteNodeId);
256                 deliveryContext.setContentId(this.contentId);
257                 deliveryContext.setLanguageId(this.languageId);
258                 deliveryContext.setPageKey(pageKey);
259                 deliveryContext.setSession(this.getSession());
260                 deliveryContext.setInfoGlueAbstractAction(this);
261                 deliveryContext.setHttpServletRequest(this.getRequest());
262                 deliveryContext.setHttpServletResponse(this.getResponse());
263                 deliveryContext.setUseFullUrl(Boolean.parseBoolean(CmsPropertyHandler.getUseDNSNameInURI()));
264                 
265                 SiteNodeTypeDefinitionVO siteNodeTypeDefinitionVO = getSiteNodeTypeDefinition(this.siteNodeId, dbWrapper.getDatabase());
266                                 
267                 try
268                 {
269                     String JavaDoc invokerClassName = siteNodeTypeDefinitionVO.getInvokerClassName();
270                     PageInvoker pageInvoker = (PageInvoker)Class.forName(invokerClassName).newInstance();
271                     pageInvoker.setParameters(dbWrapper, this.getRequest(), this.getResponse(), this.templateController, deliveryContext);
272                     pageInvoker.deliverPage();
273
274                     request.setAttribute("progress", "after pageInvoker was called");
275                 }
276                 catch(ClassNotFoundException JavaDoc e)
277                 {
278                     throw new SystemException("An error was thrown when trying to use the page invoker class assigned to this page type:" + e.getMessage(), e);
279                 }
280             }
281             
282             StatisticsService.getStatisticsService().registerRequest(getRequest(), getResponse(), pagePath, elapsedTime);
283             logger.info("Registered request in statistics service");
284         }
285         catch(Exception JavaDoc e)
286         {
287             logger.error("An error occurred so we should not complete the transaction:" + e, e);
288             rollbackTransaction(dbWrapper.getDatabase());
289
290             getResponse().setContentType("text/html; charset=UTF-8");
291             getRequest().setAttribute("responseCode", "500");
292             getRequest().setAttribute("error", e);
293             getRequest().getRequestDispatcher("/ErrorPage.action").forward(getRequest(), getResponse());
294         }
295         finally
296         {
297             logger.info("Before closing transaction");
298
299             closeTransaction(dbWrapper.getDatabase());
300           
301             logger.info("After closing transaction");
302
303             //if(isRecacheCall)
304
//{
305
// logger.warn("ThreadId:" + Thread.currentThread().getName());
306
//}
307

308             elapsedTime = System.currentTimeMillis() - start;
309             RequestAnalyser.getRequestAnalyser().decNumberOfCurrentRequests();
310
311             if(elapsedTime > 10000)
312             {
313                 logger.warn("The page delivery took " + elapsedTime + "ms for request " + this.getRequest().getRequestURL() + "?" + this.getRequest().getQueryString());
314                 logger.warn("The memory consumption was " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) + "(" + Runtime.getRuntime().totalMemory() + "/" + Runtime.getRuntime().maxMemory() + ") bytes");
315             }
316             else
317             {
318                 logger.info("The page delivery took " + elapsedTime + "ms");
319                 logger.info("The memory consumption was " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) + "(" + Runtime.getRuntime().totalMemory() + "/" + Runtime.getRuntime().maxMemory() + ") bytes");
320             }
321
322             if(tk != null)
323                 tk.done();
324         }
325         
326         //System.out.println("The page delivery took " + elapsedTime + "ms");
327

328         return NONE;
329     }
330     
331
332
333     /**
334      * This method the renderer for the component editor.
335      */

336          
337     public String JavaDoc doRenderDecoratedPage() throws Exception JavaDoc
338     {
339         if(CmsPropertyHandler.getOperatingMode().equals("3"))
340             return doExecute();
341                 
342         while(!CmsPropertyHandler.getOperatingMode().equals("3") && RequestAnalyser.getRequestAnalyser().getBlockRequests())
343         {
344             //System.out.println("Queing up requests as cache eviction are taking place..");
345
Thread.sleep(10);
346         }
347         
348         HttpServletRequest JavaDoc request = getRequest();
349
350         RequestAnalyser.getRequestAnalyser().incNumberOfCurrentRequests();
351
352         long start = new Date JavaDoc().getTime();
353         long elapsedTime = 0;
354         
355         logger.info("************************************************");
356         logger.info("* ViewPageAction was called.... *");
357         logger.info("************************************************");
358         
359         if(!CmsPropertyHandler.getOperatingMode().equals("3"))
360             tk = new ThreadMonitor(new Long JavaDoc(CmsPropertyHandler.getDeliverRequestTimeout()).longValue(), request, "Page view took to long!", true);
361
362         DatabaseWrapper dbWrapper = new DatabaseWrapper(CastorDatabaseService.getDatabase());
363         //Database db = CastorDatabaseService.getDatabase();
364

365         beginTransaction(dbWrapper.getDatabase());
366
367         try
368         {
369             validateAndModifyInputParameters(dbWrapper.getDatabase());
370             
371             this.nodeDeliveryController = NodeDeliveryController.getNodeDeliveryController(this.siteNodeId, this.languageId, this.contentId);
372             this.integrationDeliveryController = IntegrationDeliveryController.getIntegrationDeliveryController(this.siteNodeId, this.languageId, this.contentId);
373
374             //String pageKey = "" + this.siteNodeId + "_" + this.languageId + "_" + this.contentId + "_" + browserBean.getUseragent() + "_" + getRequest().getQueryString() + "_" + this.showSimple + "_pagecomponentDecorated";
375
//String pageKey = CacheController.getPageCacheKey(this.siteNodeId, this.languageId, this.contentId, browserBean.getUseragent(), this.getRequest().getQueryString(), "_" + this.showSimple + "_pagecomponentDecorated");
376
String JavaDoc pageKey = this.nodeDeliveryController.getPageCacheKey(dbWrapper.getDatabase(), this.getHttpSession(), this.getRequest(), this.siteNodeId, this.languageId, this.contentId, browserBean.getUseragent(), this.getRequest().getQueryString(), "_" + this.showSimple + "_pagecomponentDecorated");
377
378             logger.info("A pageKey:" + pageKey);
379             String JavaDoc pagePath = null;
380             
381             boolean isUserRedirected = false;
382             Integer JavaDoc protectedSiteNodeVersionId = this.nodeDeliveryController.getProtectedSiteNodeVersionId(dbWrapper.getDatabase(), siteNodeId);
383             logger.info("protectedSiteNodeVersionId:" + protectedSiteNodeVersionId);
384
385             String JavaDoc protectWorking = CmsPropertyHandler.getProtectDeliverWorking();
386             String JavaDoc protectPreview = CmsPropertyHandler.getProtectDeliverPreview();
387             boolean protectDeliver = false;
388
389             if(protectWorking.equals("true") && !CmsPropertyHandler.getOperatingMode().equals("0"))
390                 protectDeliver = true;
391             else if(protectPreview.equals("true") && !CmsPropertyHandler.getOperatingMode().equals("2"))
392                 protectDeliver = true;
393                 
394             if(protectedSiteNodeVersionId != null || protectDeliver)
395                 isUserRedirected = handleExtranetLogic(dbWrapper.getDatabase(), protectedSiteNodeVersionId, protectDeliver);
396             
397             this.templateController = getTemplateController(dbWrapper, getSiteNodeId(), getLanguageId(), getContentId(), getRequest(), (InfoGluePrincipal)this.principal, true);
398
399             logger.info("handled extranet users");
400
401             // ----
402
// -- portlet
403
// ----
404

405             // -- check if the portal is active
406
String JavaDoc portalEnabled = CmsPropertyHandler.getEnablePortal();
407             boolean portalActive = ((portalEnabled != null) && portalEnabled.equals("true"));
408             
409             if (portalActive && !isRecacheCall)
410             {
411                 logger.info("---> Checking for portlet action");
412                 PortalService service = new PortalService();
413                 //TODO: catch PortalException?
414
boolean actionExecuted = service.service(getRequest(), getResponse());
415                 
416                 // -- if an action was executed return NONE as a redirect is issued
417
if (actionExecuted)
418                 {
419                     logger.info("---> PortletAction was executed, returning NONE as a redirect has been issued");
420                     isUserRedirected = true;
421                     return NONE;
422                 }
423             }
424     
425             logger.info("handled portal action");
426
427             if(!isUserRedirected)
428             {
429                 logger.info("this.templateController.getPrincipal():" + this.templateController.getPrincipal());
430         
431                 DeliveryContext deliveryContext = DeliveryContext.getDeliveryContext(/*this.templateController.getPrincipal()*/);
432                 deliveryContext.setRepositoryName(this.repositoryName);
433                 deliveryContext.setSiteNodeId(this.siteNodeId);
434                 deliveryContext.setLanguageId(this.languageId);
435                 deliveryContext.setContentId(this.contentId);
436                 deliveryContext.setShowSimple(this.showSimple);
437                 deliveryContext.setPageKey(pageKey);
438                 deliveryContext.setSession(this.getSession());
439                 deliveryContext.setInfoGlueAbstractAction(this);
440                 deliveryContext.setHttpServletRequest(this.getRequest());
441                 deliveryContext.setHttpServletResponse(this.getResponse());
442                 deliveryContext.setUseFullUrl(Boolean.parseBoolean(CmsPropertyHandler.getUseDNSNameInURI()));
443
444                 SiteNode siteNode = nodeDeliveryController.getSiteNode(dbWrapper.getDatabase(), this.siteNodeId);
445                 if(siteNode == null)
446                     throw new SystemException("There was no page with this id.");
447                 
448                 String JavaDoc invokerClassName = siteNode.getSiteNodeTypeDefinition().getInvokerClassName();
449                 
450                 if(invokerClassName == null && invokerClassName.equals(""))
451                 {
452                     throw new SystemException("There was no page invoker class assigned to this page type.");
453                 }
454                 else
455                 {
456                     try
457                     {
458                         PageInvoker pageInvoker = (PageInvoker)Class.forName(invokerClassName).newInstance();
459                         pageInvoker = pageInvoker.getDecoratedPageInvoker();
460                         pageInvoker.setParameters(dbWrapper, this.getRequest(), this.getResponse(), this.templateController, deliveryContext);
461                         pageInvoker.deliverPage();
462                     }
463                     catch(ClassNotFoundException JavaDoc e)
464                     {
465                         throw new SystemException("An error was thrown when trying to use the page invoker class assigned to this page type:" + e.getMessage(), e);
466                     }
467                 }
468             }
469             
470             StatisticsService.getStatisticsService().registerRequest(getRequest(), getResponse(), pagePath, elapsedTime);
471         }
472         catch(Exception JavaDoc e)
473         {
474             logger.error("An error occurred so we should not complete the transaction:" + e, e);
475             rollbackTransaction(dbWrapper.getDatabase());
476             throw new SystemException(e.getMessage());
477         }
478         finally
479         {
480             closeTransaction(dbWrapper.getDatabase());
481
482             elapsedTime = System.currentTimeMillis() - start;
483
484             RequestAnalyser.getRequestAnalyser().decNumberOfCurrentRequests();
485
486             if(elapsedTime > 20000)
487             {
488                 logger.warn("The page delivery took " + elapsedTime + "ms for request " + this.getRequest().getRequestURL() + "?" + this.getRequest().getQueryString());
489                 logger.warn("The memory consumption was " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) + "(" + Runtime.getRuntime().totalMemory() + "/" + Runtime.getRuntime().maxMemory() + ") bytes");
490             }
491             else
492             {
493                 logger.info("The page delivery took " + elapsedTime + "ms");
494                 logger.info("The memory consumption was " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) + "(" + Runtime.getRuntime().totalMemory() + "/" + Runtime.getRuntime().maxMemory() + ") bytes");
495             }
496
497             if(tk != null)
498                 tk.done();
499         }
500         
501         return NONE;
502     }
503     
504   
505     
506     /**
507      * This method should be much more sophisticated later and include a check to see if there is a
508      * digital asset uploaded which is more specialized and can be used to act as serverside logic to the template.
509      * The method also consideres wheter or not to invoke the preview-version with administrative functioality or the
510      * normal site-delivery version.
511      */

512     
513     public TemplateController getTemplateController(DatabaseWrapper dbWrapper, Integer JavaDoc siteNodeId, Integer JavaDoc languageId, Integer JavaDoc contentId, HttpServletRequest JavaDoc request, InfoGluePrincipal infoGluePrincipal, boolean allowEditOnSightAtAll) throws SystemException, Exception JavaDoc
514     {
515         TemplateController templateController = new BasicTemplateController(dbWrapper, infoGluePrincipal);
516         templateController.setStandardRequestParameters(siteNodeId, languageId, contentId);
517         templateController.setHttpRequest(request);
518         templateController.setBrowserBean(browserBean);
519         templateController.setDeliveryControllers(this.nodeDeliveryController, null, this.integrationDeliveryController);
520         
521         String JavaDoc operatingMode = CmsPropertyHandler.getOperatingMode();
522         
523         if(operatingMode != null && (operatingMode.equals("0") || operatingMode.equals("1") || operatingMode.equals("2")))
524         {
525             String JavaDoc editOnSite = CmsPropertyHandler.getEditOnSite();
526             boolean isEditOnSightDisabled = templateController.getIsEditOnSightDisabled();
527             
528             if(allowEditOnSightAtAll && !isEditOnSightDisabled && editOnSite != null && editOnSite.equalsIgnoreCase("true"))
529             {
530                 templateController = new EditOnSiteBasicTemplateController(dbWrapper, infoGluePrincipal);
531                 templateController.setStandardRequestParameters(siteNodeId, languageId, contentId);
532                 templateController.setHttpRequest(request);
533                 templateController.setBrowserBean(browserBean);
534                 templateController.setDeliveryControllers(this.nodeDeliveryController, null, this.integrationDeliveryController);
535             }
536         }
537         
538         return templateController;
539     }
540
541
542     /**
543      * Here we do all modifications needed on the request. For example we read the startpage if no
544      * siteNodeId is given and stuff like that. Also a good place to put url-rewriting.
545      * Rules so far includes: defaulting to the first repository if not specified and also defaulting to
546      * masterlanguage for that site if not specifying.
547      */

548      
549     private void validateAndModifyInputParameters(Database db) throws SystemException, Exception JavaDoc
550     {
551         this.browserBean = new BrowserBean();
552         this.browserBean.setRequest(getRequest());
553         
554         this.principal = (Principal JavaDoc)this.getHttpSession().getAttribute("infogluePrincipal");
555
556         if(this.principal == null)
557         {
558             try
559             {
560                 this.principal = (Principal JavaDoc)CacheController.getCachedObject("userCache", "anonymous");
561                 if(this.principal == null)
562                 {
563                     Map JavaDoc arguments = new HashMap JavaDoc();
564                     arguments.put("j_username", CmsPropertyHandler.getAnonymousUser());
565                     arguments.put("j_password", CmsPropertyHandler.getAnonymousPassword());
566                     
567                     this.principal = ExtranetController.getController().getAuthenticatedPrincipal(db, arguments);
568
569                     if(principal != null)
570                         CacheController.cacheObject("userCache", "anonymous", this.principal);
571                 }
572                 //this.principal = ExtranetController.getController().getAuthenticatedPrincipal("anonymous", "anonymous");
573

574             }
575             catch(Exception JavaDoc e)
576             {
577                 throw new SystemException("There was no anonymous user found in the system. There must be - add the user anonymous/anonymous and try again.", e);
578             }
579         }
580
581         if(getSiteNodeId() == null)
582         {
583             if(getRepositoryName() == null)
584             {
585                 setRepositoryName(RepositoryDeliveryController.getRepositoryDeliveryController().getMasterRepository(db).getName());
586             }
587             
588             SiteNodeVO rootSiteNodeVO = NodeDeliveryController.getRootSiteNode(db, getRepositoryName());
589             if(rootSiteNodeVO == null)
590                 throw new SystemException("There was no repository called " + getRepositoryName() + " or no pages were available in that repository");
591             
592             setSiteNodeId(rootSiteNodeVO.getSiteNodeId());
593         }
594
595         try
596         {
597             if(getSiteNodeId() != null)
598                 SiteNodeController.getSiteNodeVOWithId(getSiteNodeId(), db);
599         }
600         catch(Exception JavaDoc e)
601         {
602             throw new SystemException("There was no page with the current specification. SiteNodeId:" + getSiteNodeId());
603         }
604         
605         if(getLanguageId() == null)
606         {
607             LanguageVO browserLanguageVO = null;
608
609             String JavaDoc useAlternativeBrowserLanguageCheck = CmsPropertyHandler.getUseAlternativeBrowserLanguageCheck();
610             if(useAlternativeBrowserLanguageCheck == null || !useAlternativeBrowserLanguageCheck.equalsIgnoreCase("true"))
611                 browserLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getLanguageIfSiteNodeSupportsIt(db, browserBean.getLanguageCode(), getSiteNodeId(), (InfoGluePrincipal)this.principal);
612             else
613                 browserLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getLanguageIfRepositorySupportsIt(db, browserBean.getLanguageCode(), getSiteNodeId());
614
615             logger.debug("Checking browser language...");
616
617             if(browserLanguageVO != null)
618             {
619                 logger.info("The system had browserLanguageVO available:" + browserLanguageVO.getName());
620                 setLanguageId(browserLanguageVO.getLanguageId());
621             }
622             else
623             {
624                 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, this.getSiteNodeId());
625                 if(masterLanguageVO == null)
626                     throw new SystemException("There was no master language for the siteNode " + getSiteNodeId());
627
628                 
629                 NodeDeliveryController ndc = NodeDeliveryController.getNodeDeliveryController(siteNodeId, languageId, contentId);
630                 boolean isMasterLanguageValid = LanguageDeliveryController.getLanguageDeliveryController().getIsValidLanguage(db, ndc, ndc.getSiteNode(db, siteNodeId), masterLanguageVO.getId());
631                 if(!isMasterLanguageValid)
632                 {
633                     logger.info("Master language was not allowed on this sitenode... let's take the next on in order");
634                     List JavaDoc languages = LanguageDeliveryController.getLanguageDeliveryController().getAvailableLanguages(db, this.getSiteNodeId());
635                     Iterator JavaDoc languagesIterator = languages.iterator();
636                     while(languagesIterator.hasNext())
637                     {
638                         LanguageVO currentLanguage = (LanguageVO)languagesIterator.next();
639                         boolean isCurrentLanguageValid = LanguageDeliveryController.getLanguageDeliveryController().getIsValidLanguage(db, ndc, ndc.getSiteNode(db, siteNodeId), currentLanguage.getId());
640                         logger.info("currentLanguage validity:" + isCurrentLanguageValid);
641                         if(isCurrentLanguageValid)
642                         {
643                             setLanguageId(currentLanguage.getLanguageId());
644                             break;
645                         }
646                     }
647                 }
648                 else
649                 {
650                     logger.info("The system had no browserLanguageVO available - using master language instead:" + masterLanguageVO.getName());
651                     setLanguageId(masterLanguageVO.getLanguageId());
652                 }
653
654             }
655         }
656         else
657         {
658             LanguageVO languageVO = LanguageDeliveryController.getLanguageDeliveryController().getLanguageIfSiteNodeSupportsIt(db, getLanguageId(), getSiteNodeId());
659            
660             if(languageVO != null)
661             {
662                 logger.info("The system had browserLanguageVO available:" + languageVO.getName());
663                 setLanguageId(languageVO.getLanguageId());
664             }
665             else
666             {
667                 LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForSiteNode(db, this.getSiteNodeId());
668                 if(masterLanguageVO == null)
669                     throw new SystemException("There was no master language for the siteNode " + getSiteNodeId());
670                 
671                 NodeDeliveryController ndc = NodeDeliveryController.getNodeDeliveryController(siteNodeId, languageId, contentId);
672                 boolean isMasterLanguageValid = LanguageDeliveryController.getLanguageDeliveryController().getIsValidLanguage(db, ndc, ndc.getSiteNode(db, siteNodeId), masterLanguageVO.getId());
673                 if(!isMasterLanguageValid)
674                 {
675                     logger.info("Master language was not allowed on this sitenode... let's take the next on in order");
676                     List JavaDoc languages = LanguageDeliveryController.getLanguageDeliveryController().getAvailableLanguages(db, this.getSiteNodeId());
677                     Iterator JavaDoc languagesIterator = languages.iterator();
678                     while(languagesIterator.hasNext())
679                     {
680                         LanguageVO currentLanguage = (LanguageVO)languagesIterator.next();
681                         boolean isCurrentLanguageValid = LanguageDeliveryController.getLanguageDeliveryController().getIsValidLanguage(db, ndc, ndc.getSiteNode(db, siteNodeId), currentLanguage.getId());
682                         logger.info("currentLanguage validity:" + isCurrentLanguageValid);
683                         if(isCurrentLanguageValid)
684                         {
685                             setLanguageId(currentLanguage.getLanguageId());
686                             break;
687                         }
688                     }
689                 }
690                 else
691                 {
692                     logger.info("The system had no browserLanguageVO available - using master language instead:" + masterLanguageVO.getName());
693                     setLanguageId(masterLanguageVO.getLanguageId());
694                 }
695             }
696         }
697     }
698
699     /**
700      * This method validates that the current page is accessible to the requesting user.
701      * It fetches information from the page metainfo about if the page is protected and if it is
702      * validates the users credentials against the extranet database,
703      */

704     
705     public boolean handleExtranetLogic(Database db, Integer JavaDoc protectedSiteNodeVersionId, boolean protectDeliver) throws SystemException, Exception JavaDoc
706     {
707         boolean isRedirected = false;
708         
709         try
710         {
711             String JavaDoc referer = this.getRequest().getHeader("Referer");
712             logger.info("referer:" + referer);
713             
714             if(referer == null || referer.indexOf("ViewStructureToolToolBar.action") != -1)
715                 referer = "/";
716             
717             Principal JavaDoc principal = (Principal JavaDoc)this.getHttpSession().getAttribute("infogluePrincipal");
718             logger.info("principal:" + principal);
719
720             //First we check if the user is logged in to the container context
721
if(principal == null)
722             {
723                 if(this.getRequest().getUserPrincipal() != null && !(this.getRequest().getUserPrincipal() instanceof InfoGluePrincipal))
724                 {
725                     Map JavaDoc status = new HashMap JavaDoc();
726                     status.put("redirected", new Boolean JavaDoc(false));
727                     principal = AuthenticationModule.getAuthenticationModule(db, this.getOriginalFullURL()).loginUser(getRequest(), getResponse(), status);
728                     Boolean JavaDoc redirected = (Boolean JavaDoc)status.get("redirected");
729                     if(redirected != null && redirected.booleanValue())
730                     {
731                         this.getHttpSession().removeAttribute("infogluePrincipal");
732                         this.principal = null;
733                         return true;
734                     }
735                     else if(principal != null)
736                     {
737                         this.getHttpSession().setAttribute("infogluePrincipal", principal);
738                         this.getHttpSession().setAttribute("infoglueRemoteUser", principal.getName());
739     
740                         this.principal = principal;
741                     }
742                 }
743             }
744         
745             if(principal == null && !protectDeliver)
746             {
747                 Principal JavaDoc anonymousPrincipal = getAnonymousPrincipal();
748                 boolean isAuthorized = AccessRightController.getController().getIsPrincipalAuthorized(db, (InfoGluePrincipal)anonymousPrincipal, "SiteNodeVersion.Read", protectedSiteNodeVersionId.toString());
749                 if(isAuthorized)
750                 {
751                     principal = anonymousPrincipal;
752                     if(principal != null)
753                     {
754                         this.getHttpSession().setAttribute("infogluePrincipal", principal);
755                         this.getHttpSession().setAttribute("infoglueRemoteUser", principal.getName());
756                     }
757                 }
758             }
759             
760             if(principal == null)
761             {
762                 Map JavaDoc status = new HashMap JavaDoc();
763                 status.put("redirected", new Boolean JavaDoc(false));
764                 principal = AuthenticationModule.getAuthenticationModule(db, this.getOriginalFullURL()).loginUser(getRequest(), getResponse(), status);
765                 Boolean JavaDoc redirected = (Boolean JavaDoc)status.get("redirected");
766                 if(redirected != null && redirected.booleanValue())
767                 {
768                     this.getHttpSession().removeAttribute("infogluePrincipal");
769                     this.principal = null;
770                     return true;
771                 }
772                 else if(principal != null)
773                 {
774                     this.getHttpSession().setAttribute("infogluePrincipal", principal);
775                     this.getHttpSession().setAttribute("infoglueRemoteUser", principal.getName());
776
777                     this.principal = principal;
778                 }
779                 
780                 if(principal == null)
781                     principal = loginWithCookies();
782                 
783                 if(principal == null)
784                     principal = loginWithRequestArguments();
785                 
786                 if(principal == null)
787                 {
788                     try
789                     {
790                         principal = getAnonymousPrincipal();
791                         
792                         if(principal != null)
793                         {
794                             this.getHttpSession().setAttribute("infogluePrincipal", principal);
795                             this.getHttpSession().setAttribute("infoglueRemoteUser", principal.getName());
796                             
797                             boolean isAuthorized = false;
798                             if(!protectDeliver)
799                                 isAuthorized = AccessRightController.getController().getIsPrincipalAuthorized(db, (InfoGluePrincipal)principal, "SiteNodeVersion.Read", protectedSiteNodeVersionId.toString());
800                             
801                             if(!isAuthorized)
802                             {
803                                 this.getHttpSession().removeAttribute("infogluePrincipal");
804                                 logger.info("SiteNode is protected and anonymous user was not allowed - sending him to login page.");
805                                 String JavaDoc redirectUrl = getRedirectUrl(getRequest(), getResponse());
806                                 //String url = this.getURLBase() + "/ExtranetLogin!loginForm.action?returnAddress=" + URLEncoder.encode(this.getRequest().getRequestURL().toString() + "?" + this.getRequest().getQueryString() + "&referer=" + URLEncoder.encode(referer, "UTF-8") + "&date=" + System.currentTimeMillis(), "UTF-8");
807
getResponse().sendRedirect(redirectUrl);
808                                 isRedirected = true;
809                             }
810                         }
811                     }
812                     catch(Exception JavaDoc e)
813                     {
814                         throw new SystemException("There was no anonymous user found in the system. There must be - add the user anonymous/anonymous and try again.", e);
815                     }
816                 }
817                 else
818                 {
819                     boolean isAuthorized = false;
820                     if(protectDeliver && protectedSiteNodeVersionId == null && !principal.getName().equals(CmsPropertyHandler.getAnonymousUser()))
821                         isAuthorized = true;
822                     else if(!protectDeliver)
823                         isAuthorized = AccessRightController.getController().getIsPrincipalAuthorized(db, (InfoGluePrincipal)principal, "SiteNodeVersion.Read", protectedSiteNodeVersionId.toString());
824                     
825                     if(!isAuthorized)
826                     {
827                         if(this.referer == null)
828                             this.referer = this.getRequest().getHeader("Referer");
829                         
830                         if(this.referer == null || referer.indexOf("ViewStructureToolToolBar.action") != -1)
831                             this.referer = "/";
832
833                         if(principal.getName().equals(CmsPropertyHandler.getAnonymousUser()))
834                         {
835                             logger.info("SiteNode is protected and user was anonymous - sending him to login page.");
836                             //String url = "ExtranetLogin!loginForm.action?returnAddress=" + URLEncoder.encode(this.getRequest().getRequestURL().toString() + "?" + this.getRequest().getQueryString() + "&referer=" + URLEncoder.encode(referer, "UTF-8") + "&date=" + System.currentTimeMillis(), "UTF-8");
837
String JavaDoc url = getRedirectUrl(getRequest(), getResponse());
838                             
839                             getResponse().sendRedirect(url);
840                             isRedirected = true;
841                         }
842                         else
843                         {
844                             logger.info("SiteNode is protected and user has no access - sending him to no access page.");
845                             String JavaDoc url = "ExtranetLogin!noAccess.action?referer=" + URLEncoder.encode(this.referer, "UTF-8") + "&date=" + System.currentTimeMillis();
846                             getResponse().sendRedirect(url);
847                             isRedirected = true;
848                         }
849                     }
850                     else
851                     {
852                         this.getHttpSession().setAttribute("infogluePrincipal", principal);
853                         this.getHttpSession().setAttribute("infoglueRemoteUser", principal.getName());
854         
855                         this.principal = principal;
856                     }
857                 }
858
859             }
860             else
861             {
862                 logger.info("principal:" + principal);
863                 logger.info("protectedSiteNodeVersionId:" + protectedSiteNodeVersionId);
864
865                 Principal JavaDoc alternativePrincipal = loginWithCookies();
866                 if(alternativePrincipal == null)
867                     alternativePrincipal = loginWithRequestArguments();
868
869                 if(protectedSiteNodeVersionId != null && alternativePrincipal != null && AccessRightController.getController().getIsPrincipalAuthorized((InfoGluePrincipal)alternativePrincipal, "SiteNodeVersion.Read", protectedSiteNodeVersionId.toString()))
870                 {
871                     logger.info("The user " + alternativePrincipal.getName() + " was approved.");
872                 }
873                 else if(protectedSiteNodeVersionId != null && !AccessRightController.getController().getIsPrincipalAuthorized((InfoGluePrincipal)principal, "SiteNodeVersion.Read", protectedSiteNodeVersionId.toString()) && !AccessRightController.getController().getIsPrincipalAuthorized((InfoGluePrincipal)this.getAnonymousPrincipal(), "SiteNodeVersion.Read", protectedSiteNodeVersionId.toString()))
874                 {
875                     if(this.referer == null)
876                         this.referer = this.getRequest().getHeader("Referer");
877                     
878                     if(this.referer == null || referer.indexOf("ViewStructureToolToolBar.action") != -1)
879                         this.referer = "/";
880
881                     if(principal.getName().equals(CmsPropertyHandler.getAnonymousUser()))
882                     {
883                         logger.info("SiteNode is protected and user was anonymous - sending him to login page.");
884                         //String url = "ExtranetLogin!loginForm.action?returnAddress=" + URLEncoder.encode(this.getRequest().getRequestURL().toString() + "?" + this.getRequest().getQueryString() + "&referer=" + URLEncoder.encode(referer, "UTF-8") + "&date=" + System.currentTimeMillis(), "UTF-8");
885
String JavaDoc url = getRedirectUrl(getRequest(), getResponse());
886                         
887                         getResponse().sendRedirect(url);
888                         isRedirected = true;
889                     }
890                     else
891                     {
892                         logger.info("SiteNode is protected and user has no access - sending him to no access page.");
893                         String JavaDoc url = "ExtranetLogin!noAccess.action?referer=" + URLEncoder.encode(this.referer, "UTF-8") + "&date=" + System.currentTimeMillis();
894
895                         getResponse().sendRedirect(url);
896                         isRedirected = true;
897                     }
898                 }
899                 else if(protectedSiteNodeVersionId == null && protectDeliver)
900                 {
901                     logger.info("Setting user to anonymous... as this is a protected deliver but not a extranet...");
902                     Principal JavaDoc anonymousPrincipal = getAnonymousPrincipal();
903                     
904                     //this.getHttpSession().setAttribute("infogluePrincipal", anonymousPrincipal);
905
//this.getHttpSession().setAttribute("infoglueRemoteUser", anonymousPrincipal.getName());
906

907                     this.principal = anonymousPrincipal;
908                 }
909             }
910         }
911         catch(SystemException se)
912         {
913             logger.warn("An error occurred:" + se.getMessage(), se);
914             throw se;
915         }
916         catch(Exception JavaDoc e)
917         {
918             logger.error("An error occurred:" + e.getMessage(), e);
919         }
920         
921         return isRedirected;
922     }
923     
924     
925     /**
926      * This method (if enabled in deliver.properties) checks for authentication cookies and
927      * logs the user in if available.
928      *
929      * @return Principal
930      * @throws Exception
931      */

932     private Principal JavaDoc loginWithCookies() throws Exception JavaDoc
933     {
934         Principal JavaDoc principal = null;
935         
936         boolean enableExtranetCookies = false;
937         int extranetCookieTimeout = 43200; //30 days default
938
String JavaDoc enableExtranetCookiesString = CmsPropertyHandler.getEnableExtranetCookies();
939         String JavaDoc extranetCookieTimeoutString = CmsPropertyHandler.getExtranetCookieTimeout();
940         if(enableExtranetCookiesString != null && enableExtranetCookiesString.equalsIgnoreCase("true"))
941         {
942             enableExtranetCookies = true;
943         }
944         if(extranetCookieTimeoutString != null)
945         {
946             try
947             {
948                 extranetCookieTimeout = Integer.parseInt(extranetCookieTimeoutString.trim());
949             }
950             catch(Exception JavaDoc e) {}
951         }
952     
953         if(enableExtranetCookies)
954         {
955             String JavaDoc userName = null;
956             String JavaDoc password = null;
957             Cookie JavaDoc[] cookies = this.getRequest().getCookies();
958             if(cookies != null)
959             {
960                 for(int i=0; i<cookies.length; i++)
961                 {
962                     Cookie JavaDoc cookie = cookies[i];
963                     if(cookie.getName().equals("igextranetuserid"))
964                         userName = cookie.getValue();
965                     else if(cookie.getName().equals("igextranetpassword"))
966                         password = cookie.getValue();
967                 }
968             }
969             
970             if(userName != null && password != null)
971             {
972                 DesEncryptionHelper encHelper = new DesEncryptionHelper();
973                 userName = encHelper.decrypt(userName);
974                 password = encHelper.decrypt(password);
975                 
976                 Map JavaDoc arguments = new HashMap JavaDoc();
977                 arguments.put("j_username", userName);
978                 arguments.put("j_password", password);
979                 
980                 principal = ExtranetController.getController().getAuthenticatedPrincipal(arguments);
981                 if(principal != null)
982                 {
983                     this.getHttpSession().setAttribute("infogluePrincipal", principal);
984                     this.getHttpSession().setAttribute("infoglueRemoteUser", principal.getName());
985                 }
986                 
987             }
988         }
989         
990         return principal;
991     }
992     
993     /**
994      * This method (if enabled in deliver.properties) checks for arguments in the request
995      * and logs the user in if available.
996      *
997      * @return Principal
998      * @throws Exception
999      */

1000    private Principal JavaDoc loginWithRequestArguments() throws Exception JavaDoc
1001    {
1002        Principal JavaDoc principal = null;
1003        
1004        String JavaDoc userName = this.getRequest().getParameter("j_username");
1005        String JavaDoc password = this.getRequest().getParameter("j_password");
1006        String JavaDoc ticket = null; //this.getRequest().getParameter("ticket");
1007
//System.out.println("userName:" + userName);
1008
//System.out.println("password:" + password);
1009
//System.out.println("ticket:" + ticket);
1010

1011        if(ticket != null)
1012        {
1013            //System.out.println("ticket used in loginWithRequestArguments:" + ticket);
1014
Map JavaDoc arguments = new HashMap JavaDoc();
1015            arguments.put("ticket", ticket);
1016            
1017            principal = ExtranetController.getController().getAuthenticatedPrincipal(arguments);
1018            if(principal != null)
1019            {
1020                this.getHttpSession().setAttribute("infogluePrincipal", principal);
1021                this.getHttpSession().setAttribute("infoglueRemoteUser", principal.getName());
1022            }
1023        }
1024        else if(userName != null && password != null)
1025        {
1026            Map JavaDoc arguments = new HashMap JavaDoc();
1027            arguments.put("j_username", userName);
1028            arguments.put("j_password", password);
1029            
1030            principal = ExtranetController.getController().getAuthenticatedPrincipal(arguments);
1031            if(principal != null)
1032            {
1033                this.getHttpSession().setAttribute("infogluePrincipal", principal);
1034                this.getHttpSession().setAttribute("infoglueRemoteUser", principal.getName());
1035            }
1036        }
1037        
1038        return principal;
1039    }
1040
1041
1042    /**
1043     * Gets the SiteNodeType definition of this given node
1044     * @return
1045     */

1046    private SiteNodeTypeDefinitionVO getSiteNodeTypeDefinition(Integer JavaDoc siteNodeId, Database db) throws SystemException
1047    {
1048        String JavaDoc key = "" + siteNodeId;
1049        logger.info("key:" + key);
1050        SiteNodeTypeDefinitionVO siteNodeTypeDefinitionVO = (SiteNodeTypeDefinitionVO)CacheController.getCachedObject("pageCacheSiteNodeTypeDefinition", key);
1051        if(siteNodeTypeDefinitionVO != null)
1052        {
1053            logger.info("There was an cached siteNodeTypeDefinitionVO:" + siteNodeTypeDefinitionVO);
1054        }
1055        else
1056        {
1057            
1058            SiteNode siteNode = nodeDeliveryController.getSiteNode(db, this.siteNodeId);
1059            if(siteNode == null)
1060                throw new SystemException("There was no page with this id.");
1061            
1062            if(siteNode.getSiteNodeTypeDefinition() == null || siteNode.getSiteNodeTypeDefinition().getInvokerClassName() == null || siteNode.getSiteNodeTypeDefinition().getInvokerClassName().equals(""))
1063            {
1064                throw new SystemException("There was no page invoker class assigned to the site node " + siteNode.getName());
1065            }
1066            
1067            siteNodeTypeDefinitionVO = siteNode.getSiteNodeTypeDefinition().getValueObject();
1068            
1069            CacheController.cacheObject("pageCacheSiteNodeTypeDefinition", key, siteNodeTypeDefinitionVO);
1070        }
1071        
1072        return siteNodeTypeDefinitionVO;
1073    }
1074
1075    private String JavaDoc getRedirectUrl(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc, Exception JavaDoc
1076    {
1077        String JavaDoc url = AuthenticationModule.getAuthenticationModule(null, this.getOriginalFullURL()).getLoginDialogUrl(request, response);
1078        
1079        return url;
1080    }
1081
1082    /**
1083     * Setters and getters for all things sent to the page in the request
1084     */

1085    
1086    public java.lang.Integer JavaDoc getSiteNodeId()
1087    {
1088        return this.siteNodeId;
1089    }
1090        
1091    public void setSiteNodeId(Integer JavaDoc siteNodeId)
1092    {
1093        this.siteNodeId = siteNodeId;
1094    }
1095
1096    public Integer JavaDoc getContentId()
1097    {
1098        return this.contentId;
1099    }
1100        
1101    public void setContentId(Integer JavaDoc contentId)
1102    {
1103        this.contentId = contentId;
1104    }
1105
1106    public Integer JavaDoc getLanguageId()
1107    {
1108        return this.languageId;
1109    }
1110        
1111    public void setLanguageId(Integer JavaDoc languageId)
1112    {
1113        this.languageId = languageId;
1114    }
1115
1116    public String JavaDoc getRepositoryName()
1117    {
1118        return this.repositoryName;
1119    }
1120        
1121    public void setRepositoryName(String JavaDoc repositoryName)
1122    {
1123        this.repositoryName = repositoryName;
1124    }
1125    
1126    public String JavaDoc getReferer()
1127    {
1128        return referer;
1129    }
1130
1131    public void setReferer(String JavaDoc referer)
1132    {
1133        this.referer = referer;
1134    }
1135
1136    public void setShowSimple(boolean showSimple)
1137    {
1138        this.showSimple = showSimple;
1139    }
1140    
1141    public void setRecacheCall(boolean isRecacheCall)
1142    {
1143        this.isRecacheCall = isRecacheCall;
1144    }
1145    
1146    public void setCmsUserName(String JavaDoc userName)
1147    {
1148        this.getHttpSession().setAttribute("cmsUserName", userName);
1149    }
1150    
1151}
1152
Popular Tags