View Javadoc

1   package com.sri.emo.wizard;
2   
3   import java.io.Serializable;
4   
5   /***
6    * This interface is for controllers to allow Wizards to be transformed between
7    * usable wizards and opaque serializable objects that are meant to be as
8    * 'slim' as possible.  Ex:
9    * <p/>
10   * <code><pre>
11   * request.getSession().setPersistentAttribute("MyWizardKey", mementoConverter.toMomento(myWizard));
12   * <p/>
13   * and
14   * <p/>
15   * //Cast to serializable is necessary because session says it needs objects,
16   * //even though it really needs Serializable.
17   * Wizard myWizard = myMementoConverter.fromMemento((Serializable)request.getSession().getPersistentAttribute("MyWizardKey"));
18   * </pre></code>
19   * </p>
20   *
21   * @author Michael Rimov
22   * @version 1.0
23   */
24  public interface WizardMementoConverter {
25  
26      /***
27       * Breaks the wizard down into minimal component state parts that can
28       * be stored in the session or client.  Similar to the dehydration process
29       * in the natural -- all the fluff is removed.
30       * Implementations do not have to do anything with the underlying wizard,
31       * they may just return the wizard proper if everything is properly
32       * serializable.
33       *
34       * @param target Wizard the wizard being 'dehydrated'
35       * @return Serializable
36       * @throws WizardException
37       */
38      Serializable toMemento(Wizard target) throws WizardException;
39  
40  
41      /***
42       * Re-fleshes out the wizard into usable forms.  Again, the underlying
43       * factory implementation may not do anything with it.  It doesn't really
44       * matter in the end.
45       *
46       * @param previouslyExternalized Serializable
47       * @return Wizard
48       * @throws WizardException
49       */
50      Wizard fromMemento(Serializable previouslyExternalized) throws WizardException;
51  }