control: Don't hold a lock when in dialogs and add null annotations
authorBernd Hufmann <Bernd.Hufmann@ericsson.com>
Mon, 21 Sep 2015 16:50:05 +0000 (12:50 -0400)
committerBernd Hufmann <bernd.hufmann@ericsson.com>
Tue, 22 Sep 2015 11:07:18 +0000 (07:07 -0400)
Change-Id: I45d2e1d45eceeefd4c39ffed06a8f674c91d3e78
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/56368
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-by: Hudson CI
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
30 files changed:
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/AddContextOnChannelHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/AddContextOnDomainHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/AddContextOnEventHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/AssignEventHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/BaseAddContextHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/BaseControlViewHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/BaseEnableChannelHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/BaseEnableEventHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/BaseNodeHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/CalibrateHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/ChangeSessionStateHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/ChannelCommandParameter.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/CommandParameter.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/ConnectHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/CreateSessionHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/DeleteHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/DestroySessionHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/DisconnectHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/DomainCommandParameter.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/EnableChannelOnDomainHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/EnableChannelOnSessionHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/EnableEventOnChannelHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/EnableEventOnDomainHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/EnableEventOnSessionHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/EventCommandParameter.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/ExecuteCommandScriptHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/ImportHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/NewConnectionHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/RefreshHandler.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/handlers/SnaphshotHandler.java

index a68ce686b8528eae68ebf7eca35e2aa24e468557..0dcef0cef61c2e359ad46048520fd2b9fc009d6d 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -11,6 +11,8 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
+
 import java.util.Iterator;
 import java.util.List;
 
@@ -80,7 +82,7 @@ public class AddContextOnChannelHandler extends BaseAddContextHandler {
         try {
             fParam = null;
             if(isEnabled) {
-                fParam = new ChannelCommandParameter(session, channel);
+                fParam = new ChannelCommandParameter(checkNotNull(session), checkNotNull(channel));
             }
         } finally {
             fLock.unlock();
index d7051e07178bc2f1833fa3afb00a49c3e25a34bf..cb24d319485817f7d29248763baf35e2449d35b7 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -11,6 +11,8 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
+
 import java.util.Iterator;
 import java.util.List;
 
@@ -85,7 +87,7 @@ public class AddContextOnDomainHandler extends BaseAddContextHandler {
         try {
             fParam = null;
             if (isEnabled) {
-                fParam = new DomainCommandParameter(session, domain);
+                fParam = new DomainCommandParameter(checkNotNull(session), checkNotNull(domain));
             }
         } finally {
             fLock.unlock();
index 253d52e473cdec809531c470b3af7bd4c57acf54..1252689382ccd4ae1d9ceacdd3814cc60be9ff3c 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -11,6 +11,8 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
+
 import java.util.Iterator;
 import java.util.List;
 
@@ -80,7 +82,7 @@ public class AddContextOnEventHandler extends BaseAddContextHandler {
         try {
             fParam = null;
             if(isEnabled) {
-                fParam = new EventCommandParameter(session, event);
+                fParam = new EventCommandParameter(checkNotNull(session), checkNotNull(event));
             }
         } finally {
             fLock.unlock();
index 36032f4a5301b9cc24112d8283495618c4134fc1..a44f6f2088a5fd36ea721a4d13c97d1cb99f20cb 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -23,9 +23,11 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.window.Window;
+import org.eclipse.tracecompass.common.core.NonNullUtils;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.Activator;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.ControlView;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.dialogs.IGetEventInfoDialog;
@@ -66,61 +68,69 @@ public class AssignEventHandler extends BaseControlViewHandler {
     @Override
     public Object execute(ExecutionEvent event) throws ExecutionException {
 
+        // Make a copy for thread safety
+        Parameter tmpParam = null;
         fLock.lock();
         try {
-            // Make a copy for thread safety
-            final Parameter param = new Parameter(fParam);
-
-            // Open dialog box to retrieve the session and channel where the events should be enabled in.
-            final IGetEventInfoDialog dialog = TraceControlDialogFactory.getInstance().getGetEventInfoDialog();
-            dialog.setIsKernel(param.isKernel());
-            dialog.setSessions(param.getSessions());
-
-            if (dialog.open() != Window.OK) {
+            tmpParam = fParam;
+            if (tmpParam == null)  {
                 return null;
             }
+            tmpParam = new Parameter(tmpParam);
+        } finally {
+            fLock.unlock();
+        }
+        final Parameter param = tmpParam;
 
-            Job job = new Job(Messages.TraceControl_EnableEventsJob) {
-                @Override
-                protected IStatus run(IProgressMonitor monitor) {
-
-                    Exception error = null;
+        // Open dialog box to retrieve the session and channel where the events should be enabled in.
+        final IGetEventInfoDialog dialog = TraceControlDialogFactory.getInstance().getGetEventInfoDialog();
+        dialog.setIsKernel(param.isKernel());
+        dialog.setSessions(param.getSessions());
 
-                    try {
-                        List<String> eventNames = new ArrayList<>();
-                        List<BaseEventComponent> events = param.getEvents();
-                        // Create list of event names
-                        for (Iterator<BaseEventComponent> iterator = events.iterator(); iterator.hasNext();) {
-                            BaseEventComponent baseEvent = iterator.next();
-                            eventNames.add(baseEvent.getName());
-                        }
+        if (dialog.open() != Window.OK) {
+            return null;
+        }
 
-                        TraceChannelComponent channel = dialog.getChannel();
-                        if (channel == null) {
-                            // enable events on default channel (which will be created by lttng-tools)
-                            dialog.getSession().enableEvents(eventNames, param.isKernel(), dialog.getFilterExpression(), monitor);
-                        } else {
-                            channel.enableEvents(eventNames, dialog.getFilterExpression(), monitor);
-                        }
+        Job job = new Job(Messages.TraceControl_EnableEventsJob) {
+            @Override
+            protected IStatus run(IProgressMonitor monitor) {
+
+                Exception error = null;
+                TraceSessionComponent session = dialog.getSession();
+                try {
+                    List<String> eventNames = new ArrayList<>();
+                    List<BaseEventComponent> events = param.getEvents();
+                    // Create list of event names
+                    for (Iterator<BaseEventComponent> iterator = events.iterator(); iterator.hasNext();) {
+                        BaseEventComponent baseEvent = iterator.next();
+                        eventNames.add(baseEvent.getName());
+                    }
 
-                    } catch (ExecutionException e) {
-                        error = e;
+                    TraceChannelComponent channel = dialog.getChannel();
+                    if (channel == null) {
+                        // enable events on default channel (which will be created by lttng-tools)
+                        session.enableEvents(eventNames, param.isKernel(), dialog.getFilterExpression(), monitor);
+                    } else {
+                        channel.enableEvents(eventNames, dialog.getFilterExpression(), monitor);
                     }
 
-                    // refresh in all cases
-                    refresh(new CommandParameter(dialog.getSession()));
+                } catch (ExecutionException e) {
+                    error = e;
+                }
 
-                    if (error != null) {
-                        return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_EnableEventsFailure, error);
-                    }
-                    return Status.OK_STATUS;
+                // refresh in all cases
+                if (session != null) {
+                    refresh(new CommandParameter(session));
                 }
-            };
-            job.setUser(true);
-            job.schedule();
-        } finally {
-            fLock.unlock();
-        }
+
+                if (error != null) {
+                    return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_EnableEventsFailure, error);
+                }
+                return Status.OK_STATUS;
+            }
+        };
+        job.setUser(true);
+        job.schedule();
 
         return null;
     }
@@ -188,7 +198,7 @@ public class AssignEventHandler extends BaseControlViewHandler {
         try {
             fParam = null;
             if(isEnabled) {
-                fParam = new Parameter(sessions, events, isKernel);
+                fParam = new Parameter(NonNullUtils.checkNotNull(sessions), events, isKernel);
             }
         } finally {
             fLock.unlock();
@@ -199,6 +209,7 @@ public class AssignEventHandler extends BaseControlViewHandler {
     /**
      *  Class containing parameter for the command execution.
      */
+    @NonNullByDefault
     private static final class Parameter {
 
         /**
@@ -224,7 +235,7 @@ public class AssignEventHandler extends BaseControlViewHandler {
          * @param isKernel - domain (true for kernel or UST)
          */
         public Parameter(TraceSessionComponent[] sessions, List<BaseEventComponent> events, boolean isKernel) {
-            fSessions = Arrays.copyOf(sessions, sessions.length);
+            fSessions = NonNullUtils.checkNotNull(Arrays.copyOf(sessions, sessions.length));
             fEvents = new ArrayList<>();
             fEvents.addAll(events);
             fIsKernel = isKernel;
index 35d1052e83d3e920eccc1575a141c79e7bc59d24..c0eef9d997bb55214d4809cce340082e431ba0a1 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -74,8 +74,14 @@ public abstract class BaseAddContextHandler extends BaseControlViewHandler {
         }
         fLock.lock();
         try {
+
+            CommandParameter tmpParam = fParam;
+            if (tmpParam == null) {
+                return null;
+            }
+
             // Make a copy for thread safety
-            final CommandParameter param = fParam.clone();
+            final CommandParameter param = new CommandParameter(tmpParam);
 
             UIJob getJob = new UIJob(Messages.TraceControl_GetContextJob) {
                 @Override
index 8e5019171dd99ae8715bfa75de11758f6318b0ed..d0287fc9c8a091feddb8d1f2fcda07cab4aaafe1 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -19,6 +19,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.Activator;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.ControlView;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.messages.Messages;
@@ -74,7 +75,7 @@ public abstract class BaseControlViewHandler extends AbstractHandler {
      * Refreshes the session information based on given session (in CommandParameter)
      * @param param - command parameter containing the session to refresh
      */
-    protected void refresh(final CommandParameter param) {
+    protected void refresh(final @NonNull CommandParameter param) {
         Job job = new Job(Messages.TraceControl_RetrieveNodeConfigurationJob) {
 
             @Override
index 413739a17934ae5b1c871233176d24cb12b7aba8..d7c0073dc53d0f94404f8546143df72688668272 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -77,47 +77,55 @@ abstract class BaseEnableChannelHandler extends BaseControlViewHandler {
 
     @Override
     public Object execute(ExecutionEvent event) throws ExecutionException {
+        CommandParameter tmpParam = null;
+
         fLock.lock();
         try {
-            final CommandParameter param = fParam.clone();
-
-            final IEnableChannelDialog dialog =  TraceControlDialogFactory.getInstance().getEnableChannelDialog();
-            dialog.setTargetNodeComponent(param.getSession().getTargetNode());
-            dialog.setDomainComponent(getDomain(param));
-            dialog.setHasKernel(param.getSession().hasKernelProvider());
-
-            if (dialog.open() != Window.OK) {
+            tmpParam = fParam;
+            if (tmpParam == null) {
                 return null;
             }
+            tmpParam = new CommandParameter(tmpParam);
+        } finally {
+            fLock.unlock();
+        }
+        final CommandParameter param = tmpParam;
 
-            Job job = new Job(Messages.TraceControl_CreateChannelStateJob) {
-                @Override
-                protected IStatus run(IProgressMonitor monitor) {
-                    Exception error = null;
+        final IEnableChannelDialog dialog =  TraceControlDialogFactory.getInstance().getEnableChannelDialog();
+        dialog.setTargetNodeComponent(param.getSession().getTargetNode());
+        dialog.setDomainComponent(getDomain(param));
+        dialog.setHasKernel(param.getSession().hasKernelProvider());
 
-                    List<String> channelNames = new ArrayList<>();
-                    channelNames.add(dialog.getChannelInfo().getName());
+        if (dialog.open() != Window.OK) {
+            return null;
+        }
 
-                    try {
-                        enableChannel(param, channelNames, dialog.getChannelInfo(), dialog.isKernel(), monitor);
-                    } catch (ExecutionException e) {
-                        error = e;
-                    }
+        Job job = new Job(Messages.TraceControl_CreateChannelStateJob) {
+            @Override
+            protected IStatus run(IProgressMonitor monitor) {
+                Exception error = null;
 
-                    // refresh in all cases
-                    refresh(param);
+                List<String> channelNames = new ArrayList<>();
+                channelNames.add(dialog.getChannelInfo().getName());
 
-                    if (error != null) {
-                        return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_CreateChannelStateFailure, error);
-                    }
-                    return Status.OK_STATUS;
+                try {
+                    enableChannel(param, channelNames, dialog.getChannelInfo(), dialog.isKernel(), monitor);
+                } catch (ExecutionException e) {
+                    error = e;
                 }
-            };
-            job.setUser(true);
-            job.schedule();
-        } finally {
-            fLock.unlock();
-        }
+
+                // refresh in all cases
+                refresh(param);
+
+                if (error != null) {
+                    return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_CreateChannelStateFailure, error);
+                }
+                return Status.OK_STATUS;
+            }
+        };
+        job.setUser(true);
+        job.schedule();
+
         return null;
     }
 
index 45a33498da6576e146e731ee1bb5257d30b9c4f7..59866fc9dab0c95cf4f7253a67fc76e57326de4b 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -20,6 +20,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.jface.window.Window;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.LogLevelType;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLogLevel;
@@ -49,7 +50,7 @@ public abstract class BaseEnableEventHandler extends BaseControlViewHandler {
     /**
      * The command execution parameter.
      */
-    protected CommandParameter fParam = null;
+    @Nullable protected CommandParameter fParam = null;
 
     // ------------------------------------------------------------------------
     // Operations
@@ -138,90 +139,97 @@ public abstract class BaseEnableEventHandler extends BaseControlViewHandler {
         if (window == null) {
             return false;
         }
+
+        // Make a copy for thread safety
+        CommandParameter tmpParam = null;
         fLock.lock();
         try {
-            // Make a copy for thread safety
-            final CommandParameter param = fParam.clone();
-
-            TargetNodeComponent node = param.getSession().getTargetNode();
-            List<ITraceControlComponent> providers = node.getChildren(TraceProviderGroup.class);
-
-            final IEnableEventsDialog dialog = TraceControlDialogFactory.getInstance().getEnableEventsDialog();
-            dialog.setTraceProviderGroup((TraceProviderGroup)providers.get(0));
-            dialog.setTraceDomainComponent(getDomain(param));
-
-            if (dialog.open() != Window.OK) {
+            tmpParam = fParam;
+            if (tmpParam == null) {
                 return null;
             }
+            tmpParam = new CommandParameter(tmpParam);
+        } finally {
+            fLock.unlock();
+        }
+        final CommandParameter param = tmpParam;
 
-            Job job = new Job(Messages.TraceControl_ChangeEventStateJob) {
-                @Override
-                protected IStatus run(IProgressMonitor monitor) {
-                    Exception error = null;
-
-                    try {
-                        String filter = dialog.getFilterExpression();
-
-                        // Enable tracepoint events
-                        if (dialog.isTracepoints()) {
-                            if (dialog.isAllTracePoints()) {
-                                enableEvents(param, null, dialog.isKernel(), filter, monitor);
-                            } else {
-                                List<String> eventNames = dialog.getEventNames();
-                                if (!eventNames.isEmpty()) {
-                                    enableEvents(param, eventNames, dialog.isKernel(), filter, monitor);
-                                }
-                            }
-                        }
+        TargetNodeComponent node = param.getSession().getTargetNode();
+        List<ITraceControlComponent> providers = node.getChildren(TraceProviderGroup.class);
 
-                        // Enable syscall events
-                        if (dialog.isAllSysCalls()) {
-                            enableSyscalls(param, monitor);
-                        }
+        final IEnableEventsDialog dialog = TraceControlDialogFactory.getInstance().getEnableEventsDialog();
+        dialog.setTraceProviderGroup((TraceProviderGroup)providers.get(0));
+        dialog.setTraceDomainComponent(getDomain(param));
 
-                        // Enable dynamic probe
-                        if (dialog.isDynamicProbe() && (dialog.getProbeEventName() != null) && (dialog.getProbeName() != null)) {
-                            enableProbe(param, dialog.getProbeEventName(), false, dialog.getProbeName(), monitor);
-                        }
+        if (dialog.open() != Window.OK) {
+            return null;
+        }
 
-                        // Enable dynamic function probe
-                        if (dialog.isDynamicFunctionProbe() && (dialog.getFunctionEventName() != null) && (dialog.getFunction() != null)) {
-                            enableProbe(param, dialog.getFunctionEventName(), true, dialog.getFunction(), monitor);
-                        }
+        Job job = new Job(Messages.TraceControl_ChangeEventStateJob) {
+            @Override
+            protected IStatus run(IProgressMonitor monitor) {
+                Exception error = null;
 
-                        // Enable event using a wildcard
-                        if (dialog.isWildcard()) {
-                            List<String> eventNames = dialog.getEventNames();
-                            eventNames.add(dialog.getWildcard());
+                try {
+                    String filter = dialog.getFilterExpression();
 
+                    // Enable tracepoint events
+                    if (dialog.isTracepoints()) {
+                        if (dialog.isAllTracePoints()) {
+                            enableEvents(param, null, dialog.isKernel(), filter, monitor);
+                        } else {
+                            List<String> eventNames = dialog.getEventNames();
                             if (!eventNames.isEmpty()) {
                                 enableEvents(param, eventNames, dialog.isKernel(), filter, monitor);
                             }
                         }
+                    }
 
-                        // Enable events using log level
-                        if (dialog.isLogLevel()) {
-                            enableLogLevel(param, dialog.getLogLevelEventName(), dialog.getLogLevelType(), dialog.getLogLevel(), filter, monitor);
-                        }
+                    // Enable syscall events
+                    if (dialog.isAllSysCalls()) {
+                        enableSyscalls(param, monitor);
+                    }
+
+                    // Enable dynamic probe
+                    if (dialog.isDynamicProbe() && (dialog.getProbeEventName() != null) && (dialog.getProbeName() != null)) {
+                        enableProbe(param, dialog.getProbeEventName(), false, dialog.getProbeName(), monitor);
+                    }
 
-                    } catch (ExecutionException e) {
-                        error = e;
+                    // Enable dynamic function probe
+                    if (dialog.isDynamicFunctionProbe() && (dialog.getFunctionEventName() != null) && (dialog.getFunction() != null)) {
+                        enableProbe(param, dialog.getFunctionEventName(), true, dialog.getFunction(), monitor);
                     }
 
-                    // refresh in all cases
-                    refresh(param);
+                    // Enable event using a wildcard
+                    if (dialog.isWildcard()) {
+                        List<String> eventNames = dialog.getEventNames();
+                        eventNames.add(dialog.getWildcard());
 
-                    if (error != null) {
-                        return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_ChangeEventStateFailure, error);
+                        if (!eventNames.isEmpty()) {
+                            enableEvents(param, eventNames, dialog.isKernel(), filter, monitor);
+                        }
+                    }
+
+                    // Enable events using log level
+                    if (dialog.isLogLevel()) {
+                        enableLogLevel(param, dialog.getLogLevelEventName(), dialog.getLogLevelType(), dialog.getLogLevel(), filter, monitor);
                     }
-                    return Status.OK_STATUS;
+
+                } catch (ExecutionException e) {
+                    error = e;
                 }
-            };
-            job.setUser(true);
-            job.schedule();
-        } finally {
-            fLock.unlock();
-        }
+
+                // refresh in all cases
+                refresh(param);
+
+                if (error != null) {
+                    return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_ChangeEventStateFailure, error);
+                }
+                return Status.OK_STATUS;
+            }
+        };
+        job.setUser(true);
+        job.schedule();
         return null;
     }
 }
index 90bf62ee8bbf99ca09edda03ff7b859f81d4409c..6de4301e29b8c4d478276dfe521d855f9ad106e4 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -11,6 +11,7 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.ControlView;
@@ -32,7 +33,7 @@ public abstract class BaseNodeHandler extends BaseControlViewHandler {
     /**
      * The target node component the command is to be executed on.
      */
-    protected TargetNodeComponent fTargetNode = null;
+    @Nullable protected TargetNodeComponent fTargetNode = null;
 
     // ------------------------------------------------------------------------
     // Operations
@@ -57,6 +58,7 @@ public abstract class BaseNodeHandler extends BaseControlViewHandler {
         boolean isEnabled = node != null;
         fLock.lock();
         try {
+            fTargetNode = null;
             if (isEnabled) {
                 fTargetNode = node;
             }
index b55a3b9afd5c4041d53743ad5e3657feef29c837..b9c23ff0a10dcca89d740a9e5538dfe3ae0e9e25 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -11,6 +11,8 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
+
 import java.util.Iterator;
 
 import org.eclipse.core.commands.ExecutionEvent;
@@ -61,8 +63,14 @@ public class CalibrateHandler extends BaseControlViewHandler {
         }
         fLock.lock();
         try {
+
+            DomainCommandParameter tmpParam = fParam;
+            if (tmpParam == null) {
+                return null;
+            }
+
             // Make a copy for thread safety
-            final DomainCommandParameter param = fParam.clone();
+            final DomainCommandParameter param = new DomainCommandParameter(tmpParam);
 
             Job addJob = new Job(Messages.TraceControl_AddCalibrateJob) {
                 @Override
@@ -121,7 +129,7 @@ public class CalibrateHandler extends BaseControlViewHandler {
         try {
             fParam = null;
             if (isEnabled) {
-                fParam = new DomainCommandParameter(session, domain);
+                fParam = new DomainCommandParameter(checkNotNull(session), checkNotNull(domain));
             }
         } finally {
             fLock.unlock();
index 52ae259d50d3f72a52d65167f7c797086e29e678..dab5e94b51300444cf273e3a1e03c567edc2040d 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -93,10 +93,9 @@ public abstract class ChangeSessionStateHandler extends BaseControlViewHandler {
                 @Override
                 protected IStatus run(IProgressMonitor monitor) {
                     try {
-                        for (Iterator<TraceSessionComponent> iterator = sessions.iterator(); iterator.hasNext();) {
+                        for (TraceSessionComponent session : sessions) {
 
-                            // Start all selected sessions
-                            TraceSessionComponent session = iterator.next();
+                            // Change state of selected sessions
                             changeState(session, monitor);
 
                             // Set Session state
@@ -145,7 +144,7 @@ public abstract class ChangeSessionStateHandler extends BaseControlViewHandler {
         boolean isEnabled = !sessions.isEmpty();
         fLock.lock();
         try {
-            fSessions = null;
+            fSessions.clear();
             if (isEnabled) {
                 fSessions = sessions;
             }
index 655dde3997e1017cc874e2f4871b195fc3b257d9..ec0187870470e1cda8be5d1520c6eeaba9179ff0 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -11,6 +11,7 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceChannelComponent;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent;
 
@@ -19,6 +20,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.Trac
  *
  * @author Bernd Hufmann
  */
+@NonNullByDefault
 public class ChannelCommandParameter extends CommandParameter {
 
     // ------------------------------------------------------------------------
@@ -42,6 +44,17 @@ public class ChannelCommandParameter extends CommandParameter {
         fChannel = channel;
     }
 
+    /**
+     * Copy constructor
+     *
+     * @param param
+     *            a channel command parameter to copy
+     */
+    public ChannelCommandParameter(ChannelCommandParameter param) {
+        super(param);
+        fChannel = param.fChannel;
+    }
+
     // ------------------------------------------------------------------------
     // Accessors
     // ------------------------------------------------------------------------
@@ -53,14 +66,4 @@ public class ChannelCommandParameter extends CommandParameter {
         return fChannel;
     }
 
-    // ------------------------------------------------------------------------
-    // Operations
-    // ------------------------------------------------------------------------
-
-    @Override
-    public ChannelCommandParameter clone() {
-        ChannelCommandParameter clone = (ChannelCommandParameter) super.clone();
-        clone.fChannel = fChannel;
-        return clone;
-    }
 }
\ No newline at end of file
index 69c15b957f8e75582dbdcb8468d166089d2b5788..209374d8904189f31620adf1d8ec94f129b4c987 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -11,6 +11,7 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent;
 
 /**
@@ -18,7 +19,8 @@ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.Trac
  *
  * @author Bernd Hufmann
  */
-public class CommandParameter implements Cloneable {
+@NonNullByDefault
+public class CommandParameter {
 
     // ------------------------------------------------------------------------
     // Attributes
@@ -41,6 +43,16 @@ public class CommandParameter implements Cloneable {
         fSession = session;
     }
 
+    /**
+     * Copy constructor
+     *
+     * @param param
+     *            a command parameter to copy
+     */
+    public CommandParameter(CommandParameter param) {
+        fSession = param.fSession;
+    }
+
     // ------------------------------------------------------------------------
     // Accessors
     // ------------------------------------------------------------------------
@@ -51,19 +63,4 @@ public class CommandParameter implements Cloneable {
     public TraceSessionComponent getSession() {
         return fSession;
     }
-
-    // ------------------------------------------------------------------------
-    // Operations
-    // ------------------------------------------------------------------------
-
-    @Override
-    public CommandParameter clone() {
-        CommandParameter clone = null;
-        try {
-            clone = (CommandParameter) super.clone();
-            clone.fSession = fSession;
-        } catch (CloneNotSupportedException e) {
-        }
-        return clone;
-    }
 }
\ No newline at end of file
index 22fcc66cf5ae757b4295d80a38feb880dd2f28ae..83bedde594115f0972f9ecb40e0e8652d1b72c79 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -14,6 +14,7 @@ package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState;
+import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TargetNodeComponent;
 
 /**
  * <p>
@@ -31,11 +32,15 @@ public class ConnectHandler extends BaseNodeHandler {
     @Override
     public Object execute(ExecutionEvent event) throws ExecutionException {
         fLock.lock();
+        TargetNodeComponent node = null;
         try {
-            fTargetNode.connect();
+            node = fTargetNode;
         } finally {
             fLock.unlock();
         }
+        if (node != null) {
+            node.connect();
+        }
         return null;
     }
 
@@ -44,7 +49,9 @@ public class ConnectHandler extends BaseNodeHandler {
         boolean isEnabled = false;
         fLock.lock();
         try {
-           isEnabled = (super.isEnabled() && (fTargetNode.getTargetNodeState() == TargetNodeState.DISCONNECTED));
+            isEnabled = super.isEnabled();
+            TargetNodeComponent node = fTargetNode;
+            isEnabled &= ((node != null) && (node.getTargetNodeState() == TargetNodeState.DISCONNECTED));
         } finally {
             fLock.unlock();
         }
index e76e31b44557e0b93eeb03d663d14d6df762e43e..227c6a2b266759d5be91d72d1300718a5dc000d1 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -53,35 +53,41 @@ public class CreateSessionHandler extends BaseControlViewHandler {
 
     @Override
     public Object execute(ExecutionEvent event) throws ExecutionException {
-
+        // Make a copy for thread safety
+        TraceSessionGroup tmpSessionGroup = null;
         fLock.lock();
         try {
-            final TraceSessionGroup sessionGroup = fSessionGroup;
+             tmpSessionGroup = fSessionGroup;
+        } finally {
+            fLock.unlock();
+        }
+        final TraceSessionGroup sessionGroup = tmpSessionGroup;
 
-            // Open dialog box for the node name and address
-            final ICreateSessionDialog dialog = TraceControlDialogFactory.getInstance().getCreateSessionDialog();
-            dialog.initialize(sessionGroup);
+        if (sessionGroup == null) {
+            return null;
+        }
 
-            if (dialog.open() != Window.OK) {
-                return null;
-            }
+        // Open dialog box for the node name and address
+        final ICreateSessionDialog dialog = TraceControlDialogFactory.getInstance().getCreateSessionDialog();
+        dialog.initialize(sessionGroup);
 
-            Job job = new Job(Messages.TraceControl_CreateSessionJob) {
-                @Override
-                protected IStatus run(IProgressMonitor monitor) {
-                    try {
-                        sessionGroup.createSession(dialog.getParameters(), monitor);
-                    } catch (ExecutionException e) {
-                        return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_CreateSessionFailure, e);
-                    }
-                    return Status.OK_STATUS;
-                }
-            };
-            job.setUser(true);
-            job.schedule();
-        } finally {
-            fLock.unlock();
+        if (dialog.open() != Window.OK) {
+            return null;
         }
+
+        Job job = new Job(Messages.TraceControl_CreateSessionJob) {
+            @Override
+            protected IStatus run(IProgressMonitor monitor) {
+                try {
+                    sessionGroup.createSession(dialog.getParameters(), monitor);
+                } catch (ExecutionException e) {
+                    return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_CreateSessionFailure, e);
+                }
+                return Status.OK_STATUS;
+            }
+        };
+        job.setUser(true);
+        job.schedule();
         return null;
     }
 
index 3687c5069714b2b8739fbe5b0f1ea834c18024c9..5e504920f04b8c43a51d73a9bd271876a8e2263b 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -15,6 +15,7 @@ import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponent;
+import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TargetNodeComponent;
 
 /**
  * <p>
@@ -32,13 +33,19 @@ public class DeleteHandler extends BaseNodeHandler {
     @Override
     public Object execute(ExecutionEvent event) throws ExecutionException {
         fLock.lock();
+        TargetNodeComponent node = null;
         try {
-            ITraceControlComponent root = fTargetNode.getParent();
-            fTargetNode.removeAllChildren();
-            root.removeChild(fTargetNode);
+            node = fTargetNode;
         } finally {
             fLock.unlock();
         }
+
+        if (node != null) {
+            ITraceControlComponent root = node.getParent();
+            node.removeAllChildren();
+            root.removeChild(fTargetNode);
+            node.disconnect();
+        }
         return null;
     }
 
@@ -47,7 +54,9 @@ public class DeleteHandler extends BaseNodeHandler {
         boolean isEnabled = false;
         fLock.lock();
         try {
-           isEnabled = (super.isEnabled() && (fTargetNode.getTargetNodeState() == TargetNodeState.DISCONNECTED));
+            isEnabled = super.isEnabled();
+            TargetNodeComponent node = fTargetNode;
+            isEnabled &= ((node != null) && (node.getTargetNodeState() == TargetNodeState.DISCONNECTED));
         } finally {
             fLock.unlock();
         }
index 33dd1ce79254e970f1f89b6d0c674775bbe9e14d..59fca11972e6556bfbcb4fa7f181d2bc780d7749 100644 (file)
@@ -21,6 +21,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceSessionState;
@@ -50,7 +51,7 @@ public class DestroySessionHandler extends BaseControlViewHandler {
     /**
      * The list of session components the command is to be executed on.
      */
-    private final List<TraceSessionComponent> fSessions = new ArrayList<>();
+    @NonNull private final List<TraceSessionComponent> fSessions = new ArrayList<>();
 
     // ------------------------------------------------------------------------
     // Operations
index b3d6d669d7ede088d5371e2a26a6208ac4619f95..6891ecf2aa7b4d560c8ab04028ec42f7b46f35e3 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -14,6 +14,7 @@ package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState;
+import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TargetNodeComponent;
 
 /**
  * <p>
@@ -30,12 +31,18 @@ public class DisconnectHandler extends BaseNodeHandler {
 
     @Override
     public Object execute(ExecutionEvent event) throws ExecutionException {
+
         fLock.lock();
+        TargetNodeComponent node = null;
         try {
-            fTargetNode.disconnect();
+            node = fTargetNode;
         } finally {
             fLock.unlock();
         }
+
+        if (node != null) {
+            node.disconnect();
+        }
         return null;
     }
 
@@ -44,7 +51,9 @@ public class DisconnectHandler extends BaseNodeHandler {
         boolean isEnabled = false;
         fLock.lock();
         try {
-           isEnabled = super.isEnabled() && (fTargetNode.getTargetNodeState() == TargetNodeState.CONNECTED);
+            isEnabled = super.isEnabled();
+            TargetNodeComponent node = fTargetNode;
+            isEnabled &= ((node != null) && (node.getTargetNodeState() == TargetNodeState.CONNECTED));
         } finally {
             fLock.unlock();
         }
index 270006b26e7e6ee26717464e549911ddac60c8c0..76407486bdf2e8c80dd74d9f44f18ea044e234f6 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -11,6 +11,7 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceDomainComponent;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent;
 
@@ -19,6 +20,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.Trac
  *
  *  @author Bernd Hufmann
  */
+@NonNullByDefault
 public class DomainCommandParameter extends CommandParameter {
 
     // ------------------------------------------------------------------------
@@ -53,14 +55,15 @@ public class DomainCommandParameter extends CommandParameter {
         return fDomain;
     }
 
-    // ------------------------------------------------------------------------
-    // Operations
-    // ------------------------------------------------------------------------
-
-    @Override
-    public DomainCommandParameter clone() {
-        DomainCommandParameter clone = (DomainCommandParameter) super.clone();
-        clone.fDomain = fDomain;
-        return clone;
+    /**
+     * Copy constructor
+     *
+     * @param param
+     *            a domain command parameter to copy
+     */
+    public DomainCommandParameter(DomainCommandParameter param) {
+        super(param);
+        fDomain = param.fDomain;
     }
+
 }
\ No newline at end of file
index 4d65480be9307d8dfab1d9cf4033580c943ee23c..6e40f2f5473ea4d3dbc8e8d81df5910620a9619d 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -11,6 +11,8 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
+
 import java.util.Iterator;
 import java.util.List;
 
@@ -93,7 +95,7 @@ public class EnableChannelOnDomainHandler extends BaseEnableChannelHandler {
         try {
             fParam = null;
             if (isEnabled) {
-                fParam = new DomainCommandParameter(session, domain);
+                fParam = new DomainCommandParameter(checkNotNull(session), checkNotNull(domain));
             }
         } finally {
             fLock.unlock();
index 8620945de26b3477db91a5e90131278d8e979462..fbbb47d8bbc7762248e121463ff3f494959f91f8 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -18,6 +18,7 @@ import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.tracecompass.common.core.NonNullUtils;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.IChannelInfo;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceSessionState;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.ControlView;
@@ -83,7 +84,7 @@ public class EnableChannelOnSessionHandler extends BaseEnableChannelHandler {
         try {
             fParam = null;
             if (isEnabled) {
-                fParam = new CommandParameter(session);
+                fParam = new CommandParameter(NonNullUtils.checkNotNull(session));
             }
         } finally {
             fLock.unlock();
index 9da2dc00555a2db8c592a3a6e4ebd20265dd30b3..5efa3ad1b1794f764ae863fc275cef1876fbc65a 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -12,6 +12,8 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
+
 import java.util.Iterator;
 import java.util.List;
 
@@ -111,7 +113,7 @@ public class EnableEventOnChannelHandler extends BaseEnableEventHandler {
         try {
             fParam = null;
             if(isEnabled) {
-                fParam = new ChannelCommandParameter(session, channel);
+                fParam = new ChannelCommandParameter(checkNotNull(session), checkNotNull(channel));
             }
         } finally {
             fLock.unlock();
index b766ebbad28f54c691931c040112486034abe5ce..4920ad44f0c917d69a417a747886656b13885aa5 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -12,6 +12,8 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
+
 import java.util.Iterator;
 import java.util.List;
 
@@ -108,7 +110,7 @@ public class EnableEventOnDomainHandler extends BaseEnableEventHandler {
         try {
             fParam = null;
             if(isEnabled) {
-                fParam = new DomainCommandParameter(session, domain);
+                fParam = new DomainCommandParameter(checkNotNull(session), checkNotNull(domain));
             }
         } finally {
             fLock.unlock();
index c28578caeee47d6e64ec015c53b12d8b86897dcf..921b3e9a696bab477e9f629b03bc9540cfa41527 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -19,6 +19,7 @@ import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.tracecompass.common.core.NonNullUtils;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.LogLevelType;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLogLevel;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceSessionState;
@@ -99,7 +100,7 @@ public class EnableEventOnSessionHandler extends BaseEnableEventHandler {
         try {
             fParam = null;
             if(isEnabled) {
-                fParam = new CommandParameter(session);
+                fParam = new CommandParameter(NonNullUtils.checkNotNull(session));
             }
         } finally {
             fLock.unlock();
index df00f23440788d93a0b464e2d20778d87d97de69..5ce825f5e534e50544b79718b67e5ff6d018fa5c 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -11,6 +11,7 @@
  **********************************************************************/
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.handlers;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceEventComponent;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent;
 
@@ -19,6 +20,7 @@ import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.Trac
  *
  * @author Bernd Hufmann
  */
+@NonNullByDefault
 public class EventCommandParameter extends CommandParameter {
 
     // ------------------------------------------------------------------------
@@ -41,6 +43,17 @@ public class EventCommandParameter extends CommandParameter {
         fEvent = event;
     }
 
+    /**
+     * Copy constructor
+     *
+     * @param param
+     *            a event command parameter to copy
+     */
+    public EventCommandParameter(EventCommandParameter param) {
+        super(param);
+        fEvent = param.fEvent;
+    }
+
     // ------------------------------------------------------------------------
     // Accessors
     // ------------------------------------------------------------------------
@@ -51,15 +64,4 @@ public class EventCommandParameter extends CommandParameter {
     public TraceEventComponent getEvent() {
         return fEvent;
     }
-
-    // ------------------------------------------------------------------------
-    // Operations
-    // ------------------------------------------------------------------------
-
-    @Override
-    public EventCommandParameter clone() {
-        EventCommandParameter clone = (EventCommandParameter) super.clone();
-        clone.fEvent = fEvent;
-        return clone;
-    }
 }
\ No newline at end of file
index 03de1990de63a9f1bfa5072f57d190aedfcbb94f..4381ecfa711c560edb414b782487a35a433c486d 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2014 Ericsson
+ * Copyright (c) 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -17,6 +17,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.window.Window;
@@ -44,7 +45,7 @@ public class ExecuteCommandScriptHandler extends BaseControlViewHandler {
     /**
      * The trace session group the command is to be executed on.
      */
-    private TraceSessionGroup fSessionGroup = null;
+    @Nullable private TraceSessionGroup fSessionGroup = null;
 
     // ------------------------------------------------------------------------
     // Operations
@@ -53,33 +54,40 @@ public class ExecuteCommandScriptHandler extends BaseControlViewHandler {
     @Override
     public Object execute(ExecutionEvent event) throws ExecutionException {
 
+        TraceSessionGroup tmpGroup = null;
+
         fLock.lock();
         try {
-            final TraceSessionGroup sessionGroup = fSessionGroup;
+            tmpGroup = fSessionGroup;
+        } finally {
+            fLock.unlock();
+        }
 
-            // Open dialog box for the node name and address
-            final ISelectCommandScriptDialog dialog = TraceControlDialogFactory.getInstance().getCommandScriptDialog();
+        final TraceSessionGroup sessionGroup = tmpGroup;
+        if (sessionGroup == null) {
+            return null;
+        }
 
-            if (dialog.open() != Window.OK) {
-                return null;
-            }
+        // Open dialog box for the node name and address
+        final ISelectCommandScriptDialog dialog = TraceControlDialogFactory.getInstance().getCommandScriptDialog();
 
-            Job job = new Job(Messages.TraceControl_ExecuteScriptJob) {
-                @Override
-                protected IStatus run(IProgressMonitor monitor) {
-                    try {
-                        sessionGroup.executeCommands(monitor, dialog.getCommands());
-                    } catch (ExecutionException e) {
-                        return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_CreateSessionFailure, e);
-                    }
-                    return Status.OK_STATUS;
-                }
-            };
-            job.setUser(true);
-            job.schedule();
-        } finally {
-            fLock.unlock();
+        if (dialog.open() != Window.OK) {
+            return null;
         }
+
+        Job job = new Job(Messages.TraceControl_ExecuteScriptJob) {
+            @Override
+            protected IStatus run(IProgressMonitor monitor) {
+                try {
+                    sessionGroup.executeCommands(monitor, dialog.getCommands());
+                } catch (ExecutionException e) {
+                    return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TraceControl_CreateSessionFailure, e);
+                }
+                return Status.OK_STATUS;
+            }
+        };
+        job.setUser(true);
+        job.schedule();
         return null;
     }
 
index b7a536f240d70284c8a88ef8e8f9fc5370b00414..6ccb95c0a2b11097e31df277af5c459651e8241c 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -41,6 +41,7 @@ import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.remote.core.IRemoteConnection;
 import org.eclipse.remote.core.IRemoteConnectionHostService;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.tracecompass.common.core.NonNullUtils;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceSessionState;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.Activator;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.relayd.LttngRelaydConnectionInfo;
@@ -114,10 +115,15 @@ public class ImportHandler extends BaseControlViewHandler {
         CommandParameter param;
         fLock.lock();
         try {
-            param = fParam.clone();
+            param = fParam;
+            if (param == null) {
+                return null;
+            }
+            param = new CommandParameter(param);
         } finally {
             fLock.unlock();
         }
+
         // create default project
         IProject project = TmfProjectRegistry.createProject(RemoteFetchLogWizardRemotePage.DEFAULT_REMOTE_PROJECT_NAME, null, null);
 
@@ -213,7 +219,7 @@ public class ImportHandler extends BaseControlViewHandler {
         try {
             fParam = null;
             if (isEnabled) {
-                fParam = new CommandParameter(session);
+                fParam = new CommandParameter(NonNullUtils.checkNotNull(session));
             }
         } finally {
             fLock.unlock();
index 79dfdef8b70ff9e42338cf340858ff3a1e1bda81..0a81d7b3d824e775bd5a992afbe7bbf0ea58b085 100644 (file)
@@ -80,6 +80,9 @@ public class NewConnectionHandler extends BaseControlViewHandler {
         IRemoteConnection connection = getConnection(event.getParameters());
         if (connection != null) {
             fLock.lock();
+            if (fRoot == null) {
+                return null;
+            }
             try {
                 // successful creation of host
                 TargetNodeComponent node = null;
index 228acf42ec8b5e4e5933aa2b0a7b79a54dbfcde8..1d7941cbc012e650c5a87e7fce40463ebca79987 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2012, 2014 Ericsson
+ * Copyright (c) 2012, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -15,6 +15,7 @@ import java.util.Iterator;
 
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState;
@@ -39,7 +40,7 @@ public class RefreshHandler extends BaseControlViewHandler {
     /**
      * The node component reference.
      */
-    private TargetNodeComponent fNode;
+    @Nullable private TargetNodeComponent fNode;
 
     // ------------------------------------------------------------------------
     // Operations
@@ -47,12 +48,16 @@ public class RefreshHandler extends BaseControlViewHandler {
 
     @Override
     public Object execute(ExecutionEvent event) throws ExecutionException {
+        TargetNodeComponent node;
         fLock.lock();
         try {
-            fNode.refresh();
+            node = fNode;
         } finally {
             fLock.unlock();
         }
+        if (node != null) {
+            node.refresh();
+        }
         return null;
     }
 
index 753b29ed69bb564901ca31a14f1fb48a187167e5..c5854b4c48b5439974708765cf032e8c0382d4a0 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * Copyright (c) 2013, 2014 Ericsson
+ * Copyright (c) 2013, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -22,6 +22,7 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceSessionState;
@@ -46,7 +47,7 @@ public class SnaphshotHandler extends BaseControlViewHandler {
     /**
      * The list of session components the command is to be executed on.
      */
-    protected List<TraceSessionComponent> fSessions = new ArrayList<>();
+    @NonNull protected List<TraceSessionComponent> fSessions = new ArrayList<>();
 
     // ------------------------------------------------------------------------
     // Operations
@@ -118,9 +119,9 @@ public class SnaphshotHandler extends BaseControlViewHandler {
         boolean isEnabled = !sessions.isEmpty();
         fLock.lock();
         try {
-            fSessions = null;
+            fSessions.clear();
             if (isEnabled) {
-                fSessions = sessions;
+                fSessions.addAll(sessions);
             }
         } finally {
             fLock.unlock();
This page took 0.052399 seconds and 5 git commands to generate.