UTILS-17
[utils] / wicket / joe / src / main / java / org / wamblee / wicket / inject / InjectionBehavior.java
index 659be7a75a3fdbd90cbab7a6be898a8e8cd3fbf7..45da4a98efeb99166e3c02be925271229875ec4a 100644 (file)
@@ -15,6 +15,8 @@
  */
 package org.wamblee.wicket.inject;
 
+import java.io.IOException;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.behavior.AbstractBehavior;
 import org.wamblee.inject.InjectorBuilder;
@@ -22,27 +24,35 @@ import org.wamblee.inject.InjectorBuilder;
 /**
  * Injection behavior that performs dependency injection after
  * serialization/deserialisation of the object.
- * 
+ *
  * @author Erik Brakkee
- * 
  */
 public class InjectionBehavior extends AbstractBehavior {
 
     private static final long serialVersionUID = 7363393083209418693L;
-    private transient boolean injectionUptodate;
+    private Component _component;
+    private boolean _injectionUptodate;
 
     /**
      * Constructs the behavior.
      */
-    public InjectionBehavior() {
-        injectionUptodate = true;
+    public InjectionBehavior(Component aComponent) {
+        _component = aComponent;
+    }
+
+    private void writeObject(java.io.ObjectOutputStream stream) throws IOException {
+        stream.defaultWriteObject();
+    }
+
+    private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException {
+        stream.defaultReadObject();
+        injectIfNeeded(_component);
     }
 
-    @Override
-    public void beforeRender(Component aComponent) {
-        if (!injectionUptodate) {
+    private void injectIfNeeded(Component aComponent) {
+        if (!_injectionUptodate) {
             InjectorBuilder.getInjector().inject(aComponent);
-            injectionUptodate = true;
+            _injectionUptodate = true;
         }
     }
 }