/machinelearning/4.0.x/drools-eclipse3.3/drools-eclipse-plugin/src/main/java/org/drools/eclipse/debug/RealtimeAuditView.java

https://github.com/etirelli/droolsjbpm-contributed-experiments · Java · 105 lines · 86 code · 13 blank · 6 comment · 14 complexity · a0256af0f70a8f5bfbc4fbce8160f7c1 MD5 · raw file

  1. package org.drools.eclipse.debug;
  2. import java.io.ObjectInputStream;
  3. import java.io.StringReader;
  4. import java.util.List;
  5. import org.drools.eclipse.DroolsEclipsePlugin;
  6. import org.eclipse.debug.core.DebugException;
  7. import org.eclipse.debug.core.model.IValue;
  8. import org.eclipse.debug.core.model.IVariable;
  9. import org.eclipse.debug.ui.IDebugUIConstants;
  10. import org.eclipse.jdt.debug.core.IJavaObject;
  11. import org.eclipse.jface.action.IToolBarManager;
  12. import org.eclipse.jface.viewers.ISelection;
  13. import org.eclipse.jface.viewers.IStructuredSelection;
  14. import org.eclipse.jface.viewers.Viewer;
  15. import org.eclipse.swt.widgets.Composite;
  16. import org.eclipse.ui.ISelectionListener;
  17. import org.eclipse.ui.IWorkbenchPart;
  18. import com.thoughtworks.xstream.XStream;
  19. /**
  20. * An audit view that shows the contents of the selected logger when debugging.
  21. *
  22. * @author <a href="mailto:kris_verlaenen@hotmail.com">Kris Verlaenen</a>
  23. */
  24. public class RealtimeAuditView extends AuditView implements ISelectionListener {
  25. public void dispose() {
  26. getSite().getPage().removeSelectionListener(IDebugUIConstants.ID_VARIABLE_VIEW, this);
  27. super.dispose();
  28. }
  29. protected Viewer createViewer(Composite parent) {
  30. getSite().getPage().addSelectionListener(IDebugUIConstants.ID_VARIABLE_VIEW, this);
  31. return super.createViewer(parent);
  32. }
  33. protected void setViewerInput(Object context) {
  34. // if an in memory logger has been explicitly selected as variable
  35. if (context instanceof IVariable) {
  36. IVariable variable = (IVariable) context;
  37. try {
  38. IValue value = ((IVariable) context).getValue();
  39. if (value != null && value instanceof IJavaObject
  40. && "org.drools.audit.WorkingMemoryInMemoryLogger".equals(
  41. variable.getValue().getReferenceTypeName())) {
  42. setAuditEvents((IJavaObject) value);
  43. }
  44. } catch (Throwable t) {
  45. DroolsEclipsePlugin.log(t);
  46. }
  47. }
  48. }
  49. protected void becomesHidden() {
  50. setViewerInput(null);
  51. super.becomesHidden();
  52. }
  53. protected void becomesVisible() {
  54. super.becomesVisible();
  55. ISelection selection = getSite().getPage().getSelection(
  56. IDebugUIConstants.ID_VARIABLE_VIEW);
  57. if (selection instanceof IStructuredSelection) {
  58. setViewerInput(((IStructuredSelection) selection).getFirstElement());
  59. }
  60. }
  61. public void selectionChanged(IWorkbenchPart part, ISelection selection) {
  62. if (!isAvailable()) {
  63. return;
  64. }
  65. if (selection == null) {
  66. setViewerInput(null);
  67. } else if (selection instanceof IStructuredSelection) {
  68. setViewerInput(((IStructuredSelection) selection).getFirstElement());
  69. }
  70. }
  71. protected void createActions() {
  72. }
  73. protected void configureToolBar(IToolBarManager tbm) {
  74. }
  75. private void setAuditEvents(IJavaObject inMemoryLogger) throws DebugException {
  76. IValue eventString = DebugUtil.getValueByExpression("return getEvents();", inMemoryLogger);
  77. String s = eventString.getValueString();
  78. if (s != null) {
  79. try {
  80. XStream xstream = new XStream();
  81. ObjectInputStream in = xstream.createObjectInputStream(
  82. new StringReader(s));
  83. getViewer().setInput(createEventList((List) in.readObject()));
  84. } catch (Throwable t) {
  85. DroolsEclipsePlugin.log(t);
  86. getViewer().setInput(null);
  87. }
  88. } else {
  89. getViewer().setInput(null);
  90. }
  91. }
  92. }