Package com.google.gwt.dev.codeserver

Source Code of com.google.gwt.dev.codeserver.ReverseSourceMap

/*
* Copyright 2013 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/

package com.google.gwt.dev.codeserver;

import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.dev.util.Util;
import com.google.gwt.thirdparty.debugging.sourcemap.SourceMapConsumerV3;
import com.google.gwt.thirdparty.debugging.sourcemap.SourceMapParseException;

import java.io.File;

/**
* A mapping from Java lines to JavaScript.
*/
class ReverseSourceMap {
  private final SourceMapConsumerV3 consumer;

  private ReverseSourceMap(SourceMapConsumerV3 consumer) {
    this.consumer = consumer;
  }

  /**
   * Reads a source map from disk and parses it into an in-memory representation.
   * If it can't be loaded, logs a warning and returns an empty source map.
   */
  static ReverseSourceMap load(TreeLogger logger, File sourceMapFile) {
    SourceMapConsumerV3 consumer = new SourceMapConsumerV3();
    String unparsed = Util.readFileAsString(sourceMapFile);
    try {
      consumer.parse(unparsed);
      return new ReverseSourceMap(consumer);
    } catch (SourceMapParseException e) {
      logger.log(TreeLogger.WARN, "can't parse source map", e);
      return new ReverseSourceMap(null);
    }
  }

  /**
   * Returns true if the given line in a Java file has any corresponding JavaScript in
   * the GWT compiler's output. (The source file's path is relative to the source root directory
   * where the GWT compiler found it.)
   */
  boolean appearsInJavaScript(String path, int lineNumber) {
    // TODO: getReverseMapping() seems to be off by one (lines numbered from zero). Why?
    return consumer != null && !consumer.getReverseMapping(path, lineNumber - 1, -1).isEmpty();
  }
}
TOP

Related Classes of com.google.gwt.dev.codeserver.ReverseSourceMap

TOP
Copyright © 2018 www.massapi.com. 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.