
apply avatar at board, issue
@a380563eecb642f2703f7a96e9c271e9f2d2e44e
--- app/controllers/IssueApp.java
+++ app/controllers/IssueApp.java
... | ... | @@ -135,6 +135,7 @@ |
135 | 135 |
Issue newIssue = issueForm.get(); |
136 | 136 |
newIssue.date = JodaDateUtil.now(); |
137 | 137 |
newIssue.authorId = UserApp.currentUser().id; |
138 |
+ newIssue.authorLoginId = UserApp.currentUser().loginId; |
|
138 | 139 |
newIssue.authorName = UserApp.currentUser().name; |
139 | 140 |
newIssue.project = project; |
140 | 141 |
newIssue.state = State.OPEN; |
... | ... | @@ -184,6 +185,7 @@ |
184 | 185 |
issue.id = id; |
185 | 186 |
issue.date = originalIssue.date; |
186 | 187 |
issue.authorId = originalIssue.authorId; |
188 |
+ issue.authorLoginId = originalIssue.authorLoginId; |
|
187 | 189 |
issue.authorName = originalIssue.authorName; |
188 | 190 |
issue.project = originalIssue.project; |
189 | 191 |
if (issue.assignee.user.id != null) { |
... | ... | @@ -227,6 +229,7 @@ |
227 | 229 |
IssueComment comment = commentForm.get(); |
228 | 230 |
comment.issue = Issue.findById(issueId); |
229 | 231 |
comment.authorId = UserApp.currentUser().id; |
232 |
+ comment.authorLoginId = UserApp.currentUser().loginId; |
|
230 | 233 |
comment.authorName = UserApp.currentUser().name; |
231 | 234 |
Long commentId = IssueComment.create(comment); |
232 | 235 |
Issue.updateNumOfComments(issueId); |
--- app/controllers/UserApp.java
+++ app/controllers/UserApp.java
... | ... | @@ -100,7 +100,7 @@ |
100 | 100 |
} |
101 | 101 |
|
102 | 102 |
flash(Constants.WARNING, "user.login.failed"); |
103 |
- return redirect(routes.UserApp.login()); |
|
103 |
+ return redirect(routes.UserApp.loginForm()); |
|
104 | 104 |
} |
105 | 105 |
|
106 | 106 |
public static User authenticateWithHashedPassword(String loginId, String password) { |
--- app/models/Issue.java
+++ app/models/Issue.java
... | ... | @@ -93,16 +93,16 @@ |
93 | 93 |
return JodaDateUtil.ago(this.date); |
94 | 94 |
} |
95 | 95 |
|
96 |
- public String getAuthorName() { |
|
97 |
- if (authorName == null) { |
|
98 |
- if (authorId == null) |
|
99 |
- return null; |
|
100 |
- else |
|
101 |
- return User.find.byId(this.authorId).name; |
|
102 |
- } else { |
|
103 |
- return authorName; |
|
104 |
- } |
|
105 |
- } |
|
96 |
+// public String getAuthorName() { |
|
97 |
+// if (authorName == null) { |
|
98 |
+// if (authorId == null) |
|
99 |
+// return null; |
|
100 |
+// else |
|
101 |
+// return User.find.byId(this.authorId).name; |
|
102 |
+// } else { |
|
103 |
+// return authorName; |
|
104 |
+// } |
|
105 |
+// } |
|
106 | 106 |
|
107 | 107 |
/** |
108 | 108 |
* issueList, issue view에서 assignee의 이름을 출력해준다. 아래의 getAssigneeName과 합쳐질 수 |
--- app/models/IssueComment.java
+++ app/models/IssueComment.java
... | ... | @@ -26,6 +26,7 @@ |
26 | 26 |
|
27 | 27 |
public Date date; |
28 | 28 |
public Long authorId; |
29 |
+ public String authorLoginId; |
|
29 | 30 |
public String authorName; |
30 | 31 |
public String filePath; |
31 | 32 |
|
--- app/views/board/post.scala.html
+++ app/views/board/post.scala.html
... | ... | @@ -14,7 +14,8 @@ |
14 | 14 |
</div> |
15 | 15 |
<div class="board-body"> |
16 | 16 |
<div class="author-info"> |
17 |
- <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="pull-left img-rounded"><img src="/assets/images/default-avatar-34.png" class="media-object" width="32" height="32" alt="avatar"></a> |
|
17 |
+ <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="pull-left img-rounded"> |
|
18 |
+ <img class="user-picture" src="@User.findByLoginId(post.authorLoginId).avatarUrl" width="34" height="34" alt="@post.authorName"></a> |
|
18 | 19 |
<div class="media-body"> |
19 | 20 |
<p> |
20 | 21 |
<a href="@routes.UserApp.userInfo(post.authorLoginId)"><strong>@post.authorName</strong></a> <!--<span class="name">(Loren Brichter)</span>--> |
... | ... | @@ -37,7 +38,8 @@ |
37 | 38 |
<ul class="comments"> |
38 | 39 |
@for(comment <-post.comments){ |
39 | 40 |
<li class="comment"> |
40 |
- <a href="@routes.UserApp.userInfo(comment.authorLoginId)" class="pull-left img-rounded"><img src="/assets/images/default-avatar-34.png" width="32" height="32" class="media-object" alt="avatar"></a> |
|
41 |
+ <a href="@routes.UserApp.userInfo(comment.authorLoginId)" class="pull-left img-rounded"> |
|
42 |
+ <img class="user-picture" src="@User.findByLoginId(comment.authorLoginId).avatarUrl" width="34" height="34" alt="@comment.authorName"> |
|
41 | 43 |
<div class="media-body"> |
42 | 44 |
@roleCheck(session.get("userId"), project.id, Resource.BOARD_COMMENT, Operation.DELETE, comment.id){ |
43 | 45 |
<a class="pull-right close" href="@routes.BoardApp.deleteComment(project.owner, project.name, post.id, comment.id)">×</a> |
--- app/views/board/postList.scala.html
+++ app/views/board/postList.scala.html
... | ... | @@ -59,14 +59,14 @@ |
59 | 59 |
<div class="attach-wrap"></div> |
60 | 60 |
<div class="contents"> |
61 | 61 |
<p class="title"><a href="@routes.BoardApp.post(project.owner, project.name, post.id)">@post.title</a></p> |
62 |
- <p class="infos nm">by <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="author">@post.authorName</a> <span class="date">@utils.TemplateHelper.agoString(post.ago())</span></p> |
|
62 |
+ <p class="infos nm">by <a href="@routes.UserApp.userInfo(post.authorLoginId)" class="author">@post.authorLoginId</a> <span class="date">@utils.TemplateHelper.agoString(post.ago())</span></p> |
|
63 | 63 |
</div> |
64 | 64 |
<div class="right-panel"> |
65 | 65 |
<div class="comment-wrap"> |
66 | 66 |
<i class="ico ico-comment-bubble"></i><span class="num">@post.commentCount</span> |
67 | 67 |
</div> |
68 | 68 |
<a href="@routes.UserApp.userInfo(post.authorLoginId)" class="author-avatar img-rounded pull-right"> |
69 |
- <img class="user-picture" src="@User.findByLoginId(session.get("loginId")).avatarUrl" width="34" height="34" alt="@post.authorName"> |
|
69 |
+ <img class="user-picture" src="@User.findByLoginId(post.authorLoginId).avatarUrl" width="34" height="34" alt="@post.authorName"> |
|
70 | 70 |
</div> |
71 | 71 |
</li> |
72 | 72 |
} |
--- app/views/issue/issue.scala.html
+++ app/views/issue/issue.scala.html
... | ... | @@ -32,7 +32,7 @@ |
32 | 32 |
|
33 | 33 |
<hgroup class="row-fluid"> |
34 | 34 |
<div class="span1"> |
35 |
- <img class="user-picture" src="@urlToPicture(User.find.byId(issue.authorId).email, 34)" /> |
|
35 |
+ <img class="user-picture" src="@User.findByLoginId(issue.authorLoginId).avatarUrl" /> |
|
36 | 36 |
</div> |
37 | 37 |
<div class="info"> |
38 | 38 |
<p> |
... | ... | @@ -42,7 +42,8 @@ |
42 | 42 |
<span class="badge badge-info">@Messages(issue.state.state)</span> |
43 | 43 |
</span> |
44 | 44 |
</p> |
45 |
- <p class="author">by <a href="@routes.IssueApp.newIssueForm(project.owner, project.name)">@Option(issue.getAuthorName).orElse(Option(Messages("issue.noAuthor"))).get</a> @agoString(issue.ago)</p> |
|
45 |
+ <p class="author">by <a href="@routes.IssueApp.newIssueForm(project.owner, project.name)"> |
|
46 |
+ @Option(issue.authorLoginId).orElse(Option(Messages("issue.noAuthor"))).get</a> @agoString(issue.ago)</p> |
|
46 | 47 |
</div> |
47 | 48 |
</hgroup> |
48 | 49 |
|
... | ... | @@ -78,7 +79,8 @@ |
78 | 79 |
<div class="comments"> |
79 | 80 |
@for(comment <- issue.comments){ |
80 | 81 |
<div class="comment row-fluid"> |
81 |
- <div class="span1"><img class="user-picture" src="@urlToPicture(User.find.byId(comment.authorId).email, 34)" /></div> |
|
82 |
+ <div class="span1"> |
|
83 |
+ <img class="user-picture" src="@User.findByLoginId(comment.authorLoginId).avatarUrl" width="34" height="34" alt="@comment.authorName"/></div> |
|
82 | 84 |
<div class="span11"> |
83 | 85 |
<div> |
84 | 86 |
<span class="author">@comment.authorName</span> |
--- app/views/issue/issueList.scala.html
+++ app/views/issue/issueList.scala.html
... | ... | @@ -113,7 +113,7 @@ |
113 | 113 |
<td class="attachmend attached">@if(Attachment.findByContainer(Resource.ISSUE_POST, issue.id).size > 0){<span class="icon-file"/>}</td> |
114 | 114 |
<td class="info"> |
115 | 115 |
<p><a href="@routes.IssueApp.issue(project.owner, project.name, issue.id)">@issue.title</a></p> |
116 |
- <p class="author">by <a href="@routes.UserApp.userInfo(issue.authorLoginId)">@Option(issue.getAuthorName).orElse(Option(Messages("issue.noAuthor"))).get</a> @agoString(issue.ago)</p> |
|
116 |
+ <p class="author">by <a href="@routes.UserApp.userInfo(issue.authorLoginId)">@Option(issue.authorLoginId).orElse(Option(Messages("issue.noAuthor"))).get</a> @agoString(issue.ago)</p> |
|
117 | 117 |
</td> |
118 | 118 |
<td class="state @issue.state.toString.toLowerCase">@Messages(issue.state.state)</td> |
119 | 119 |
<td class="comments"> |
... | ... | @@ -121,7 +121,8 @@ |
121 | 121 |
<span class="num">@issue.numOfComments</span> |
122 | 122 |
</td> |
123 | 123 |
<td class="assignee"> |
124 |
- <a href="#"><img class="user-picture" src="@urlToPicture(User.find.byId(issue.authorId).email, 34)"></a> |
|
124 |
+ <a href="#"> |
|
125 |
+ <img class="user-picture" src="@User.findByLoginId(issue.authorLoginId).avatarUrl" width="34" height="34" alt="@issue.authorName"></a> |
|
125 | 126 |
</td> |
126 | 127 |
|
127 | 128 |
</tr> |
--- app/views/project/projectHome.scala.html
+++ app/views/project/projectHome.scala.html
... | ... | @@ -46,7 +46,8 @@ |
46 | 46 |
<ul class="project-members"> |
47 | 47 |
@for(member <- User.findUsersByProject(project.id)){ |
48 | 48 |
<li class="member"> |
49 |
- <a href="/uname" class="user-thumb"><img src="/assets/images/default-avatar-34.png" alt="uname"></a> |
|
49 |
+ <a href="/uname" class="user-thumb"> |
|
50 |
+ <img src="@member.avatarUrl" alt="uname"></a> |
|
50 | 51 |
<a href="@routes.UserApp.userInfo(member.loginId)"><strong>@member.loginId</strong></a> |
51 | 52 |
</li> |
52 | 53 |
} |
--- conf/initial-data.yml
+++ conf/initial-data.yml
... | ... | @@ -94,169 +94,188 @@ |
94 | 94 |
- !!models.Comment |
95 | 95 |
contents: 게시판이 너무 기대됩니다. 많은 글이 필요합니다. |
96 | 96 |
authorId: 2 |
97 |
- authorName: hobi |
|
97 |
+ authorLoginId: hobi |
|
98 |
+ authorName: hobi |
|
98 | 99 |
post: !!models.Post |
99 | 100 |
id: 1 |
100 | 101 |
# Issues |
101 | 102 |
issues: |
102 | 103 |
- !!models.Issue |
103 |
- authorId: 2 |
|
104 |
+ authorId: 2 |
|
105 |
+ authorLoginId: hobi |
|
104 | 106 |
title: 불필요한 로그 출력 코드 제거 |
105 | 107 |
body: 내용 불필요한~ |
106 |
- state: OPEN |
|
108 |
+ state: OPEN |
|
107 | 109 |
milestoneId: 1 |
108 | 110 |
date: 2012-11-01 08:00:00 |
109 | 111 |
project: !!models.Project |
110 | 112 |
id: 1 |
111 | 113 |
- !!models.Issue |
112 |
- authorId: 3 |
|
114 |
+ authorId: 3 |
|
115 |
+ authorLoginId: k16wire |
|
113 | 116 |
title: 다운로드는 익명 댓글에도 사용자명에 링크가 걸림 |
114 | 117 |
body: 내용 다운로드는 익명 댓글에도 사용자명에 링크가 걸림 |
115 |
- state: OPEN |
|
118 |
+ state: OPEN |
|
116 | 119 |
milestoneId: 2 |
117 |
- date: 2012-11-02 08:00:00 |
|
120 |
+ date: 2012-11-02 08:00:00 |
|
118 | 121 |
project: !!models.Project |
119 | 122 |
id: 1 |
120 | 123 |
- !!models.Issue |
121 |
- authorId: 4 |
|
124 |
+ authorId: 4 |
|
125 |
+ authorLoginId: doortts |
|
122 | 126 |
title: gittracker.php의 메모리 제한 에러 |
123 | 127 |
body: 내용 gittracker.php의 메모리 제한 에러 |
124 |
- state: CLOSED |
|
128 |
+ state: CLOSED |
|
125 | 129 |
milestoneId: 2 |
126 |
- date: 2012-11-03 08:00:00 |
|
130 |
+ date: 2012-11-03 08:00:00 |
|
127 | 131 |
project: !!models.Project |
128 | 132 |
id: 1 |
129 | 133 |
numOfComments: 1 |
130 | 134 |
- !!models.Issue |
131 |
- authorId: 4 |
|
135 |
+ authorId: 4 |
|
136 |
+ authorLoginId: doortts |
|
132 | 137 |
title: git/hg 코드 브라우저에 i18n이 적용되지 않음 |
133 | 138 |
body: 내용 git/hg 코드 브라우저에 i18n이 적용되지 않음 |
134 |
- state: CLOSED |
|
139 |
+ state: CLOSED |
|
135 | 140 |
milestoneId: 2 |
136 |
- date: 2012-11-04 08:00:00 |
|
141 |
+ date: 2012-11-04 08:00:00 |
|
137 | 142 |
project: !!models.Project |
138 | 143 |
id: 1 |
139 | 144 |
- !!models.Issue |
140 |
- authorId: 4 |
|
145 |
+ authorId: 4 |
|
146 |
+ authorLoginId: doortts |
|
141 | 147 |
title: CUBRID 설치 문제 |
142 | 148 |
body: IOS는 설치 못하나요? |
143 |
- state: OPEN |
|
149 |
+ state: OPEN |
|
144 | 150 |
milestoneId: 0 |
145 |
- date: 2012-11-05 08:00:00 |
|
151 |
+ date: 2012-11-05 08:00:00 |
|
146 | 152 |
project: !!models.Project |
147 | 153 |
id: 3 |
148 | 154 |
- !!models.Issue |
149 |
- authorId: 4 |
|
155 |
+ authorId: 4 |
|
156 |
+ authorLoginId: doortts |
|
150 | 157 |
title: 메모리 누수 현상 |
151 | 158 |
body: 메모리가 너무 누수가 되는듯. |
152 |
- state: CLOSED |
|
159 |
+ state: CLOSED |
|
153 | 160 |
milestoneId: 6 |
154 |
- date: 2012-11-06 08:00:00 |
|
161 |
+ date: 2012-11-06 08:00:00 |
|
155 | 162 |
project: !!models.Project |
156 | 163 |
id: 3 |
157 | 164 |
- !!models.Issue |
158 |
- authorId: 4 |
|
165 |
+ authorId: 4 |
|
166 |
+ authorLoginId: doortts |
|
159 | 167 |
title: Client application for Mac. |
160 | 168 |
body: Please make it. |
161 |
- state: OPEN |
|
169 |
+ state: OPEN |
|
162 | 170 |
milestoneId: 5 |
163 |
- date: 2012-11-07 08:00:00 |
|
171 |
+ date: 2012-11-07 08:00:00 |
|
164 | 172 |
project: !!models.Project |
165 | 173 |
id: 3 |
166 | 174 |
- !!models.Issue |
167 |
- authorId: 4 |
|
175 |
+ authorId: 4 |
|
176 |
+ authorLoginId: doortts |
|
168 | 177 |
title: CPU 무한 점유울 문제. |
169 | 178 |
body: CPU를 무한사용 중이에요. |
170 |
- state: CLOSED |
|
179 |
+ state: CLOSED |
|
171 | 180 |
milestoneId: 5 |
172 | 181 |
date: 2012-11-08 08:00:00 |
173 | 182 |
project: !!models.Project |
174 | 183 |
id: 3 |
175 | 184 |
- !!models.Issue |
176 |
- authorId: 1 |
|
185 |
+ authorId: 1 |
|
186 |
+ authorLoginId: admin |
|
177 | 187 |
title: Less chained imports causes compile error |
178 | 188 |
body: When using Play, when I chain less files such as a.less imports b.less which in turn imports c.less |
179 |
- state: CLOSED |
|
189 |
+ state: CLOSED |
|
180 | 190 |
milestoneId: 1 |
181 | 191 |
date: 2012-11-09 08:00:00 |
182 | 192 |
project: !!models.Project |
183 | 193 |
id: 1 |
184 | 194 |
- !!models.Issue |
185 |
- authorId: 1 |
|
195 |
+ authorId: 1 |
|
196 |
+ authorLoginId: admin |
|
186 | 197 |
title: Weird TypeDoesNotMatch exception in RC-3 and final |
187 | 198 |
body: The following code works as expected in RC1-Snapshot, but breaks with an TypeDoesNotMatch exception in RC-3 and 2.0 final. |
188 |
- state: CLOSED |
|
199 |
+ state: CLOSED |
|
189 | 200 |
milestoneId: 1 |
190 |
- date: 2012-11-10 08:00:00 |
|
201 |
+ date: 2012-11-10 08:00:00 |
|
191 | 202 |
project: !!models.Project |
192 | 203 |
id: 1 |
193 | 204 |
- !!models.Issue |
194 |
- authorId: 1 |
|
205 |
+ authorId: 1 |
|
206 |
+ authorLoginId: admin |
|
195 | 207 |
title: Anorm and PostgreSQL - return value not accessible |
196 | 208 |
body: PostgreSQL allows you to insert a row and obtain the id of the new row in one query |
197 |
- state: OPEN |
|
209 |
+ state: OPEN |
|
198 | 210 |
milestoneId: 1 |
199 |
- date: 2012-11-11 08:00:00 |
|
211 |
+ date: 2012-11-11 08:00:00 |
|
200 | 212 |
project: !!models.Project |
201 | 213 |
id: 1 |
202 | 214 |
- !!models.Issue |
203 |
- authorId: 1 |
|
215 |
+ authorId: 1 |
|
216 |
+ authorLoginId: admin |
|
204 | 217 |
title: Update sbt-idea to 1.1.0 |
205 | 218 |
body: Create sbt project definition module, if exists, for each subproject (pull 128) |
206 |
- state: CLOSED |
|
219 |
+ state: CLOSED |
|
207 | 220 |
milestoneId: 3 |
208 |
- date: 2012-11-12 08:00:00 |
|
221 |
+ date: 2012-11-12 08:00:00 |
|
209 | 222 |
project: !!models.Project |
210 | 223 |
id: 2 |
211 | 224 |
- !!models.Issue |
212 |
- authorId: 1 |
|
225 |
+ authorId: 1 |
|
226 |
+ authorLoginId: admin |
|
213 | 227 |
title: Support Tuple 22, not just Tuple 18 in api/data/Forms.scala |
214 | 228 |
body: While creating some complex forms, Eclipse started hanging for some unknown reason. |
215 |
- state: CLOSED |
|
229 |
+ state: CLOSED |
|
216 | 230 |
milestoneId: 3 |
217 |
- date: 2012-11-13 08:00:00 |
|
231 |
+ date: 2012-11-13 08:00:00 |
|
218 | 232 |
project: !!models.Project |
219 | 233 |
id: 2 |
220 | 234 |
- !!models.Issue |
221 |
- authorId: 1 |
|
235 |
+ authorId: 1 |
|
236 |
+ authorLoginId: admin |
|
222 | 237 |
title: Support Tuple 22, not just Tuple 18 in api/data/Forms.scala |
223 | 238 |
body: While creating some complex forms, Eclipse started hanging for some unknown reason. |
224 |
- state: OPEN |
|
239 |
+ state: OPEN |
|
225 | 240 |
milestoneId: 4 |
226 |
- date: 2012-11-14 08:00:00 |
|
241 |
+ date: 2012-11-14 08:00:00 |
|
227 | 242 |
project: !!models.Project |
228 | 243 |
id: 2 |
229 | 244 |
- !!models.Issue |
230 |
- authorId: 1 |
|
245 |
+ authorId: 1 |
|
246 |
+ authorLoginId: admin |
|
231 | 247 |
title: Cookie Expires date |
232 | 248 |
body: With Play 2.0.2, when creating a cookie with response().setCookie, HTTP output is like |
233 |
- state: OPEN |
|
249 |
+ state: OPEN |
|
234 | 250 |
milestoneId: 4 |
235 |
- date: 2012-11-15 08:00:00 |
|
251 |
+ date: 2012-11-15 08:00:00 |
|
236 | 252 |
project: !!models.Project |
237 | 253 |
id: 2 |
238 | 254 |
- !!models.Issue |
239 |
- authorId: 1 |
|
255 |
+ authorId: 1 |
|
256 |
+ authorLoginId: admin |
|
240 | 257 |
title: require is not work in windows (Closure Compiler) |
241 | 258 |
body: Test on Play2.1-Snapshot |
242 |
- state: OPEN |
|
259 |
+ state: OPEN |
|
243 | 260 |
milestoneId: 4 |
244 |
- date: 2012-11-15 08:00:00 |
|
261 |
+ date: 2012-11-15 08:00:00 |
|
245 | 262 |
project: !!models.Project |
246 | 263 |
id: 2 |
247 | 264 |
- !!models.Issue |
248 |
- authorId: 2 |
|
265 |
+ authorId: 2 |
|
266 |
+ authorLoginId: hobi |
|
249 | 267 |
title: Remember me is not working |
250 | 268 |
body: Test on Play2.1-Snapshot |
251 |
- state: OPEN |
|
269 |
+ state: OPEN |
|
252 | 270 |
milestoneId: 4 |
253 |
- date: 2012-11-16 08:00:00 |
|
271 |
+ date: 2012-11-16 08:00:00 |
|
254 | 272 |
project: !!models.Project |
255 | 273 |
id: 3 |
256 | 274 |
issueComments: |
257 | 275 |
- !!models.IssueComment |
258 | 276 |
contents: 코드를 수정했습니다 |
259 | 277 |
authorId: 2 |
278 |
+ authorLoginId: hobi |
|
260 | 279 |
issue: !!models.Issue |
261 | 280 |
id: 3 |
262 | 281 |
# Milestone |
--- test/controllers/UserAppTest.java
+++ test/controllers/UserAppTest.java
... | ... | @@ -27,7 +27,7 @@ |
27 | 27 |
running(fakeApplication(), new Runnable() { |
28 | 28 |
public void run() { |
29 | 29 |
//Given |
30 |
- Map<String,String> data = new HashMap<>(); |
|
30 |
+ Map<String,String> data = new HashMap<String,String>(); |
|
31 | 31 |
data.put("loginId", "nekure"); |
32 | 32 |
|
33 | 33 |
//When |
... | ... | @@ -48,7 +48,7 @@ |
48 | 48 |
running(fakeApplication(), new Runnable() { |
49 | 49 |
public void run() { |
50 | 50 |
//Given |
51 |
- Map<String,String> data = new HashMap<>(); |
|
51 |
+ Map<String,String> data = new HashMap<String,String>(); |
|
52 | 52 |
data.put("loginId", "hobi"); |
53 | 53 |
|
54 | 54 |
//When |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?