@Provides @Singleton @GlobalQueryParams RestParameterBindings getGlobalQueryParams(@GlobalQueryParams String encodedParams) { return bindingsSerializer.deserialize(encodedParams); } }
/** * Used to serialize the bindings at compilation. Usage of GWT code is <b>not</b> allowed. */ public String serialize(RestParameterBindings parameterBindings) { StringBuilder result = new StringBuilder("{"); for (Entry<HttpMethod, Set<HttpParameter>> entry : parameterBindings.entrySet()) { serializeValues(result, entry.getKey(), entry.getValue()); } if (!parameterBindings.isEmpty()) { result.deleteCharAt(result.length() - 1); } result.append("}"); return result.toString(); }
@Override protected void configureDispatch() { // Common install(new CommonGinModule()); install(new SerializationModule()); install(builder.getCoreModule()); bind(RestFilterRegistry.class).to(builder.getFilterRegistry()).in(Singleton.class); // 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); }
@Provides @Singleton @GlobalHeaderParams RestParameterBindings getGlobalHeaderParams(@GlobalHeaderParams String encodedParams) { return bindingsSerializer.deserialize(encodedParams); }
/** * Used to deserialize the bindings once on the client. Usage of GWT code is allowed. */ public RestParameterBindings deserialize(String encodedParameters) { RestParameterBindings parameters = new RestParameterBindings(); JSONObject json = JSONParser.parseStrict(encodedParameters).isObject(); for (String method : json.keySet()) { HttpMethod httpMethod = HttpMethod.valueOf(method); JSONArray jsonParameters = json.get(method).isArray(); for (int i = 0; i < jsonParameters.size(); ++i) { HttpParameter parameter = deserialize(jsonParameters.get(i).isObject()); parameters.put(httpMethod, parameter); } } return parameters; }