annotate mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CommitsAndMountPointsParser.java @ 999:1b1cc811e1b6 Jaipur-2018.1.x

Jaipur-2018.1.x branch created
author pavel.sher
date Thu, 21 Jun 2018 17:37:32 +0200
parents 7bf4d943d5bb
children 10dc26b32c35
rev   line source
732
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
1 /*
976
7bf4d943d5bb Update copyright
pavel.sher
parents: 741
diff changeset
2 * Copyright 2000-2018 JetBrains s.r.o.
732
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
3 *
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
4 * Licensed under the Apache License, Version 2.0 (the "License");
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
5 * you may not use this file except in compliance with the License.
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
6 * You may obtain a copy of the License at
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
7 *
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
8 * http://www.apache.org/licenses/LICENSE-2.0
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
9 *
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
10 * Unless required by applicable law or agreed to in writing, software
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
11 * distributed under the License is distributed on an "AS IS" BASIS,
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
13 * See the License for the specific language governing permissions and
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
14 * limitations under the License.
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
15 */
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 729
diff changeset
16
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
17 package jetbrains.buildServer.buildTriggers.vcs.mercurial.command;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
18
741
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
19 import jetbrains.buildServer.util.FileUtil;
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
20 import org.apache.commons.codec.binary.Base64;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
21 import org.jetbrains.annotations.NotNull;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
22 import org.jetbrains.annotations.Nullable;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
23
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
24 import java.io.*;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
25 import java.text.ParseException;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
26 import java.text.SimpleDateFormat;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
27 import java.util.*;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
28
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
29 /**
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
30 * Created 09.01.14 17:10
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
31 *
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
32 * @author Eugene Petrenko (eugene.petrenko@jetbrains.com)
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
33 */
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
34 public class CommitsAndMountPointsParser {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
35
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
36 public static void parseFileLog(@NotNull final File dump,
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
37 @NotNull final ContentsConsumer consumer) throws IOException {
741
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
38 final BufferedReader st = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(dump)), "utf-8"));
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
39 try {
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
40 final Decoder fileDecoder = new Decoder(5);
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
41
741
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
42 String line;
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
43 while((line = st.readLine()) != null) {
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
44 if (!line.startsWith("$$@@@@ ")) continue;
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
45 final String[] items = line.split(" ");
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
46 if (items.length != 1 + 2) continue;
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
47
741
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
48 final String commitId = items[1];
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
49 final String content = fileDecoder.decode(items[2]);
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
50
741
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
51 consumer.onCommit(commitId, content == null ? "" : content);
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
52 }
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
53 } finally {
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
54 FileUtil.close(st);
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
55 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
56 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
57
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
58 public interface ContentsConsumer {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
59 void onCommit(
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
60 @NotNull String fileNodeId,
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
61 @NotNull String content);
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
62 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
63
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
64 public interface CommitsConsumer {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
65 void onCommit(
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
66 @NotNull String commitNum,
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
67 @NotNull String commitId,
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
68 @NotNull String[] parents,
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
69 @NotNull String branch,
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
70 @NotNull String[] tags,
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
71 @NotNull String author,
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
72 @NotNull String message,
729
785ab04c78da implement new graph construction code
eugene.petrenko@jetbrains.com
parents: 718
diff changeset
73 @NotNull Date timestamp,
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
74 @Nullable String hgsubNodeId,
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
75 @Nullable String hgsubstateNodeId);
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
76 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
77
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
78
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
79 public static void parseCommits(@NotNull final File dump, @NotNull final CommitsConsumer consumer) throws IOException {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
80 final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'Z'HH:mm:ss'T'Z", Locale.ENGLISH);
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
81
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
82 final Decoder branchDecoder = new Decoder(250);
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
83 final Decoder tagsDecoder = new Decoder(250);
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
84 final Decoder authorDecoder = new Decoder(200);
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
85 final Decoder messageDecoder = new Decoder(210);
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
86
741
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
87 final BufferedReader st = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(dump)), "utf-8"));
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
88 try {
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
89 String line;
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
90 while((line = st.readLine()) != null) {
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
91 if (!line.startsWith("$$@@@@ ")) continue;
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
92 final Iterator<String> items = Arrays.asList(line.split(" ")).iterator();
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
93 items.next(); //$$@@@@
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
94
741
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
95 try {
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
96 final String commitNum = items.next();
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
97 final String commitId = items.next();
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
98 final String[] parents = new String[Integer.parseInt(items.next())];
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
99 for (int i = 0; i < parents.length; i++) {
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
100 parents[i] = items.next();
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
101 }
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
102 final String branch = branchDecoder.decode(items.next());
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
103 final String[] tags = new String[Integer.parseInt(items.next())];
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
104 for (int i = 0; i < tags.length; i++) {
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
105 tags[i] = tagsDecoder.decode(items.next());
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
106 }
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
107
741
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
108 final String author = authorDecoder.decode(items.next());
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
109 final String message = messageDecoder.decode(items.next());
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
110 final Date time = parseTime(dateFormat, items.next());
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
111 final String hgsub = textOrNull(items.next());
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
112 final String hgsubstate = textOrNull(items.next());
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
113
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
114 consumer.onCommit(
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
115 commitNum,
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
116 commitId,
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
117 parents,
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
118 branch,
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
119 tags,
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
120 author == null ? "" : author,
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
121 message == null ? "" : message,
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
122 time,
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
123 hgsub,
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
124 hgsubstate);
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
125 } catch (NoSuchElementException e) {
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
126 //NOP
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
127 }
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
128 }
741
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
129 } finally{
fba173530aa6 close openned files. fix temp polution
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
130 FileUtil.close(st);
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
131 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
132 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
133
729
785ab04c78da implement new graph construction code
eugene.petrenko@jetbrains.com
parents: 718
diff changeset
134 @NotNull
785ab04c78da implement new graph construction code
eugene.petrenko@jetbrains.com
parents: 718
diff changeset
135 private static Date parseTime(@NotNull final SimpleDateFormat dateFormat,
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
136 @NotNull final String time) {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
137 try {
729
785ab04c78da implement new graph construction code
eugene.petrenko@jetbrains.com
parents: 718
diff changeset
138 return dateFormat.parse(time);
718
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
139 } catch (ParseException e) {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
140 throw new RuntimeException("Failed to parse datetime: " + time + ". " + e, e);
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
141 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
142 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
143
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
144 @Nullable
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
145 private static String textOrNull(@NotNull final String text) {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
146 if (text.equals("=====")) return null;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
147 return text;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
148 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
149
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
150 private static class Decoder {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
151 private final Map<String, String> myCache;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
152
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
153 public Decoder(final int SZ) {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
154 myCache = new LinkedHashMap<String, String>(SZ, 0.9f) {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
155 @Override
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
156 protected boolean removeEldestEntry(Map.Entry<String, String> eldest) {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
157 return size() > SZ;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
158 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
159 };
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
160 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
161
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
162 public String decode(@NotNull final String base64) throws UnsupportedEncodingException {
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
163 if (textOrNull(base64) == null) return null;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
164
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
165 final String result = myCache.get(base64);
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
166 if (result != null) return result;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
167
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
168 final String value = new String(Base64.decodeBase64(base64), "utf-8");
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
169 //noinspection RedundantStringConstructorCall
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
170 myCache.put(new String(base64), value);
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
171 return value;
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
172 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
173 }
0f3c5ac38fc3 commits and mount points command completed
eugene.petrenko@jetbrains.com
parents:
diff changeset
174 }