Skip to content

Commit 42448fc

Browse files
author
Eugen
committed
Merge pull request #158 from Doha2012/master
add form validation
2 parents a8d31ab + abd9f11 commit 42448fc

5 files changed

Lines changed: 371 additions & 23 deletions

File tree

core-java/src/test/java/org/baeldung/java/io/JavaReaderToXUnitTest.java

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.io.StringReader;
1010
import java.io.Writer;
1111
import java.nio.charset.Charset;
12+
import java.nio.charset.StandardCharsets;
1213

1314
import org.apache.commons.io.FileUtils;
1415
import org.apache.commons.io.IOUtils;
@@ -17,6 +18,7 @@
1718
import org.slf4j.Logger;
1819
import org.slf4j.LoggerFactory;
1920

21+
import com.google.common.base.Charsets;
2022
import com.google.common.io.CharSink;
2123
import com.google.common.io.CharSource;
2224
import com.google.common.io.CharStreams;
@@ -179,7 +181,45 @@ public void givenUsingGuava_whenConvertingReaderIntoInputStream_thenCorrect() th
179181
public void givenUsingCommonsIO_whenConvertingReaderIntoInputStream() throws IOException {
180182
final Reader initialReader = new StringReader("With Commons IO");
181183

182-
final InputStream targetStream = IOUtils.toInputStream(initialReader.toString());
184+
final InputStream targetStream = IOUtils.toInputStream(IOUtils.toString(initialReader));
185+
186+
initialReader.close();
187+
targetStream.close();
188+
}
189+
190+
// tests - Reader to InputStream with encoding
191+
192+
@Test
193+
public void givenUsingPlainJava_whenConvertingReaderIntoInputStreamWithCharset_thenCorrect() throws IOException {
194+
final Reader initialReader = new StringReader("With Java");
195+
196+
final char[] charBuffer = new char[8 * 1024];
197+
final StringBuilder builder = new StringBuilder();
198+
int numCharsRead;
199+
while ((numCharsRead = initialReader.read(charBuffer, 0, charBuffer.length)) != -1) {
200+
builder.append(charBuffer, 0, numCharsRead);
201+
}
202+
final InputStream targetStream = new ByteArrayInputStream(builder.toString().getBytes(StandardCharsets.UTF_8));
203+
204+
initialReader.close();
205+
targetStream.close();
206+
}
207+
208+
@Test
209+
public void givenUsingGuava_whenConvertingReaderIntoInputStreamWithCharset_thenCorrect() throws IOException {
210+
final Reader initialReader = new StringReader("With Guava");
211+
212+
final InputStream targetStream = new ByteArrayInputStream(CharStreams.toString(initialReader).getBytes(Charsets.UTF_8));
213+
214+
initialReader.close();
215+
targetStream.close();
216+
}
217+
218+
@Test
219+
public void givenUsingCommonsIO_whenConvertingReaderIntoInputStreamWithEncoding() throws IOException {
220+
final Reader initialReader = new StringReader("With Commons IO");
221+
222+
final InputStream targetStream = IOUtils.toInputStream(IOUtils.toString(initialReader), Charsets.UTF_8);
183223

184224
initialReader.close();
185225
targetStream.close();

spring-security-oauth/src/main/webapp/WEB-INF/jsp/editPostForm.jsp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<link rel="stylesheet" href="<c:url value="/resources/datetime-picker.css" />">
88
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
99
<script src="<c:url value="/resources/datetime-picker.js" />"></script>
10+
<script src="<c:url value="/resources/validator.js" />"></script>
1011

1112
</head>
1213
<body>
@@ -20,49 +21,49 @@
2021
<span class="icon-bar"></span>
2122
<span class="icon-bar"></span>
2223
</button>
23-
<a class="navbar-brand" href="info">Schedule to Reddit</a>
24+
<a class="navbar-brand" href="<c:url value="/info" />">Schedule to Reddit</a>
2425
</div>
2526

2627
<p class="navbar-text navbar-right">Logged in as <b><c:out value="${username}"/></b>&nbsp;&nbsp;&nbsp;</p>
2728

2829
<!-- Collect the nav links, forms, and other content for toggling -->
2930
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
3031
<ul class="nav navbar-nav">
31-
<li><a href="posts">My Scheduled Posts</a></li>
32-
<li><a href="post">Post to Reddit</a></li>
33-
<li><a href="postSchedule">Schedule Post to Reddit</a></li>
32+
<li><a href="<c:url value="/posts" />">My Scheduled Posts</a></li>
33+
<li><a href="<c:url value="/post" />">Post to Reddit</a></li>
34+
<li><a href="<c:url value="/postSchedule" />">Schedule Post to Reddit</a></li>
3435
</ul>
3536

3637
</div><!-- /.navbar-collapse -->
3738
</div><!-- /.container-fluid -->
3839
</nav>
3940
<div class="container">
4041
<h1>Edit Scheduled Post</h1>
41-
<form action="<c:url value="/updatePost/${post.getId()}" />" method="post">
42+
<form action="<c:url value="/updatePost/${post.getId()}" />" method="post" role="form" data-toggle="validator">
4243
<div class="row">
4344
<input type="hidden" name="id" value="${post.getId()}"/>
4445
<div class="form-group">
4546
<label class="col-sm-3">Title</label>
46-
<span class="col-sm-9"><input name="title" placeholder="title" class="form-control" value="${post.getTitle()}" required/></span>
47+
<span class="col-sm-9"><input name="title" placeholder="title" class="form-control" value="${post.getTitle()}" required data-minlength="3"/></span>
4748
</div>
4849
<br><br>
4950
<div class="form-group">
5051
<label class="col-sm-3">Url</label>
51-
<span class="col-sm-9"><input name="url" placeholder="url" class="form-control" value="${post.getUrl()}" required/></span>
52+
<span class="col-sm-9"><input name="url" type="url" placeholder="url" class="form-control" value="${post.getUrl()}" required data-minlength="3"/></span>
5253
</div>
5354
<br><br>
5455
<div class="form-group">
5556
<label class="col-sm-3">Subreddit</label>
56-
<span class="col-sm-9"><input name="sr" placeholder="Subreddit" class="form-control" value="${post.getSubreddit()}" required/></span>
57+
<span class="col-sm-9"><input name="sr" placeholder="Subreddit" class="form-control" value="${post.getSubreddit()}" required data-minlength="3"/></span>
5758
</div>
5859
<br><br>
5960
<div class="col-sm-3">
60-
<input type="checkbox" name="sendreplies" value="true" <c:if test="${post.isSendReplies()=='true'}"> checked </c:if> /> Send replies to my inbox
61+
<label>Send replies to my inbox</label> &nbsp; <input type="checkbox" name="sendreplies" value="true" <c:if test="${post.isSendReplies()=='true'}"> checked </c:if> />
6162
</div>
6263
<br><br>
6364

6465
<label class="col-sm-3">Submission Date</label>
65-
<span class="col-sm-9"><input type="text" name="date" class="form-control" value="${dateValue}"></span>
66+
<span class="col-sm-9"><input type="text" name="date" class="form-control" value="${dateValue}" readonly></span>
6667
<script type="text/javascript">
6768
$(function(){
6869
$('*[name=date]').appendDtpicker({"inline": true});

spring-security-oauth/src/main/webapp/WEB-INF/jsp/schedulePostForm.jsp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<link rel="stylesheet" href="<c:url value="/resources/datetime-picker.css" />">
88
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
99
<script src="<c:url value="/resources/datetime-picker.js" />"></script>
10+
<script src="<c:url value="/resources/validator.js" />"></script>
1011

1112
</head>
1213
<body>
@@ -38,30 +39,30 @@
3839
</nav>
3940
<div class="container">
4041
<h1>Schedule Post to Reddit</h1>
41-
<form action="schedule" method="post">
42+
<form action="schedule" method="post" role="form" data-toggle="validator">
4243
<div class="row">
4344
<div class="form-group">
4445
<label class="col-sm-3">Title</label>
45-
<span class="col-sm-9"><input name="title" placeholder="title" class="form-control" required/></span>
46+
<span class="col-sm-9"><input name="title" placeholder="title" class="form-control" required data-minlength="3"/></span>
4647
</div>
4748
<br><br>
4849
<div class="form-group">
4950
<label class="col-sm-3">Url</label>
50-
<span class="col-sm-9"><input name="url" placeholder="url" class="form-control" required/></span>
51+
<span class="col-sm-9"><input name="url" type="url" placeholder="url" class="form-control" required data-minlength="3"/></span>
5152
</div>
5253
<br><br>
5354
<div class="form-group">
5455
<label class="col-sm-3">Subreddit</label>
55-
<span class="col-sm-9"><input name="sr" placeholder="Subreddit" class="form-control" required/></span>
56+
<span class="col-sm-9"><input name="sr" placeholder="Subreddit (e.g. kitten)" class="form-control" required data-minlength="3"/></span>
5657
</div>
5758
<br><br>
5859
<div class="col-sm-3">
59-
<input type="checkbox" name="sendreplies" value="true"/> Send replies to my inbox
60+
<label>Send replies to my inbox</label> &nbsp;<input type="checkbox" name="sendreplies" value="true"/>
6061
</div>
6162
<br><br>
6263

6364
<label class="col-sm-3">Submission Date</label>
64-
<span class="col-sm-9"><input type="text" name="date" class="form-control"></span>
65+
<span class="col-sm-9"><input type="text" name="date" class="form-control" readonly></span>
6566
<script type="text/javascript">
6667
$(function(){
6768
$('*[name=date]').appendDtpicker({"inline": true});

spring-security-oauth/src/main/webapp/WEB-INF/jsp/submissionForm.jsp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
<title>Schedule to Reddit</title>
66
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
7+
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
8+
<script src="<c:url value="/resources/validator.js" />"></script>
79

810
</head>
911
<body>
@@ -35,25 +37,25 @@
3537
</nav>
3638
<div class="container">
3739
<h1>Post to Reddit</h1>
38-
<form action="submit" method="post">
40+
<form action="submit" method="post" role="form" data-toggle="validator">
3941
<div class="row">
4042
<div class="form-group">
4143
<label class="col-sm-3">Title</label>
42-
<span class="col-sm-9"><input name="title" placeholder="title" class="form-control" required/></span>
44+
<span class="col-sm-9"><input name="title" placeholder="title" class="form-control" required data-minlength="3"/></span>
4345
</div>
4446
<br><br>
4547
<div class="form-group">
4648
<label class="col-sm-3">Url</label>
47-
<span class="col-sm-9"><input name="url" placeholder="url" class="form-control" required /></span>
49+
<span class="col-sm-9"><input name="url" type="url" placeholder="url" class="form-control" required data-minlength="3"/></span>
4850
</div>
4951
<br><br>
5052
<div class="form-group">
5153
<label class="col-sm-3">Subreddit</label>
52-
<span class="col-sm-9"><input name="sr" placeholder="Subreddit" class="form-control" required/></span>
54+
<span class="col-sm-9"><input name="sr" placeholder="Subreddit (e.g. kitten)" class="form-control" required data-minlength="3"/></span>
5355
</div>
5456
<br><br>
5557
<div class="col-sm-3">
56-
<input type="checkbox" name="sendreplies" value="true"/> Send replies to my inbox
58+
<label>Send replies to my inbox</label> &nbsp;<input type="checkbox" name="sendreplies" value="true"/>
5759
</div>
5860
<br><br>
5961

@@ -68,7 +70,7 @@
6870
<img src="http://www.reddit.com/captcha/${iden}" alt="captcha" width="200"/>
6971
</c:if>
7072
<br><br>
71-
<button type="submit" class="btn btn-primary">Post</button>
73+
<span class="col-sm-3"><button type="submit" class="btn btn-primary">Post</button></span>
7274
</div>
7375
</form>
7476
</div>

0 commit comments

Comments
 (0)