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

feign.codec.Encoder Maven / Gradle / Ivy

There is a newer version: 8.18.0
Show newest version
/*
 * Copyright 2013 Netflix, 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 feign.codec;

import feign.RequestTemplate;

import static java.lang.String.format;

/**
 * Encodes an object into an HTTP request body. Like {@code javax.websocket.Encoder}.
 * {@code Encoder} is used when a method parameter has no {@code @Param} annotation.
 * For example: 
*

*

 * @POST
 * @Path("/")
 * void create(User user);
 * 
* Example implementation:
*

*

 * public class GsonEncoder implements Encoder {
 *   private final Gson gson;
 *
 *   public GsonEncoder(Gson gson) {
 *     this.gson = gson;
 *   }
 *
 *   @Override
 *   public void encode(Object object, RequestTemplate template) {
 *     template.body(gson.toJson(object));
 *   }
 * }
 * 
* *

*

Form encoding

*
* If any parameters are found in {@link feign.MethodMetadata#formParams()}, they will be * collected and passed to the Encoder as a {@code Map}. *
*
 * @POST
 * @Path("/")
 * Session login(@Named("username") String username, @Named("password") String password);
 * 
*/ public interface Encoder { /** * Converts objects to an appropriate representation in the template. * * @param object what to encode as the request body. * @param template the request template to populate. * @throws EncodeException when encoding failed due to a checked exception. */ void encode(Object object, RequestTemplate template) throws EncodeException; /** * Default implementation of {@code Encoder}. */ public class Default implements Encoder { @Override public void encode(Object object, RequestTemplate template) throws EncodeException { if (object instanceof String) { template.body(object.toString()); } else if (object instanceof byte[]) { template.body((byte[]) object, null); } else if (object != null) { throw new EncodeException(format("%s is not a type supported by this encoder.", object.getClass())); } } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy