package org.bundlemaker.core.internal.gson; import java.lang.reflect.Type; import org.bundlemaker.core.analysis.AnalysisCore; import org.bundlemaker.core.analysis.AnalysisModelConfiguration; import org.bundlemaker.core.analysis.IAnalysisModelConfiguration; import org.bundlemaker.core.analysis.IBundleMakerArtifact; import org.bundlemaker.core.analysis.IRootArtifact; import org.bundlemaker.core.resource.IModularizedSystem; import org.bundlemaker.core.spi.analysis.AbstractArtifactContainer; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.Path; 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; /** * <p> * Implements a {@link JsonSerializer}/{@link JsonDeserializer} for {@link IBundleMakerArtifact IBundleMakerArtifacts}. * </p> * * @author Gerd Wütherich (gerd@gerd-wuetherich.de) */ public class BundleMakerArtifactJsonAdapter implements JsonSerializer<IBundleMakerArtifact>, JsonDeserializer<IBundleMakerArtifact> { /** - */ private IModularizedSystem _modularizedSystem; /** * <p> * Creates a new instance of type {@link BundleMakerArtifactJsonAdapter}. * </p> * * @param modularizedSystem */ public BundleMakerArtifactJsonAdapter(IModularizedSystem modularizedSystem) { _modularizedSystem = modularizedSystem; } /** * {@inheritDoc} */ @SuppressWarnings("deprecation") @Override public JsonElement serialize(IBundleMakerArtifact bundleMakerArtifact, Type arg1, JsonSerializationContext context) { JsonObject result = new JsonObject(); result.add("configuration", context.serialize(bundleMakerArtifact.getConfiguration())); result.addProperty("path", bundleMakerArtifact.getFullPath().toPortableString()); return result; } /** * {@inheritDoc} */ @Override public IBundleMakerArtifact deserialize(JsonElement jsonElement, Type arg1, JsonDeserializationContext context) throws JsonParseException { IAnalysisModelConfiguration configuration = context.deserialize(jsonElement.getAsJsonObject() .get("configuration"), AnalysisModelConfiguration.class); Assert.isNotNull(configuration, "IArtifactModelConfiguration 'configuration' must not be null."); IRootArtifact rootArtifact = AnalysisCore.getAnalysisModel(_modularizedSystem, configuration); String path = jsonElement.getAsJsonObject() .get("path").getAsString(); if (".".equals(path)) { return rootArtifact; } // IBundleMakerArtifact result = ((AbstractArtifactContainer) rootArtifact).getChild(new Path(path)); // return result; } }