Search in sources :

Example 1 with OkHttpAdapter

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

the class BraveModule method setHttpAdapter.

@Override
public void setHttpAdapter(HttpAdapter adapter) {
    if (adapter instanceof OkHttpAdapter) {
        OkHttpAdapter okHttpAdapter = (OkHttpAdapter) adapter;
        okHttpAdapter.addListener(new OkHttpBraveIntegration(brave));
    } else if (adapter instanceof HttpClientAdapter) {
        HttpClientAdapter okHttpAdapter = (HttpClientAdapter) adapter;
        okHttpAdapter.addListener(new HttpClientBraveIntegration(brave, spanNameProvider));
    } else {
        throw new IllegalArgumentException(adapter.getClass() + " not supported yet");
    }
}
Also used : HttpClientAdapter(io.crnk.client.http.apache.HttpClientAdapter) OkHttpAdapter(io.crnk.client.http.okhttp.OkHttpAdapter) OkHttpBraveIntegration(io.crnk.monitor.brave.internal.OkHttpBraveIntegration) HttpClientBraveIntegration(io.crnk.monitor.brave.internal.HttpClientBraveIntegration)

Example 2 with OkHttpAdapter

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

the class AbstractMetaJerseyTest method setNetworkTimeout.

public static void setNetworkTimeout(CrnkClient client, final int timeout, final TimeUnit timeUnit) {
    OkHttpAdapter httpAdapter = (OkHttpAdapter) client.getHttpAdapter();
    httpAdapter.addListener(new OkHttpAdapterListenerBase() {

        @Override
        public void onBuild(Builder builder) {
            builder.readTimeout(timeout, timeUnit);
        }
    });
}
Also used : Builder(okhttp3.OkHttpClient.Builder) OkHttpAdapter(io.crnk.client.http.okhttp.OkHttpAdapter) OkHttpAdapterListenerBase(io.crnk.client.http.okhttp.OkHttpAdapterListenerBase)

Example 3 with OkHttpAdapter

use of io.crnk.client.http.okhttp.OkHttpAdapter 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 4 with OkHttpAdapter

use of io.crnk.client.http.okhttp.OkHttpAdapter 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 5 with OkHttpAdapter

use of io.crnk.client.http.okhttp.OkHttpAdapter 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)14 OkHttpAdapterListener (io.crnk.client.http.okhttp.OkHttpAdapterListener)5 OkHttpAdapterListenerBase (io.crnk.client.http.okhttp.OkHttpAdapterListenerBase)5 Builder (okhttp3.OkHttpClient.Builder)4 Test (org.junit.Test)4 HttpClientAdapter (io.crnk.client.http.apache.HttpClientAdapter)3 AbstractClientTest (io.crnk.client.AbstractClientTest)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 OkHttpClient (okhttp3.OkHttpClient)2 HttpTracing (brave.http.HttpTracing)1 HttpAdapter (io.crnk.client.http.HttpAdapter)1 OkHttpAdapterProvider (io.crnk.client.http.okhttp.OkHttpAdapterProvider)1 QueryParamsBuilder (io.crnk.legacy.queryParams.QueryParamsBuilder)1 HttpClientBraveIntegration (io.crnk.monitor.brave.internal.HttpClientBraveIntegration)1 OkHttpBraveIntegration (io.crnk.monitor.brave.internal.OkHttpBraveIntegration)1 Constructor (java.lang.reflect.Constructor)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1