configure dla JerseyTest, budowanie zależności

0

Dorabiam test w istniejącej aplikacji webowej z wykorzystaniem Jersey Framework.
Nie jestem jej autorem, ja tu tylko sprzątam a do tego natywnie programuję w innym języku i mam wrażenie, że moje problemy wynikają z niezrozumienia jakiś podstaw.
Tak więc mam pytanko czy dwa. Taka sytuacja:

Nadpisanie funkcji configure()

ResourceConfig config = new ResourceConfig(MyResource.class);
  1. Co w zasadzie zachodzi kiedy wywołuje config.register(MyFeature.class), a czym to się różni od config.bind(MyFeature.class); ?

  2. Czy w powyższym przykładzie, mamy pobrany config z tego, który został stworzony w kontenerze dla MyResource.class i tylko pewne rzeczy nadpisujemy wywołując config. register, config. bind, etc. czy należy wszystkie zależności stworzyć od zera na potrzeby danego testu?

0

Pachnie jak Spring (nie napisałeś tego).
Jak streścić Springa w jednym poście ....

0

No niestety nie ma tam Springa, a tylko Jersey o ile dobrze rozumiem to jest referencyjna biblioteka dla Javowej specyfikacji RESTfull API.
Czyli takie raczej podwaliny, niż kombajn ;)

Interesują mnie jedynie (i może aż) odpowiedzi na te dwa pytania, przy czym pierwsze można jeszcze uprościć do: Jaka jest różnica pomiędzy config.register(MyFeature.class), a config.bind(MyFeature.class) ?

0

W tajnym projekcie trudno pomóc.
Jakiego typu jest config? Pełna kwalifikowana nazwa klasy. JavaDoc
To elementarz takiej analizy.

0

Na komputerze, z którego piszę nie mam źródła, więc nie przekleję, ale postaram się odtworzyć istotne elmenty:

package pl.my.page.resource;

import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.server.ResourceConfig;
import org.junit.Test;
import pl.my.page.feature.MyFeature;
import pl.my.page.feature.MySecondFeature;
import org.glassfish.jersey.test.JerseyTest;
import pl.my.page.resource.MyResource;

import javax.ws.rs.core.Application;
import javax.ws.rs.core.Response;

import static javax.ws.rs.core.Response.Status.TEMPORARY_REDIRECT;
import static org.junit.Assert.assertEquals;

public class MyResourceTest extends JerseyTest {

    @Override
    protected Application configure() {
        ResourceConfig config = new ResourceConfig(MyResource.class);

        config.register(MyFeature.class);
        config.register(new AbstractBinder() {
            @Override
            protected void configure() {
                bind(MySecondFeature.class).to(MySecondFeature.class);
            }
        });

        return config;
    }

    @Test
    public void get() {
        Response response = target("/test").property("jersey.config.client.followRedirects", false).request().get();
        assertEquals(TEMPORARY_REDIRECT.getStatusCode(), response.getStatus());
    }
}

czytelniejszy screen w załączniku

0

Dzięki za istotną wskazówkę, co prawda niby wiedziałem to, ale nie zastanawiałem się nad tym ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1