Java tutorial
/** * Copyright (C) 2013 Motown.IO (info@motown.io) * * 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 io.motown.chargingstationconfiguration.viewmodel.restapi.providers; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.ext.MessageBodyReader; import javax.ws.rs.ext.MessageBodyWriter; import javax.ws.rs.ext.Provider; import java.io.*; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.nio.charset.Charset; @Provider public final class GsonJsonProvider implements MessageBodyReader<Object>, MessageBodyWriter<Object> { private static final String UTF_8 = "UTF-8"; private final Gson gson; public GsonJsonProvider() { gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create(); } @Override public boolean isReadable(Class<?> aClass, Type type, Annotation[] annotations, MediaType mediaType) { return true; } @Override public Object readFrom(Class<Object> objectClass, Type type, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, String> stringStringMultivaluedMap, InputStream inputStream) throws IOException { JsonReader reader = new JsonReader(new InputStreamReader(inputStream, Charset.forName(UTF_8))); Object obj = gson.fromJson(reader, type); reader.close(); return obj; } @Override public boolean isWriteable(Class<?> aClass, Type type, Annotation[] annotations, MediaType mediaType) { return true; } @Override public long getSize(Object src, Class<?> aClass, Type type, Annotation[] annotations, MediaType mediaType) { return -1; } @Override public void writeTo(Object src, Class<?> aClass, Type type, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> stringObjectMultivaluedMap, OutputStream outputStream) throws IOException { JsonWriter writer = new JsonWriter(new OutputStreamWriter(outputStream, Charset.forName(UTF_8))); gson.toJson(src, type, writer); writer.close(); } }