All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gwtplatform.dispatch.rest.client.gin.RestDispatchAsyncModule Maven / Gradle / Ivy

There is a newer version: 1.6
Show newest version
/*
 * Copyright 2013 ArcBees Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.gwtplatform.dispatch.rest.client.gin;

import javax.inject.Singleton;

import com.google.inject.Provides;
import com.gwtplatform.common.client.CommonGinModule;
import com.gwtplatform.dispatch.client.gin.AbstractDispatchAsyncModule;
import com.gwtplatform.dispatch.rest.client.RestDispatch;
import com.gwtplatform.dispatch.rest.client.RestDispatchHooks;
import com.gwtplatform.dispatch.rest.client.annotations.DefaultDateFormat;
import com.gwtplatform.dispatch.rest.client.annotations.GlobalHeaderParams;
import com.gwtplatform.dispatch.rest.client.annotations.GlobalQueryParams;
import com.gwtplatform.dispatch.rest.client.annotations.RequestTimeout;
import com.gwtplatform.dispatch.rest.client.annotations.RestBinding;
import com.gwtplatform.dispatch.rest.client.annotations.XsrfHeaderName;
import com.gwtplatform.dispatch.rest.client.interceptor.RestInterceptorRegistry;
import com.gwtplatform.dispatch.rest.client.serialization.SerializationModule;

/**
 * An implementation of {@link AbstractDispatchAsyncModule} that binds classes used by a restful dispatch.
 * 

* This gin module provides access to the {@link RestDispatch} singleton, which is used to make calls to the server over * HTTP. *

* You must manually bind {@literal @}{@link com.gwtplatform.dispatch.rest.client.RestApplicationPath * RestApplicationPath} to point to your server API root path. */ public class RestDispatchAsyncModule extends AbstractDispatchAsyncModule { /** * {@inheritDoc}. */ public static class Builder extends RestDispatchAsyncModuleBuilder { } public static final String DEFAULT_XSRF_NAME = "X-CSRF-Token"; private final BaseRestDispatchModuleBuilder builder; private final RestParameterBindingsSerializer bindingsSerializer = new RestParameterBindingsSerializer(); /** * Creates this module using the default values as specified by {@link RestDispatchAsyncModuleBuilder}. */ public RestDispatchAsyncModule() { this(new RestDispatchAsyncModuleBuilder()); } RestDispatchAsyncModule(BaseRestDispatchModuleBuilder builder) { super(builder, RestBinding.class); this.builder = builder; } @Override protected void configureDispatch() { // Common install(new CommonGinModule()); install(new SerializationModule()); install(builder.getCoreModule()); // Constants / Configurations // It's not possible to bind non-native type constants, so we must encode them at compile-time and decode them // at runtime (ie: Global Parameters) String globalHeaderParams = bindingsSerializer.serialize(builder.getGlobalHeaderParams()); String globalQueryParams = bindingsSerializer.serialize(builder.getGlobalQueryParams()); bindConstant().annotatedWith(XsrfHeaderName.class).to(builder.getXsrfTokenHeaderName()); bindConstant().annotatedWith(RequestTimeout.class).to(builder.getRequestTimeoutMs()); bindConstant().annotatedWith(DefaultDateFormat.class).to(builder.getDefaultDateFormat()); bindConstant().annotatedWith(GlobalHeaderParams.class).to(globalHeaderParams); bindConstant().annotatedWith(GlobalQueryParams.class).to(globalQueryParams); // Cross-concern bind(RestDispatchHooks.class).to(builder.getDispatchHooks()).in(Singleton.class); bind(RestInterceptorRegistry.class).to(builder.getInterceptorRegistry()).in(Singleton.class); } @Provides @Singleton @GlobalHeaderParams RestParameterBindings getGlobalHeaderParams(@GlobalHeaderParams String encodedParams) { return bindingsSerializer.deserialize(encodedParams); } @Provides @Singleton @GlobalQueryParams RestParameterBindings getGlobalQueryParams(@GlobalQueryParams String encodedParams) { return bindingsSerializer.deserialize(encodedParams); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy