Mercurial > hg > mercurial
annotate mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialClasspathTemplate.java @ 763:d34bfe6e662d
rename
author | eugene.petrenko@jetbrains.com |
---|---|
date | Tue, 25 Feb 2014 11:59:31 +0100 |
parents | mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialLogTemplate.java@7bf456c8db53 |
children | 75b5b9f0fc6d |
rev | line source |
---|---|
754
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
1 /* |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
2 * Copyright 2000-2014 JetBrains s.r.o. |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
3 * |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
4 * Licensed under the Apache License, Version 2.0 (the "License"); |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
5 * you may not use this file except in compliance with the License. |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
6 * You may obtain a copy of the License at |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
7 * |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
8 * http://www.apache.org/licenses/LICENSE-2.0 |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
9 * |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
10 * Unless required by applicable law or agreed to in writing, software |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
11 * distributed under the License is distributed on an "AS IS" BASIS, |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
13 * See the License for the specific language governing permissions and |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
14 * limitations under the License. |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
15 */ |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
16 |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
17 package jetbrains.buildServer.buildTriggers.vcs.mercurial; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
18 |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
19 import jetbrains.buildServer.util.FileUtil; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
20 import jetbrains.buildServer.vcs.VcsException; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
21 import org.jetbrains.annotations.NotNull; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
22 |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
23 import java.io.File; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
24 import java.io.IOException; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
25 |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
26 import static com.intellij.openapi.util.io.FileUtil.createTempFile; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
27 import static com.intellij.openapi.util.io.FileUtil.delete; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
28 |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
29 /** |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
30 * Created 25.02.14 11:29 |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
31 * |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
32 * @author Eugene Petrenko (eugene.petrenko@jetbrains.com) |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
33 */ |
763 | 34 public class MercurialClasspathTemplate implements MercurialTemplate { |
754
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
35 private final String myResourcePath; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
36 private final String myTmpFileSuffix; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
37 |
763 | 38 public MercurialClasspathTemplate(@NotNull final String resourcePath, |
39 @NotNull final String tmpFileSuffix) throws IOException { | |
754
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
40 myResourcePath = resourcePath; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
41 myTmpFileSuffix = tmpFileSuffix; |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
42 } |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
43 |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
44 @NotNull |
762 | 45 public <T> T withTemplate(@NotNull final WithTemplate<T> action) throws VcsException { |
46 //TODO: we may pack plugin and use jetbrains.buildServer.web.openapi.PluginDescriptor.getPluginRoot() | |
47 //TODO: to get path to existing file | |
48 final File template = copyTemplate(); | |
754
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
49 try { |
762 | 50 return action.action(template); |
51 } finally { | |
52 delete(template); | |
53 } | |
54 } | |
55 | |
56 private File copyTemplate() throws VcsException { | |
57 try { | |
58 final File template = createTempFile("teamcity", myTmpFileSuffix); | |
59 FileUtil.copyResource(getClass(), myResourcePath, template); | |
60 return template; | |
754
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
61 } catch (IOException e) { |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
62 throw new VcsException("Cannot create mercurial log template", e); |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
63 } |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
64 } |
aae33e807ab3
extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff
changeset
|
65 } |