DataContainerInstanceCreator.java

package com.github.celldynamics.quimp.filesystem;

import java.lang.reflect.Type;

import com.github.celldynamics.quimp.ViewUpdater;
import com.github.celldynamics.quimp.plugin.engine.PluginFactory;
import com.google.gson.Gson;
import com.google.gson.InstanceCreator;

/**
 * Object builder for GSon and DataContainer class.
 * 
 * <p>This class is used on load JSon representation of DataContainer class. Rebuilds
 * snakePluginList
 * field that is not serialized. This field keeps current state of plugins.
 * 
 * @author p.baniukiewicz
 * @see Gson
 */
public class DataContainerInstanceCreator implements InstanceCreator<DataContainer> {

  private PluginFactory pf;
  private ViewUpdater vu;

  /**
   * Assign additional fields to DataContainer after serialization.
   * 
   * @param pf PluginFactory
   * @param vu ViewUpdater
   */
  public DataContainerInstanceCreator(final PluginFactory pf, final ViewUpdater vu) {
    this.pf = pf;
    this.vu = vu;
  }

  /*
   * (non-Javadoc)
   * 
   * @see com.google.gson.InstanceCreator#createInstance(java.lang.reflect.Type)
   */
  @Override
  public DataContainer createInstance(Type arg0) {
    DataContainer dt = new DataContainer(pf, vu);
    return dt;
  }
}