Skip to content

Commit

Permalink
adding generics to binding to correct warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
adietish committed Jun 27, 2016
1 parent 20b6448 commit 7a61cb6
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 51 deletions.
Expand Up @@ -207,7 +207,6 @@ public static <E> E getFirstElement(ISelection selection, Class<E> clazz) {
return adapt(getFirstElement(selection), clazz);
}

@SuppressWarnings("unchecked")
public static <E> E adapt(Object object, Class<E> clazz) {
return Adapters.adapt(object, clazz);
}
Expand Down
Expand Up @@ -66,7 +66,7 @@ public class ConnectionEditor extends BaseConnectionEditor {
private IObservableValue<String> authSchemeObservable;
private Binding selectedAuthTypeBinding;

private class DetailViewModel extends ObservablePojo{
private class DetailViewModel extends ObservablePojo {
private IConnectionEditorDetailView selectedDetailView;

public IConnectionEditorDetailView getSelectedDetailView() {
Expand All @@ -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);
Expand Down Expand Up @@ -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(
Expand Down
@@ -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,
Expand Down Expand Up @@ -75,14 +75,15 @@
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;

/**
* @author jeff.cantrill
* @author Jeff Maury
* @author Andre Dietisheim
*/
public class OAuthDetailView extends BaseDetailsView implements IConnectionEditorDetailView {

Expand Down Expand Up @@ -113,30 +114,30 @@ public String getToken() {
}
}

private IObservableValue tokenObservable;
private IObservableValue<String> tokenObservable;
private Binding tokenBinding;
private Text tokenText;
private IValueChangeListener changeListener;
private IObservableValue rememberTokenObservable;
private IObservableValue authSchemeObservable;
private IValueChangeListener<?> changeListener;
private IObservableValue<Boolean> rememberTokenObservable;
private IObservableValue<String> authSchemeObservable;
private IAuthorizationDetails authDetails;
private ConnectionWizardPageModel pageModel;
IObservableValue<?> urlObservable;
IObservableValue<String> urlObservable;
private Button rememberTokenCheckbox;
private Binding rememberTokenBinding;

private MultiValidator connectionValidator;

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<String> 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<String>(null, String.class);
this.rememberTokenObservable = new WritableValue<Boolean>(Boolean.FALSE, Boolean.class);
this.connectionValidator = ConnectionValidatorFactory.
createOAuthAuthenticationValidator(pageModel, tokenObservable, urlObservable);
this.authSchemeObservable = authSchemeObservable;
this.changeListener = changeListener;
Expand All @@ -145,7 +146,7 @@ public OAuthDetailView(IWizard wizard, ConnectionWizardPageModel pageModel, IVal
}
}

IObservableValue getRememberTokenObservable() {
IObservableValue<Boolean> getRememberTokenObservable() {
return rememberTokenObservable;
}

Expand Down Expand Up @@ -303,7 +304,7 @@ public void run() {
});
}

private class AuthDetailsJob extends Job{
private class AuthDetailsJob extends Job {

private IAuthorizationDetails details;
private String host;
Expand All @@ -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() {
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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<IDockerConnection> 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))
Expand Down Expand Up @@ -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<String> connnectionTextObservable = WidgetProperties.text(SWT.None).observe(connectionText);
final IObservableValue<IDockerConnection> connnectionObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_DOCKER_CONNECTION).observe(model);
ValueBindingBuilder.bind(connnectionTextObservable)
.notUpdatingParticipant()
.to(connnectionObservable)
Expand All @@ -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<String> connnectionTextObservable = WidgetProperties.text(SWT.None).observe(connectionText);
final IObservableValue<IConnection> connnectionObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_CONNECTION).observe(model);
ValueBindingBuilder.bind(connnectionTextObservable)
.notUpdatingParticipant()
.to(connnectionObservable)
Expand Down Expand Up @@ -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<IProject> projectObservable =
BeanProperties.value(IDeployImagePageModel.PROPERTY_PROJECT).observe(model);
ProjectStatusProvider validator = new ProjectStatusProvider(projectObservable);
IObservableValue selectedProjectObservable = ViewerProperties.singleSelection().observe(cmboProject);
Binding selectedProjectBinding =
Expand Down Expand Up @@ -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<String> imageNameTextObservable =
WidgetProperties.text(SWT.Modify).observeDelayed(500, imageNameText);
final IObservableValue imageNameObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_IMAGE_NAME).observe(model);
final IObservableValue<String> imageNameObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_IMAGE_NAME).observe(model);
Binding imageBinding = ValueBindingBuilder.bind(imageNameTextObservable)
.validatingAfterConvert(new DockerImageValidator())
.to(imageNameObservable).in(dbc);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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<IProject>) model.getProjects());
int result = new OkCancelButtonWizardDialog(getShell(), newProjectWizard).open();
// reload projects to reflect changes that happened in
Expand All @@ -679,7 +677,7 @@ protected IStatus updateUI(IProgressMonitor monitor) {
}
}
return Status.OK_STATUS;
}
}
}, getContainer(), getDataBindingContext());
} catch (InvocationTargetException | InterruptedException ex) {
// swallow intentionnally
Expand Down

0 comments on commit 7a61cb6

Please sign in to comment.