Skip to content

Commit

Permalink
Cleaning-up the 'On' and 'Admin' API, moving some parts to 'App'.
Browse files Browse the repository at this point in the history
  • Loading branch information
nmihajlovski committed Aug 13, 2018
1 parent ac161a6 commit 9f6ca31
Show file tree
Hide file tree
Showing 19 changed files with 64 additions and 69 deletions.
Expand Up @@ -53,7 +53,7 @@ public static void main(String[] args) {


/* Wrap every result into a renderPage */ /* Wrap every result into a renderPage */


On.defaults().wrappers((data, next) -> App.defaults().wrappers((data, next) ->
next.invokeAndTransformResult(x -> { next.invokeAndTransformResult(x -> {
return page(x).menu(menu).brand(cfg.get("title")); return page(x).menu(menu).brand(cfg.get("title"));
}) })
Expand Down
Expand Up @@ -20,14 +20,15 @@


package org.rapidoid.docs.httpguiedit; package org.rapidoid.docs.httpguiedit;


import org.rapidoid.setup.App;
import org.rapidoid.setup.On; import org.rapidoid.setup.On;


public class Main { public class Main {


public static void main(String[] args) { public static void main(String[] args) {
/* A wrapper executes before the handler */ /* A wrapper executes before the handler */


On.defaults().wrappers((req, next) -> { App.defaults().wrappers((req, next) -> {
return next.invokeAndTransformResult(result -> "Hey: " + result); return next.invokeAndTransformResult(result -> "Hey: " + result);
}); });


Expand Down
Expand Up @@ -20,14 +20,15 @@


package org.rapidoid.docs.httpguipage; package org.rapidoid.docs.httpguipage;


import org.rapidoid.setup.App;
import org.rapidoid.setup.On; import org.rapidoid.setup.On;


public class Main { public class Main {


public static void main(String[] args) { public static void main(String[] args) {
/* A wrapper executes before the handler */ /* A wrapper executes before the handler */


On.defaults().wrappers((req, next) -> next.invokeAndTransformResult(result -> "Hey: " + result)); App.defaults().wrappers((req, next) -> next.invokeAndTransformResult(result -> "Hey: " + result));


/* and provides transformation for the result */ /* and provides transformation for the result */


Expand Down
Expand Up @@ -20,14 +20,15 @@


package org.rapidoid.docs.httpwrap; package org.rapidoid.docs.httpwrap;


import org.rapidoid.setup.App;
import org.rapidoid.setup.On; import org.rapidoid.setup.On;


public class Main { public class Main {


public static void main(String[] args) { public static void main(String[] args) {
/* A wrapper executes before the handler */ /* A wrapper executes before the handler */


On.defaults().wrappers((req, next) -> next.invokeAndTransformResult(result -> "Hey: " + result)); App.defaults().wrappers((req, next) -> next.invokeAndTransformResult(result -> "Hey: " + result));


/* and provides transformation for the result */ /* and provides transformation for the result */


Expand Down
Expand Up @@ -39,22 +39,22 @@ public class CustomizationTest extends IsolatedIntegrationTest {


@Test @Test
public void testSerializationConfig() { public void testSerializationConfig() {
On.custom().jsonResponseRenderer((req, value, out) -> JSON.prettify(value, out)); App.custom().jsonResponseRenderer((req, value, out) -> JSON.prettify(value, out));


On.get("/").json(() -> U.map("foo", 12, "bar", 345)); On.get("/").json(() -> U.map("foo", 12, "bar", 345));
On.get("/a").json(() -> U.map("foo", 12, "bar", 345)); On.get("/a").json(() -> U.map("foo", 12, "bar", 345));


onlyGet("/"); onlyGet("/");


On.custom().jsonResponseRenderer((req, value, out) -> JSON.stringify(value, out)); App.custom().jsonResponseRenderer((req, value, out) -> JSON.stringify(value, out));


onlyGet("/a"); onlyGet("/a");
} }


@Test @Test
public void testAuthConfig() { public void testAuthConfig() {
On.custom().loginProvider((req, username, password) -> password.equals(username + "!")); App.custom().loginProvider((req, username, password) -> password.equals(username + "!"));
On.custom().rolesProvider((req, username) -> username.equals("root") ? U.set("admin") : U.set()); App.custom().rolesProvider((req, username) -> username.equals("root") ? U.set("admin") : U.set());
// FIXME complete the test // FIXME complete the test
} }


Expand All @@ -75,7 +75,7 @@ Object aa(Num num) {


// customization // customization
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
On.custom().beanParameterFactory((req, type, name, props) -> mapper.convertValue(req.posted(), type)); App.custom().beanParameterFactory((req, type, name, props) -> mapper.convertValue(req.posted(), type));


// after customization // after customization
onlyPost("/aa?id=3", U.map("the-name", "three")); onlyPost("/aa?id=3", U.map("the-name", "three"));
Expand Down
Expand Up @@ -46,7 +46,7 @@ public void testControllerDeregistration() {
onlyGet("/inc?x=5"); onlyGet("/inc?x=5");
notFound("/dec"); notFound("/dec");


On.deregister(ctrl1); App.setup().deregister(ctrl1);
verifyNoRoutes(); verifyNoRoutes();


App.beans(ctrl2); App.beans(ctrl2);
Expand All @@ -55,7 +55,7 @@ public void testControllerDeregistration() {
onlyPost("/dec?x=12"); onlyPost("/dec?x=12");
notFound("/inc"); notFound("/inc");


On.deregister(ctrl2.getClass()); App.setup().deregister(ctrl2.getClass());
verifyNoRoutes(); verifyNoRoutes();


notFound("/inc"); notFound("/inc");
Expand Down Expand Up @@ -83,7 +83,7 @@ public void testControllerReregistration() {
onlyGet("/inc?x=300"); onlyGet("/inc?x=300");


// can deregister with other instance, only the class matters for deregistration, not the instance // can deregister with other instance, only the class matters for deregistration, not the instance
On.deregister(ctrl1("invisible")); App.setup().deregister(ctrl1("invisible"));
verifyNoRoutes(); verifyNoRoutes();


notFound("/inc"); notFound("/inc");
Expand All @@ -99,7 +99,7 @@ public void testLambdaDeregistration() {


getAndPost("/foo?a=12&x=3"); getAndPost("/foo?a=12&x=3");


On.deregister("GET,POST", "/foo"); App.setup().deregister("GET,POST", "/foo");
verifyNoRoutes(); verifyNoRoutes();


notFound("/foo"); notFound("/foo");
Expand Down
Expand Up @@ -35,7 +35,7 @@ public class HttpRolesTest extends IsolatedIntegrationTest {
public void testRoles() { public void testRoles() {
App.scan(path()); App.scan(path());


On.defaults().roles("aa", "bb"); App.defaults().roles("aa", "bb");


On.get("/a").json(() -> "ok"); On.get("/a").json(() -> "ok");
On.get("/ok").roles().json(() -> "ok"); On.get("/ok").roles().json(() -> "ok");
Expand Down
Expand Up @@ -24,6 +24,7 @@
import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.io.Res; import org.rapidoid.io.Res;
import org.rapidoid.setup.App;
import org.rapidoid.setup.On; import org.rapidoid.setup.On;


@Authors("Nikolche Mihajlovski") @Authors("Nikolche Mihajlovski")
Expand All @@ -32,7 +33,7 @@ public class HttpStaticFilesTest extends IsolatedIntegrationTest {


@Test @Test
public void serveStaticFiles() { public void serveStaticFiles() {
On.custom().staticFilesPath("static1", "non-existing-location", "static2"); App.custom().staticFilesPath("static1", "non-existing-location", "static2");


On.get("/c").managed(false).contentType(MediaType.JSON).serve("override"); On.get("/c").managed(false).contentType(MediaType.JSON).serve("override");


Expand Down
Expand Up @@ -24,6 +24,7 @@
import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.render.Templates; import org.rapidoid.render.Templates;
import org.rapidoid.setup.App;
import org.rapidoid.setup.My; import org.rapidoid.setup.My;
import org.rapidoid.setup.On; import org.rapidoid.setup.On;
import org.rapidoid.u.U; import org.rapidoid.u.U;
Expand All @@ -34,7 +35,7 @@ public class HttpTemplatesPathTest extends IsolatedIntegrationTest {


@Test @Test
public void testTemplatesPath1() { public void testTemplatesPath1() {
On.custom().templatesPath("test-templates"); App.custom().templatesPath("test-templates");


Templates.setPath("something-different"); Templates.setPath("something-different");
eq(Templates.getPath(), U.array("something-different")); eq(Templates.getPath(), U.array("something-different"));
Expand All @@ -44,15 +45,15 @@ public void testTemplatesPath1() {


@Test @Test
public void testTemplatesPath2() { public void testTemplatesPath2() {
On.custom().templatesPath("test-templates"); App.custom().templatesPath("test-templates");
eq(On.custom().templatesPath(), U.array("test-templates")); eq(App.custom().templatesPath(), U.array("test-templates"));
setupAndTest(); setupAndTest();
} }


@Test @Test
public void testTemplatesPath3() { public void testTemplatesPath3() {
My.templatesPath("test-templates"); My.templatesPath("test-templates");
eq(On.custom().templatesPath(), U.array("test-templates")); eq(App.custom().templatesPath(), U.array("test-templates"));
setupAndTest(); setupAndTest();
} }


Expand Down
Expand Up @@ -23,6 +23,7 @@
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.setup.App;
import org.rapidoid.setup.On; import org.rapidoid.setup.On;


@Authors("Nikolche Mihajlovski") @Authors("Nikolche Mihajlovski")
Expand All @@ -31,8 +32,8 @@ public class HttpWrapTest extends IsolatedIntegrationTest {


@Test @Test
public void testWrap() { public void testWrap() {
On.defaults().wrappers((req, invocation) -> invocation.invokeAndTransformResult(x -> x + "!")); App.defaults().wrappers((req, invocation) -> invocation.invokeAndTransformResult(x -> x + "!"));
On.defaults().contentType(MediaType.BINARY); App.defaults().contentType(MediaType.BINARY);


On.get("/").html(() -> "a"); On.get("/").html(() -> "a");


Expand Down
Expand Up @@ -23,6 +23,7 @@
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.setup.App;
import org.rapidoid.setup.My; import org.rapidoid.setup.My;
import org.rapidoid.setup.On; import org.rapidoid.setup.On;
import org.rapidoid.u.U; import org.rapidoid.u.U;
Expand All @@ -36,20 +37,20 @@ public void testWrappers() {
HttpWrapper hey = wrapper("hey"); HttpWrapper hey = wrapper("hey");
My.wrappers(hey); My.wrappers(hey);


On.defaults().wrappers(wrapper("on-def")); App.defaults().wrappers(wrapper("on-def"));


On.get("/def").plain("D"); On.get("/def").plain("D");


On.defaults().wrappers((HttpWrapper[]) null); // reset the default wrappers App.defaults().wrappers((HttpWrapper[]) null); // reset the default wrappers


HttpWrapper[] wrappers = On.custom().wrappers(); HttpWrapper[] wrappers = App.custom().wrappers();
eq(U.array(hey), wrappers); eq(U.array(hey), wrappers);


On.get("/").wrappers(wrapper("index")).plain("home"); On.get("/").wrappers(wrapper("index")).plain("home");
On.post("/x").wrappers(wrapper("x"), wrapper("x2")).json("X"); On.post("/x").wrappers(wrapper("x"), wrapper("x2")).json("X");
On.get("/y").html("YYY"); On.get("/y").html("YYY");


On.custom().wrappers(wrapper("on")); App.custom().wrappers(wrapper("on"));


onlyGet("/"); onlyGet("/");
onlyPost("/x"); onlyPost("/x");
Expand Down
Expand Up @@ -389,7 +389,7 @@ protected static Map<String, Object> reqResp(Req req, Resp resp) {
} }


protected String appRoutes() { protected String appRoutes() {
List<String> routes = Do.map(On.routes().all()).toList(Object::toString); List<String> routes = Do.map(App.routes().all()).toList(Object::toString);
Collections.sort(routes); Collections.sort(routes);
return U.join("\n", routes); return U.join("\n", routes);
} }
Expand All @@ -403,7 +403,7 @@ protected void verifyRoutes(String name) {
} }


protected void verifyNoRoutes() { protected void verifyNoRoutes() {
isTrue(On.routes().all().isEmpty()); isTrue(App.routes().all().isEmpty());
} }


protected void verifyJson(String name, Object actual) { protected void verifyJson(String name, Object actual) {
Expand Down
Expand Up @@ -61,14 +61,14 @@ public void testCustomValidation() {
On.get("/invalid1").html((@Valid Bar bar) -> "ok"); On.get("/invalid1").html((@Valid Bar bar) -> "ok");
On.get("/invalid2").json((@Valid Bar bar) -> "ok"); On.get("/invalid2").json((@Valid Bar bar) -> "ok");


On.custom().validator((req, bean) -> { App.custom().validator((req, bean) -> {
throw U.rte("Invalid!"); throw U.rte("Invalid!");
}); });


onlyGet("/invalid1?err"); onlyGet("/invalid1?err");
onlyGet("/invalid2?err"); onlyGet("/invalid2?err");


On.custom().validator(null); App.custom().validator(null);
My.validator((req, bean) -> { My.validator((req, bean) -> {
throw new ValidationException("Validation failed!"); throw new ValidationException("Validation failed!");
}); });
Expand All @@ -77,7 +77,7 @@ public void testCustomValidation() {
onlyGet("/invalid2?val"); onlyGet("/invalid2?val");


My.validator(null); My.validator(null);
On.custom().validator((req, bean) -> { App.custom().validator((req, bean) -> {
throw new InvalidData("Invalid data!"); throw new InvalidData("Invalid data!");
}); });


Expand Down
6 changes: 1 addition & 5 deletions rapidoid-rest/src/main/java/org/rapidoid/setup/Admin.java
Expand Up @@ -31,11 +31,7 @@
@Since("5.1.0") @Since("5.1.0")
public class Admin extends RapidoidThing { public class Admin extends RapidoidThing {


private static final LazyInit<Setup> setup = new LazyInit<>(Admin::createAdminSetup); private static final LazyInit<Setup> setup = new LazyInit<>(() -> Setups.create("admin"));

private static Setup createAdminSetup() {
return Setups.create("admin");
}


public static synchronized Setup setup() { public static synchronized Setup setup() {
return setup.get(); return setup.get();
Expand Down
19 changes: 19 additions & 0 deletions rapidoid-rest/src/main/java/org/rapidoid/setup/App.java
Expand Up @@ -28,9 +28,13 @@
import org.rapidoid.collection.Coll; import org.rapidoid.collection.Coll;
import org.rapidoid.commons.RapidoidInitializer; import org.rapidoid.commons.RapidoidInitializer;
import org.rapidoid.config.Conf; import org.rapidoid.config.Conf;
import org.rapidoid.config.Config;
import org.rapidoid.data.JSON; import org.rapidoid.data.JSON;
import org.rapidoid.env.Env; import org.rapidoid.env.Env;
import org.rapidoid.group.Groups; import org.rapidoid.group.Groups;
import org.rapidoid.http.HttpRoutes;
import org.rapidoid.http.customize.Customization;
import org.rapidoid.http.impl.RouteOptions;
import org.rapidoid.io.Res; import org.rapidoid.io.Res;
import org.rapidoid.ioc.Beans; import org.rapidoid.ioc.Beans;
import org.rapidoid.ioc.IoC; import org.rapidoid.ioc.IoC;
Expand Down Expand Up @@ -364,4 +368,19 @@ public static Screen gui() {
return setup().gui(); return setup().gui();
} }


public static Config config() {
return On.setup().config();
}

public static Customization custom() {
return On.setup().custom();
}

public static HttpRoutes routes() {
return On.setup().routes();
}

public static RouteOptions defaults() {
return On.setup().defaults();
}
} }
28 changes: 0 additions & 28 deletions rapidoid-rest/src/main/java/org/rapidoid/setup/On.java
Expand Up @@ -24,13 +24,9 @@
import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.config.Conf; import org.rapidoid.config.Conf;
import org.rapidoid.config.Config;
import org.rapidoid.http.HttpRoutes;
import org.rapidoid.http.ReqHandler; import org.rapidoid.http.ReqHandler;
import org.rapidoid.http.ReqRespHandler; import org.rapidoid.http.ReqRespHandler;
import org.rapidoid.http.customize.Customization;
import org.rapidoid.http.handler.HttpHandler; import org.rapidoid.http.handler.HttpHandler;
import org.rapidoid.http.impl.RouteOptions;


@Authors("Nikolche Mihajlovski") @Authors("Nikolche Mihajlovski")
@Since("4.3.0") @Since("4.3.0")
Expand Down Expand Up @@ -108,30 +104,6 @@ public static synchronized OnError error(Class<? extends Throwable> error) {
return setup().error(error); return setup().error(error);
} }


public static Setup deregister(String verb, String path) {
return setup().deregister(verb, path);
}

public static Setup deregister(Object... controllers) {
return setup().deregister(controllers);
}

public static Config config() {
return setup().config();
}

public static Customization custom() {
return setup().custom();
}

public static HttpRoutes routes() {
return setup().routes();
}

public static RouteOptions defaults() {
return setup().defaults();
}

public static OnChanges changes() { public static OnChanges changes() {
return OnChanges.INSTANCE; return OnChanges.INSTANCE;
} }
Expand Down

0 comments on commit 9f6ca31

Please sign in to comment.