package fr.openwide.core.wicket.more.util.model;
import com.google.common.base.Throwables;
import fr.openwide.core.wicket.more.model.GenericEntityModel;
import fr.openwide.core.wicket.more.model.threadsafe.impl.AbstractThreadSafeLoadableDetachableModel;
/**
* See {@link GenericEntityModel} or {@link AbstractThreadSafeLoadableDetachableModel} for examples of use.
*/
public final class LoadableDetachableModelExtendedDebugInformation {
private StackTraceElement[] latestAttachStackTraceForDebug;
public LoadableDetachableModelExtendedDebugInformation() {
super();
}
public void onAttach() {
this.latestAttachStackTraceForDebug = Thread.currentThread().getStackTrace();
}
public void onDetach() {
this.latestAttachStackTraceForDebug = null;
}
public Object getLatestAttachInformation() {
if (latestAttachStackTraceForDebug != null) {
Exception e = new Exception();
e.setStackTrace(latestAttachStackTraceForDebug);
return Throwables.getStackTraceAsString(e);
} else {
return null;
}
}
}