[JAVA-13854] Half list moved (#12598)
* [JAVA-13854] added parent module * [JAVA-13854] moved apache-tapestry(submodule) to web-modules(parent) * [JAVA-13854] moved bootique(submodule) to web-modules(parent) * [JAVA-13854] moved dropwizard(submodule) to web-modules(parent) * [JAVA-13854] moved blade(submodule) to web-modules(parent) * [JAVA-13854] moved java-lite(submodule) to web-modules(parent) * [JAVA-13854] moved jooby(submodule) to web-modules(parent) * [JAVA-13854] moved linkrest(submodule) to web-modules(parent) * [JAVA-13854] moved ninja(submodule) to web-modules(parent) * [JAVA-13854] moved ratpack(submodule) to web-modules(parent) * [JAVA-13854] moved resteasy(submodule) to web-modules(parent) * [JAVA-13854] moved restx(submodule) to web-modules(parent) * [JAVA-13854] moved spark-java(submodule) to web-modules(parent) * [JAVA-13854] moved vraptor(submodule) to web-modules(parent) * [JAVA-13854] delete modules that were moved * [JAVA-13854] * [JAVA-13854] * [JAVA-13854] delete ninja submodule + moved raml(submodule) to web-modules(parent) * [JAVA-13854] moved gwt(submodule) to web-modules(parent) * [JAVA-13854] moved jakarta-ee(submodule) to web-modules(parent) * [JAVA-13854] moved javax-servlets(submodule) to web-modules(parent) * [JAVA-13854] moved javax-servlets-2(submodule) to web-modules(parent) * [JAVA-13854] moved jee-7(submodule) to web-modules(parent) * [JAVA-13854] moved play-framework(not a module) to web-modules * [JAVA-13854] fix failing test * [JAVA-13854] moved struts-2(submodule) to web-modules(parent) * [JAVA-13854] moved wicket(submodule) to web-modules(parent) * [JAVA-13854] deleted modules that were moved to web-modules * JAVA-13854 Removed moved modules from the main pom.xml Co-authored-by: panagiotiskakos <panagiotis.kakos@libra-is.com> Co-authored-by: Dhawal Kapil <dhawalkapil@gmail.com>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package com.baeldung.blade.sample;
|
||||
|
||||
import com.baeldung.blade.sample.interceptors.BaeldungMiddleware;
|
||||
import com.blade.Blade;
|
||||
import com.blade.event.EventType;
|
||||
import com.blade.mvc.WebContext;
|
||||
import com.blade.mvc.http.Session;
|
||||
|
||||
public class App {
|
||||
|
||||
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(App.class);
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Blade.of()
|
||||
.get("/", ctx -> ctx.render("index.html"))
|
||||
.get("/basic-route-example", ctx -> ctx.text("GET called"))
|
||||
.post("/basic-route-example", ctx -> ctx.text("POST called"))
|
||||
.put("/basic-route-example", ctx -> ctx.text("PUT called"))
|
||||
.delete("/basic-route-example", ctx -> ctx.text("DELETE called"))
|
||||
.addStatics("/custom-static")
|
||||
// .showFileList(true)
|
||||
.enableCors(true)
|
||||
.before("/user/*", ctx -> log.info("[NarrowedHook] Before '/user/*', URL called: " + ctx.uri()))
|
||||
.on(EventType.SERVER_STARTED, e -> {
|
||||
String version = WebContext.blade()
|
||||
.env("app.version")
|
||||
.orElse("N/D");
|
||||
log.info("[Event::serverStarted] Loading 'app.version' from configuration, value: " + version);
|
||||
})
|
||||
.on(EventType.SESSION_CREATED, e -> {
|
||||
Session session = (Session) e.attribute("session");
|
||||
session.attribute("mySessionValue", "Baeldung");
|
||||
})
|
||||
.use(new BaeldungMiddleware())
|
||||
.start(App.class, args);
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package com.baeldung.blade.sample;
|
||||
|
||||
import com.blade.mvc.annotation.GetRoute;
|
||||
import com.blade.mvc.annotation.Path;
|
||||
import com.blade.mvc.http.Request;
|
||||
import com.blade.mvc.http.Response;
|
||||
import com.blade.mvc.http.Session;
|
||||
|
||||
@Path
|
||||
public class AttributesExampleController {
|
||||
|
||||
public final static String REQUEST_VALUE = "Some Request value";
|
||||
public final static String SESSION_VALUE = "1337";
|
||||
public final static String HEADER = "Some Header";
|
||||
|
||||
@GetRoute("/request-attribute-example")
|
||||
public void getRequestAttribute(Request request, Response response) {
|
||||
request.attribute("request-val", REQUEST_VALUE);
|
||||
String requestVal = request.attribute("request-val");
|
||||
response.text(requestVal);
|
||||
}
|
||||
|
||||
@GetRoute("/session-attribute-example")
|
||||
public void getSessionAttribute(Request request, Response response) {
|
||||
Session session = request.session();
|
||||
session.attribute("session-val", SESSION_VALUE);
|
||||
String sessionVal = session.attribute("session-val");
|
||||
response.text(sessionVal);
|
||||
}
|
||||
|
||||
@GetRoute("/header-example")
|
||||
public void getHeader(Request request, Response response) {
|
||||
String headerVal = request.header("a-header", HEADER);
|
||||
response.header("a-header", headerVal);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.baeldung.blade.sample;
|
||||
|
||||
import com.blade.mvc.annotation.Path;
|
||||
import com.blade.mvc.annotation.Route;
|
||||
import com.blade.mvc.http.Response;
|
||||
|
||||
@Path
|
||||
public class LogExampleController {
|
||||
|
||||
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExampleController.class);
|
||||
|
||||
@Route(value = "/test-logs")
|
||||
public void testLogs(Response response) {
|
||||
log.trace("This is a TRACE Message");
|
||||
log.debug("This is a DEBUG Message");
|
||||
log.info("This is an INFO Message");
|
||||
log.warn("This is a WARN Message");
|
||||
log.error("This is an ERROR Message");
|
||||
response.text("Check in ./logs");
|
||||
}
|
||||
|
||||
}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
package com.baeldung.blade.sample;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
|
||||
import com.baeldung.blade.sample.vo.User;
|
||||
import com.blade.mvc.annotation.CookieParam;
|
||||
import com.blade.mvc.annotation.GetRoute;
|
||||
import com.blade.mvc.annotation.HeaderParam;
|
||||
import com.blade.mvc.annotation.JSON;
|
||||
import com.blade.mvc.annotation.MultipartParam;
|
||||
import com.blade.mvc.annotation.Param;
|
||||
import com.blade.mvc.annotation.Path;
|
||||
import com.blade.mvc.annotation.PathParam;
|
||||
import com.blade.mvc.annotation.PostRoute;
|
||||
import com.blade.mvc.http.Response;
|
||||
import com.blade.mvc.multipart.FileItem;
|
||||
import com.blade.mvc.ui.RestResponse;
|
||||
|
||||
@Path
|
||||
public class ParameterInjectionExampleController {
|
||||
|
||||
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ParameterInjectionExampleController.class);
|
||||
|
||||
@GetRoute("/params/form")
|
||||
public void formParam(@Param String name, Response response) {
|
||||
log.info("name: " + name);
|
||||
response.text(name);
|
||||
}
|
||||
|
||||
@GetRoute("/params/path/:uid")
|
||||
public void restfulParam(@PathParam Integer uid, Response response) {
|
||||
log.info("uid: " + uid);
|
||||
response.text(String.valueOf(uid));
|
||||
}
|
||||
|
||||
@PostRoute("/params-file") // DO NOT USE A SLASH WITHIN THE ROUTE OR IT WILL BREAK (?)
|
||||
@JSON
|
||||
public RestResponse<?> fileParam(@MultipartParam FileItem fileItem) throws Exception {
|
||||
try {
|
||||
byte[] fileContent = fileItem.getData();
|
||||
|
||||
log.debug("Saving the uploaded file");
|
||||
java.nio.file.Path tempFile = Files.createTempFile("baeldung_tempfiles", ".tmp");
|
||||
Files.write(tempFile, fileContent, StandardOpenOption.WRITE);
|
||||
|
||||
return RestResponse.ok();
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return RestResponse.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@GetRoute("/params/header")
|
||||
public void headerParam(@HeaderParam String customheader, Response response) {
|
||||
log.info("Custom header: " + customheader);
|
||||
response.text(customheader);
|
||||
}
|
||||
|
||||
@GetRoute("/params/cookie")
|
||||
public void cookieParam(@CookieParam(defaultValue = "default value") String myCookie, Response response) {
|
||||
log.info("myCookie: " + myCookie);
|
||||
response.text(myCookie);
|
||||
}
|
||||
|
||||
@PostRoute("/params/vo")
|
||||
public void voParam(@Param User user, Response response) {
|
||||
log.info("user as voParam: " + user.toString());
|
||||
response.html(user.toString() + "<br/><br/><a href='/'>Back</a>");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.baeldung.blade.sample;
|
||||
|
||||
import com.baeldung.blade.sample.configuration.BaeldungException;
|
||||
import com.blade.mvc.WebContext;
|
||||
import com.blade.mvc.annotation.DeleteRoute;
|
||||
import com.blade.mvc.annotation.GetRoute;
|
||||
import com.blade.mvc.annotation.Path;
|
||||
import com.blade.mvc.annotation.PostRoute;
|
||||
import com.blade.mvc.annotation.PutRoute;
|
||||
import com.blade.mvc.annotation.Route;
|
||||
import com.blade.mvc.http.HttpMethod;
|
||||
import com.blade.mvc.http.Request;
|
||||
import com.blade.mvc.http.Response;
|
||||
|
||||
@Path
|
||||
public class RouteExampleController {
|
||||
|
||||
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(RouteExampleController.class);
|
||||
|
||||
@GetRoute("/route-example")
|
||||
public String get() {
|
||||
return "get.html";
|
||||
}
|
||||
|
||||
@PostRoute("/route-example")
|
||||
public String post() {
|
||||
return "post.html";
|
||||
}
|
||||
|
||||
@PutRoute("/route-example")
|
||||
public String put() {
|
||||
return "put.html";
|
||||
}
|
||||
|
||||
@DeleteRoute("/route-example")
|
||||
public String delete() {
|
||||
return "delete.html";
|
||||
}
|
||||
|
||||
@Route(value = "/another-route-example", method = HttpMethod.GET)
|
||||
public String anotherGet() {
|
||||
return "get.html";
|
||||
}
|
||||
|
||||
@Route(value = "/allmatch-route-example")
|
||||
public String allmatch() {
|
||||
return "allmatch.html";
|
||||
}
|
||||
|
||||
@Route(value = "/triggerInternalServerError")
|
||||
public void triggerInternalServerError() {
|
||||
int x = 1 / 0;
|
||||
}
|
||||
|
||||
@Route(value = "/triggerBaeldungException")
|
||||
public void triggerBaeldungException() throws BaeldungException {
|
||||
throw new BaeldungException("Foobar Exception to threat differently");
|
||||
}
|
||||
|
||||
@Route(value = "/user/foo")
|
||||
public void urlCoveredByNarrowedWebhook(Response response) {
|
||||
response.text("Check out for the WebHook covering '/user/*' in the logs");
|
||||
}
|
||||
|
||||
@GetRoute("/load-configuration-in-a-route")
|
||||
public void loadConfigurationInARoute(Response response) {
|
||||
String authors = WebContext.blade()
|
||||
.env("app.authors", "Unknown authors");
|
||||
log.info("[/load-configuration-in-a-route] Loading 'app.authors' from configuration, value: " + authors);
|
||||
response.render("index.html");
|
||||
}
|
||||
|
||||
@GetRoute("/template-output-test")
|
||||
public void templateOutputTest(Request request, Response response) {
|
||||
request.attribute("name", "Blade");
|
||||
response.render("template-output-test.html");
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package com.baeldung.blade.sample.configuration;
|
||||
|
||||
public class BaeldungException extends RuntimeException {
|
||||
|
||||
public BaeldungException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package com.baeldung.blade.sample.configuration;
|
||||
|
||||
import com.blade.ioc.annotation.Bean;
|
||||
import com.blade.mvc.WebContext;
|
||||
import com.blade.mvc.handler.DefaultExceptionHandler;
|
||||
|
||||
@Bean
|
||||
public class GlobalExceptionHandler extends DefaultExceptionHandler {
|
||||
|
||||
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(GlobalExceptionHandler.class);
|
||||
|
||||
@Override
|
||||
public void handle(Exception e) {
|
||||
if (e instanceof BaeldungException) {
|
||||
Exception baeldungException = (BaeldungException) e;
|
||||
String msg = baeldungException.getMessage();
|
||||
log.error("[GlobalExceptionHandler] Intercepted an exception to threat with additional logic. Error message: " + msg);
|
||||
WebContext.response()
|
||||
.render("index.html");
|
||||
|
||||
} else {
|
||||
super.handle(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.baeldung.blade.sample.configuration;
|
||||
|
||||
import com.blade.Blade;
|
||||
import com.blade.ioc.annotation.Bean;
|
||||
import com.blade.loader.BladeLoader;
|
||||
import com.blade.mvc.WebContext;
|
||||
|
||||
@Bean
|
||||
public class LoadConfig implements BladeLoader {
|
||||
|
||||
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoadConfig.class);
|
||||
|
||||
@Override
|
||||
public void load(Blade blade) {
|
||||
String version = WebContext.blade()
|
||||
.env("app.version")
|
||||
.orElse("N/D");
|
||||
String authors = WebContext.blade()
|
||||
.env("app.authors", "Unknown authors");
|
||||
|
||||
log.info("[LoadConfig] loaded 'app.version' (" + version + ") and 'app.authors' (" + authors + ") in a configuration bean");
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.baeldung.blade.sample.configuration;
|
||||
|
||||
import com.blade.ioc.annotation.Bean;
|
||||
import com.blade.task.annotation.Schedule;
|
||||
|
||||
@Bean
|
||||
public class ScheduleExample {
|
||||
|
||||
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ScheduleExample.class);
|
||||
|
||||
@Schedule(name = "baeldungTask", cron = "0 */1 * * * ?")
|
||||
public void runScheduledTask() {
|
||||
log.info("[ScheduleExample] This is a scheduled Task running once per minute.");
|
||||
}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package com.baeldung.blade.sample.interceptors;
|
||||
|
||||
import com.blade.ioc.annotation.Bean;
|
||||
import com.blade.mvc.RouteContext;
|
||||
import com.blade.mvc.hook.WebHook;
|
||||
|
||||
@Bean
|
||||
public class BaeldungHook implements WebHook {
|
||||
|
||||
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(BaeldungHook.class);
|
||||
|
||||
@Override
|
||||
public boolean before(RouteContext ctx) {
|
||||
log.info("[BaeldungHook] called before Route method");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.baeldung.blade.sample.interceptors;
|
||||
|
||||
import com.blade.mvc.RouteContext;
|
||||
import com.blade.mvc.hook.WebHook;
|
||||
|
||||
public class BaeldungMiddleware implements WebHook {
|
||||
|
||||
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(BaeldungMiddleware.class);
|
||||
|
||||
@Override
|
||||
public boolean before(RouteContext context) {
|
||||
log.info("[BaeldungMiddleware] called before Route method and other WebHooks");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.baeldung.blade.sample.vo;
|
||||
|
||||
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
public class User {
|
||||
@Getter @Setter private String name;
|
||||
@Getter @Setter private String site;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return ReflectionToStringBuilder.toString(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
mvc.statics.show-list=true
|
||||
mvc.view.404=my-404.html
|
||||
mvc.view.500=my-500.html
|
||||
app.version=0.0.1
|
||||
app.authors=Andrea Ligios
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 650 B |
@@ -0,0 +1 @@
|
||||
/* App CSS */
|
||||
@@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
<script src="https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<h1>File Upload and download test</h1>
|
||||
<form id="uploadForm" enctype="multipart/form-data">
|
||||
<input id="file" type="file" name="file" />
|
||||
<button id="upload" type="button">Upload</button>
|
||||
</form>
|
||||
|
||||
<br />
|
||||
<a href="/">Back</a>
|
||||
<script>
|
||||
var data = new FormData();
|
||||
|
||||
$('#upload').click(function() {
|
||||
$.ajax({
|
||||
url : '/params-file',
|
||||
type : 'POST',
|
||||
cache : false,
|
||||
data : new FormData($('#uploadForm')[0]),
|
||||
processData : false,
|
||||
contentType : false
|
||||
}).done(function(res) {
|
||||
console.log(res);
|
||||
if (res.success) {
|
||||
alert('Ok');
|
||||
} else {
|
||||
alert(res.msg || 'Error');
|
||||
}
|
||||
}).fail(function(res) {
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
<script src="https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<h1>User POJO post test</h1>
|
||||
|
||||
|
||||
<form id="uploadForm" action="/params/vo" method="post">
|
||||
<span>Person POJO:</span>
|
||||
<input type="text" name="name" placeholder="name"/>
|
||||
<input type="text" name="site" placeholder="site"/>
|
||||
<button id="upload" type="submit">Send user object</button>
|
||||
</form>
|
||||
|
||||
<br />
|
||||
<a href="/">Back</a>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
ALLMATCH called
|
||||
@@ -0,0 +1 @@
|
||||
DELETE called
|
||||
@@ -0,0 +1 @@
|
||||
GET called
|
||||
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Baeldung Blade App • Written by Andrea Ligios</title>
|
||||
<link href="/static/app.css" rel="stylesheet" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>Baeldung Blade App - Showcase</h1>
|
||||
|
||||
<h3>Manual tests</h3>
|
||||
<p>The following are tests which are not covered by integration tests, but that can be run manually in order to check the functionality, either in the browser or in the logs, depending on the case.</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="/static/file-upload.html">File Upload</a></li>
|
||||
<li><a href="/static/user-post.html">User POJO Post</a></li>
|
||||
<li><a href="/user/foo">Webhook narrowed to the '/user/*' URL</a></li>
|
||||
<li><a href="/load-configuration-in-a-route">Load Configuration in a Route</a></li>
|
||||
<li><a href="/triggerInternalServerError">Trigger internal server error (and test the custom error 500 page)</a></li>
|
||||
<li><a href="/triggerBaeldungException">Trigger BaeldungException (and test the Global Exception Handler)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>Session value created in App.java</h3>
|
||||
<p>mySessionValue = ${mySessionValue}</p>
|
||||
|
||||
|
||||
<script src="/static/app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>404 Not found</title>
|
||||
</head>
|
||||
<body>
|
||||
Custom Error 404 Page
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>500 Internal Server Error</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1> Custom Error 500 Page </h1>
|
||||
<p> The following error occurred: "<strong>${message}</strong>"</p>
|
||||
<pre> ${stackTrace} </pre>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
POST called
|
||||
@@ -0,0 +1 @@
|
||||
PUT called
|
||||
@@ -0,0 +1 @@
|
||||
<h1>Hello, ${name}!</h1>
|
||||
Reference in New Issue
Block a user