com.google.gwt.core.linker

## Class SymbolMapsLinker

- java.lang.Object
- - com.google.gwt.core.ext.Linker
  - - com.google.gwt.core.ext.linker.AbstractLinker
    - - com.google.gwt.core.linker.SymbolMapsLinker

-     @LinkerOrder(value=POST)
      @Shardable
      public class SymbolMapsLinker
      extends AbstractLinker

  This Linker exports the symbol maps associated with each compilation result as a private file. The names of the symbol maps files are computed by appending ".symbolMap" to the value returned by `CompilationResult.getStrongName()`.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `SymbolMapsLinker.ScriptFragmentEditsArtifact` Artifact to record insertions or deletions made to Javascript fragments.
    `static class` | `SymbolMapsLinker.SourceMapArtifact` Artifact to represent a sourcemap file to be processed by SymbolMapsLinker.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `MAKE_SYMBOL_MAPS`
    `static java.lang.String` | `STRONG_NAME_SUFFIX` This value is appended to the strong name of the CompilationResult to form the symbol map's filename.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SymbolMapsLinker()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `doEmitSymbolMap(TreeLogger logger, ArtifactSet artifacts, CompilationResult result, java.io.ByteArrayOutputStream out)` Override to change the manner in which the symbol map is emitted.
    `protected void` | `doWriteSymbolMap(TreeLogger logger, CompilationResult result, java.io.PrintWriter pw)` Override to change the format of the symbol map.
    `protected SyntheticArtifact` | `emitSourceMapString(TreeLogger logger, java.lang.String contents, java.lang.String partialPath)`
    `java.lang.String` | `getDescription()` Returns a human-readable String describing the Linker.
    `ArtifactSet` | `link(TreeLogger logger, LinkerContext context, ArtifactSet artifacts)` Included to support legacy non-shardable subclasses.
    `ArtifactSet` | `link(TreeLogger logger, LinkerContext context, ArtifactSet artifacts, boolean onePermutation)` This method is invoked for linkers annotated with `Shardable`.
    `static java.lang.String` | `propertyMapToString(java.util.Map<SelectionProperty,java.lang.String> propertyMap)`

    - ### Methods inherited from class com.google.gwt.core.ext.linker.AbstractLinker

      `emitBytes, emitBytes, emitInputStream, emitInputStream, emitString, emitString, emitWithStrongName, emitWithStrongName`

    - ### Methods inherited from class com.google.gwt.core.ext.Linker

      `isShardable, relink, supportsDevModeInJunit`

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

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

- - ### Field Detail

    - #### MAKE_SYMBOL_MAPS

          public static final java.lang.String MAKE_SYMBOL_MAPS

      See Also:
        Constant Field Values

    - #### STRONG_NAME_SUFFIX

          public static final java.lang.String STRONG_NAME_SUFFIX

      This value is appended to the strong name of the CompilationResult to form the symbol map's filename.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### SymbolMapsLinker

          public SymbolMapsLinker()

  - ### Method Detail

    - #### propertyMapToString

          public static java.lang.String propertyMapToString(java.util.Map<SelectionProperty,java.lang.String> propertyMap)

    - #### getDescription

          public java.lang.String getDescription()

      Description copied from class: `Linker`
      Returns a human-readable String describing the Linker.
      Specified by:
        `getDescription` in class `Linker`

    - #### link

          public ArtifactSet link(TreeLogger logger,
                         LinkerContext context,
                         ArtifactSet artifacts)
                           throws UnableToCompleteException

      Included to support legacy non-shardable subclasses.
      Overrides:
        `link` in class `Linker`
      Parameters:
        `logger` - the TreeLogger to record to
        `context` - provides access to the Linker's environment
        `artifacts` - an unmodifiable view of the artifacts to link
      Returns:
        the artifacts that should be propagated through the linker chain
      Throws:
        `UnableToCompleteException` - if compilation violates assumptions made by the Linker or for errors encountered by the Linker

    - #### link

          public ArtifactSet link(TreeLogger logger,
                         LinkerContext context,
                         ArtifactSet artifacts,
                         boolean onePermutation)
                           throws UnableToCompleteException

      Description copied from class: `Linker`

      This method is invoked for linkers annotated with `Shardable`. It is called at two points during compilation: after the compile of each permutation, and after all compilation has finished. The `onePermutation` is `true` for a per-permutation call and `false` for a global final-link call.

      For one-permutation calls, this method is passed all artifacts generated for just the one permutation. For the global call at the end of compilation, this method sees artifacts for the whole compilation, but with two modifications intended to support builds on computer clusters:

      1. All EmittedArtifacts have been converted to BinaryEmittedArtifacts
      2. All artifacts not marked as `Transferable` have been discarded.
      Overrides:
        `link` in class `Linker`
      Parameters:
        `logger` - the TreeLogger to record to
        `context` - provides access to the Linker's environment
        `artifacts` - an unmodifiable view of the artifacts to link
        `onePermutation` - true for a one-permutation call
      Returns:
        the artifacts that should be propagated through the linker chain
      Throws:
        `UnableToCompleteException` - if compilation violates assumptions made by the Linker or for errors encountered by the Linker

    - #### doEmitSymbolMap

          protected void doEmitSymbolMap(TreeLogger logger,
                             ArtifactSet artifacts,
                             CompilationResult result,
                             java.io.ByteArrayOutputStream out)
                                  throws UnableToCompleteException

      Override to change the manner in which the symbol map is emitted.
      Throws:
        `UnableToCompleteException`

    - #### doWriteSymbolMap

          protected void doWriteSymbolMap(TreeLogger logger,
                              CompilationResult result,
                              java.io.PrintWriter pw)
                                   throws UnableToCompleteException

      Override to change the format of the symbol map.
      Parameters:
        `logger` - the logger to write to
        `result` - the compilation result
        `pw` - the output PrintWriter
      Throws:
        `UnableToCompleteException` - if an error occurs

    - #### emitSourceMapString

          protected SyntheticArtifact emitSourceMapString(TreeLogger logger,
                                              java.lang.String contents,
                                              java.lang.String partialPath)
                                                   throws UnableToCompleteException

      Throws:
        `UnableToCompleteException`