Blog
A namespace saved my life
8 years, 7 months ago Posted in: Blog Comments Off

Esta es la solución al problema que no me dejaba dormir estas semanas.
Se trata de gestionar las versiones de código durante la deserialización de una instancia de una clase guardada en versión anterior.

La solución és super elegante y muy instructiva. El uso de namespaces permite de implementar una sorta de override de método de parseo. Yessssssss!

Gracias Greg Jastrab! gracias O' Reilly! gracias Marc por comprarme el libro!!!

Actionscript:
  1. public class WeatherData implements IExternalizable {
  2.   namespace wd1_0 = "WD1.0";
  3.   namespace wd1_1 = "WD1.1";
  4.  
  5.   protected var version:String;
  6.   public var date:Date;
  7.   public var low:Number;
  8.   public var high:Number;
  9.  
  10.   public function WeatherData() {
  11.     version = "WD1.1";
  12.     date = new Date();
  13.     low = high = 0;
  14.   }
  15.   public function readExternal(input:IDataInput):void {
  16.     version = input.readUTF();
  17.     var ns:Namespace = new Namespace(version);
  18.     ns::parse(input);
  19.   }
  20.   public function writeExternal(output:IDataOutput):void {
  21.     output.writeUTF(version);
  22.     output.writeObject(date);
  23.     output.writeFloat(low);
  24.     output.writeFloat(high);
  25.   }
  26.   wd1_0 function parse(input:IDataInput):void {
  27.     date = input.readObject() as Date;
  28.     high = input.readFloat();
  29.   }
  30.   wd1_1 function parse(input:IDataInput):void {
  31.     date = input.readObject() as Date;
  32.     low = input.readFloat();
  33.     high = input.readFloat();
  34.   }
  35. }

Comments are closed.

Image compression on this page is provided by WordPress Image Compressor