/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.api.machine.server.model.impl.adapter;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import org.eclipse.che.api.core.model.machine.MachineSource;
import org.eclipse.che.api.machine.server.model.impl.MachineSourceImpl;
import java.lang.reflect.Type;
/**
* Type adapter for {@link MachineSource}.
*
* @author Florent Benoit
*/
public class MachineSourceAdapter implements JsonDeserializer<MachineSource>, JsonSerializer<MachineSource> {
@Override
public MachineSource deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext context) throws JsonParseException {
return context.deserialize(jsonElement, MachineSourceImpl.class);
}
@Override
public JsonElement serialize(MachineSource machineSource, Type type, JsonSerializationContext context) {
final JsonObject jsonObject = new JsonObject();
// we can't rely on MachineSourceImpl as custom InstanceProvider can build their own implementation
jsonObject.addProperty("content", machineSource.getContent());
jsonObject.addProperty("location", machineSource.getLocation());
jsonObject.addProperty("type", machineSource.getType());
return jsonObject;
}
}