Mercurial > hg > tc-symbol-server
view agent/src/jetbrains/buildServer/symbols/PdbFilePatcher.java @ 20:10cb71666d5e
more fixes in generated srcsrv
author | Evgeniy.Koshkin |
---|---|
date | Fri, 02 Aug 2013 17:58:51 +0400 |
parents | c038e1a8c8a5 |
children | f4e0050e2a2f |
line wrap: on
line source
package jetbrains.buildServer.symbols; import jetbrains.buildServer.agent.BuildProgressLogger; import jetbrains.buildServer.util.FileUtil; import org.apache.log4j.Logger; import java.io.File; import java.util.Collection; /** * @author Evgeniy.Koshkin */ public class PdbFilePatcher { private static final Logger LOG = Logger.getLogger(PdbFilePatcher.class); private final PdbStrExe myPdbStrExe = new PdbStrExe(); private final SrcToolExe mySrcToolExe = new SrcToolExe(); private final File myHomeDir; private SrcSrvStreamProvider myIndexInputProvider; public PdbFilePatcher(final File homeDir, final SrcSrvStreamProvider indexInputProvider) { myHomeDir = homeDir; myIndexInputProvider = indexInputProvider; } public void patch(File symbolsFile, BuildProgressLogger buildLogger) throws Exception { final Collection<File> sourceFiles = mySrcToolExe.getReferencedSourceFiles(symbolsFile); if(sourceFiles.isEmpty()){ final String message = "No source information found in pdb file " + symbolsFile.getCanonicalPath(); buildLogger.warning(message); LOG.debug(message); return; } final File tmpFile = FileUtil.createTempFile(myHomeDir, "pdb-", ".patch", false); myIndexInputProvider.dumpStreamToFile(tmpFile, sourceFiles); myPdbStrExe.doCommand(PdbStrExeCommand.WRITE, symbolsFile, tmpFile, PdbStrExe.SRCSRV_STREAM_NAME); // final File tmpFile1 = FileUtil.createTempFile(myHomeDir, "pdb-", ".patch", false); // myPdbStrExe.doCommand(PdbStrExeCommand.READ, symbolsFile, tmpFile1, PdbStrExe.SRCSRV_STREAM_NAME); // if(!FileUtil.checkContentEqual(tmpFile, tmpFile1)) // throw new Exception("'srcsrv' stream content written to pdb differs from initial one"); } }