Class CmsADEManager

java.lang.Object
org.opencms.ade.configuration.CmsADEManager

public class CmsADEManager extends Object
This is the main class used to access the ADE configuration and also accomplish some other related tasks like loading/saving favorite and recent lists.

  • Field Details

  • Constructor Details

    • CmsADEManager

      public CmsADEManager(CmsObject adminCms, CmsMemoryMonitor memoryMonitor, CmsSystemConfiguration systemConfiguration)
      Creates a new ADE manager.

      Parameters:
      adminCms - a CMS context with admin privileges
      memoryMonitor - the memory monitor instance
      systemConfiguration - the system configuration
  • Method Details

    • addFormatterCacheWaitHandle

      public CmsWaitHandle addFormatterCacheWaitHandle(boolean online)
      Adds a wait handle for the next cache update to a formatter configuration.

      Parameters:
      online - true if we want to add a wait handle to the online cache, else the offline cache
      Returns:
      the wait handle that has been added
    • canEditSitemapConfiguration

      public boolean canEditSitemapConfiguration(CmsObject cms)
      Checks if the sitemap config can be edited by the user in the given CMS context.

      Note: Even if this returns true, there may be other reasons preventing the sitemap configuration from being edited by the user.

      Parameters:
      cms - the CMS context to check
      Returns:
      false if the user should not be able to edit the sitemap configuration
    • findEntryPoint

      public String findEntryPoint(CmsObject cms, String openPath)
      Finds the entry point to a sitemap.

      Parameters:
      cms - the CMS context
      openPath - the resource path to find the sitemap to
      Returns:
      the sitemap entry point
    • flushInheritanceGroupChanges

      Flushes inheritance group changes so the cache is updated.

      This is useful for test cases.

    • getAllDetailPages

      Gets the complete list of beans for the currently configured detail pages.

      Parameters:
      cms - the CMS context to use
      Returns:
      the list of detail page infos
    • getCache

      Gets the containerpage cache instance.

      Returns:
      the containerpage cache instance
    • getCachedFormatters

      Gets the cached formatter beans.

      Parameters:
      online - true if the Online project formatters should be returned, false for the Offline formatters
      Returns:
      the formatter configuration cache state
    • getCacheState

      public CmsADEConfigCacheState getCacheState(boolean online)
      Gets the current ADE configuration cache state.

      Parameters:
      online - true if you want the online state, false for the offline state
      Returns:
      the configuration cache state
    • getConfigurationType

      Gets the configuration file type.

      Returns:
      the configuration file type
    • getConfiguredWorkplaceBundles

      Returns the names of the bundles configured as workplace bundles in any module configuration.
      Returns:
      the names of the bundles configured as workplace bundles in any module configuration.
    • getContentTypeNames

      public Set<String> getContentTypeNames(boolean online)
      Gets the content types configured in any sitemap configuations.
      Parameters:
      online - true if the types for the Online project should be fetched
      Returns:
      the set of content types
    • getCurrentElement

      public CmsContainerElementBean getCurrentElement(javax.servlet.ServletRequest req) throws CmsException
      Reads the current element bean from the request.

      Parameters:
      req - the servlet request
      Returns:
      the element bean
      Throws:
      CmsException - if no current element is set
    • getDetailIdCache

      public CmsDetailNameCache getDetailIdCache(boolean online)
      Gets the detail id cache for the Online or Offline projects.

      Parameters:
      online - if true, gets the Online project detail id
      Returns:
      the detail name cache
    • getDetailInfo

      Gets the detail page information for everything.

      Parameters:
      cms - the current CMS context
      Returns:
      the list with all the detail page information
    • getDetailPage

      public String getDetailPage(CmsObject cms, String pageRootPath, String originPath)
      Gets the detail page for a content element.

      Parameters:
      cms - the CMS context
      pageRootPath - the element's root path
      originPath - the path in which the the detail page is being requested
      Returns:
      the detail page for the content element
    • getDetailPage

      public String getDetailPage(CmsObject cms, String rootPath, String linkSource, String targetDetailPage)
      Gets the detail page for a content element.

      Parameters:
      cms - the CMS context
      rootPath - the element's root path
      linkSource - the path in which the the detail page is being requested
      targetDetailPage - the target detail page to use
      Returns:
      the detail page for the content element
    • getDetailPageHandler

      Gets the detail page finder.

      Returns:
      the detail page finder
    • getDetailPages

      public List<String> getDetailPages(CmsObject cms, String type)
      Returns the main detail pages for a type in all of the VFS tree.

      Parameters:
      cms - the current CMS context
      type - the resource type name
      Returns:
      a list of detail page root paths
    • getDetailPageTypes

      Gets the set of types for which detail pages are defined.

      Parameters:
      cms - the current CMS context
      Returns:
      the set of types for which detail pages are defined
    • getElementSettings

      Returns the element settings for a given resource.

      Parameters:
      cms - the current cms context
      resource - the resource
      Returns:
      the element settings for a given resource
      Throws:
      CmsException - if something goes wrong
    • getElementViews

      Returns the available element views.

      Parameters:
      cms - the cms context
      Returns:
      the element views
    • getElementViewType

      Gets the element view configuration resource type.

      Returns:
      the element view configuration resource type
    • getFavoriteList

      Returns the favorite list, or creates it if not available.

      Parameters:
      cms - the cms context
      Returns:
      the favorite list
      Throws:
      CmsException - if something goes wrong
    • getFormatterSettings

      public Map<String,CmsXmlContentProperty> getFormatterSettings(CmsObject cms, CmsADEConfigData config, I_CmsFormatterBean mainFormatter, CmsResource res, Locale locale, javax.servlet.ServletRequest req)
      Returns the settings configured for the given formatter which should be editable via ADE.

      Parameters:
      cms - the cms context
      config - the sitemap configuration
      mainFormatter - the formatter
      res - the element resource
      locale - the content locale
      req - the current request, if available
      Returns:
      the settings configured for the given formatter
    • getInheritedContainerState

      Returns the inheritance state for the given inheritance name and resource.

      Parameters:
      cms - the current cms context
      resource - the resource
      name - the inheritance name
      Returns:
      the inheritance state
    • getInheritedContainerState

      Returns the inheritance state for the given inheritance name and root path.

      Parameters:
      cms - the current cms context
      rootPath - the root path
      name - the inheritance name
      Returns:
      the inheritance state
      Throws:
      CmsException - if something goes wrong
    • getMaxSitemapDepth

      public int getMaxSitemapDepth()
      Gets the maximum sitemap depth.

      Returns:
      the maximum sitemap depth
    • getModuleConfigurationType

      Gets the module configuration resource type.

      Returns:
      the module configuration resource type
    • getNestedFormatters

      public List<I_CmsFormatterBean> getNestedFormatters(CmsObject cms, CmsADEConfigData config, CmsResource res, Locale locale, javax.servlet.ServletRequest req)
      Returns the nested formatters of the given resource.

      Parameters:
      cms - the cms context
      config - the sitemap configuration
      res - the resource
      locale - the content locale
      req - the request, if available
      Returns:
      the nested formatters
    • getOfflineElementUses

      Creates a stream that produces the pages/groups referencing a given element.

      Note that this method doesn't take a CmsObject and just generates all resources referencing the element regardless of whether the current user can read them. So readResource calls for the ids of these resources may fail.

      Parameters:
      resource - the element resource
      Returns:
      the stream of resources which use the element
    • getParameters

      Gets ADE parameters.

      Parameters:
      cms - the current CMS context
      Returns:
      the ADE parameters for the current user
    • getParentFolderType

      public String getParentFolderType(boolean online, String rootPath)
      Gets the content element type for the given path's parent folder.
      Parameters:
      online - true if we want to use the Online project's configuration
      rootPath - the root path of a content
      Returns:
      the parent folder type name, or null if none is defined
    • getPermissionInfo

      public CmsPermissionInfo getPermissionInfo(CmsObject cms, CmsResource resource, String contextPath) throws CmsException
      Returns the permission info for the given resource.

      Parameters:
      cms - the cms context
      resource - the resource
      contextPath - the context path
      Returns:
      the permission info
      Throws:
      CmsException - if checking the permissions fails
    • getPluginsForPath

      Gets a map of plugin wrappers for the given site path.

      This *only* includes plugins defined in site plugins active on the given path, not those referenced in formatters.

      Parameters:
      cms - the CMS context
      path - the path for which to get the plugins
      Returns:
      the map of plugin wrappers, with the plugin groups as keys
    • getRawDetailPages

      Gets the raw configured detail page information, with no existence checks or path correction.
      Parameters:
      cms - the CMS context
      Returns:
      the list of raw detail page info beans
    • getRecentList

      Returns the favorite list, or creates it if not available.

      Parameters:
      cms - the cms context
      Returns:
      the favorite list
      Throws:
      CmsException - if something goes wrong
    • getSitemapConfigurationType

      Gets the sitemap configuration resource type.

      Returns:
      the resource type for sitemap configurations
    • getSubSitePaths

      public List<String> getSubSitePaths(CmsObject cms, String subSiteRoot)
      Returns all sub sites below the given path.

      Parameters:
      cms - the cms context
      subSiteRoot - the sub site root path
      Returns:
      the sub site root paths
    • getSubSiteRoot

      public String getSubSiteRoot(CmsObject cms, String rootPath)
      Tries to get the subsite root for a given resource root path.

      Parameters:
      cms - the current CMS context
      rootPath - the root path for which the subsite root should be found
      Returns:
      the subsite root
    • getSubsitesForSiteSelector

      public List<String> getSubsitesForSiteSelector(boolean online)
      Gets the subsites to be displayed in the site selector.
      Parameters:
      online - true if we want the subsites for the Online project
      Returns:
      the subsites to be displayed in the site selector
    • getUploadWarningTable

      Gets the table of upload warnings.
      Returns:
      the table of upload warnings
    • handleHtmlRedirect

      public void handleHtmlRedirect(CmsObject userCms, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String htmlRedirect) throws CmsException
      Processes a HTML redirect content.

      This needs to be in the ADE manager because the user for whom the HTML redirect is being loaded does not necessarily have read permissions for the redirect target, so we read the redirect target with admin privileges.

      Parameters:
      userCms - the CMS context of the current user
      request - the servlet request
      response - the servlet response
      htmlRedirect - the path of the HTML redirect resource
      Throws:
      CmsException - if something goes wrong
    • initialize

      public void initialize()
      Initializes the configuration by reading all configuration files and caching their data.

    • isDetailPage

      public boolean isDetailPage(CmsObject cms, CmsResource resource)
      Checks whether the given resource is configured as a detail page.

      Parameters:
      cms - the current CMS context
      resource - the resource which should be tested
      Returns:
      true if the resource is configured as a detail page
    • isEditorRestricted

      public boolean isEditorRestricted(CmsObject cms, CmsResource res)
      Checks if the user should be prevented from editing a file.

      This is not a permission check, but an additional mechanism to prevent users from editing configuration files even if they technically need or have write permissions for these files.

      Parameters:
      cms - the CMS context
      res - the resource to check
      Returns:
      true if the user should be prevented from editing the file
    • isElementReused

      public boolean isElementReused(CmsResource resource, Predicate<CmsResource> exclude)
      Checks if an element is reused in a page or group that is not excluded by a given predicate.
      Parameters:
      resource - the resource to check
      exclude - predicate used to ignore reuses which match it
      Returns:
      true if the element is reused
    • isInitialized

      public boolean isInitialized()
      Checks whether the ADE manager is initialized (this should usually be the case except during the setup).

      Returns:
      true if the ADE manager is initialized
    • isShowEditorHelp

      public boolean isShowEditorHelp(CmsObject cms)
      Returns the show editor help flag.

      Parameters:
      cms - the cms context
      Returns:
      the show editor help flag
    • lookupConfiguration

      Looks up the configuration data for a given sitemap path.

      Parameters:
      cms - the current CMS context
      rootPath - the root path for which the configuration data should be looked up
      Returns:
      the configuration data
    • lookupConfigurationWithCache

      Looks up the configuration data for a given sitemap path, but uses a thread-local cache for the current request for efficiency.
      Parameters:
      cms - the current CMS context
      rootPath - the root path for which the configuration data should be looked up
      Returns:
      the configuration data
    • refresh

      public void refresh()
      Reloads the configuration.

      Normally you shouldn't call this directly since the event handlers take care of updating the configuration.

    • saveDetailPages

      public boolean saveDetailPages(CmsObject cms, String rootPath, List<CmsDetailPageInfo> detailPages, CmsUUID newId) throws CmsException
      Saves a list of detail pages.

      Parameters:
      cms - the cms context
      rootPath - the root path
      detailPages - the detail pages
      newId - the id to use for new detail pages without an id
      Returns:
      true if the detail pages could be successfully saved
      Throws:
      CmsException - if something goes wrong
    • saveFavoriteList

      public void saveFavoriteList(CmsObject cms, List<CmsContainerElementBean> favoriteList) throws CmsException
      Saves the favorite list, user based.

      Parameters:
      cms - the cms context
      favoriteList - the element list
      Throws:
      CmsException - if something goes wrong
    • saveInheritedContainer

      public void saveInheritedContainer(CmsObject cms, CmsResource pageResource, String name, boolean newOrder, List<CmsContainerElementBean> elements) throws CmsException
      Saves the inheritance container information.

      Parameters:
      cms - the current cms context
      pageResource - the resource or parent folder
      name - the inheritance name
      newOrder - if the element have been reordered
      elements - the elements
      Throws:
      CmsException - if something goes wrong
    • saveInheritedContainer

      public void saveInheritedContainer(CmsObject cms, String sitePath, String name, boolean newOrder, List<CmsContainerElementBean> elements) throws CmsException
      Saves the inheritance container information.

      Parameters:
      cms - the current cms context
      sitePath - the site path of the resource or parent folder
      name - the inheritance name
      newOrder - if the element have been reordered
      elements - the elements
      Throws:
      CmsException - if something goes wrong
    • saveRecentList

      public void saveRecentList(CmsObject cms, List<CmsContainerElementBean> recentList) throws CmsException
      Saves the favorite list, user based.

      Parameters:
      cms - the cms context
      recentList - the element list
      Throws:
      CmsException - if something goes wrong
    • setShowEditorHelp

      public void setShowEditorHelp(CmsObject cms, boolean showHelp) throws CmsException
      Sets the show editor help flag.

      Parameters:
      cms - the cms context
      showHelp - the show help flag
      Throws:
      CmsException - if writing the user info fails
    • shutdown

      public void shutdown()
      The method which is called when the OpenCms instance is shut down.

    • waitForCacheUpdate

      public void waitForCacheUpdate(boolean online)
      Waits until the next time the cache is updated.

      Parameters:
      online - true if we want to wait for the online cache, false for the offline cache
    • waitForFormatterCache

      public void waitForFormatterCache(boolean online)
      Waits until the formatter cache has finished updating itself.

      This method is only intended for use in test cases.

      Parameters:
      online - true if we should wait for the online formatter cache,false for the offline cache
    • elementFromJson

      Creates an element from its serialized data.

      Parameters:
      data - the serialized data
      Returns:
      the restored element bean
      Throws:
      JSONException - if the serialized data got corrupted
    • elementToJson

      protected JSONObject elementToJson(CmsContainerElementBean element, Set<String> excludeSettings)
      Converts the given element to JSON.

      Parameters:
      element - the element to convert
      excludeSettings - the keys of settings which should not be written to the JSON
      Returns:
      the JSON representation
    • getCache

      protected org.opencms.ade.configuration.CmsConfigurationCache getCache(boolean online)
      Gets the configuration cache instance.

      Parameters:
      online - true if you want the online cache, false for the offline cache
      Returns:
      the ADE configuration cache instance
    • getOfflineCache

      protected org.opencms.ade.configuration.CmsConfigurationCache getOfflineCache()
      Gets the offline cache.

      Returns:
      the offline configuration cache
    • getOnlineCache

      protected org.opencms.ade.configuration.CmsConfigurationCache getOnlineCache()
      Gets the online cache.

      Returns:
      the online configuration cache
    • getRoleForSitemapConfigEditing

      Gets the role necessary to edit sitemap configuration files.
      Returns:
      the role needed for editing sitemap configurations
    • getRootPath

      protected String getRootPath(CmsUUID structureId, boolean online) throws CmsException
      Gets the root path for a given resource structure id.

      Parameters:
      structureId - the structure id
      online - if true, the resource will be looked up in the online project ,else in the offline project
      Returns:
      the root path for the given structure id
      Throws:
      CmsException - if something goes wrong
    • getTempfileProject

      Gets a tempfile project, creating one if it doesn't exist already.

      Parameters:
      cms - the CMS context to use
      Returns:
      the tempfile project
      Throws:
      CmsException - if something goes wrong
    • internalLookupConfiguration

      Internal configuration lookup method.

      Parameters:
      cms - the cms context
      rootPath - the root path for which to look up the configuration
      Returns:
      the configuration for the given path