1 21 package com.db4o; 22 23 import com.db4o.config.*; 24 import com.db4o.inside.marshall.*; 25 26 final class YapFieldTranslator extends YapField 27 { 28 private final ObjectTranslator i_translator; 29 30 YapFieldTranslator(YapClass a_yapClass, ObjectTranslator a_translator){ 31 super(a_yapClass, a_translator); 32 i_translator = a_translator; 33 YapStream stream = a_yapClass.getStream(); 34 configure(stream.reflector().forClass(a_translator.storedClass()), false); 35 } 36 37 public boolean canUseNullBitmap(){ 38 return false; 39 } 40 41 void deactivate(Transaction a_trans, Object a_onObject, int a_depth){ 42 if(a_depth > 0){ 43 cascadeActivation(a_trans, a_onObject, a_depth, false); 44 } 45 setOn(a_trans.stream(), a_onObject, null); 46 } 47 48 public Object getOn(Transaction a_trans, Object a_OnObject){ 49 try{ 50 return i_translator.onStore(a_trans.stream(), a_OnObject); 51 }catch(Throwable t){ 52 return null; 53 } 54 } 55 56 public Object getOrCreate(Transaction a_trans, Object a_OnObject) { 57 return getOn(a_trans, a_OnObject); 58 } 59 60 public void instantiate(MarshallerFamily mf, YapObject a_yapObject, Object a_onObject, YapWriter a_bytes) throws CorruptionException{ 61 Object toSet = read(mf, a_bytes); 62 63 67 a_bytes.getStream().activate1(a_bytes.getTransaction(), toSet, a_bytes.getInstantiationDepth()); 68 69 setOn(a_bytes.getStream(), a_onObject, toSet); 70 } 71 72 void refresh() { 73 } 75 76 private void setOn(YapStream a_stream, Object a_onObject, Object toSet){ 77 try{ 78 i_translator.onActivate(a_stream, a_onObject, toSet); 79 }catch(Throwable t){} 80 } 81 } 82 | Popular Tags |