Search in sources :

Example 1 with OkHttpAdapterListener

use of io.crnk.client.http.okhttp.OkHttpAdapterListener in project crnk-framework by crnk-project.

the class BraveClientModule method setHttpAdapter.

@Override
public void setHttpAdapter(HttpAdapter adapter) {
    try {
        // load classes lazily since necessary classes may not be on classpath
        if (adapter instanceof OkHttpAdapter) {
            OkHttpAdapter okHttpAdapter = (OkHttpAdapter) adapter;
            Class integrationClass = getClass().getClassLoader().loadClass("io.crnk.monitor.brave.internal.OkHttpBraveIntegration");
            Constructor constructor = integrationClass.getConstructor(HttpTracing.class);
            OkHttpAdapterListener listener = (OkHttpAdapterListener) constructor.newInstance(tracing);
            okHttpAdapter.addListener(listener);
        } else if (adapter instanceof HttpClientAdapter) {
            HttpClientAdapter httpClientAdapter = (HttpClientAdapter) adapter;
            Class integrationClass = getClass().getClassLoader().loadClass("io.crnk.monitor.brave.internal.HttpClientBraveIntegration");
            Constructor constructor = integrationClass.getConstructor(HttpTracing.class);
            HttpClientAdapterListener listener = (HttpClientAdapterListener) constructor.newInstance(tracing);
            httpClientAdapter.addListener(listener);
        } else {
            throw new IllegalArgumentException(adapter.getClass() + " not supported yet");
        }
    } catch (InvocationTargetException | IllegalAccessException | InstantiationException | NoSuchMethodException | ClassNotFoundException e) {
        throw new IllegalStateException("failed to setup brave integration", e);
    }
}
Also used : HttpTracing(brave.http.HttpTracing) Constructor(java.lang.reflect.Constructor) HttpClientAdapterListener(io.crnk.client.http.apache.HttpClientAdapterListener) InvocationTargetException(java.lang.reflect.InvocationTargetException) HttpClientAdapter(io.crnk.client.http.apache.HttpClientAdapter) OkHttpAdapterListener(io.crnk.client.http.okhttp.OkHttpAdapterListener) OkHttpAdapter(io.crnk.client.http.okhttp.OkHttpAdapter)

Example 2 with OkHttpAdapterListener

use of io.crnk.client.http.okhttp.OkHttpAdapterListener in project crnk-framework by crnk-project.

the class QuerySpecClientTest method testUpdate.

public void testUpdate(boolean pushAlways) {
    final List<String> methods = new ArrayList<>();
    final List<String> paths = new ArrayList<>();
    final Interceptor interceptor = new Interceptor() {

        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            methods.add(request.method());
            paths.add(request.url().encodedPath());
            return chain.proceed(request);
        }
    };
    HttpAdapter httpAdapter = client.getHttpAdapter();
    if (httpAdapter instanceof OkHttpAdapter) {
        ((OkHttpAdapter) httpAdapter).addListener(new OkHttpAdapterListener() {

            @Override
            public void onBuild(Builder builder) {
                builder.addInterceptor(interceptor);
            }
        });
    }
    Task task = new Task();
    task.setId(1L);
    task.setName("test");
    taskRepo.create(task);
    Task savedTask = taskRepo.findOne(1L, new QuerySpec(Task.class));
    Assert.assertNotNull(savedTask);
    // perform update
    task.setName("updatedName");
    taskRepo.save(task);
    // check updated
    savedTask = taskRepo.findOne(1L, new QuerySpec(Task.class));
    Assert.assertNotNull(savedTask);
    Assert.assertEquals("updatedName", task.getName());
    if (httpAdapter instanceof OkHttpAdapter) {
        // check HTTP handling
        Assert.assertEquals(4, methods.size());
        Assert.assertEquals(4, paths.size());
        Assert.assertEquals("POST", methods.get(0));
        Assert.assertEquals("GET", methods.get(1));
        if (pushAlways) {
            Assert.assertEquals("POST", methods.get(2));
            Assert.assertEquals("/tasks", paths.get(2));
        } else {
            Assert.assertEquals("PATCH", methods.get(2));
            Assert.assertEquals("/tasks/1", paths.get(2));
        }
        Assert.assertEquals("GET", methods.get(3));
        Assert.assertEquals("/tasks", paths.get(0));
        Assert.assertEquals("/tasks/1", paths.get(1));
        Assert.assertEquals("/tasks/1", paths.get(3));
    }
}
Also used : Task(io.crnk.test.mock.models.Task) HttpAdapter(io.crnk.client.http.HttpAdapter) OkHttpAdapter(io.crnk.client.http.okhttp.OkHttpAdapter) Builder(okhttp3.OkHttpClient.Builder) ArrayList(java.util.ArrayList) Request(okhttp3.Request) OkHttpAdapterListener(io.crnk.client.http.okhttp.OkHttpAdapterListener) OkHttpAdapter(io.crnk.client.http.okhttp.OkHttpAdapter) QuerySpec(io.crnk.core.queryspec.QuerySpec) Interceptor(okhttp3.Interceptor)

Example 3 with OkHttpAdapterListener

use of io.crnk.client.http.okhttp.OkHttpAdapterListener in project crnk-framework by crnk-project.

the class CharsetTest method testUTF8isDefault.

public void testUTF8isDefault(boolean okHttp) throws InstantiationException, IllegalAccessException {
    requestContentType = null;
    responseContentType = null;
    if (okHttp) {
        OkHttpAdapter adapter = OkHttpAdapter.newInstance();
        adapter.addListener(new OkHttpAdapterListener() {

            @Override
            public void onBuild(OkHttpClient.Builder builder) {
                builder.addInterceptor(new Interceptor() {

                    @Override
                    public Response intercept(Chain chain) throws IOException {
                        requestContentType = chain.request().header(HttpHeaders.HTTP_CONTENT_TYPE);
                        Response response = chain.proceed(chain.request());
                        responseContentType = response.header(HttpHeaders.HTTP_CONTENT_TYPE);
                        return response;
                    }
                });
            }
        });
        client.setHttpAdapter(adapter);
    } else {
        HttpClientAdapter adapter = HttpClientAdapter.newInstance();
        adapter.addListener(new HttpClientAdapterListener() {

            @Override
            public void onBuild(HttpClientBuilder builder) {
                builder.addInterceptorFirst(new HttpRequestInterceptor() {

                    @Override
                    public void process(HttpRequest httpRequest, HttpContext httpContext) throws HttpException, IOException {
                        Header header = httpRequest.getFirstHeader(HttpHeaders.HTTP_CONTENT_TYPE);
                        requestContentType = header != null ? header.getValue() : null;
                    }
                });
                builder.addInterceptorFirst(new HttpResponseInterceptor() {

                    @Override
                    public void process(HttpResponse httpResponse, HttpContext httpContext) throws HttpException, IOException {
                        Header header = httpResponse.getFirstHeader(HttpHeaders.HTTP_CONTENT_TYPE);
                        responseContentType = header != null ? header.getValue() : null;
                    }
                });
            }
        });
        client.setHttpAdapter(adapter);
    }
    ResourceRepositoryV2<Task, Long> testRepo = client.getRepositoryForType(Task.class);
    Task entity = new Task();
    entity.setId(1L);
    entity.setName("äöüé@¢€");
    testRepo.create(entity);
    Assert.assertEquals(HttpHeaders.JSONAPI_CONTENT_TYPE_AND_CHARSET, requestContentType);
    Assert.assertEquals(HttpHeaders.JSONAPI_CONTENT_TYPE_AND_CHARSET, responseContentType);
    Task savedEntity = testRepo.findOne(1L, new QuerySpec(Task.class));
    Assert.assertEquals(entity.getName(), savedEntity.getName());
    Assert.assertNull(requestContentType);
    Assert.assertEquals(HttpHeaders.JSONAPI_CONTENT_TYPE_AND_CHARSET, responseContentType);
}
Also used : HttpRequest(org.apache.http.HttpRequest) Task(io.crnk.test.mock.models.Task) OkHttpClient(okhttp3.OkHttpClient) HttpContext(org.apache.http.protocol.HttpContext) HttpResponse(org.apache.http.HttpResponse) HttpClientBuilder(org.apache.http.impl.client.HttpClientBuilder) HttpClientAdapterListener(io.crnk.client.http.apache.HttpClientAdapterListener) Response(okhttp3.Response) HttpResponse(org.apache.http.HttpResponse) HttpClientAdapter(io.crnk.client.http.apache.HttpClientAdapter) Header(org.apache.http.Header) OkHttpAdapterListener(io.crnk.client.http.okhttp.OkHttpAdapterListener) HttpRequestInterceptor(org.apache.http.HttpRequestInterceptor) OkHttpAdapter(io.crnk.client.http.okhttp.OkHttpAdapter) HttpResponseInterceptor(org.apache.http.HttpResponseInterceptor) QuerySpec(io.crnk.core.queryspec.QuerySpec) Interceptor(okhttp3.Interceptor) HttpResponseInterceptor(org.apache.http.HttpResponseInterceptor) HttpRequestInterceptor(org.apache.http.HttpRequestInterceptor)

Aggregations

OkHttpAdapter (io.crnk.client.http.okhttp.OkHttpAdapter)3 OkHttpAdapterListener (io.crnk.client.http.okhttp.OkHttpAdapterListener)3 HttpClientAdapter (io.crnk.client.http.apache.HttpClientAdapter)2 HttpClientAdapterListener (io.crnk.client.http.apache.HttpClientAdapterListener)2 QuerySpec (io.crnk.core.queryspec.QuerySpec)2 Task (io.crnk.test.mock.models.Task)2 Interceptor (okhttp3.Interceptor)2 HttpTracing (brave.http.HttpTracing)1 HttpAdapter (io.crnk.client.http.HttpAdapter)1 Constructor (java.lang.reflect.Constructor)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 ArrayList (java.util.ArrayList)1 OkHttpClient (okhttp3.OkHttpClient)1 Builder (okhttp3.OkHttpClient.Builder)1 Request (okhttp3.Request)1 Response (okhttp3.Response)1 Header (org.apache.http.Header)1 HttpRequest (org.apache.http.HttpRequest)1 HttpRequestInterceptor (org.apache.http.HttpRequestInterceptor)1 HttpResponse (org.apache.http.HttpResponse)1