annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
1 package jetbrains.buildServer.symbols;
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
2
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
3 import jetbrains.buildServer.agent.BuildProgressLogger;
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
4 import jetbrains.buildServer.util.FileUtil;
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
5 import org.apache.log4j.Logger;
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
6
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
7 import java.io.File;
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
8 import java.util.Collection;
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
9
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
10 /**
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
11 * @author Evgeniy.Koshkin
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
12 */
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
13 public class PdbFilePatcher {
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
14
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
15 private static final Logger LOG = Logger.getLogger(PdbFilePatcher.class);
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
16
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
17 private final PdbStrExe myPdbStrExe = new PdbStrExe();
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
18 private final SrcToolExe mySrcToolExe = new SrcToolExe();
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
19
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
20 private final File myHomeDir;
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
21 private SrcSrvStreamProvider myIndexInputProvider;
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
22
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
23 public PdbFilePatcher(final File homeDir, final SrcSrvStreamProvider indexInputProvider) {
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
24 myHomeDir = homeDir;
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
25 myIndexInputProvider = indexInputProvider;
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
26 }
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
27
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
28 public void patch(File symbolsFile, BuildProgressLogger buildLogger) throws Exception {
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
29 final Collection<File> sourceFiles = mySrcToolExe.getReferencedSourceFiles(symbolsFile);
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
30 if(sourceFiles.isEmpty()){
19
c038e1a8c8a5 fixed srcsrv stream content template - srctool now says that files are indexed
Evgeniy.Koshkin
parents: 18
diff changeset
31 final String message = "No source information found in pdb file " + symbolsFile.getCanonicalPath();
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
32 buildLogger.warning(message);
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
33 LOG.debug(message);
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
34 return;
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
35 }
15
37172df1b16e check written 'srcsrv' stream content
Evgeniy.Koshkin
parents: 12
diff changeset
36 final File tmpFile = FileUtil.createTempFile(myHomeDir, "pdb-", ".patch", false);
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
37 myIndexInputProvider.dumpStreamToFile(tmpFile, sourceFiles);
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
38 myPdbStrExe.doCommand(PdbStrExeCommand.WRITE, symbolsFile, tmpFile, PdbStrExe.SRCSRV_STREAM_NAME);
19
c038e1a8c8a5 fixed srcsrv stream content template - srctool now says that files are indexed
Evgeniy.Koshkin
parents: 18
diff changeset
39 // final File tmpFile1 = FileUtil.createTempFile(myHomeDir, "pdb-", ".patch", false);
c038e1a8c8a5 fixed srcsrv stream content template - srctool now says that files are indexed
Evgeniy.Koshkin
parents: 18
diff changeset
40 // myPdbStrExe.doCommand(PdbStrExeCommand.READ, symbolsFile, tmpFile1, PdbStrExe.SRCSRV_STREAM_NAME);
c038e1a8c8a5 fixed srcsrv stream content template - srctool now says that files are indexed
Evgeniy.Koshkin
parents: 18
diff changeset
41 // if(!FileUtil.checkContentEqual(tmpFile, tmpFile1))
c038e1a8c8a5 fixed srcsrv stream content template - srctool now says that files are indexed
Evgeniy.Koshkin
parents: 18
diff changeset
42 // throw new Exception("'srcsrv' stream content written to pdb differs from initial one");
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
43 }
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
44 }