Making a renderer persistent

There are certain situations where you might want to save a renderer. When you work in load-on-demand mode, for example, only the parameters necessary for loading the graphic objects in the layer are saved, not the objects themselves. Load-on-demand is described in Using load-on-demand.
The complete source code of this example can be found in the following file:
If the graphic objects are created using a specific renderer, you must save that renderer to render the objects in the same way the next time they are loaded. The class IlvSDOLayer, for example, lets you specify a renderer ( setFeatureRenderer that will be saved with the layer.
The ColorLineRenderer presented in the section Creating a colored line renderer derives from the IlvFeatureRenderer interface, which extends IlvPersistentObject and can thus be saved.
  /**
   * Writes this to specified stream.
   */
  public void write(IlvOutputStream stream)
  throws java.io.IOException
  {
    stream.write("attributeName",myAttributeName);
    if (myColorModel instanceof IlvPersistentObject)
      stream.write("colorModel",(IlvPersistentObject)myColorModel);
    else
      System.err.println("Warning : colormodel not saved");
  }
  public ColorLineRenderer(IlvInputStream stream)
  throws IlvReadFileException
  {
    myAttributeName = stream.readString("attributeName");
    try {
      myColorModel = (ColorModel)stream.readPersistentObject("colorModel");  
    } catch (IlvFieldNotFoundException e) {
      // Get default colormodel
      myColorModel = IlvIntervalColorModel.MakeElevationColorModel();
    }
  }
}