01: package net.refractions.udig.project;
02:
03: import org.eclipse.core.runtime.IExtension;
04: import org.eclipse.ui.IMemento;
05:
06: /**
07: * Allows blackboard to persist objects on the blackboard.
08: *
09: * @author Jesse
10: * @since 1.0.0
11: */
12: public abstract class IPersister<T> {
13:
14: /** Extension point id. * */
15: public static final String XPID = "net.refractions.udig.project.persister"; //$NON-NLS-1$
16:
17: /** the extension configuration element * */
18: IExtension extension;
19:
20: /**
21: * Sets the extension that persister originated from. This method should not be called by client
22: * code.
23: *
24: * @param extension The extension in which the persister was instantiated.
25: * @uml.property name="extension"
26: */
27: public void setExtension(IExtension extension) {
28: this .extension = extension;
29: }
30:
31: /**
32: * @return the extension the persister originated from.
33: * @uml.property name="extension"
34: */
35: public IExtension getExtension() {
36: return extension;
37: }
38:
39: /**
40: * Returns the class of the object being persisted. How this class relates to the class of
41: * objects being persisted (via inheritance) is up to the client of the persister.
42: *
43: * @return The type of the object being persisted (the persistee).
44: */
45: public abstract Class<T> getPersistee();
46:
47: /**
48: * Loads an object from a memento containing the objects internaObjectl state.
49: *
50: * @param memento A memento.
51: * @return The object with state restored.
52: */
53: public abstract T load(IMemento memento);
54:
55: /**
56: * Saves the internal state of an object instance to a memento.
57: *
58: * @param object The object being persisted (the persistee).
59: * @param memento The memento in which to save object state.
60: */
61: public abstract void save(T object, IMemento memento);
62: }
|