package com.google.sitebricks;
import com.google.inject.Guice;
import com.google.inject.Scopes;
import com.google.inject.servlet.RequestScoped;
import com.google.sitebricks.headless.Reply;
import com.google.sitebricks.headless.Request;
import com.google.sitebricks.http.Get;
import com.google.sitebricks.http.Post;
import com.google.sitebricks.routing.Action;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
import java.util.Map;
/**
* @author Dhanji R. Prasanna (dhanji@gmail com)
*/
public class EdslTest {
@Test
public final void edsl() {
Guice.createInjector(new SitebricksModule() {
@Override
protected void configureSitebricks() {
// Registration of page classes
at("/rpc")
.show(EdslTest.class)
.asEagerSingleton();
at("/pub")
.show(EdslTest.class)
.in(Scopes.NO_SCOPE);
// Registration of static resources (bundled in jar)
at("/script.js").export("/client/my.js");
// Register a custom SPI action.
at("/stuff")
.perform(new DummyAction())
.on(Get.class, Post.class);
at("/stuff/:thing")
.perform(new DummyAction())
.select("metadata", "form")
.selectHeader("Accept", "image/jpeg")
.on(Get.class);
// Registration of embeddable widgets (simply points to page class)
embed(EdslTest.class).as("@Blasphemy");
embed(EdslTest.class).as("@Hiberty");
embed(EdslTest.class).as("@Plurality").in(RequestScoped.class);
}
});
}
private static class DummyAction implements Action {
@Override
public boolean shouldCall(Request request) {
return true;
}
@Override
public Object call(Request request, Object page, Map<String, String> map) {
return Reply.saying().ok();
}
@Override
public Method getMethod() {
return null;
}
}
}