BAEL-1277: RESTFul CRUD application with JavaLite (#3359)

* BAEL-1277: RESTFul CRUD application with JavaLite.

* BAEL-1277: RESTFul CRUD application with JavaLite. Adding exception handling.
This commit is contained in:
Magdalena Krause
2018-01-05 16:51:47 -03:00
committed by maibin
parent 749533e14d
commit 1273bb4aee
15 changed files with 315 additions and 0 deletions
@@ -0,0 +1,9 @@
package app.config;
import org.javalite.activeweb.AppContext;
import org.javalite.activeweb.Bootstrap;
public class AppBootstrap extends Bootstrap {
public void init(AppContext context) {
}
}
@@ -0,0 +1,15 @@
package app.config;
import app.controllers.ProductsController;
import org.javalite.activeweb.AbstractControllerConfig;
import org.javalite.activeweb.AppContext;
import org.javalite.activeweb.controller_filters.DBConnectionFilter;
import org.javalite.activeweb.controller_filters.TimingFilter;
public class AppControllerConfig extends AbstractControllerConfig {
@Override
public void init(AppContext appContext) {
addGlobalFilters(new TimingFilter());
add(new DBConnectionFilter()).to(ProductsController.class);
}
}
@@ -0,0 +1,11 @@
package app.config;
import org.javalite.activeweb.AbstractDBConfig;
import org.javalite.activeweb.AppContext;
public class DbConfig extends AbstractDBConfig {
@Override
public void init(AppContext appContext) {
this.configFile("/database.properties");
}
}
@@ -0,0 +1,101 @@
package app.controllers;
import app.models.Product;
import org.codehaus.jackson.map.ObjectMapper;
import org.javalite.activeweb.AppController;
import org.javalite.activeweb.annotations.RESTful;
import java.util.Map;
@RESTful
public class ProductsController extends AppController {
public void index() {
try {
view("products", Product.findAll());
render().contentType("application/json");
} catch (Exception e) {
view("message", "There was an error.", "code", 200);
render("message");
}
}
public void create() {
try {
Map payload = new ObjectMapper().readValue(getRequestString(), Map.class);
Product p = new Product();
p.fromMap(payload);
p.saveIt();
view("message", "Successfully saved product id " + p.get("id"), "code", 200);
render("message");
} catch (Exception e) {
view("message", "There was an error.", "code", 200);
render("message");
}
}
public void update() {
try {
Map payload = new ObjectMapper().readValue(getRequestString(), Map.class);
String id = getId();
Product p = Product.findById(id);
if (p == null) {
view("message", "Product id " + id + " not found.", "code", 200);
render("message");
return;
}
p.fromMap(payload);
p.saveIt();
view("message", "Successfully updated product id " + id, "code", 200);
render("message");
} catch (Exception e) {
view("message", "There was an error.", "code", 200);
render("message");
}
}
public void show() {
try {
String id = getId();
Product p = Product.findById(id);
if (p == null) {
view("message", "Product id " + id + " not found.", "code", 200);
render("message");
return;
}
view("product", p);
render("_product");
} catch (Exception e) {
view("message", "There was an error.", "code", 200);
render("message");
}
}
public void destroy() {
try {
String id = getId();
Product p = Product.findById(id);
if (p == null) {
view("message", "Product id " + id + " not found.", "code", 200);
render("message");
return;
}
p.delete();
view("message", "Successfully deleted product id " + id, "code", 200);
render("message");
} catch (Exception e) {
view("message", "There was an error.", "code", 200);
render("message");
}
}
@Override
protected String getContentType() {
return "application/json";
}
@Override
protected String getLayout() {
return null;
}
}
@@ -0,0 +1,7 @@
package app.models;
import org.javalite.activejdbc.Model;
public class Product extends Model {
}
@@ -0,0 +1,4 @@
development.driver=com.mysql.jdbc.Driver
development.username=user
development.password=password
development.url=jdbc:mysql://localhost/dbname
@@ -0,0 +1 @@
,
@@ -0,0 +1,4 @@
{
"id" : ${product.id},
"name" : "${product.name}"
}
@@ -0,0 +1 @@
[<@render partial="product" collection=products spacer="comma"/>]
@@ -0,0 +1,4 @@
{
"message" : "${message}",
"code" : ${code}
}
+25
View File
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>dispatcher</filter-name>
<filter-class>org.javalite.activeweb.RequestDispatcher</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>css,images,js,ico</param-value>
</init-param>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>dispatcher</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>