package net.ftlines.blog.cdidemo.web;
import java.util.UUID;
import javax.inject.Inject;
import net.ftlines.blog.cdidemo.cdi.ConversationStore;
import net.ftlines.wicket.cdi.CdiContainer;
import org.apache.wicket.model.IModel;
public class ConversationModel<T> implements IModel<T> {
@Inject
ConversationStore store;
private UUID key;
private transient T instance;
public ConversationModel(T instance) {
CdiContainer.get().getNonContextualManager().inject(this);
setObject(instance);
}
public T getObject() {
if (instance == null) {
instance = (T) store.get(key);
}
return instance;
}
public void setObject(T object) {
if (key != null) {
store.remove(key);
}
key = store.put(object);
}
public void detach() {
instance = null;
}
}