offline building of site deploy to improve performance.
[utils] / wicket / joe / src / main / java / org / wamblee / wicket / inject / InjectionBehavior.java
index 3d648c4e8c4da65a9fca7ca3c5997f9812035e5f..45da4a98efeb99166e3c02be925271229875ec4a 100644 (file)
  */
 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;
 
 /**
  * Injection behavior that performs dependency injection after
- * serialization/deserialisation of the object. 
- * 
- * @author Erik Brakkee
+ * serialization/deserialisation of the object.
  *
+ * @author Erik Brakkee
  */
 public class InjectionBehavior extends AbstractBehavior {
 
-    private transient boolean injectionUptodate;
-    
+    private static final long serialVersionUID = 7363393083209418693L;
+    private Component _component;
+    private boolean _injectionUptodate;
+
     /**
      * Constructs the behavior.
      */
-    public InjectionBehavior() { 
-        injectionUptodate = true; 
+    public InjectionBehavior(Component aComponent) {
+        _component = aComponent;
     }
-    
-    @Override
-    public void beforeRender(Component aComponent) {
-        if (!injectionUptodate) { 
+
+    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);
+    }
+
+    private void injectIfNeeded(Component aComponent) {
+        if (!_injectionUptodate) {
             InjectorBuilder.getInjector().inject(aComponent);
-            injectionUptodate = true; 
+            _injectionUptodate = true;
         }
     }
 }