Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
simplewebapp
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
td1518
simplewebapp
Commits
bf70c0e5
Commit
bf70c0e5
authored
Jan 16, 2020
by
td1518
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'extended-java' into 'master'
Markdown downloads See merge request
!1
parents
5a1cfe19
9ae92636
Pipeline
#112443
passed with stages
in 41 seconds
Changes
6
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
92 additions
and
6 deletions
+92
-6
pom.xml
pom.xml
+7
-0
src/main/java/ic/doc/WebServer.java
src/main/java/ic/doc/WebServer.java
+11
-4
src/main/java/ic/doc/web/IndexPage.java
src/main/java/ic/doc/web/IndexPage.java
+3
-0
src/main/java/ic/doc/web/MarkdownResultPage.java
src/main/java/ic/doc/web/MarkdownResultPage.java
+33
-0
src/test/java/ic/doc/QueryProcessorTest.java
src/test/java/ic/doc/QueryProcessorTest.java
+2
-2
src/test/java/ic/doc/WebServerTest.java
src/test/java/ic/doc/WebServerTest.java
+36
-0
No files found.
pom.xml
View file @
bf70c0e5
...
@@ -7,6 +7,13 @@
...
@@ -7,6 +7,13 @@
<version>
1.0-SNAPSHOT
</version>
<version>
1.0-SNAPSHOT
</version>
<artifactId>
SimpleWebApp
</artifactId>
<artifactId>
SimpleWebApp
</artifactId>
<dependencies>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-all -->
<dependency>
<groupId>
org.mockito
</groupId>
<artifactId>
mockito-all
</artifactId>
<version>
1.9.5
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<dependency>
<groupId>
org.eclipse.jetty
</groupId>
<groupId>
org.eclipse.jetty
</groupId>
<artifactId>
jetty-servlet
</artifactId>
<artifactId>
jetty-servlet
</artifactId>
...
...
src/main/java/ic/doc/WebServer.java
View file @
bf70c0e5
...
@@ -2,6 +2,7 @@ package ic.doc;
...
@@ -2,6 +2,7 @@ package ic.doc;
import
ic.doc.web.HTMLResultPage
;
import
ic.doc.web.HTMLResultPage
;
import
ic.doc.web.IndexPage
;
import
ic.doc.web.IndexPage
;
import
ic.doc.web.MarkdownResultPage
;
import
org.eclipse.jetty.server.Server
;
import
org.eclipse.jetty.server.Server
;
import
org.eclipse.jetty.servlet.ServletHandler
;
import
org.eclipse.jetty.servlet.ServletHandler
;
import
org.eclipse.jetty.servlet.ServletHolder
;
import
org.eclipse.jetty.servlet.ServletHolder
;
...
@@ -23,20 +24,26 @@ public class WebServer {
...
@@ -23,20 +24,26 @@ public class WebServer {
server
.
start
();
server
.
start
();
}
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
new
WebServer
();
}
static
class
Website
extends
HttpServlet
{
static
class
Website
extends
HttpServlet
{
@Override
@Override
protected
void
doGet
(
HttpServletRequest
req
,
HttpServletResponse
resp
)
throws
IOException
{
protected
void
doGet
(
HttpServletRequest
req
,
HttpServletResponse
resp
)
throws
IOException
{
String
query
=
req
.
getParameter
(
"q"
);
String
query
=
req
.
getParameter
(
"q"
);
String
resultFormat
=
req
.
getParameter
(
"format"
);
if
(
query
==
null
)
{
if
(
query
==
null
)
{
new
IndexPage
().
writeTo
(
resp
);
new
IndexPage
().
writeTo
(
resp
);
}
else
if
(
resultFormat
.
toLowerCase
().
equals
(
"markdown"
))
{
new
MarkdownResultPage
(
query
,
new
QueryProcessor
().
process
(
query
)).
writeTo
(
resp
);
}
else
if
(
resultFormat
.
toLowerCase
().
equals
(
"pdf"
))
{
// new PDFResultPage(query, new QueryProcessor().process(query)).writeTo(resp);
}
else
{
}
else
{
//Intentionally redirect to HTML on error to avoid cluttering with files
new
HTMLResultPage
(
query
,
new
QueryProcessor
().
process
(
query
)).
writeTo
(
resp
);
new
HTMLResultPage
(
query
,
new
QueryProcessor
().
process
(
query
)).
writeTo
(
resp
);
}
}
}
}
}
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
new
WebServer
();
}
}
}
src/main/java/ic/doc/web/IndexPage.java
View file @
bf70c0e5
...
@@ -22,6 +22,9 @@ public class IndexPage implements Page {
...
@@ -22,6 +22,9 @@ public class IndexPage implements Page {
"<form>"
+
"<form>"
+
"<input type=\"text\" name=\"q\" />"
+
"<input type=\"text\" name=\"q\" />"
+
"<br><br><input type=\"submit\">"
+
"<br><br><input type=\"submit\">"
+
"<br><input type=\"radio\" checked=\"true\" name=\"format\" value=\"HTML\"/>HTML"
+
"<br><input type=\"radio\" name=\"format\" value=\"Markdown\"/>Markdown"
+
"<br><input type=\"radio\" name=\"format\" value=\"PDF\"/>PDF"
+
"</form>"
+
"</form>"
+
"</p>"
);
"</p>"
);
...
...
src/main/java/ic/doc/web/MarkdownResultPage.java
0 → 100644
View file @
bf70c0e5
package
ic.doc.web
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
public
class
MarkdownResultPage
implements
Page
{
private
final
String
query
;
private
final
String
answer
;
public
MarkdownResultPage
(
String
query
,
String
answer
)
{
this
.
query
=
query
;
this
.
answer
=
answer
;
}
public
void
writeTo
(
HttpServletResponse
resp
)
throws
IOException
{
resp
.
setContentType
(
"text/markdown"
);
resp
.
setHeader
(
"Content-Disposition"
,
"attachment;filename=result.md"
);
PrintWriter
writer
=
resp
.
getWriter
();
// Content
if
(
answer
==
null
||
answer
.
isEmpty
())
{
writer
.
println
(
"# Sorry"
);
writer
.
println
(
"Sorry, we didn't understand: *"
+
query
+
"*"
);
writer
.
println
(
""
);
}
else
{
writer
.
println
(
"# "
+
query
);
writer
.
println
(
answer
);
}
}
}
src/test/java/ic/doc/QueryProcessorTest.java
View file @
bf70c0e5
...
@@ -2,8 +2,8 @@ package ic.doc;
...
@@ -2,8 +2,8 @@ package ic.doc;
import
org.junit.Test
;
import
org.junit.Test
;
import
static
org
.
hamcrest
.
CoreMatchers
.
containsString
;
import
static
org
.
hamcrest
.
CoreMatchers
.
*
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
hamcrest
.
core
.
StringContains
.
containsString
;
import
static
org
.
junit
.
Assert
.
assertThat
;
import
static
org
.
junit
.
Assert
.
assertThat
;
public
class
QueryProcessorTest
{
public
class
QueryProcessorTest
{
...
...
src/test/java/ic/doc/WebServerTest.java
0 → 100644
View file @
bf70c0e5
package
ic.doc
;
import
org.junit.Test
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.PrintWriter
;
import
static
org
.
mockito
.
Mockito
.*;
public
class
WebServerTest
{
@Test
public
void
returnsCorrectFormat
()
throws
Exception
{
HttpServletRequest
mockedReq
=
mock
(
HttpServletRequest
.
class
);
HttpServletResponse
mockedResp
=
mock
(
HttpServletResponse
.
class
);
PrintWriter
mockedWriter
=
mock
(
PrintWriter
.
class
);
when
(
mockedReq
.
getParameter
(
"q"
)).
thenReturn
(
"test search query"
);
when
(
mockedReq
.
getParameter
(
"format"
)).
thenReturn
(
"Markdown"
);
when
(
mockedResp
.
getWriter
()).
thenReturn
(
mockedWriter
);
WebServer
.
Website
testSite
=
new
WebServer
.
Website
();
testSite
.
doGet
(
mockedReq
,
mockedResp
);
verify
(
mockedResp
,
times
(
1
)).
setContentType
(
"text/markdown"
);
verify
(
mockedResp
,
times
(
1
)).
setHeader
(
"Content-Disposition"
,
"attachment;filename=result.md"
);
verify
(
mockedResp
,
times
(
1
)).
getWriter
();
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment