- Timestamp:
- 03/18/09 15:15:48 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/New Persistence Exploration/Persistence/Persistence/DeSerializer.cs
r1355 r1356 57 57 } 58 58 59 private delegate void Handler(I ParseToken token);59 private delegate void Handler(ISerializationToken token); 60 60 61 61 private readonly Dictionary<int, object> id2obj; … … 68 68 private List<Thunk> finalFixes; 69 69 70 public DeSerializer(IEnumerable<KeyValuePair<string, int>> typeCache) :71 this(typeCache, PersistenceConfiguration.Instance) {}72 73 70 public DeSerializer( 74 71 IEnumerable<KeyValuePair<string, int>> typeCache, … … 78 75 compositeStack = new Stack<IAccessibleObject>(); 79 76 handlers = new Dictionary<Type, Handler> { 80 {typeof ( CompositeStart), CompositeStartHandler},81 {typeof ( CompositeEnd), CompositeEndHandler},82 {typeof (Primitive ), PrimitiveHandler},83 {typeof (Reference ), ReferenceHandler},84 {typeof (Null ), NullHandler}77 {typeof (BeginToken), CompositeStartHandler}, 78 {typeof (EndToken), CompositeEndHandler}, 79 {typeof (PrimitiveToken), PrimitiveHandler}, 80 {typeof (ReferenceToken), ReferenceHandler}, 81 {typeof (NullReferenceToken), NullHandler} 85 82 }; 86 83 typeIds = new Dictionary<int, Type>(); … … 91 88 } 92 89 93 public object DeSerialize(IEnumerable<I ParseToken> tokens) {90 public object DeSerialize(IEnumerable<ISerializationToken> tokens) { 94 91 finalFixes = new List<Thunk>(); 95 foreach (I ParseToken token in tokens) {92 foreach (ISerializationToken token in tokens) { 96 93 handlers[token.GetType()].Invoke(token); 97 94 } … … 102 99 } 103 100 104 private void CompositeStartHandler(I ParseToken token) {105 CompositeStart start = (CompositeStart)token;106 object instance; 107 Type type = typeIds[ int.Parse(start.TypeId)];101 private void CompositeStartHandler(ISerializationToken token) { 102 BeginToken start = (BeginToken)token; 103 object instance; 104 Type type = typeIds[(int)start.TypeId]; 108 105 if (persistenceConfiguration.GetDecomposer(type) != null) { 109 106 instance = new ParentReference(); … … 118 115 id2obj.Add((int)start.Id, instance); 119 116 } 120 private void CompositeEndHandler(I ParseToken token) {121 CompositeEnd end = (CompositeEnd)token;122 Type type = typeIds[ int.Parse(end.TypeId)];117 private void CompositeEndHandler(ISerializationToken token) { 118 EndToken end = (EndToken)token; 119 Type type = typeIds[(int)end.TypeId]; 123 120 IDecomposer decomposer = persistenceConfiguration.GetDecomposer(type); 124 121 if (decomposer != null) { … … 134 131 SetValue(end.Name, compositeObject.Obj); 135 132 } 136 } 137 private void PrimitiveHandler(I ParseToken token) {138 Primitive primitive = (Primitive)token;139 Type type = typeIds[ int.Parse(primitive.TypeId)];133 } 134 private void PrimitiveHandler(ISerializationToken token) { 135 PrimitiveToken primitive = (PrimitiveToken)token; 136 Type type = typeIds[(int)primitive.TypeId]; 140 137 object value = persistenceConfiguration 141 138 .GetFormatter(XmlFormat.Instance, type) 142 .DeSerialize(primitive.Serial izedValue);139 .DeSerialize(primitive.SerialData); 143 140 if ( ! value.GetType().IsValueType ) 144 141 id2obj[(int)primitive.Id] = value; 145 142 SetValue(primitive.Name, value); 146 143 } 147 private void ReferenceHandler(I ParseToken token) {148 Reference reference = (Reference)token;144 private void ReferenceHandler(ISerializationToken token) { 145 ReferenceToken reference = (ReferenceToken)token; 149 146 object referredObject = id2obj[reference.Id]; 150 147 SetValue(reference.Name, id2obj[reference.Id]); … … 155 152 } 156 153 } 157 private void NullHandler(I ParseToken token) {158 Null nil = (Null)token;154 private void NullHandler(ISerializationToken token) { 155 NullReferenceToken nil = (NullReferenceToken)token; 159 156 SetValue(nil.Name, null); 160 157 }
Note: See TracChangeset
for help on using the changeset viewer.