Author: adietish
Date: 2010-10-20 07:11:25 -0400 (Wed, 20 Oct 2010)
New Revision: 25939
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudTypeValidator.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/UrlToCloudTypeConverter.java
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudConnectionModel.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudConnectionPage.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/EditCloudConnection.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnection.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/WizardMessages.properties
Log:
[JBIDE-7371] moved deltacloud url checking to deltacloud client, added tests
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2010-10-20 11:10:48
UTC (rev 25938)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2010-10-20 11:11:25
UTC (rev 25939)
@@ -1,3 +1,12 @@
+2010-10-20 André Dietisheim <adietish(a)redhat.com>
+
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/UrlToCloudTypeConverter.java:
+ [JBIDE-7371] moved cloud type checking to DeltaCloudClient, converter now delegates to
deltacloud client
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudTypeValidator.java:
+ [JBIDE-7371] switched validator to check enum type instead of string messages
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudConnectionModel.java:
+ [JBIDE-7371] moved cloud type checking to DeltaCloudClient, removed converter and
validator
+
2010-10-19 Jeff Johnston <jjohnstn(a)redhat.com>
[JBIDE-7366]
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudConnectionModel.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudConnectionModel.java 2010-10-20
11:10:48 UTC (rev 25938)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudConnectionModel.java 2010-10-20
11:11:25 UTC (rev 25939)
@@ -10,42 +10,19 @@
******************************************************************************/
package org.jboss.tools.internal.deltacloud.ui.wizards;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.core.databinding.conversion.IConverter;
-import org.eclipse.core.databinding.validation.IValidator;
-import org.eclipse.core.databinding.validation.ValidationStatus;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
+import org.jboss.tools.deltacloud.core.client.DeltaCloudClient;
import org.jboss.tools.internal.deltacloud.ui.common.databinding.ObservablePojo;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
/**
* @author Andre Dietisheim
*/
public class CloudConnectionModel extends ObservablePojo {
- public static final String PROPERTY_URL = "url";
- public static final String PROPERTY_NAME = "name";
- public static final String PROPERTY_PASSWORD = "password";
- public static final String PROPERTY_USERNAME = "username";
- public static final String PROPERTY_TYPE = "type";
+ public static final String PROPERTY_URL = "url"; //$NON-NLS-1$
+ public static final String PROPERTY_NAME = "name"; //$NON-NLS-1$
+ public static final String PROPERTY_PASSWORD = "password"; //$NON-NLS-1$
+ public static final String PROPERTY_USERNAME = "username"; //$NON-NLS-1$
+ public static final String PROPERTY_TYPE = "type"; //$NON-NLS-1$
public static final String UNKNOWN_TYPE_LABEL = "UnknownType.label";
//$NON-NLS-1$
public static final String INVALID_URL = "ErrorInvalidURL.text";
//$NON-NLS-1$
@@ -56,107 +33,8 @@
private String username;
private String password;
- private String cloudType;
+ private DeltaCloudClient.DeltaCloudType cloudType;
- public static class CloudTypeConverter implements IConverter {
-
- private static final String HTTPHEADER_KEY_ACCEPT = "Accept"; //$NON-NLS-1$
- private static final String HTTPHEADER_VALUE_ACCEPTXML =
"application/xml;q=1.0"; //$NON-NLS-1$
- private static final String DOCUMENT_ELEMENT_DRIVER = "driver";
//$NON-NLS-1$
- private static final String DOCUMENT_ELEMENT_API = "api"; //$NON-NLS-1$
- private static final String URLCONNECTION_ENCODING = "UTF-8"; //$NON-NLS-1$
-
- @Override
- public Object getFromType() {
- return String.class;
- }
-
- @Override
- public Object getToType() {
- return String.class;
- }
-
- @Override
- public Object convert(final Object fromObject) {
- return getCloudType((String) fromObject);
- }
-
- private String getCloudType(String url) {
- String cloudType = UNKNOWN_TYPE_LABEL;
- try {
- Object o = getURLContent(url + "/api?format=xml"); //$NON-NLS-1$
- if (o instanceof InputStream) {
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document document = db.parse(
- new InputSource(new StringReader(getXML((InputStream) o))));
-
- NodeList elements = document.getElementsByTagName(DOCUMENT_ELEMENT_API);
- if (elements.getLength() > 0) {
- Node n = elements.item(0);
- Node driver = n.getAttributes().getNamedItem(DOCUMENT_ELEMENT_DRIVER);
- if (driver != null) {
- String driverValue = driver.getNodeValue();
- cloudType = driverValue.toUpperCase();
- }
- }
- }
- } catch (MalformedURLException e) {
- cloudType = WizardMessages.getString(INVALID_URL);
- } catch (IOException e) {
- cloudType = WizardMessages.getString(NONCLOUD_URL);
- } catch (ParserConfigurationException e) {
- cloudType = WizardMessages.getString(NONCLOUD_URL);
- } catch (SAXException e) {
- cloudType = WizardMessages.getString(NONCLOUD_URL);
- } catch (Exception e) {
- cloudType = WizardMessages.getString(INVALID_URL);
- }
- return cloudType;
- }
-
- private String getXML(InputStream is) throws UnsupportedEncodingException, IOException
{
- try {
- if (is == null) {
- return "";
- }
- StringBuilder sb = new StringBuilder();
- String line = "";
- BufferedReader reader = new BufferedReader(new InputStreamReader(is,
URLCONNECTION_ENCODING));
- while ((line = reader.readLine()) != null) {
- sb.append(line).append("\n"); //$NON-NLS-1$
- }
- return sb.toString();
- } finally {
- is.close();
- }
- }
-
- private Object getURLContent(String url) throws IOException {
- URL u = new URL(url);
- URLConnection connection = u.openConnection();
- connection.setRequestProperty(HTTPHEADER_KEY_ACCEPT, HTTPHEADER_VALUE_ACCEPTXML);
- return connection.getContent();
- }
- }
-
- public static class CloudTypeValidator implements IValidator {
-
- @Override
- public IStatus validate(Object value) {
- Assert.isTrue(value instanceof String);
- if (value != null
- && !WizardMessages.getString(UNKNOWN_TYPE_LABEL).equals(value)
- && !WizardMessages.getString(INVALID_URL).equals(value)
- && !WizardMessages.getString(NONCLOUD_URL).equals(value)) {
- return ValidationStatus.ok();
- } else {
- return ValidationStatus.error((String) value);
- }
- }
- }
-
-
public CloudConnectionModel(String name, String url, String username, String password)
{
this.name = name;
this.url = url;
@@ -196,11 +74,11 @@
getPropertyChangeSupport().firePropertyChange(PROPERTY_URL, this.url, this.url = url);
}
- public String getType() {
+ public DeltaCloudClient.DeltaCloudType getType() {
return cloudType;
}
- public void setType(String cloudType) {
+ public void setType(DeltaCloudClient.DeltaCloudType cloudType) {
getPropertyChangeSupport().firePropertyChange(PROPERTY_TYPE, this.cloudType,
this.cloudType = cloudType);
}
}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudConnectionPage.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudConnectionPage.java 2010-10-20
11:10:48 UTC (rev 25938)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudConnectionPage.java 2010-10-20
11:11:25 UTC (rev 25939)
@@ -149,7 +149,6 @@
// cloud type
Label typeLabel = new Label(container, SWT.NULL);
typeLabel.setText(WizardMessages.getString(CLOUDTYPE_LABEL));
-
Label computedTypeLabel = new Label(container, SWT.NULL);
Binding urlBinding = bindCloudTypeLabel(dbc, urlText, computedTypeLabel);
@@ -313,7 +312,7 @@
public void handleValueChange(ValueChangeEvent event) {
IStatus status = (IStatus) event.diff.getNewValue();
if (status.isOK()) {
- typeLabel.setText(connectionModel.getType());
+ typeLabel.setText(connectionModel.getType().toString());
} else {
typeLabel.setText("");
}
@@ -336,8 +335,8 @@
*/
private Binding bindCloudTypeLabel(DataBindingContext dbc, Text urlText, final Label
typeLabel) {
UpdateValueStrategy updateStrategy = new UpdateValueStrategy();
- updateStrategy.setConverter(new CloudConnectionModel.CloudTypeConverter());
- updateStrategy.setBeforeSetValidator(new CloudConnectionModel.CloudTypeValidator());
+ updateStrategy.setConverter(new UrlToCloudTypeConverter());
+ updateStrategy.setBeforeSetValidator(new CloudTypeValidator());
Binding binding = dbc.bindValue(
WidgetProperties.text(SWT.Modify).observeDelayed(100, urlText),
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudTypeValidator.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudTypeValidator.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudTypeValidator.java 2010-10-20
11:11:25 UTC (rev 25939)
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2010 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,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.internal.deltacloud.ui.wizards;
+
+import org.eclipse.core.databinding.validation.IValidator;
+import org.eclipse.core.databinding.validation.ValidationStatus;
+import org.eclipse.core.runtime.IStatus;
+import org.jboss.tools.deltacloud.core.client.DeltaCloudClient;
+
+public class CloudTypeValidator implements IValidator {
+
+ @Override
+ public IStatus validate(Object value) {
+ if (value != null
+ && !DeltaCloudClient.DeltaCloudType.UNKNOWN.equals(value)
+ && !DeltaCloudClient.DeltaCloudType.INVALID_URL.equals(value)) {
+ return ValidationStatus.ok();
+ } else {
+ return
ValidationStatus.error(WizardMessages.getString("IllegalCloudUrl.msg"));
//$NON-NLS-1$
+ }
+ }
+}
\ No newline at end of file
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/CloudTypeValidator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/EditCloudConnection.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/EditCloudConnection.java 2010-10-20
11:10:48 UTC (rev 25938)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/EditCloudConnection.java 2010-10-20
11:11:25 UTC (rev 25939)
@@ -79,7 +79,7 @@
String url = mainPage.getModel().getUrl();
String username = mainPage.getModel().getUsername();
String password = mainPage.getModel().getPassword();
- String type = mainPage.getModel().getType();
+ String type = mainPage.getModel().getType().toString();
try {
String oldName = cloud.getName();
cloud.editCloud(name, url, username, password, type);
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnection.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnection.java 2010-10-20
11:10:48 UTC (rev 25938)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnection.java 2010-10-20
11:11:25 UTC (rev 25939)
@@ -64,7 +64,7 @@
String url = mainPage.getModel().getUrl();
String username = mainPage.getModel().getUsername();
String password = mainPage.getModel().getPassword();
- String type = mainPage.getModel().getType();
+ String type = mainPage.getModel().getType().toString();
try {
DeltaCloud newCloud = new DeltaCloud(name, url, username, password, type, true);
DeltaCloudManager.getDefault().addCloud(newCloud);
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/UrlToCloudTypeConverter.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/UrlToCloudTypeConverter.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/UrlToCloudTypeConverter.java 2010-10-20
11:11:25 UTC (rev 25939)
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2010 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,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.internal.deltacloud.ui.wizards;
+
+import org.eclipse.core.databinding.conversion.IConverter;
+import org.jboss.tools.deltacloud.core.client.DeltaCloudClient;
+
+/**
+ * @author Andre Dietisheim
+ */
+public class UrlToCloudTypeConverter implements IConverter {
+
+ @Override
+ public Object getFromType() {
+ return String.class;
+ }
+
+ @Override
+ public Object getToType() {
+ return DeltaCloudClient.DeltaCloudType.class;
+ }
+
+ @Override
+ public Object convert(Object fromObject) {
+ String deltaCloudUrl = (String) fromObject;
+ return DeltaCloudClient.getDeltaCloudType(deltaCloudUrl);
+ }
+
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/UrlToCloudTypeConverter.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/WizardMessages.properties
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/WizardMessages.properties 2010-10-20
11:10:48 UTC (rev 25938)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/WizardMessages.properties 2010-10-20
11:11:25 UTC (rev 25939)
@@ -23,6 +23,7 @@
Password.label=Password:
TestButton.label=Test
UnknownType.label=Unknown
+IllegalCloudUrl.msg=Invalid url or non-deltacloud url.
Id.label=ID:
ImageId.label=Image ID:
OwnerId.label=Owner ID: