From 7a61cb6550bfb1452e25ad9794f7b05a3d228db7 Mon Sep 17 00:00:00 2001 From: Andre Dietisheim Date: Thu, 23 Jun 2016 15:06:51 +0200 Subject: [PATCH] adding generics to binding to correct warnings --- .../internal/common/ui/utils/UIUtils.java | 1 - .../wizard/connection/ConnectionEditor.java | 8 ++- .../ui/wizard/connection/OAuthDetailView.java | 47 +++++++++------- .../wizard/deployimage/DeployImagePage.java | 54 +++++++++---------- 4 files changed, 59 insertions(+), 51 deletions(-) diff --git a/plugins/org.jboss.tools.openshift.common.ui/src/org/jboss/tools/openshift/internal/common/ui/utils/UIUtils.java b/plugins/org.jboss.tools.openshift.common.ui/src/org/jboss/tools/openshift/internal/common/ui/utils/UIUtils.java index 1c04c278b9..f29d3ee7e8 100644 --- a/plugins/org.jboss.tools.openshift.common.ui/src/org/jboss/tools/openshift/internal/common/ui/utils/UIUtils.java +++ b/plugins/org.jboss.tools.openshift.common.ui/src/org/jboss/tools/openshift/internal/common/ui/utils/UIUtils.java @@ -207,7 +207,6 @@ public static E getFirstElement(ISelection selection, Class clazz) { return adapt(getFirstElement(selection), clazz); } - @SuppressWarnings("unchecked") public static E adapt(Object object, Class clazz) { return Adapters.adapt(object, clazz); } diff --git a/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/connection/ConnectionEditor.java b/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/connection/ConnectionEditor.java index 48f9902487..60d35af555 100644 --- a/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/connection/ConnectionEditor.java +++ b/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/connection/ConnectionEditor.java @@ -66,7 +66,7 @@ public class ConnectionEditor extends BaseConnectionEditor { private IObservableValue authSchemeObservable; private Binding selectedAuthTypeBinding; - private class DetailViewModel extends ObservablePojo{ + private class DetailViewModel extends ObservablePojo { private IConnectionEditorDetailView selectedDetailView; public IConnectionEditorDetailView getSelectedDetailView() { @@ -85,6 +85,10 @@ public void setSelectedConnection(IConnection conn) { rememberTokenObservable.setValue(Boolean.FALSE); selectedDetailViewObservable.setValue(detailViews.get(IAuthorizationContext.AUTHSCHEME_OAUTH)); } + + setDetailViewsConnection(conn); + } + private void setDetailViewsConnection(IConnection conn) { for (IConnectionEditorDetailView view : detailViews.values()) { //reset all views view.setSelectedConnection(conn); @@ -170,7 +174,7 @@ public void onInVisible(IObservableValue detailViewModelObservable, DataBindingC private void bindWidgetsToInternalModel(DataBindingContext dbc) { //auth protocol - selectedAuthTypeBinding = ValueBindingBuilder + this.selectedAuthTypeBinding = ValueBindingBuilder .bind(ViewerProperties.singleSelection().observe(authTypeViewer)) .validatingAfterGet( new IsNotNullValidator( diff --git a/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/connection/OAuthDetailView.java b/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/connection/OAuthDetailView.java index 81cd7ec387..8f6dae053b 100644 --- a/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/connection/OAuthDetailView.java +++ b/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/connection/OAuthDetailView.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 Red Hat, Inc. + * Copyright (c) 2015-2016 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, @@ -75,7 +75,7 @@ import org.jboss.tools.openshift.internal.common.ui.utils.StyledTextUtils; import org.jboss.tools.openshift.internal.ui.OpenShiftUIActivator; -import com.openshift.restclient.ClientFactory; +import com.openshift.restclient.ClientBuilder; import com.openshift.restclient.IClient; import com.openshift.restclient.authorization.IAuthorizationContext; import com.openshift.restclient.authorization.IAuthorizationDetails; @@ -83,6 +83,7 @@ /** * @author jeff.cantrill * @author Jeff Maury + * @author Andre Dietisheim */ public class OAuthDetailView extends BaseDetailsView implements IConnectionEditorDetailView { @@ -113,15 +114,15 @@ public String getToken() { } } - private IObservableValue tokenObservable; + private IObservableValue tokenObservable; private Binding tokenBinding; private Text tokenText; - private IValueChangeListener changeListener; - private IObservableValue rememberTokenObservable; - private IObservableValue authSchemeObservable; + private IValueChangeListener changeListener; + private IObservableValue rememberTokenObservable; + private IObservableValue authSchemeObservable; private IAuthorizationDetails authDetails; private ConnectionWizardPageModel pageModel; - IObservableValue urlObservable; + IObservableValue urlObservable; private Button rememberTokenCheckbox; private Binding rememberTokenBinding; @@ -129,14 +130,14 @@ public String getToken() { private IWizard wizard; - public OAuthDetailView(IWizard wizard, ConnectionWizardPageModel pageModel, IValueChangeListener changeListener, Object context, - IObservableValue authSchemeObservable) { + public OAuthDetailView(IWizard wizard, ConnectionWizardPageModel pageModel, IValueChangeListener changeListener, Object context, + IObservableValue authSchemeObservable) { this.wizard = wizard; this.pageModel = pageModel; - urlObservable = BeanProperties.value(ConnectionWizardPageModel.PROPERTY_HOST).observe(pageModel); - tokenObservable = new WritableValue(null, String.class); - rememberTokenObservable = new WritableValue(Boolean.FALSE, Boolean.class); - connectionValidator = ConnectionValidatorFactory. + this.urlObservable = BeanProperties.value(ConnectionWizardPageModel.PROPERTY_HOST).observe(pageModel); + this.tokenObservable = new WritableValue(null, String.class); + this.rememberTokenObservable = new WritableValue(Boolean.FALSE, Boolean.class); + this.connectionValidator = ConnectionValidatorFactory. createOAuthAuthenticationValidator(pageModel, tokenObservable, urlObservable); this.authSchemeObservable = authSchemeObservable; this.changeListener = changeListener; @@ -145,7 +146,7 @@ public OAuthDetailView(IWizard wizard, ConnectionWizardPageModel pageModel, IVal } } - IObservableValue getRememberTokenObservable() { + IObservableValue getRememberTokenObservable() { return rememberTokenObservable; } @@ -303,7 +304,7 @@ public void run() { }); } - private class AuthDetailsJob extends Job{ + private class AuthDetailsJob extends Job { private IAuthorizationDetails details; private String host; @@ -320,24 +321,30 @@ public IAuthorizationDetails getDetails() { @Override protected IStatus run(IProgressMonitor monitor) { try { - IClient client = new ClientFactory().create(host, OpenShiftCoreUIIntegration.getInstance().getSSLCertificateCallback()); + IClient client = new ClientBuilder(host) + .sslCertificateCallback(OpenShiftCoreUIIntegration.getInstance().getSSLCertificateCallback()) + .build(); details = client.getAuthorizationDetails(host); + return ValidationStatus.OK_STATUS; } catch(Exception e) { if (e.getCause() instanceof ConnectTimeoutException) { - return new Status(IStatus.ERROR, OpenShiftUIActivator.PLUGIN_ID, "Timed out waiting for a response for authorization details.\nThis server might be unavailable or may not support OAuth.", e); + return new Status(IStatus.ERROR, OpenShiftUIActivator.PLUGIN_ID, + "Timed out waiting for a response for authorization details.\nThis server might be unavailable or may not support OAuth.", e); + } else { + return new Status(IStatus.ERROR, OpenShiftUIActivator.PLUGIN_ID, + "Unable to retrieve the authentication details", e); } - return new Status(IStatus.ERROR, OpenShiftUIActivator.PLUGIN_ID, "Unable to retrieve the authentication details", e); } - return ValidationStatus.OK_STATUS; } } - private class BearTokenAuthenticationProvider implements IConnectionAuthenticationProvider{ + private class BearTokenAuthenticationProvider implements IConnectionAuthenticationProvider { @Override public IConnection update(IConnection conn) { Assert.isLegal(conn instanceof Connection); + final Connection connection = (Connection) conn; // might be called from job, switch to display thread to access observables Display.getDefault().syncExec(new Runnable() { diff --git a/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/deployimage/DeployImagePage.java b/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/deployimage/DeployImagePage.java index dd6a9e6e76..bf7b6a05d6 100644 --- a/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/deployimage/DeployImagePage.java +++ b/plugins/org.jboss.tools.openshift.ui/src/org/jboss/tools/openshift/internal/ui/wizard/deployimage/DeployImagePage.java @@ -60,9 +60,11 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.progress.UIJob; import org.jboss.tools.common.ui.WizardUtils; import org.jboss.tools.common.ui.databinding.ParametrizableWizardPageSupport; import org.jboss.tools.common.ui.databinding.ValueBindingBuilder; +import org.jboss.tools.openshift.common.core.connection.IConnection; import org.jboss.tools.openshift.common.core.utils.UrlUtils; import org.jboss.tools.openshift.core.connection.Connection; import org.jboss.tools.openshift.internal.common.ui.connection.ConnectionColumLabelProvider; @@ -160,11 +162,11 @@ protected IStatus run(IProgressMonitor monitor) { final IStatus validatorJobStatus = WizardUtils.runInWizard(imageValidator, getContainer(), getDataBindingContext()); if (!validatorJobStatus.isOK()) { MessageDialog.openError(getShell(), "Error", - "No Docker image named '" + model.getImageName() + "' could be found."); + NLS.bind("No Docker image named {0} could be found.", model.getImageName())); event.doit = false; } } catch (InvocationTargetException | InterruptedException e) { - final String message = "Failed to look-up metadata for a Docker image named '" + model.getImageName() + "'."; + final String message = NLS.bind("Failed to look-up metadata for a Docker image named {0}.", model.getImageName()); MessageDialog.openError(getShell(), "Error", message); OpenShiftUIActivator.getDefault().getLogger().logError(message, e); } @@ -243,7 +245,8 @@ public void widgetSelected(SelectionEvent e) { } // FIXME: may need to revisit the call to the constructor once https://bugs.eclipse.org/bugs/show_bug.cgi?id=495285 is addressed // there may be no need to to specify the registry info if we want to search on Docker Hub. - ImageSearch wizard = new ImageSearch(model.getDockerConnection(), txtImage.getText(), new RegistryInfo(AbstractRegistry.DOCKERHUB_REGISTRY)); + ImageSearch wizard = new ImageSearch( + model.getDockerConnection(), txtImage.getText(), new RegistryInfo(AbstractRegistry.DOCKERHUB_REGISTRY)); if(Window.OK == new OkCancelButtonWizardDialog(getShell(), wizard).open()){ //this bypasses validation model.setImageName(wizard.getSelectedImage(), true); @@ -274,10 +277,10 @@ public String getText(Object element) { connectionViewer.setInput( BeanProperties.list(IDeployImagePageModel.PROPERTY_DOCKER_CONNECTIONS).observe(model)); - IObservableValue dockerConnectionObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_DOCKER_CONNECTION) - .observe(model); + IObservableValue dockerConnectionObservable = + BeanProperties.value(IDeployImagePageModel.PROPERTY_DOCKER_CONNECTION).observe(model); DockerConnectionStatusProvider validator = new DockerConnectionStatusProvider(dockerConnectionObservable); - IObservableValue selectedConnectionObservable = ViewerProperties.singleSelection().observe(connectionViewer); + IObservableValue selectedConnectionObservable = ViewerProperties.singleSelection().observe(connectionViewer); Binding selectedConnectionBinding = ValueBindingBuilder.bind(selectedConnectionObservable) .converting(new ObservableTreeItem2ModelConverter(IDockerConnection.class)) @@ -343,8 +346,8 @@ private void createDockerConnectionInfoControl(Composite parent, DataBindingCont .span(NUM_COLUMS - 1, 1) .grab(true, false) .applyTo(connectionText); - final IObservableValue connnectionTextObservable = WidgetProperties.text(SWT.None).observe(connectionText); - final IObservableValue connnectionObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_DOCKER_CONNECTION).observe(model); + final IObservableValue connnectionTextObservable = WidgetProperties.text(SWT.None).observe(connectionText); + final IObservableValue connnectionObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_DOCKER_CONNECTION).observe(model); ValueBindingBuilder.bind(connnectionTextObservable) .notUpdatingParticipant() .to(connnectionObservable) @@ -371,8 +374,8 @@ private void createOpenShiftConnectionControl(Composite parent, DataBindingConte .span(NUM_COLUMS - 1, 1) .grab(true, false) .applyTo(connectionText); - final IObservableValue connnectionTextObservable = WidgetProperties.text(SWT.None).observe(connectionText); - final IObservableValue connnectionObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_CONNECTION).observe(model); + final IObservableValue connnectionTextObservable = WidgetProperties.text(SWT.None).observe(connectionText); + final IObservableValue connnectionObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_CONNECTION).observe(model); ValueBindingBuilder.bind(connnectionTextObservable) .notUpdatingParticipant() .to(connnectionObservable) @@ -410,8 +413,8 @@ private void createProjectControl(Composite parent, DataBindingContext dbc) { cmboProject.setComparator(comparator); model.setProjectsComparator(comparator.asProjectComparator()); - IObservableValue projectObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_PROJECT) - .observe(model); + IObservableValue projectObservable = + BeanProperties.value(IDeployImagePageModel.PROPERTY_PROJECT).observe(model); ProjectStatusProvider validator = new ProjectStatusProvider(projectObservable); IObservableValue selectedProjectObservable = ViewerProperties.singleSelection().observe(cmboProject); Binding selectedProjectBinding = @@ -470,9 +473,9 @@ private void createImageNameControls(final Composite parent, final DataBindingCo .align(SWT.FILL, SWT.CENTER) .grab(true, false) .applyTo(imageNameText); - final IObservableValue imageNameTextObservable = + final IObservableValue imageNameTextObservable = WidgetProperties.text(SWT.Modify).observeDelayed(500, imageNameText); - final IObservableValue imageNameObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_IMAGE_NAME).observe(model); + final IObservableValue imageNameObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_IMAGE_NAME).observe(model); Binding imageBinding = ValueBindingBuilder.bind(imageNameTextObservable) .validatingAfterConvert(new DockerImageValidator()) .to(imageNameObservable).in(dbc); @@ -502,9 +505,12 @@ public void insertControlContents(Control control, btnDockerBrowse.setToolTipText("Look-up an image by browsing the Docker daemon"); btnDockerBrowse.addSelectionListener(onBrowseImage()); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(btnDockerBrowse); - ValueBindingBuilder.bind(WidgetProperties.enabled().observe(btnDockerBrowse)).notUpdatingParticipant() + ValueBindingBuilder + .bind(WidgetProperties.enabled().observe(btnDockerBrowse)) + .notUpdatingParticipant() .to(BeanProperties.value(IDeployImagePageModel.PROPERTY_DOCKER_CONNECTION).observe(model)) - .converting(new IsNotNull2BooleanConverter()).in(dbc); + .converting(new IsNotNull2BooleanConverter()) + .in(dbc); // search on Docker registry (Docker Hub) Button btnDockerSearch = new Button(parent, SWT.NONE); @@ -647,22 +653,14 @@ public IContentProposal[] getProposals(final String input, private SelectionAdapter onNewProjectClicked() { return new SelectionAdapter() { - /* (non-Javadoc) - * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) - */ @Override public void widgetSelected(SelectionEvent e) { try { // run in job to enforce busy cursor which doesnt work otherwise - WizardUtils.runInWizard(new UIUpdatingJob("Opening projects wizard...") { - - @Override - protected IStatus run(IProgressMonitor monitor) { - return Status.OK_STATUS; - } + WizardUtils.runInWizard(new UIJob("Opening projects wizard...") { - @Override - protected IStatus updateUI(IProgressMonitor monitor) { + @Override + public IStatus runInUIThread(IProgressMonitor monitor) { NewProjectWizard newProjectWizard = new NewProjectWizard(model.getConnection(), (List) model.getProjects()); int result = new OkCancelButtonWizardDialog(getShell(), newProjectWizard).open(); // reload projects to reflect changes that happened in @@ -679,7 +677,7 @@ protected IStatus updateUI(IProgressMonitor monitor) { } } return Status.OK_STATUS; - } + } }, getContainer(), getDataBindingContext()); } catch (InvocationTargetException | InterruptedException ex) { // swallow intentionnally