Package org.apache.tapestry5.internal.services

## Class DocumentLinkerImpl

- java.lang.Object
- - org.apache.tapestry5.internal.services.DocumentLinkerImpl

- All Implemented Interfaces:
    `DocumentLinker`

      public class DocumentLinkerImpl
      extends java.lang.Object
      implements DocumentLinker

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DocumentLinkerImpl​(ModuleManager moduleManager, boolean omitGeneratorMetaTag, boolean enablePageloadingMask, java.lang.String tapestryVersion)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `addContentToBody​(Element body)` | Adds `<script>` elements for the RequireJS library, then any statically includes JavaScript libraries (including JavaScript stack virtual assets), then the initialization script block.
    `void` | `addCoreLibrary​(java.lang.String libraryURL)` | A special case used only for the libraries that are part of the core stack, which itself contains RequireJS and is used to bootstrap up to adding non-core libraries.
    `void` | `addInitialization​(InitializationPriority priority, java.lang.String moduleName, java.lang.String functionName, JSONArray arguments)` | Adds initialization, based on invoking functions exported by JavaScript modules.
    `void` | `addLibrary​(java.lang.String libraryURL)` | Adds a link to load a non-core JavaScript library.
    `void` | `addModuleConfigurationCallback​(ModuleConfigurationCallback callback)` | Adds a module configuration callback for this request.
    `void` | `addScript​(InitializationPriority priority, java.lang.String script)` | Adds JavaScript code.
    `void` | `addStylesheetLink​(StylesheetLink sheet)` | Adds a link to load a CSS stylesheet.
    `protected void` | `addStylesheetsToHead​(Element root, java.util.List<StylesheetLink> stylesheets)` | Locates the head element under the root ("html") element, creating it if necessary, and adds the stylesheets to it.
    `void` | `updateDocument​(Document document)` | Updates the supplied Document, possibly adding <head> or <body> elements.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DocumentLinkerImpl

          public DocumentLinkerImpl​(ModuleManager moduleManager,
                                    boolean omitGeneratorMetaTag,
                                    boolean enablePageloadingMask,
                                    java.lang.String tapestryVersion)

      Parameters:
        `moduleManager` - used to identify the root folder for dynamically loaded modules
        `omitGeneratorMetaTag` - via symbol configuration
        `enablePageloadingMask` -
        `tapestryVersion` -

  - ### Method Detail

    - #### addStylesheetLink

          public void addStylesheetLink​(StylesheetLink sheet)

      Description copied from interface: `DocumentLinker`
      Adds a link to load a CSS stylesheet.
      Specified by:
        `addStylesheetLink` in interface `DocumentLinker`

    - #### addCoreLibrary

          public void addCoreLibrary​(java.lang.String libraryURL)

      Description copied from interface: `DocumentLinker`
      A special case used only for the libraries that are part of the core stack, which itself contains RequireJS and is used to bootstrap up to adding non-core libraries.
      Specified by:
        `addCoreLibrary` in interface `DocumentLinker`

    - #### addLibrary

          public void addLibrary​(java.lang.String libraryURL)

      Description copied from interface: `DocumentLinker`
      Adds a link to load a non-core JavaScript library. These libraries are loaded, sequentially, only once the core libraries have loaded and initialized. Thus difference between core libraries and other libraries is new in 5.4, and represents a conflict between asynchronous loading of modules (introduced in 5.4) and sequential loading of libraries (in 5.3 and earlier).
      Specified by:
        `addLibrary` in interface `DocumentLinker`

    - #### addScript

          public void addScript​(InitializationPriority priority,
                                java.lang.String script)

      Description copied from interface: `DocumentLinker`
      Adds JavaScript code. The code is collected into a single block that is injected just before the close body tag of the page (in a full page render) and collected as the "script" property of the partial page render response. The JavaScript is executed after the page loads (or in an Ajax update, after external JavaScript libraries are loaded and the DOM is updated). This method may be called multiple times for the same priority and the script will be accumulated.
      Specified by:
        `addScript` in interface `DocumentLinker`
      Parameters:
        `priority` - when to execute the provided script
        `script` - statement to add to the block (a newline will be appended as well)

    - #### addInitialization

          public void addInitialization​(InitializationPriority priority,
                                        java.lang.String moduleName,
                                        java.lang.String functionName,
                                        JSONArray arguments)

      Description copied from interface: `DocumentLinker`
      Adds initialization, based on invoking functions exported by JavaScript modules.
      Specified by:
        `addInitialization` in interface `DocumentLinker`
      Parameters:
        `priority` - priority at which to perform initialization
        `moduleName` - name of module; the module exports a single function, or a map of functions
        `functionName` - name of function exported by module, or null (if the module exports a single function)
        `arguments` - arguments to pass to the function, or null if no arguments

    - #### updateDocument

          public void updateDocument​(Document document)

      Updates the supplied Document, possibly adding <head> or <body> elements.
      Parameters:
        `document` - to be updated

    - #### addContentToBody

          protected void addContentToBody​(Element body)

      Adds `<script>` elements for the RequireJS library, then any statically includes JavaScript libraries (including JavaScript stack virtual assets), then the initialization script block.
      Parameters:
        `body` - element to add the dynamic scripting to

    - #### addStylesheetsToHead

          protected void addStylesheetsToHead​(Element root,
                                              java.util.List<StylesheetLink> stylesheets)

      Locates the head element under the root ("html") element, creating it if necessary, and adds the stylesheets to it.
      Parameters:
        `root` - element of document
        `stylesheets` - to add to the document

    - #### addModuleConfigurationCallback

          public void addModuleConfigurationCallback​(ModuleConfigurationCallback callback)

      Description copied from interface: `DocumentLinker`
      Adds a module configuration callback for this request.
      Specified by:
        `addModuleConfigurationCallback` in interface `DocumentLinker`
      Parameters:
        `callback` - a `ModuleConfigurationCallback`. It cannot be null.