Package org.infoglue.deliver.util

Examples of org.infoglue.deliver.util.Timer


        cacheTimeout = new Integer(3600);
    }
   
    try
        {
      Timer t = new Timer();
      if(logger.isInfoEnabled())
      {
        logger.info("useCache:" + useCache);
        logger.info("cacheKey:" + cacheKey);
        logger.info("useFileCacheFallback:" + useFileCacheFallback);
        logger.info("cacheTimeout:" + cacheTimeout);
      }

      if(fileCacheCharEncoding == null)
        fileCacheCharEncoding = charEncoding;

      if(fileCacheCharEncoding == null)
        fileCacheCharEncoding = "iso-8859-1";
     
      if(!useCache && !useFileCacheFallback)
      {
        if(logger.isInfoEnabled())
          logger.info("Calling url directly - no cache...");
        String result = helper.getUrlContent(url, requestProperties, requestParameters, charEncoding, timeout.intValue());
        produceResult(result);
      }
      else
      {
        String completeUrl = url + "_" + helper.toEncodedString(requestParameters, charEncoding) + "_" + charEncoding + "_" + fileCacheCharEncoding;
       
        String localCacheKey = "result_" + completeUrl;
        if(cacheKey != null && !cacheKey.equals(""))
          localCacheKey = cacheKey;

        if(logger.isInfoEnabled())
          logger.info("localCacheKey:" +localCacheKey);
       
        CachingIOResultHandler resultHandler = new CachingIOResultHandler();
        resultHandler.setCacheKey(localCacheKey);
        resultHandler.setCacheName(cacheName);
        resultHandler.setUseMemoryCache(useCache);
        resultHandler.setUseFileCacheFallback(useFileCacheFallback);
        resultHandler.setFileCacheCharEncoding(fileCacheCharEncoding);

        String cachedResult = null;
        boolean callInBackground = false;
       
        if(logger.isInfoEnabled())
          logger.info("Using some cache (useCache:" + useCache + ", useFileCacheFallback:" + useFileCacheFallback + ", cacheTimeout:" + cacheTimeout.intValue() + ")");

        cachedResult = (String)CacheController.getCachedObjectFromAdvancedCache(cacheName, localCacheKey, cacheTimeout.intValue(), useFileCacheFallback, fileCacheCharEncoding, useCache);
        if(logger.isInfoEnabled())
          t.printElapsedTime("Getting timed cache result:" + cachedResult);
       
        if(((cachedResult == null || cachedResult.equals(""))) && !skipExpiredContentFallback)
        {
          logger.info("No cached result either in memory or in filecache - getting old if exists");
          cachedResult = (String)CacheController.getCachedObjectFromAdvancedCache(cacheName, localCacheKey, useFileCacheFallback, fileCacheCharEncoding, useCache);
          getController().getDeliveryContext().setDisablePageCache(true);

          callInBackground = true;
        }
       
        if(cachedResult == null || cachedResult.equals(""))
        {
          if(logger.isInfoEnabled())
            logger.info("Calling url directly as last resort...");
         
          cachedResult = helper.getUrlContent(url, requestProperties, requestParameters, charEncoding, timeout.intValue());
         
          resultHandler.handleResult(cachedResult);
        }
        else if(callInBackground)
        {
          if(logger.isInfoEnabled())
            logger.info("Adding url to queue...");
          queueBean(resultHandler);
        }

        if(logger.isInfoEnabled())
          logger.info("Sending out the cached result...");
       
        produceResult(cachedResult);
      }
      if(logger.isInfoEnabled())
        t.printElapsedTime("Import took..");
        }
    catch (Exception e)
        {
            logger.error("An error occurred when we on page '" + getController().getCurrentPageUrl() + "' tried during (" + timeout + " ms) to import the url:" + this.url + ":" + e.getMessage());
            logger.warn("An error occurred when we on page '" + getController().getCurrentPageUrl() + "' tried during (" + timeout + " ms) to import the url:" + this.url + ":" + e.getMessage(), e);
View Full Code Here


  public String getAssetUrl(Database db, Integer contentId, Integer languageId, String assetKey, Integer siteNodeId, boolean useLanguageFallback, DeliveryContext deliveryContext, InfoGluePrincipal infoGluePrincipal) throws SystemException, Exception
  {
    if(contentId == null || contentId.intValue() < 1)
      return "";

    Timer t = new Timer();
   
    //System.out.println("Adding:" + "content_" + contentId);
    deliveryContext.addUsedContent(CacheController.getPooledString(1, contentId));

      SiteNodeVO siteNodeVO = SiteNodeController.getController().getSiteNodeVOWithId(siteNodeId, db);

      String assetCacheKey = "" + languageId + "_" + contentId + "_" + siteNodeVO.getRepositoryId() + "_" + assetKey + "_" + useLanguageFallback + "_" + deliveryContext.getUseFullUrl() + "_" + deliveryContext.getUseDownloadAction();
     
      if(logger.isInfoEnabled())
        logger.info("assetCacheKey:" + assetCacheKey);
     
      assetKey = URLDecoder.decode(assetKey, "utf-8");
     
    String cacheName = "assetUrlCacheWithGroups";
    //String cachedAssetUrl = (String)CacheController.getCachedObject(cacheName, assetCacheKey);
    String cachedAssetUrl = (String)CacheController.getCachedObjectFromAdvancedCache(cacheName, assetCacheKey);
    if(cachedAssetUrl != null)
    {
      if(logger.isInfoEnabled())
        logger.info("There was an cached cachedAssetUrl:" + cachedAssetUrl);
     
      return cachedAssetUrl;
    }
   
    String assetUrl = "";
    assetUrl = urlComposer.composeDigitalAssetUrl("", null, "", deliveryContext);
   
    SmallestContentVersionVO contentVersion = getSmallestContentVersionVO(siteNodeId, contentId, languageId, db, useLanguageFallback, deliveryContext, infoGluePrincipal);
    ContentVO contentVO = this.getContentVO(db, contentId, deliveryContext);
    LanguageVO masterLanguageVO = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForRepository(contentVO.getRepositoryId(), db);
    if(logger.isInfoEnabled())
    {
      logger.info("languageId:" + languageId);
      logger.info("masterLanguageVO:" + masterLanguageVO);
    }
    /*
    if(deliveryContext.getUseDownloadAction())
    {
      SiteNode siteNode = NodeDeliveryController.getNodeDeliveryController(siteNodeId, languageId, contentId).getSiteNode(db, siteNodeId);
      String dnsName = CmsPropertyHandler.getWebServerAddress();
      if(siteNode != null && siteNode.getRepository().getDnsName() != null && !siteNode.getRepository().getDnsName().equals(""))
        dnsName = siteNode.getRepository().getDnsName();

      return urlComposer.composeDigitalAssetUrl(dnsName, siteNodeId, contentId, languageId, assetKey, deliveryContext);
    }
    */
   
    boolean isUnprotectedAsset = getHasUserContentAccess(db, UserControllerProxy.getController().getUser(CmsPropertyHandler.getAnonymousUser()), contentId);
   
    if(!isUnprotectedAsset)
    {
          DigitalAssetVO digitalAsset = DigitalAssetController.getLatestDigitalAssetVO(contentVersion.getId(), assetKey, db);
          if(digitalAsset == null)
            return "";
         
      //SiteNodeVO siteNodeVO = getSiteNodeVO(db, siteNodeId);
      String dnsName = CmsPropertyHandler.getWebServerAddress();
      if(siteNodeVO != null)
      {
        RepositoryVO repositoryVO = RepositoryController.getController().getRepositoryVOWithId(siteNodeVO.getRepositoryId(), db);
        if(repositoryVO.getDnsName() != null && !repositoryVO.getDnsName().equals(""))
          dnsName = repositoryVO.getDnsName();
      }
      /*
      SiteNode siteNode = NodeDeliveryController.getNodeDeliveryController(siteNodeId, languageId, contentId).getSiteNodeVO(db, siteNodeId);
      String dnsName = CmsPropertyHandler.getWebServerAddress();
      if(siteNode != null && siteNode.getRepository().getDnsName() != null && !siteNode.getRepository().getDnsName().equals(""))
        dnsName = siteNode.getRepository().getDnsName();
      */

      return urlComposer.composeDigitalAssetUrl(dnsName, siteNodeId, contentId, languageId, assetKey, deliveryContext, db);
    }
    else if(contentVersion != null)
        {
          DigitalAssetVO digitalAsset = DigitalAssetController.getLatestDigitalAssetVO(contentVersion.getId(), assetKey, db);
     
      if(digitalAsset != null)
      {
        //String fileName = digitalAsset.getDigitalAssetId() + "_" + digitalAsset.getAssetFileName();
        String fileName = DigitalAssetDeliveryController.getAssetFileName(digitalAsset, contentId, languageId, db);
        //String folderName = "" + (digitalAsset.getDigitalAssetId().intValue() / 1000);
        String folderName = DigitalAssetDeliveryController.getAssetFolderName(digitalAsset, contentId, languageId, db);

        int i = 0;
        File masterFile = null;
        String filePath = CmsPropertyHandler.getDigitalAssetPath0() + File.separator + folderName;
        while(filePath != null)
        {
          try
          {
              if(masterFile == null)
                  masterFile = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().dumpDigitalAsset(digitalAsset, fileName, filePath, db)
            else
                DigitalAssetDeliveryController.getDigitalAssetDeliveryController().dumpDigitalAsset(masterFile, fileName, filePath);
          }
          catch(Exception e)
          {
            logger.warn("An file could not be written:" + e.getMessage(), e);
          }
           
            i++;
            filePath = CmsPropertyHandler.getProperty("digitalAssetPath." + i);
            if(filePath != null)
              filePath += File.separator + folderName;
        }

        //SiteNodeVO siteNodeVO = getSiteNodeVO(db, siteNodeId);
        String dnsName = CmsPropertyHandler.getWebServerAddress();
        if(siteNodeVO != null)
        {
          RepositoryVO repositoryVO = RepositoryController.getController().getRepositoryVOWithId(siteNodeVO.getRepositoryId(), db);
          if(repositoryVO.getDnsName() != null && !repositoryVO.getDnsName().equals(""))
            dnsName = repositoryVO.getDnsName();
        }

        /*
        SiteNode siteNode = NodeDeliveryController.getNodeDeliveryController(siteNodeId, languageId, contentId).getSiteNode(db, siteNodeId);
        String dnsName = CmsPropertyHandler.getWebServerAddress();
        if(siteNode != null && siteNode.getRepository().getDnsName() != null && !siteNode.getRepository().getDnsName().equals(""))
          dnsName = siteNode.getRepository().getDnsName();
        */
         
        if(deliveryContext.getUseDownloadAction())
          assetUrl = urlComposer.composeDigitalAssetUrl(dnsName, siteNodeId, contentId, languageId, assetKey, deliveryContext, db);
        else
          assetUrl = urlComposer.composeDigitalAssetUrl(dnsName, folderName, fileName, deliveryContext);
      }
      else if(useLanguageFallback)
      {
        assetUrl = getLanguageIndependentAssetUrl(contentId, languageId, siteNodeId, db, assetKey, deliveryContext, infoGluePrincipal);
      }
    }       
    else if(useLanguageFallback && languageId != null && masterLanguageVO != null && languageId.intValue() != masterLanguageVO.getId().intValue())
    {
        contentVersion = getSmallestContentVersionVO(siteNodeId, contentId, languageId, db, useLanguageFallback, deliveryContext, infoGluePrincipal);
       
        logger.info("contentVersion:" + contentVersion);
      if(contentVersion != null)
      {
              DigitalAssetVO digitalAsset = DigitalAssetController.getLatestDigitalAssetVO(contentVersion.getId(), assetKey, db);
       
        if(digitalAsset != null)
        {
          //String fileName = digitalAsset.getDigitalAssetId() + "_" + digitalAsset.getAssetFileName();
          String fileName = DigitalAssetDeliveryController.getAssetFileName(digitalAsset, contentId, languageId, db);
          //String folderName = "" + (digitalAsset.getDigitalAssetId().intValue() / 1000);
          String folderName = DigitalAssetDeliveryController.getAssetFolderName(digitalAsset, contentId, languageId, db);
         
          int i = 0;
          File masterFile = null;
          String filePath = CmsPropertyHandler.getDigitalAssetPath0() + File.separator + folderName;
          while(filePath != null)
          {
            try
            {
                if(masterFile == null)
                    masterFile = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().dumpDigitalAsset(digitalAsset, fileName, filePath, db);
              else
                  DigitalAssetDeliveryController.getDigitalAssetDeliveryController().dumpDigitalAsset(masterFile, fileName, filePath);
            }
            catch(Exception e)
            {
              logger.warn("An file could not be written:" + e.getMessage(), e);
            }
           
            i++;
            filePath = CmsPropertyHandler.getProperty("digitalAssetPath." + i);
              if(filePath != null)
                filePath += File.separator + folderName;
          }

          //SiteNodeVO siteNodeVO = NodeDeliveryController.getNodeDeliveryController(siteNodeId, languageId, contentId).getSiteNodeVO(db, siteNodeId);
          String dnsName = CmsPropertyHandler.getWebServerAddress();
          if(siteNodeVO != null)
          {
            RepositoryVO repositoryVO = RepositoryController.getController().getRepositoryVOWithId(siteNodeVO.getRepositoryId(), db);
            if(repositoryVO.getDnsName() != null && !repositoryVO.getDnsName().equals(""))
              dnsName = repositoryVO.getDnsName();
          }
          /*
          SiteNode siteNode = NodeDeliveryController.getNodeDeliveryController(siteNodeId, languageId, contentId).getSiteNode(db, siteNodeId);
          String dnsName = CmsPropertyHandler.getWebServerAddress();
          if(siteNode != null && siteNode.getRepository().getDnsName() != null && !siteNode.getRepository().getDnsName().equals(""))
            dnsName = siteNode.getRepository().getDnsName();
          */
           
          if(deliveryContext.getUseDownloadAction())
            assetUrl = urlComposer.composeDigitalAssetUrl(dnsName, siteNodeId, contentId, languageId, assetKey, deliveryContext, db);
          else
            assetUrl = urlComposer.composeDigitalAssetUrl(dnsName, folderName, fileName, deliveryContext);
        }
        else if(useLanguageFallback)
        {
          assetUrl = getLanguageIndependentAssetUrl(contentId, languageId, siteNodeId, db, assetKey, deliveryContext, infoGluePrincipal);
        }
      }
    }
     
    if(assetUrl == null || assetUrl.equals(""))
    {
      RequestAnalyser.getRequestAnalyser().registerComponentStatistics("Missed as assetURL was empty", t.getElapsedTime());
      logger.info("Missed as assetURL was empty:" + assetKey);
    }
       
        return assetUrl;
  }
View Full Code Here

   * This method is meant to be used for javascript plugins and similar bundles - and the target directory is therefore the infoglueDeliverXXXX/script/extensions
   */

  public String getScriptExtensionUrls(Database db, Integer contentId, Integer languageId, String assetKey, String fileNames, Boolean autoCreateMarkup, Boolean addToHeader, Boolean addToBodyEnd, Boolean addToBundledIncludes, String bundleName, boolean prepend, Integer siteNodeId, boolean useLanguageFallback, DeliveryContext deliveryContext, InfoGluePrincipal infoGluePrincipal) throws SystemException, Exception
  {
    Timer t = new Timer();
    String scriptExtensionUrls = "";
   
    SmallestContentVersionVO contentVersion = getSmallestContentVersionVO(siteNodeId, contentId, languageId, db, useLanguageFallback, deliveryContext, infoGluePrincipal);
    if (contentVersion != null)
        {
      DigitalAssetVO digitalAsset = null;
      if(assetKey == null)
        digitalAsset = DigitalAssetController.getLatestDigitalAssetVO(contentVersion.getContentVersionId(), db);
      else
        digitalAsset = DigitalAssetController.getLatestDigitalAssetVO(contentVersion.getContentVersionId(), assetKey, db);
     
      if(digitalAsset != null)
      {
        String fileName = digitalAsset.getAssetFileName();
       
        int i = 0;
        File masterFile = null;
        String filePath = CmsPropertyHandler.getDigitalAssetPath0();
        while(filePath != null)
        {
          File unzipDirectory = new File(filePath + File.separator + "extensions" + File.separator + fileName.substring(0, fileName.lastIndexOf(".")));
          unzipDirectory.mkdirs();
         
          if(masterFile == null)
              masterFile = DigitalAssetDeliveryController.getDigitalAssetDeliveryController().dumpAndUnzipDigitalAsset(digitalAsset, fileName, filePath, unzipDirectory, db);
          else
              DigitalAssetDeliveryController.getDigitalAssetDeliveryController().dumpAndUnzipDigitalAsset(masterFile, fileName, filePath, unzipDirectory);
             
          i++;
          filePath = CmsPropertyHandler.getProperty("digitalAssetPath." + i);
        }

        //logger.info("filePath (Should be base url):" + filePath);
       
        SiteNodeVO siteNodeVO = NodeDeliveryController.getNodeDeliveryController(siteNodeId, languageId, contentId, deliveryContext).getSiteNodeVO(db, siteNodeId);
        String dnsName = CmsPropertyHandler.getWebServerAddress();
        if(siteNodeVO != null)
        {
          RepositoryVO repositoryVO = RepositoryController.getController().getRepositoryVOWithId(siteNodeVO.getRepositoryId(), db);
          if(repositoryVO.getDnsName() != null && !repositoryVO.getDnsName().equals(""))
            dnsName = repositoryVO.getDnsName();
        }
         
        String archiveBaseUrl = urlComposer.composeDigitalAssetUrl(dnsName, "extensions" + File.separator + fileName.substring(0, fileName.lastIndexOf(".")), deliveryContext);
     
        if(logger.isInfoEnabled())
          logger.info("archiveBaseUrl:" + archiveBaseUrl);
        if(logger.isInfoEnabled())
          logger.info("fileNames:" + fileNames);
        if(fileNames == null || fileNames.equals(""))
        {
          scriptExtensionUrls = archiveBaseUrl;
        }
        else
        {
          String[] fileNamesArray = fileNames.split(",");
          for(int j=0; j<fileNamesArray.length; j++)
          {
            String scriptExtensionFileUrl = archiveBaseUrl + "/" + fileNamesArray[j].trim();
            if(autoCreateMarkup || addToHeader)
            {
              if(scriptExtensionFileUrl.toLowerCase().endsWith(".css"))
                scriptExtensionFileUrl = "<link href=\"" + scriptExtensionFileUrl + "\" rel=\"stylesheet\" type=\"text/css\" />";
              else
                scriptExtensionFileUrl = "<script type=\"text/javascript\" src=\"" + scriptExtensionFileUrl + "\"></script>";
            }

            if(!addToHeader && !addToBodyEnd && !addToBundledIncludes)
            {
              scriptExtensionUrls = scriptExtensionUrls + scriptExtensionFileUrl + "";
            }
            else
            {
              if(addToBundledIncludes)
              {
                ////// TODO - clean all bundles and extensions when assets are updated or similar.. figure out how.
                String extensionSuffix = "extensions" + File.separator + fileName.substring(0, fileName.lastIndexOf(".")) + File.separator + fileNamesArray[j];
                if(logger.isInfoEnabled())
                  logger.info("extensionSuffix:" + extensionSuffix);

                if(extensionSuffix.toLowerCase().endsWith(".css"))
                  deliveryContext.addCSSExtensionBundleFile(bundleName, extensionSuffix);             
                else
                {
                  if(addToBodyEnd)
                    deliveryContext.addScriptExtensionBodyBundleFile(bundleName, extensionSuffix);             
                  else if(addToHeader)
                    deliveryContext.addScriptExtensionHeadBundleFile(bundleName, extensionSuffix);             
                }
              }
              else if(addToHeader)
                deliveryContext.addHtmlHeadItem(scriptExtensionFileUrl, prepend);
              else if(addToBodyEnd)
                deliveryContext.addHtmlBodyEndItem(scriptExtensionFileUrl, prepend);
            }
          }         
        }
      }
        }       
   
    if(logger.isInfoEnabled())
      t.printElapsedTime("Getting scriptExtensionUrls took");
   
    return scriptExtensionUrls;
  }
View Full Code Here

   */
  public boolean isValidContent(Database db, Integer contentId, Integer languageId, boolean useLanguageFallback, boolean includeFolders, InfoGluePrincipal infoGluePrincipal, DeliveryContext deliveryContext) throws Exception
  {
      boolean isValidContent = false;
   
    Timer t = new Timer();
    //Content content = (Content)getObjectWithId(ContentImpl.class, contentId, db);
    ContentVO content = getContentVO(db, contentId, deliveryContext);
    isValidContent = isValidContent(infoGluePrincipal, content, languageId, useLanguageFallback, includeFolders, db, deliveryContext, true, true);
   
    return isValidContent;         
View Full Code Here

  public boolean isValidContent(Database db, ContentVO content, Integer languageId, boolean useLanguageFallback, boolean includeFolders, InfoGluePrincipal infoGluePrincipal, DeliveryContext deliveryContext, boolean checkIfVersionExists, boolean checkAuthorization) throws Exception
  {
      boolean isValidContent = false;
   
      Timer t = new Timer();
    //Content content = (Content)getObjectWithId(ContentImpl.class, contentId, db);
      //RequestAnalyser.getRequestAnalyser().registerComponentStatistics("isValidContent2 content", t.getElapsedTimeNanos() / 1000);
    isValidContent = isValidContent(infoGluePrincipal, content, languageId, useLanguageFallback, includeFolders, db, deliveryContext, checkIfVersionExists, checkAuthorization);
    //RequestAnalyser.getRequestAnalyser().registerComponentStatistics("isValidContent2", t.getElapsedTimeNanos() / 1000);
   
View Full Code Here

   * @throws Exception
   */
 
  public boolean isValidContent(InfoGluePrincipal infoGluePrincipal, ContentVO content, Integer languageId, boolean useLanguageFallBack, boolean includeFolders, Database db, DeliveryContext deliveryContext) throws Exception
  {
    Timer t = new Timer();
   
    boolean isValidContent = false;
    if(infoGluePrincipal == null)
        throw new SystemException("There was no anonymous user found in the system. There must be - add the user anonymous/anonymous and try again.");
   
    if(metaInfoContentTypeId == null)
    {
      ContentTypeDefinitionVO ctdVO = ContentTypeDefinitionController.getController().getContentTypeDefinitionVOWithName("Meta info", db);
      if(ctdVO != null)
        metaInfoContentTypeId = ctdVO.getId();
    }

    if(HTMLTemplateContentTypeId == null)
    {
      ContentTypeDefinitionVO ctdVO = ContentTypeDefinitionController.getController().getContentTypeDefinitionVOWithName("HTMLTemplate", db);
      if(ctdVO != null)
        HTMLTemplateContentTypeId = ctdVO.getId();
    }

    if(PagePartTemplateContentTypeId == null)
    {
      ContentTypeDefinitionVO ctdVO = ContentTypeDefinitionController.getController().getContentTypeDefinitionVOWithName("PagePartTemplate", db);
      if(ctdVO != null)
        PagePartTemplateContentTypeId = ctdVO.getId();
    }

    if(PageTemplateContentTypeId == null)
    {
      ContentTypeDefinitionVO ctdVO = ContentTypeDefinitionController.getController().getContentTypeDefinitionVOWithName("PageTemplate", db);
      if(ctdVO != null)
        PageTemplateContentTypeId = ctdVO.getId();
    }

    if(content.getContentTypeDefinitionId() != null && (content.getContentTypeDefinitionId().equals(metaInfoContentTypeId) ||
                              content.getContentTypeDefinitionId().equals(HTMLTemplateContentTypeId) ||
                              content.getContentTypeDefinitionId().equals(PagePartTemplateContentTypeId) ||
                              content.getContentTypeDefinitionId().equals(PageTemplateContentTypeId)))
    {
      return true;
    }

    /*
    if(content.getContentTypeDefinitionId() != null)
    {
      ContentTypeDefinitionVO ctdVO = ContentTypeDefinitionController.getController().getContentTypeDefinitionVOWithId(content.getContentTypeDefinitionId(), db);
      if(ctdVO.getName().equalsIgnoreCase("Meta info") ||
          ctdVO.getName().equalsIgnoreCase("HTMLTemplate") ||
          ctdVO.getName().equalsIgnoreCase("PagePartTemplate") ||
          ctdVO.getName().equalsIgnoreCase("PageTemplate"))
        return true;
    }
    */

    if(content.getIsDeleted().booleanValue())
      return false;
   
    boolean validateOnDates = true;
    String operatingMode = CmsPropertyHandler.getOperatingMode();
    if(!deliveryContext.getOperatingMode().equals(operatingMode))
      operatingMode = deliveryContext.getOperatingMode();

    if(operatingMode.equals("0"))
    {
      validateOnDates = deliveryContext.getValidateOnDates();
    }
    //RequestAnalyser.getRequestAnalyser().registerComponentStatistics("isValidContentPart1", t.getElapsedTimeNanos() / 1000);

    try
    {
      Integer protectedContentId = getProtectedContentId(db, content);
      deliveryContext.addDebugInformation("content:" + content.getName() + ":" + protectedContentId);
      if(logger.isInfoEnabled())
        logger.info("content:" + content.getName() + ":" + protectedContentId);
      if(protectedContentId != null && !AccessRightController.getController().getIsPrincipalAuthorized(db, infoGluePrincipal, "Content.Read", protectedContentId.toString()))
      {
        deliveryContext.addDebugInformation("No access to Content.READ for " + infoGluePrincipal);
          return false;
      }
    }
    catch (Exception e)
    {
      logger.error("An error occurred trying to validate access to a content. Resetting datalayer and disabling page cache but allowing for now. Reson: " + e.getMessage());
      logger.warn("An error occurred trying to validate access to a content. Resetting datalayer and disabling page cache but allowing for now. Reson: " + e.getMessage(), e);
    }
   
    //RequestAnalyser.getRequestAnalyser().registerComponentStatistics("isValidContentPart protectedContentId", t.getElapsedTimeNanos() / 1000);

    if(includeFolders && content.getIsBranch().booleanValue() && isValidOnDates(content.getPublishDateTime(), content.getExpireDateTime(), validateOnDates))
    {
      isValidContent = true;
    }
    else if(isValidOnDates(content.getPublishDateTime(), content.getExpireDateTime(), validateOnDates))
    {
      //RequestAnalyser.getRequestAnalyser().registerComponentStatistics("isValidContentPart3", t.getElapsedTimeNanos() / 1000000);

      //ContentVersion contentVersion = getContentVersion(content, languageId, getOperatingMode(), deliveryContext, db);
      //TODO
      ContentVersionVO contentVersion = getContentVersionVO(content.getId(), languageId, getOperatingMode(deliveryContext), deliveryContext, db);
        //SmallestContentVersionVO contentVersion = getSmallestContentVersionVO(content.getId(), languageId, getOperatingMode(deliveryContext), deliveryContext, db);
      //RequestAnalyser.getRequestAnalyser().registerComponentStatistics("isValidContentPart4", t.getElapsedTimeNanos() / 1000);
       
      RequestAnalyser.getRequestAnalyser().registerComponentStatistics("getContentVersionVO in isValid(micro)", t.getElapsedTimeNanos() / 1000);

        //RequestAnalyser.getRequestAnalyser().registerComponentStatistics("isValidContentPart4.1", t.getElapsedTimeNanos() / 1000000);

        Integer repositoryId = content.getRepositoryId();
        if(contentVersion == null && useLanguageFallBack && repositoryId != null)
      {
        RequestAnalyser.getRequestAnalyser().registerComponentStatistics("Before LanguageFallBack", t.getElapsedTimeNanos() / 1000);
        LanguageVO masterLanguage = LanguageDeliveryController.getLanguageDeliveryController().getMasterLanguageForRepository(repositoryId, db);
        //TODO
        if(masterLanguage != null && !masterLanguage.getId().equals(languageId))
        {
          contentVersion = getContentVersionVO(content.getId(), masterLanguage.getId(), getOperatingMode(deliveryContext), deliveryContext, db);
View Full Code Here

   
    Date lastModifiedDateTime = null;
    logger.info("useContentLookup:" + useContentLookup);
    logger.info("UsedContentVersions:" + this.deliveryContext.getUsedContentVersions().size());
    logger.info("UsedContents:" + this.deliveryContext.getUsedContents().size());
    Timer t = new Timer();
    if(this.deliveryContext.getUsedContentVersions().size() > 0 || (useContentLookup && this.deliveryContext.getUsedContents().size() > 0))
    {
      try
      {
        SmallestContentVersionVO lastContentVersionVO = null;
        if(useContentLookup)
          lastContentVersionVO = ContentVersionController.getContentVersionController().getLatestContentVersionVOByContentIds(this.deliveryContext.getUsedContents(), getDatabase());
        else
          lastContentVersionVO = ContentVersionController.getContentVersionController().getLatestContentVersionVO(this.deliveryContext.getUsedContentVersions(), getDatabase());
        logger.info("lastContentVersionVO:" + lastContentVersionVO);
        if(lastContentVersionVO != null)
          lastModifiedDateTime = lastContentVersionVO.getModifiedDateTime();
        logger.info("lastModifiedDateTime from cvVO:" + lastContentVersionVO.getModifiedDateTime());
      }
      catch (Exception e)
      {
        e.printStackTrace();
      }
      /*
      Iterator userContentVersionIterator = this.deliveryContext.getUsedContentVersions().iterator();
      int processed = 0;
      while(userContentVersionIterator.hasNext())
      {
        String usedContentVersion = (String)userContentVersionIterator.next(); 
        if(usedContentVersion != null && usedContentVersion.startsWith("contentVersion_"))
          {
            try
                {
              String versionId = usedContentVersion.substring(15);
              if(!versionId.equals("null") && !versionId.equals(""))
              {
                processed++;
                Integer contentVersionId = new Integer(versionId);
                //SmallestContentVersionVO contentVersion = ContentVersionController.getContentVersionController().getSmallestContentVersionVOWithId(contentVersionId, getDatabase());
                ContentVersionVO contentVersion = ContentVersionController.getContentVersionController().getSmallContentVersionVOWithId(contentVersionId, getDatabase());
                if(lastModifiedDateTime == null || contentVersion.getModifiedDateTime().after(lastModifiedDateTime))
                {
                  lastModifiedDateTime = contentVersion.getModifiedDateTime();
                  System.out.println("lastModifiedDateTime:" + lastModifiedDateTime);
                }
              }
                }
            catch (Exception e)
            {
              logger.warn("Could not use the versionId:" + usedContentVersion + " - reason:" + e.getMessage());
          }
          }
        if(lastModifiedDateTime != null)
        {
          long current = System.currentTimeMillis() - lastModifiedDateTime.getTime();
          if(processed > maxNumberOfVersionsForDerivedLastModifiedInLive || current < (1000 * 60 * 10))
            break;
        }
      }
      */
     
      if(lastModifiedDateTime != null)
      {
        logger.info("The page gets " + lastModifiedDateTime);
        this.deliveryContext.setLastModifiedDateTime(lastModifiedDateTime);
      }
    }
   
    long elapsedTime = t.getElapsedTime();
    RequestAnalyser.getRequestAnalyser().registerComponentStatistics("getLastModifiedDateTime", elapsedTime);
  }
View Full Code Here

    if(pageString.length() < 500000)
    {
      pageString = this.getTemplateController().decoratePage(pageString);
     
      StringBuilder sb = null;
      Timer t = new Timer();
      this.generateExtensionBundles(this.getTemplateController().getDeliveryContext().getScriptExtensionHeadBundles(), "text/javascript", "head");
      this.generateExtensionBundles(this.getTemplateController().getDeliveryContext().getScriptExtensionBodyBundles(), "text/javascript", "body");
      this.generateExtensionBundles(this.getTemplateController().getDeliveryContext().getCSSExtensionBundles(), "text/css", "head");
     
      List htmlHeadItems = this.getTemplateController().getDeliveryContext().getHtmlHeadItems();
      if(htmlHeadItems != null && htmlHeadItems.size() > 0)
      {
        int indexOfHeadEndTag = pageString.indexOf("</head");
        if(indexOfHeadEndTag == -1)
          indexOfHeadEndTag = pageString.indexOf("</HEAD");
 
        if(indexOfHeadEndTag != -1)
        {
          sb = new StringBuilder(pageString);
          String headerItems = "";
          Iterator htmlHeadItemsIterator = htmlHeadItems.iterator();
          while(htmlHeadItemsIterator.hasNext())
          {
            String value = (String)htmlHeadItemsIterator.next();
            //logger.info("headItem:" + value);
            headerItems = headerItems + value + "\n";
          }
          sb.insert(indexOfHeadEndTag, headerItems);
          //pageString = sb.toString();
        }
      }

      List<String> htmlBodyEndItems = this.getTemplateController().getDeliveryContext().getHtmlBodyEndItems();
      if(htmlBodyEndItems != null && htmlBodyEndItems.size() > 0)
      {
        if(sb == null)
          sb = new StringBuilder(pageString);

        int indexOfBodyEndTag = sb.indexOf("</body");
        if(indexOfBodyEndTag == -1)
          indexOfBodyEndTag = sb.indexOf("</BODY");
 
        if(indexOfBodyEndTag != -1)
        {
          String bodyItems = "";
          Iterator htmlBodyItemsIterator = htmlBodyEndItems.iterator();
          while(htmlBodyItemsIterator.hasNext())
          {
            String value = (String)htmlBodyItemsIterator.next();
            //logger.info("headItem:" + value);
            bodyItems = bodyItems + value + "\n";
          }
          sb.insert(indexOfBodyEndTag, bodyItems);
          //pageString = sb.toString();
        }
      }
      RequestAnalyser.getRequestAnalyser().registerComponentStatistics("pageInvoker", t.getElapsedTime());
     
      try
      {
        int lastModifiedDateTimeIndex;
        if(sb == null)
View Full Code Here

    return pageString;
  }

  private void generateExtensionBundles(Map<String,Set<String>> extensionBundles, String contentType, String targetElement)
  {
    Timer t = new Timer();
   
    Set<String> bundledSignatures = new HashSet<String>();
   
    Iterator<String> scriptExtensionBundlesIterator = extensionBundles.keySet().iterator();
    while(scriptExtensionBundlesIterator.hasNext())
    {
      String bundleName = scriptExtensionBundlesIterator.next();
      if(logger.isInfoEnabled())
        logger.info("bundleName:" + bundleName);
     
      Set<String> scriptExtensionFileNames = extensionBundles.get(bundleName);
     
      if(scriptExtensionFileNames != null && scriptExtensionFileNames.size() > 0)
      {       
        String scriptBundle = "";

        int i = 0;
        String filePath = CmsPropertyHandler.getDigitalAssetPath0();
        while(filePath != null)
        {
          try
          {
            File extensionsDirectory = new File(filePath + File.separator + "extensions");
            extensionsDirectory.mkdirs();
           
            File extensionsBundleFile = new File(filePath + File.separator + "extensions" + File.separator + bundleName + ".js");
            if(contentType.equalsIgnoreCase("text/css"))
              extensionsBundleFile = new File(filePath + File.separator + "extensions" + File.separator + bundleName + ".css");
           
            if(!extensionsBundleFile.exists())
            { 
              if(logger.isInfoEnabled())
                logger.info("No script - generating:" + bundleName);
              if(scriptBundle.equals(""))
              {
                Iterator<String> scriptExtensionFileNamesIterator = scriptExtensionFileNames.iterator();
                while(scriptExtensionFileNamesIterator.hasNext())
                {
                  String scriptExtensionFileName = scriptExtensionFileNamesIterator.next();
                  if(logger.isInfoEnabled())
                    logger.info("scriptExtensionFileName:" + scriptExtensionFileName);
                  try
                  {
                    File file = new File(filePath + File.separator + scriptExtensionFileName);
                    String signature = "" + file.getName() + "_" + file.length();
                    if(logger.isInfoEnabled())
                      logger.info("Checking file:" + filePath + File.separator + scriptExtensionFileName);
                   
                    if(file.exists() && !bundledSignatures.contains(signature))
                    {
                      StringBuffer content = new StringBuffer(FileHelper.getFileAsStringOpt(file));
                      //Wonder what is the best signature..
                      bundledSignatures.add(signature);
                     
                      //If CSS we should change url:s to point to the original folder
                      if(contentType.equalsIgnoreCase("text/css"))
                      {
                        if(logger.isInfoEnabled())
                          logger.info("contentType:" + contentType);
                        String extensionPath = file.getPath().substring(extensionsDirectory.getPath().length() + 1, file.getPath().lastIndexOf("/") + 1);
                        if(logger.isInfoEnabled())
                          logger.info("extensionPath:" + extensionPath);
                       
                        int urlStartIndex = content.indexOf("url(");
                        while(urlStartIndex > -1)
                        {
                          if(content.charAt(urlStartIndex + 4) == '"' || content.charAt(urlStartIndex + 4) == '\'')
                            content.insert(urlStartIndex + 5, extensionPath);
                          else
                            content.insert(urlStartIndex + 4, extensionPath);
                          urlStartIndex = content.indexOf("url(", urlStartIndex + extensionPath.length());
                        }
                      } 
                      //logger.info("transformed content:" + content.substring(0, 500));

                      scriptBundle = scriptBundle + "\n\n" + content;
                    }
                    else
                    {
                      if(logger.isInfoEnabled())
                        logger.info("Not adding:" + signature + " as " + file.exists() + ":" + bundledSignatures.contains(signature));
                    }
                  }
                  catch (Exception e)
                  {
                    logger.warn("Error trying to parse file and bundle it (" + scriptExtensionFileName + "):" + e.getMessage());
                  }
                }
              }
             
              if(logger.isInfoEnabled())
                logger.info("scriptBundle:" + scriptBundle.length());
              if(scriptBundle != null && !scriptBundle.equals(""))
              {
                if(contentType.equalsIgnoreCase("text/javascript"))
                {
                  try
                  {
                    JSMin jsmin = new JSMin(new ByteArrayInputStream(scriptBundle.getBytes()), new FileOutputStream(extensionsBundleFile));
                    jsmin.jsmin();
                  }
                  catch (FileNotFoundException e)
                  {
                    e.printStackTrace();
                  }
                }
                else
                {
                  FileHelper.writeToFile(extensionsBundleFile, scriptBundle, false);
                }
                if(logger.isInfoEnabled())
                  logger.info("extensionsBundleFile:" + extensionsBundleFile.length());
              }
            }
           
            i++;
            filePath = CmsPropertyHandler.getProperty("digitalAssetPath." + i);
          }
          catch (Exception e)
          {
            logger.warn("Error trying to write bundled scripts:" + e.getMessage());
          }
        }
        try
        {
          SiteNodeVO siteNodeVO = NodeDeliveryController.getNodeDeliveryController(deliveryContext).getSiteNodeVO(getDatabase(), getTemplateController().getSiteNodeId());
          String dnsName = CmsPropertyHandler.getWebServerAddress();
          if(siteNodeVO != null)
          {
            RepositoryVO repositoryVO = RepositoryController.getController().getRepositoryVOWithId(siteNodeVO.getRepositoryId(), getDatabase());
            if(repositoryVO.getDnsName() != null && !repositoryVO.getDnsName().equals(""))
              dnsName = repositoryVO.getDnsName();
          }

          String bundleUrl = "";
          String bundleUrlTag = "";
         
          if(contentType.equalsIgnoreCase("text/javascript"))
          {
            bundleUrl = URLComposer.getURLComposer().composeDigitalAssetUrl(dnsName, "extensions", bundleName + ".js", deliveryContext);
            bundleUrlTag = "<script type=\"text/javascript\" src=\"" + bundleUrl + "\"></script>";
          }
          else if(contentType.equalsIgnoreCase("text/css"))
          {
            bundleUrl = URLComposer.getURLComposer().composeDigitalAssetUrl(dnsName, "extensions", bundleName + ".css", deliveryContext);
            bundleUrlTag = "<link href=\"" + bundleUrl + "\" rel=\"stylesheet\" type=\"text/css\" />";
          }

          if(targetElement.equalsIgnoreCase("head"))
            this.getTemplateController().getDeliveryContext().getHtmlHeadItems().add(bundleUrlTag);
          else
            this.getTemplateController().getDeliveryContext().getHtmlBodyEndItems().add(bundleUrlTag);
        }
        catch (Exception e)
        {
          logger.warn("Error trying  get assetBaseUrl:" + e.getMessage());
        }
      }

    }
    if(logger.isInfoEnabled())
      t.printElapsedTime("Generating bundles took")
  }
View Full Code Here

   
    InfoGlueComponent baseComponent = null;
   
       if(componentXML != null && componentXML.length() != 0)
    {
         Timer t = new Timer();
     
         List unsortedPageComponents = new ArrayList();
     
        
         try
View Full Code Here

TOP

Related Classes of org.infoglue.deliver.util.Timer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.