Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Grunberg2016-03-11 15:20:13 +0000
committerRoland Grunberg2016-03-16 19:17:51 +0000
commit00201e7ae80223adc9a5aebd2cc94e2987f4f9fd (patch)
tree4d5376ad0cb3ad9762fac29a2391ef8a525e3c01
parent04d92328c66e8210cfa50b94febad4e409df9aa5 (diff)
downloadorg.eclipse.linuxtools-00201e7ae80223adc9a5aebd2cc94e2987f4f9fd.tar.gz
org.eclipse.linuxtools-00201e7ae80223adc9a5aebd2cc94e2987f4f9fd.tar.xz
org.eclipse.linuxtools-00201e7ae80223adc9a5aebd2cc94e2987f4f9fd.zip
Bug 489112: Fix NPE in BuildDockerImageLaunchConfigurationMainTab.
Directly modify boolean value that determines whether the path is relative or absolute. This also has the added side effect of eliminating NPEs occuring due to the uninitialized AtomicInteger. Also remove unused private methods. Change-Id: Ic7d658f60955107867811d0af32cd1143d8d8071 Reviewed-on: https://git.eclipse.org/r/68376 Tested-by: Hudson CI Reviewed-by: Roland Grunberg <rgrunber@redhat.com>
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/launch/BuildDockerImageLaunchConfigurationMainTab.java102
1 files changed, 10 insertions, 92 deletions
diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/launch/BuildDockerImageLaunchConfigurationMainTab.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/launch/BuildDockerImageLaunchConfigurationMainTab.java
index 4ffe06061d..27406362ee 100644
--- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/launch/BuildDockerImageLaunchConfigurationMainTab.java
+++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/launch/BuildDockerImageLaunchConfigurationMainTab.java
@@ -20,10 +20,7 @@ import static org.eclipse.linuxtools.docker.core.IDockerImageBuildOptions.RM_INT
import static org.eclipse.linuxtools.internal.docker.ui.launch.IBuildDockerImageLaunchConfigurationConstants.SOURCE_PATH_LOCATION;
import static org.eclipse.linuxtools.internal.docker.ui.launch.IBuildDockerImageLaunchConfigurationConstants.SOURCE_PATH_WORKSPACE_RELATIVE_LOCATION;
-import java.util.concurrent.atomic.AtomicBoolean;
-
import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
@@ -52,7 +49,6 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
@@ -71,7 +67,6 @@ public class BuildDockerImageLaunchConfigurationMainTab
private final String CONNECTION_MISSING = "BuildDockerImageLaunchConfigurationMainTab.connection.missing"; //$NON-NLS-1$
private final String BUILD_CONTEXT_PATH_LABEL = "BuildDockerImageLaunchConfigurationMainTab.buildContextPath.group.label"; //$NON-NLS-1$
private final String BUILD_CONTEXT_PATH_MISSING = "BuildDockerImageLaunchConfigurationMainTab.buildContextPath.missing"; //$NON-NLS-1$
- private final String DOCKERFILE_PATH_LABEL = "BuildDockerImageLaunchConfigurationMainTab.dockerfilePath.group.label"; //$NON-NLS-1$
private final String BROWSE_WORKSPACE = "BuildDockerImageLaunchConfigurationMainTab.buildContextPath.browseworkspace.button.label"; //$NON-NLS-1$
private final String BROWSE_WORKSPACE_DIALOG_TITLE = "BuildDockerImageLaunchConfigurationMainTab.buildContextPath.browseworkspace.dialog.title"; //$NON-NLS-1$
private final String BROWSE_FILESYSTEM = "BuildDockerImageLaunchConfigurationMainTab.buildContextPath.browsefilesystem.button.label"; //$NON-NLS-1$
@@ -87,10 +82,8 @@ public class BuildDockerImageLaunchConfigurationMainTab
private ComboViewer connectionSelectionComboViewer;
/** the path to the build context . */
private Text buildContextPathText;
- private AtomicBoolean buildContextPathWorkspaceRelative;
- /** the path to the Dockerfile. */
- private Text dockerFilePathText;
- private AtomicBoolean dockerFilePathWorkspaceRelative;
+ /** whether buildContextPath is relative */
+ private boolean buildContextPathWorkspaceRelative;
/** build option: name and optional tag. */
private Text repoNameText;
/** build option: do not use cache. */
@@ -167,8 +160,7 @@ public class BuildDockerImageLaunchConfigurationMainTab
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER)
.grab(false, false).applyTo(browseWorkspaceButton);
browseWorkspaceButton
- .addSelectionListener(onBrowseWorkspace(buildContextPathText,
- buildContextPathWorkspaceRelative, IContainer.class));
+ .addSelectionListener(onBrowseWorkspace(buildContextPathText, IContainer.class));
final Button browseFileSystemButton = new Button(
buildContextPathLocationGroup, SWT.NONE);
browseFileSystemButton
@@ -176,46 +168,7 @@ public class BuildDockerImageLaunchConfigurationMainTab
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER)
.grab(false, false).applyTo(browseFileSystemButton);
browseFileSystemButton.addSelectionListener(
- onBrowseFileSystemForDirectory(this.buildContextPathText,
- this.buildContextPathWorkspaceRelative));
- }
-
- @SuppressWarnings("unused")
- private void createDockerfilePathGroup(final Composite container) {
- final Group dockerFilePathLocationGroup = new Group(container,
- SWT.BORDER);
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL)
- .grab(true, false).applyTo(dockerFilePathLocationGroup);
- GridLayoutFactory.fillDefaults().margins(6, 6).numColumns(3)
- .applyTo(dockerFilePathLocationGroup);
- dockerFilePathLocationGroup
- .setText(LaunchMessages.getString(DOCKERFILE_PATH_LABEL));
- this.dockerFilePathText = new Text(
- dockerFilePathLocationGroup, SWT.BORDER);
- this.dockerFilePathText
- .addModifyListener(new LaunchConfigurationChangeListener());
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER)
- .grab(true, false).span(3, 1).applyTo(this.dockerFilePathText);
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER)
- .grab(true, false)
- .applyTo(new Label(dockerFilePathLocationGroup, SWT.NONE));
- final Button browseWorkspaceButton = new Button(
- dockerFilePathLocationGroup, SWT.NONE);
- browseWorkspaceButton
- .setText(LaunchMessages.getString(BROWSE_WORKSPACE));
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER)
- .grab(false, false).applyTo(browseWorkspaceButton);
- browseWorkspaceButton
- .addSelectionListener(onBrowseWorkspace(dockerFilePathText,
- dockerFilePathWorkspaceRelative, IFile.class));
- final Button browseFileSystemButton = new Button(
- dockerFilePathLocationGroup, SWT.NONE);
- browseFileSystemButton
- .setText(LaunchMessages.getString(BROWSE_FILESYSTEM));
- GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER)
- .grab(false, false).applyTo(browseFileSystemButton);
- browseFileSystemButton.addSelectionListener(onBrowseFileSystemForFile(
- this.dockerFilePathText, this.dockerFilePathWorkspaceRelative));
+ onBrowseFileSystemForDirectory(this.buildContextPathText));
}
private void createRepoNameGroup(final Composite container) {
@@ -297,7 +250,6 @@ public class BuildDockerImageLaunchConfigurationMainTab
* @return
*/
private SelectionListener onBrowseWorkspace(final Text pathText,
- final AtomicBoolean workspaceRelativePath,
final Class<?> expectedType) {
return new SelectionAdapter() {
@@ -329,7 +281,7 @@ public class BuildDockerImageLaunchConfigurationMainTab
final IResource selection = (IResource) dialog
.getFirstResult();
pathText.setText(selection.getFullPath().toOSString());
- workspaceRelativePath.set(true);
+ buildContextPathWorkspaceRelative = true;
}
}
};
@@ -340,8 +292,7 @@ public class BuildDockerImageLaunchConfigurationMainTab
*
* @return
*/
- private SelectionListener onBrowseFileSystemForDirectory(final Text pathText,
- final AtomicBoolean workspaceRelativePath) {
+ private SelectionListener onBrowseFileSystemForDirectory(final Text pathText) {
return new SelectionAdapter() {
@Override
@@ -350,34 +301,12 @@ public class BuildDockerImageLaunchConfigurationMainTab
final String selection = dialog.open();
if (selection != null) {
pathText.setText(selection);
- workspaceRelativePath.set(false);
+ buildContextPathWorkspaceRelative = false;
}
}
};
}
- /**
- * Opens a dialog to browse the file system and select a file
- *
- * @return
- */
- private SelectionListener onBrowseFileSystemForFile(final Text pathText,
- final AtomicBoolean workspaceRelativePath) {
- return new SelectionAdapter() {
-
- @Override
- public void widgetSelected(final SelectionEvent e) {
- final FileDialog dialog = new FileDialog(getShell());
- final String selection = dialog.open();
- if (selection != null) {
- pathText.setText(selection);
- workspaceRelativePath.set(false);
- }
- }
- };
-
- }
-
@Override
public void setDefaults(
final ILaunchConfigurationWorkingCopy configuration) {
@@ -391,15 +320,8 @@ public class BuildDockerImageLaunchConfigurationMainTab
configuration.getAttribute(DOCKER_CONNECTION, "")));
this.buildContextPathText.setText(
configuration.getAttribute(SOURCE_PATH_LOCATION, ""));
- this.buildContextPathWorkspaceRelative = new AtomicBoolean(
- configuration.getAttribute(
- SOURCE_PATH_WORKSPACE_RELATIVE_LOCATION, false));
- // this.dockerFilePathText.setText(
- // configuration.getAttribute(DOCKERFILE_PATH, "Dockerfile"));
- // this.dockerFilePathWorkspaceRelative = new AtomicBoolean(
- // configuration.getAttribute(
- // DOCKERFILE_PATH_WORKSPACE_RELATIVE_LOCATION,
- // false));
+ this.buildContextPathWorkspaceRelative = configuration.getAttribute(
+ SOURCE_PATH_WORKSPACE_RELATIVE_LOCATION, false);
this.repoNameText
.setText(configuration.getAttribute(REPO_NAME, ""));
this.quietBuildButton.setSelection(
@@ -465,11 +387,7 @@ public class BuildDockerImageLaunchConfigurationMainTab
configuration.setAttribute(SOURCE_PATH_LOCATION,
this.buildContextPathText.getText());
configuration.setAttribute(SOURCE_PATH_WORKSPACE_RELATIVE_LOCATION,
- this.buildContextPathWorkspaceRelative.get());
- // configuration.setAttribute(DOCKERFILE_PATH,
- // this.dockerFilePathText.getText());
- // configuration.setAttribute(DOCKERFILE_PATH_WORKSPACE_RELATIVE_LOCATION,
- // this.dockerFilePathWorkspaceRelative.get());
+ this.buildContextPathWorkspaceRelative);
if (!this.repoNameText.getText().isEmpty()) {
configuration.setAttribute(REPO_NAME, this.repoNameText.getText());
}

Back to the top