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
eugene.petrenko@jetbrains.com
parents: 762
diff changeset
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
eugene.petrenko@jetbrains.com
parents: 762
diff changeset
38 public MercurialClasspathTemplate(@NotNull final String resourcePath,
eugene.petrenko@jetbrains.com
parents: 762
diff changeset
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
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
45 public <T> T withTemplate(@NotNull final WithTemplate<T> action) throws VcsException {
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
46 //TODO: we may pack plugin and use jetbrains.buildServer.web.openapi.PluginDescriptor.getPluginRoot()
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
47 //TODO: to get path to existing file
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
48 final File template = copyTemplate();
754
aae33e807ab3 extract MercurialLogTemplate class
eugene.petrenko@jetbrains.com
parents:
diff changeset
49 try {
762
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
50 return action.action(template);
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
51 } finally {
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
52 delete(template);
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
53 }
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
54 }
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
55
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
56 private File copyTemplate() throws VcsException {
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
57 try {
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
58 final File template = createTempFile("teamcity", myTmpFileSuffix);
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
59 FileUtil.copyResource(getClass(), myResourcePath, template);
7bf456c8db53 fix compilation
eugene.petrenko@jetbrains.com
parents: 761
diff changeset
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 }