SimpleWeb4j

<me>

Développeur Java chez Sopra Group depuis 7 ans

Développeur Android la nuit :

Développeur open-source :

Où me trouver?

</ME>

SimpleWeb4j, c'est quoi?

Encore un framework web!

Pourquoi encore un?

Mouvance MVC Client

Léger

Rapide à mettre en place

Facile à deployer

Application Démo

Gestion d'une carte de cidre

Fonctionnalités :

CRUD des cidres

Affichage de la carte

Gestion des utilisateurs (si on a le temps)

Création du projet

Utilisation du clickstart cloudbees
https://grandcentral.cloudbees.com/#doClickStart

Création des resources


Besoins :

  • Un service getById
  • Un service getAll
  • Un service update
  • Un service create
  • Un service delete

SimpleWeb4j.resource()

SimpleWeb4j.resource(new CidreResource("cidre"));

Test via Http

public class CidreTest extends SimpleWeb4jTest {
    @Before
    public void setup() {
        Main.startServer(getPort(), false);
    }
    @After
    public void tearDown() {
        stop();
    }
    @Test
    public void should_return_no_cidre() {
        List<Cidre> cidres = new Gson().fromJson(
                HttpRequest.get(defaultUrl() + "/cidre").body(),
                new TypeToken<List<Cidre>>(){}.getType());
        assertTrue(cidres.isEmpty());
    }
}

IHM


Vive Angular!

Tests IHM

public class CidreWebTest extends SimpleWeb4jTest {
    @Before
    public void setup() {
        Main.startServer(getPort(), false);
        goTo("/");
    }
    @After
    public void tearDown() {
        stop();
    }
    @Test
    public void should_not_have_cidre() {
        assertThat(find("tbody tr")).isEmpty();
    }
}

Filters


Filtre à appliquer sur toutes les requètes (exemple : sécurité)

Création d'un AbstractFilter

public class SecurityFilter extends AbstractFilter {
    @Override
    public void handle(Route route, RouteParameters routeParams)
            throws HttpErrorException {
        if (!"admin".equals(routeParams.getParam("login"))
                || !"admin".equals(routeParams.getParam("password"))) {
            throw new HttpErrorException(
                    HttpServletResponse.SC_UNAUTHORIZED);
        }
    }
}

Ajout du filtre à SimpleWeb4j

SimpleWeb4j.addFilter(new SecurityFilter());

Accès cross-site

Création d'un site hébergé ailleur utilisant le backend SompleWeb4j

Ajout d'un service JSONP

Route<Void, List<Cidre>> jsonpRoute =
        new Route<>("/jsonp/cidre", Void.class) {
    @Override
    public Response<List<Cidre>> handle(
            Void param, RouteParameters routeParameters) {
        return cidreRessource.getAll();
    }
};
jsonp("CALLBACK", jsonpRoute);

Questions?

Liens :