diff options
author | Roland Grunberg | 2016-03-11 15:20:13 +0000 |
---|---|---|
committer | Roland Grunberg | 2016-03-16 19:17:51 +0000 |
commit | 00201e7ae80223adc9a5aebd2cc94e2987f4f9fd (patch) | |
tree | 4d5376ad0cb3ad9762fac29a2391ef8a525e3c01 | |
parent | 04d92328c66e8210cfa50b94febad4e409df9aa5 (diff) | |
download | org.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.java | 102 |
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()); } |