Author: adietish
Date: 2010-11-10 10:05:47 -0500 (Wed, 10 Nov 2010)
New Revision: 26414
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/AbstractDeltaCloudRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/AbstractListObjectsRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/CreateInstanceRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/DeleteKeyRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/DeltaCloudRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfileRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfilesRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListImageRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListImagesRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListInstanceRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListInstancesRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListKeyRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListRealmRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListRealmsRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/PerformInstanceActionRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/TypeRequest.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/utils/
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/utils/UrlBuilder.java
Removed:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/HttpMethod.java
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/META-INF/MANIFEST.MF
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/DeltaCloudClientImpl.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/InstanceAction.java
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/DeltaCloudMockIntegrationTest.java
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/client/InstanceMockIntegrationTest.java
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/client/ServerTypeMockIntegrationTest.java
Log:
[JBIDE-7537] Created classes for each request type, removed base url stripping
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog 2010-11-10 14:39:29
UTC (rev 26413)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog 2010-11-10 15:05:47
UTC (rev 26414)
@@ -1,3 +1,47 @@
+2010-11-10 André Dietisheim <adietish(a)redhat.com>
+
+ * src/org/jboss/tools/deltacloud/core/client/utils/UrlBuilder.java:
+ * src/org/jboss/tools/deltacloud/core/client/DeltaCloudClientImpl.java
(DeltaCloudClientImpl):
+ (sendRequest):
+ (createRequest):
+ (getServerType):
+ (createInstance):
+ (createInstance):
+ (createInstance):
+ (createInstance):
+ (listProfile):
+ (listProfiles):
+ (listImages):
+ (listImages):
+ (listInstances):
+ (listInstances):
+ (listRealms):
+ (listRealms):
+ (createKey):
+ (createInstanceActions):
+ (listDeltaCloudObjects):
+ (getDocument):
+ (performInstanceAction):
+ * src/org/jboss/tools/deltacloud/core/client/request/TypeRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/PerformInstanceActionRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/ListRealmsRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/ListRealmRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/ListKeyRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/ListInstancesRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/ListInstanceRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/ListImagesRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/ListImageRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfilesRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfileRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/DeltaCloudRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/DeleteKeyRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/CreateInstanceRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/AbstractListObjectsRequest.java:
+ * src/org/jboss/tools/deltacloud/core/client/request/AbstractDeltaCloudRequest.java:
+ [JBIDE-7537] Created classes for each request type.
+ *
src/org/jboss/tools/deltacloud/core/client/DeltaCloudClientImpl.java (createInstanceActions):
+ [JBIDE-7537] removed base url stripping
+
2010-11-09 André Dietisheim <adietish(a)redhat.com>
* src/org/jboss/tools/deltacloud/core/client/Instance.java
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/META-INF/MANIFEST.MF
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/META-INF/MANIFEST.MF 2010-11-10
14:39:29 UTC (rev 26413)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/META-INF/MANIFEST.MF 2010-11-10
15:05:47 UTC (rev 26414)
@@ -12,7 +12,8 @@
Bundle-ActivationPolicy: lazy
Export-Package:
org.apache.http.client.methods;x-friends:="org.jboss.tools.deltacloud.test",
org.jboss.tools.deltacloud.core;x-friends:="org.jboss.tools.deltacloud.ui,org.jboss.tools.deltacloud.test",
- org.jboss.tools.deltacloud.core.client
+ org.jboss.tools.deltacloud.core.client,
+
org.jboss.tools.deltacloud.core.client.request;x-friends:="org.jboss.tools.deltacloud.test"
Bundle-ClassPath: .,
lib/apache-mime4j-0.6.jar,
lib/commons-codec-1.3.jar,
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/DeltaCloudClientImpl.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/DeltaCloudClientImpl.java 2010-11-10
14:39:29 UTC (rev 26413)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/DeltaCloudClientImpl.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -46,6 +46,22 @@
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.Path;
+import org.jboss.tools.deltacloud.core.client.request.AbstractListObjectsRequest;
+import org.jboss.tools.deltacloud.core.client.request.CreateInstanceRequest;
+import org.jboss.tools.deltacloud.core.client.request.DeleteKeyRequest;
+import org.jboss.tools.deltacloud.core.client.request.DeltaCloudRequest;
+import org.jboss.tools.deltacloud.core.client.request.DeltaCloudRequest.HttpMethod;
+import org.jboss.tools.deltacloud.core.client.request.ListHardwareProfileRequest;
+import org.jboss.tools.deltacloud.core.client.request.ListImageRequest;
+import org.jboss.tools.deltacloud.core.client.request.ListHardwareProfilesRequest;
+import org.jboss.tools.deltacloud.core.client.request.ListImagesRequest;
+import org.jboss.tools.deltacloud.core.client.request.ListInstanceRequest;
+import org.jboss.tools.deltacloud.core.client.request.ListInstancesRequest;
+import org.jboss.tools.deltacloud.core.client.request.ListKeyRequest;
+import org.jboss.tools.deltacloud.core.client.request.ListRealmRequest;
+import org.jboss.tools.deltacloud.core.client.request.ListRealmsRequest;
+import org.jboss.tools.deltacloud.core.client.request.PerformInstanceActionRequest;
+import org.jboss.tools.deltacloud.core.client.request.TypeRequest;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
@@ -55,7 +71,6 @@
public class DeltaCloudClientImpl implements InternalDeltaCloudClient {
- private static final String BASEURL_API = "/api";
private static final String PEM_FILE_SUFFIX = "pem";
private static final String DOCUMENT_ELEMENT_DRIVER = "driver";
private static final String DOCUMENT_ELEMENT_API = "api";
@@ -66,33 +81,6 @@
UNKNOWN, MOCK, EC2
}
- private static enum DCNS {
- TYPE {
- public String getResourceName() {
- return "";
- }
- }
- ,
- INSTANCES
- , REALMS
- , IMAGES
- , HARDWARE_PROFILES
- , KEYS
- , START
- , STOP
- , REBOOT
- , DESTROY;
-
- @Override
- public String toString() {
- return "/" + getResourceName();
- }
-
- public String getResourceName() {
- return name().toLowerCase();
- }
- }
-
private URL baseUrl;
private String username;
private String password;
@@ -105,26 +93,25 @@
logger.debug("Creating new Delta Cloud Client for Server: " + url);
- this.baseUrl = new URL(url + BASEURL_API);
+ this.baseUrl = new URL(url);
this.username = username;
this.password = password;
}
- private String sendRequest(String path, HttpMethod httpMethod) throws
DeltaCloudClientException {
+ protected String sendRequest(DeltaCloudRequest deltaCloudRequest) throws
DeltaCloudClientException {
DefaultHttpClient httpClient = addCredentials(new DefaultHttpClient());
- String requestUrl = baseUrl.toString() + path;
- logger.debug("Sending Request to: " + requestUrl);
+ logger.debug("Sending Request to: " + deltaCloudRequest.getUrl());
try {
- HttpUriRequest request = getRequest(httpMethod, requestUrl);
+ HttpUriRequest request = createRequest(deltaCloudRequest);
HttpResponse httpResponse = httpClient.execute(request);
- throwOnHttpErrors(requestUrl, httpResponse);
+ throwOnHttpErrors(deltaCloudRequest.getUrl(), httpResponse);
return getResponse(httpResponse.getEntity());
} catch (DeltaCloudClientException e) {
throw e;
} catch (IOException e) {
- logger.error("Error processing request to: " + requestUrl, e);
- throw new DeltaCloudClientException("Error processing request to: " +
requestUrl, e);
+ logger.error("Error processing request to: " + deltaCloudRequest.getUrl(),
e);
+ throw new DeltaCloudClientException("Error processing request to: " +
deltaCloudRequest.getUrl(), e);
} catch (Exception e) {
throw new DeltaCloudClientException(e.getMessage());
} finally {
@@ -170,18 +157,20 @@
* the requested url
* @return the request instance
*/
- protected HttpUriRequest getRequest(HttpMethod httpMethod, String requestUrl) {
+ protected HttpUriRequest createRequest(DeltaCloudRequest deltaCloudRequest) {
HttpUriRequest request = null;
+ String url = deltaCloudRequest.getUrl();
+ HttpMethod httpMethod = deltaCloudRequest.getHttpMethod();
switch (httpMethod) {
case POST:
- request = new HttpPost(requestUrl);
+ request = new HttpPost(url);
break;
case DELETE:
- request = new HttpDelete(requestUrl);
+ request = new HttpDelete(url);
break;
case GET:
default:
- request = new HttpGet(requestUrl);
+ request = new HttpGet(url);
}
request.setHeader("Accept", "application/xml;q=1");
return request;
@@ -228,8 +217,7 @@
public DeltaCloudServerType getServerType() {
DeltaCloudServerType serverType = DeltaCloudServerType.UNKNOWN;
try {
- String query = "?format=xml";
- String apiResponse = sendRequest(DCNS.TYPE + query, HttpMethod.GET);
+ String apiResponse = sendRequest(new TypeRequest(baseUrl));
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = db.parse(new InputSource(new StringReader(apiResponse)));
@@ -250,8 +238,7 @@
@Override
public Instance createInstance(String imageId) throws DeltaCloudClientException {
- String query = "?image_id=" + imageId;
- return buildInstance(sendRequest(DCNS.INSTANCES + query, HttpMethod.POST));
+ return buildInstance(sendRequest(new CreateInstanceRequest(baseUrl, imageId)));
}
@Override
@@ -265,58 +252,49 @@
return createInstance(imageId, profileId, realmId, name, null, memory, storage);
}
- public Instance createInstance(String imageId, String profileId, String realmId, String
name, String keyname,
- String memory, String storage) throws DeltaCloudClientException {
- String query = "?image_id=" + imageId + "&hwp_id=" + profileId
+ "&realm_id=" + realmId + "&name=" + name;
- if (memory != null)
- query += "&hwp_memory=" + memory;
- if (storage != null)
- query += "&hwp_storage=" + storage;
- if (keyname != null)
- query += "&keyname=" + keyname;
- query += "&commit=create";
- return buildInstance(sendRequest(DCNS.INSTANCES + query, HttpMethod.POST));
+ public Instance createInstance(String imageId, String profileId, String realmId, String
name, String keyname, String memory, String storage) throws DeltaCloudClientException {
+ return buildInstance(sendRequest(new CreateInstanceRequest(baseUrl, imageId, profileId,
realmId, name, keyname, memory, storage)));
}
@Override
public HardwareProfile listProfile(String profileId) throws DeltaCloudClientException {
- String request = DCNS.HARDWARE_PROFILES + "/" + profileId;
- return buildDeltaCloudObject(HardwareProfile.class, sendRequest(request,
HttpMethod.GET));
+ return buildDeltaCloudObject(HardwareProfile.class, sendRequest(new
ListHardwareProfileRequest(baseUrl, profileId)));
}
@Override
public List<HardwareProfile> listProfiles() throws DeltaCloudClientException {
- return listDeltaCloudObjects(HardwareProfile.class, DCNS.HARDWARE_PROFILES.toString(),
"hardware_profile");
+ return listDeltaCloudObjects(HardwareProfile.class,
+ new ListHardwareProfilesRequest(baseUrl),"hardware_profile");
}
@Override
public List<Image> listImages() throws DeltaCloudClientException {
- return listDeltaCloudObjects(Image.class, DCNS.IMAGES.toString(), "image");
+ return listDeltaCloudObjects(Image.class, new ListImagesRequest(baseUrl),
"image");
}
@Override
public Image listImages(String imageId) throws DeltaCloudClientException {
- return JAXB.unmarshal(new StringReader(sendRequest(DCNS.IMAGES + "/" +
imageId, HttpMethod.GET)), Image.class);
+ return JAXB.unmarshal(new StringReader(sendRequest(new ListImageRequest(baseUrl,
imageId))), Image.class);
}
@Override
public List<Instance> listInstances() throws DeltaCloudClientException {
- return listDeltaCloudObjects(Instance.class, DCNS.INSTANCES.toString(),
"instance");
+ return listDeltaCloudObjects(Instance.class, new ListInstancesRequest(baseUrl),
"instance");
}
@Override
public Instance listInstances(String instanceId) throws DeltaCloudClientException {
- return buildInstance(sendRequest(DCNS.INSTANCES + "/" + instanceId,
HttpMethod.GET));
+ return buildInstance(sendRequest(new ListInstanceRequest(baseUrl, instanceId)));
}
@Override
public List<Realm> listRealms() throws DeltaCloudClientException {
- return listDeltaCloudObjects(Realm.class, DCNS.REALMS.toString(), "realm");
+ return listDeltaCloudObjects(Realm.class, new ListRealmsRequest(baseUrl),
"realm");
}
@Override
public Realm listRealms(String realmId) throws DeltaCloudClientException {
- return JAXB.unmarshal(new StringReader(sendRequest(DCNS.REALMS + "/" +
realmId, HttpMethod.GET)), Realm.class);
+ return JAXB.unmarshal(new StringReader(sendRequest(new ListRealmRequest(baseUrl,
realmId))), Realm.class);
}
/**
@@ -332,7 +310,7 @@
* the delta cloud client exception
*/
public void createKey(String keyname, String keyStoreLocation) throws
DeltaCloudClientException {
- String xml = sendRequest(DCNS.KEYS + "?name=" + keyname, HttpMethod.POST);
+ String xml = sendRequest(new ListKeyRequest(baseUrl, keyname));
try {
String key = trimKey(getKey(xml));
File keyFile = createKeyFile(keyname, keyStoreLocation);
@@ -383,7 +361,7 @@
}
public void deleteKey(String keyname) throws DeltaCloudClientException {
- sendRequest(DCNS.KEYS + "/" + keyname, HttpMethod.DELETE);
+ sendRequest(new DeleteKeyRequest(baseUrl, keyname));
}
private Instance updateInstance(String xml, Instance instance) throws
DeltaCloudClientException {
@@ -409,7 +387,7 @@
throw newException;
}
}
-
+
private Instance buildInstance(String xml) throws DeltaCloudClientException {
Instance instance = JAXB.unmarshal(new StringReader(xml), Instance.class);
updateInstance(xml, instance);
@@ -427,22 +405,12 @@
String name = getAttributeTextContent("rel", attributes, node);
String url = getAttributeTextContent("href", attributes, node);
String method = getAttributeTextContent("method", attributes, node);
- actions.add(new InstanceAction(name, stripBaseUrl(url), method, instance));
+ actions.add(new InstanceAction(name, url, method, instance));
}
});
return actions;
}
- private String stripBaseUrl(String url) throws DeltaCloudClientException {
- String baseUrlString = baseUrl.toString();
- if (url.indexOf(baseUrlString) != 0) {
- throw new DeltaCloudClientException(MessageFormat.format(
- "Resource at {0} is not child resource of root resource at {1}", url,
baseUrl));
- }
-
- return url.substring(baseUrlString.length());
- }
-
private String getAttributeTextContent(String attributeName, NamedNodeMap namedNodeMap,
Node node)
throws DeltaCloudClientException {
Node attributeNode = namedNodeMap.getNamedItem(attributeName);
@@ -604,10 +572,11 @@
return href.substring(href.lastIndexOf("/") + 1, href.length());
}
- private <T extends DeltaCloudObject> List<T>
listDeltaCloudObjects(Class<T> clazz, String path, String elementName)
+ private <T extends DeltaCloudObject> List<T>
listDeltaCloudObjects(Class<T> clazz,
+ AbstractListObjectsRequest request, String elementName)
throws DeltaCloudClientException {
try {
- Document document = getDocument(path);
+ Document document = getDocument(sendRequest(request));
ArrayList<T> dco = new ArrayList<T>();
NodeList nodeList = document.getElementsByTagName(elementName);
for (int i = 0; i < nodeList.getLength(); i++) {
@@ -621,9 +590,9 @@
}
}
- private Document getDocument(String path) throws DeltaCloudClientException,
ParserConfigurationException,
+ private Document getDocument(String response) throws ParserConfigurationException,
SAXException, IOException {
- InputSource is = new InputSource(new StringReader(sendRequest(path, HttpMethod.GET)));
+ InputSource is = new InputSource(new StringReader(response));
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(is);
@@ -643,9 +612,15 @@
public boolean performInstanceAction(InstanceAction action) throws
DeltaCloudClientException {
if (action != null) {
- String response = sendRequest(action.getUrl(), action.getMethod());
- if (!InstanceAction.DESTROY.equals(action.getName())) {
- updateInstance(response, action.getInstance());
+ try {
+ String response = sendRequest(new PerformInstanceActionRequest(
+ new URL(action.getUrl()),
+ action.getMethod()));
+ if (!InstanceAction.DESTROY.equals(action.getName())) {
+ updateInstance(response, action.getInstance());
+ }
+ } catch (MalformedURLException e) {
+ throw new DeltaCloudClientException(MessageFormat.format("Could not perform
action {0} on instance {1}", action.getName(), action.getInstance().getName()), e);
}
return true;
}
@@ -666,5 +641,4 @@
private interface INodeVisitor {
public void visit(Node node) throws Exception;
}
-
}
Deleted:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/HttpMethod.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/HttpMethod.java 2010-11-10
14:39:29 UTC (rev 26413)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/HttpMethod.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * 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.deltacloud.core.client;
-
-public enum HttpMethod {
- GET, POST, PUT, DELETE, HEAD;
-}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/InstanceAction.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/InstanceAction.java 2010-11-10
14:39:29 UTC (rev 26413)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/InstanceAction.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -10,6 +10,8 @@
******************************************************************************/
package org.jboss.tools.deltacloud.core.client;
+import org.jboss.tools.deltacloud.core.client.request.DeltaCloudRequest.HttpMethod;
+
/**
* An action that is executable on an instance
*
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/AbstractDeltaCloudRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/AbstractDeltaCloudRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/AbstractDeltaCloudRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+import org.jboss.tools.deltacloud.core.client.utils.UrlBuilder;
+
+
+public abstract class AbstractDeltaCloudRequest implements DeltaCloudRequest {
+
+ private String url;
+ private HttpMethod httpMethod;
+ private UrlBuilder urlBuilder;
+
+ protected AbstractDeltaCloudRequest(URL baseURL, HttpMethod httpMethod) {
+ this.httpMethod = httpMethod;
+ this.urlBuilder = createUrlBuilder(baseURL);
+ }
+
+ protected abstract String doCreateUrl(UrlBuilder urlBuilder);
+
+ protected UrlBuilder createUrlBuilder(URL baseURL) {
+ return new UrlBuilder(baseURL).path(API_PATH_SEGMENT);
+ }
+
+ public String getUrl() {
+ if (url == null) {
+ this.url = doCreateUrl(urlBuilder);
+ }
+ return url;
+ }
+
+ public HttpMethod getHttpMethod() {
+ return httpMethod;
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/AbstractDeltaCloudRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/AbstractListObjectsRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/AbstractListObjectsRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/AbstractListObjectsRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+import org.jboss.tools.deltacloud.core.client.utils.UrlBuilder;
+
+
+/**
+ * Lists images, instances, realms or profiles on the deltacloud server.
+ *
+ * @see ListRealmRequest
+ * @see ListHardwareProfilesRequest
+ * @see ListHardwareProfilesRequest
+ * @see ListInstancesRequest
+ */
+public abstract class AbstractListObjectsRequest extends AbstractDeltaCloudRequest {
+
+ private String objectType;
+
+ public AbstractListObjectsRequest(URL baseUrl, String objectType) {
+ super(baseUrl, HttpMethod.GET);
+ this.objectType = objectType;
+ }
+
+ @Override
+ protected String doCreateUrl(UrlBuilder urlBuilder) {
+ return urlBuilder.path(objectType).toString();
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/AbstractListObjectsRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/CreateInstanceRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/CreateInstanceRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/CreateInstanceRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+import org.jboss.tools.deltacloud.core.client.utils.UrlBuilder;
+
+/**
+ * Creates a new instance
+ */
+public class CreateInstanceRequest extends AbstractDeltaCloudRequest {
+
+ private String imageId;
+ private String profileId;
+ private String realmId ;
+ private String name ;
+ private String keyName;
+ private String memory;
+ private String storage;
+
+ public CreateInstanceRequest(URL baseUrl, String imageId) {
+ this(baseUrl, imageId, null, null, null, null, null, null);
+ }
+
+ public CreateInstanceRequest(URL baseUrl, String imageId, String profileId, String
realmId, String name,
+ String keyname, String memory, String storage) {
+ super(baseUrl, HttpMethod.POST);
+ this.imageId = imageId;
+ this.profileId = profileId;
+ this.realmId = realmId;
+ this.name = name;
+ this.keyName = keyname;
+ this.memory = memory;
+ this.storage = storage;
+ }
+
+ @Override
+ protected String doCreateUrl(UrlBuilder urlBuilder) {
+ urlBuilder.path("instances").parameter("image_id", imageId);
+ appendParameter("hwp_id", profileId, urlBuilder);
+ appendParameter("realm_id", realmId, urlBuilder);
+ appendParameter("name", name, urlBuilder);
+ appendParameter("hwp_memory", memory, urlBuilder);
+ appendParameter("hwp_storage", storage, urlBuilder);
+ appendParameter("keyname", keyName, urlBuilder);
+ appendParameter("commit", "create", urlBuilder);
+ return urlBuilder.toString();
+ }
+
+ private void appendParameter(String parameterName, String parameterValue, UrlBuilder
urlBuilder) {
+ if (parameterValue != null) {
+ urlBuilder.parameter(parameterName, parameterValue);
+ }
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/CreateInstanceRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/DeleteKeyRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/DeleteKeyRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/DeleteKeyRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+import org.jboss.tools.deltacloud.core.client.utils.UrlBuilder;
+
+
+/**
+ * Deletes a key on the deltacloud server
+ */
+public class DeleteKeyRequest extends AbstractDeltaCloudRequest {
+
+ private String keyName;
+
+ public DeleteKeyRequest(URL baseUrl, String keyName) {
+ super(baseUrl, HttpMethod.DELETE);
+ this.keyName = keyName;
+ }
+
+ @Override
+ protected String doCreateUrl(UrlBuilder urlBuilder) {
+ return urlBuilder.path("keys").path(keyName).toString();
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/DeleteKeyRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/DeltaCloudRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/DeltaCloudRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/DeltaCloudRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+public interface DeltaCloudRequest {
+
+ public static final char PATH_SEPARATOR = '/';
+ public static final char PARAMETER_SEPARATOR = '?';
+ public static final String API_PATH_SEGMENT = "api";
+
+ public enum HttpMethod {
+ GET, POST, PUT, DELETE, HEAD;
+ }
+
+ public String getUrl();
+
+ public HttpMethod getHttpMethod();
+
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/DeltaCloudRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfileRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfileRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfileRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+import org.jboss.tools.deltacloud.core.client.utils.UrlBuilder;
+
+
+/**
+ * A request for a hardware profile on a deltacloud server.
+ */
+public class ListHardwareProfileRequest extends AbstractDeltaCloudRequest {
+
+ private String profileId;
+
+ /**
+ * Instantiates a new type request.
+ *
+ * @param baseUrl the base url
+ * @param imageId
+ */
+ public ListHardwareProfileRequest(URL baseUrl, String profileId) {
+ super(baseUrl, HttpMethod.GET);
+ this.profileId = profileId;
+ }
+
+ @Override
+ protected String doCreateUrl(UrlBuilder urlBuilder) {
+ return urlBuilder.path("hardware_profiles").path(profileId).toString();
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfileRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfilesRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfilesRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfilesRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+
+/**
+ * Lists profiles on the deltacloud server.
+ */
+public class ListHardwareProfilesRequest extends AbstractListObjectsRequest {
+
+ public ListHardwareProfilesRequest(URL baseUrl) {
+ super(baseUrl, "hardware_profiles");
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListHardwareProfilesRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListImageRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListImageRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListImageRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+import org.jboss.tools.deltacloud.core.client.utils.UrlBuilder;
+
+
+/**
+ * A request for an image on a deltacloud server.
+ */
+public class ListImageRequest extends AbstractDeltaCloudRequest {
+
+ private String imageId;
+
+ public ListImageRequest(URL baseUrl, String imageId) {
+ super(baseUrl, HttpMethod.GET);
+ this.imageId = imageId;
+ }
+
+ @Override
+ protected String doCreateUrl(UrlBuilder urlBuilder) {
+ return urlBuilder.path("images").path(imageId).toString();
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListImageRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListImagesRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListImagesRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListImagesRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+
+/**
+ * Lists images on the deltacloud server.
+ */
+public class ListImagesRequest extends AbstractListObjectsRequest {
+
+ public ListImagesRequest(URL baseUrl) {
+ super(baseUrl, "images");
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListImagesRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListInstanceRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListInstanceRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListInstanceRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+import org.jboss.tools.deltacloud.core.client.utils.UrlBuilder;
+
+
+/**
+ * Lists an instance on the deltacloud server
+ */
+public class ListInstanceRequest extends AbstractDeltaCloudRequest {
+
+ private String instanceId;
+
+ public ListInstanceRequest(URL baseUrl, String instanceId) {
+ super(baseUrl, HttpMethod.GET);
+ this.instanceId = instanceId;
+ }
+
+ @Override
+ protected String doCreateUrl(UrlBuilder urlBuilder) {
+ return urlBuilder.path("instances").path(instanceId).toString();
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListInstanceRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListInstancesRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListInstancesRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListInstancesRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+
+/**
+ * Lists instances on the deltacloud server.
+ */
+public class ListInstancesRequest extends AbstractListObjectsRequest {
+
+ public ListInstancesRequest(URL baseUrl) {
+ super(baseUrl, "instances");
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListInstancesRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListKeyRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListKeyRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListKeyRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+import org.jboss.tools.deltacloud.core.client.utils.UrlBuilder;
+
+
+/**
+ * Lists a key on the deltacloud server
+ */
+public class ListKeyRequest extends AbstractDeltaCloudRequest {
+
+ private String keyName;
+
+ public ListKeyRequest(URL baseUrl, String keyName) {
+ super(baseUrl, HttpMethod.POST);
+ this.keyName = keyName;
+ }
+
+ @Override
+ protected String doCreateUrl(UrlBuilder urlBuilder) {
+ return urlBuilder.path("keys").parameter("name",
keyName).toString();
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListKeyRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListRealmRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListRealmRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListRealmRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+import org.jboss.tools.deltacloud.core.client.utils.UrlBuilder;
+
+
+/**
+ * Lists a realm on the deltacloud server
+ */
+public class ListRealmRequest extends AbstractDeltaCloudRequest {
+
+ private String realmId;
+
+ public ListRealmRequest(URL baseUrl, String realmId) {
+ super(baseUrl, HttpMethod.GET);
+ this.realmId = realmId;
+ }
+
+ @Override
+ protected String doCreateUrl(UrlBuilder urlBuilder) {
+ return urlBuilder.path("realms").path(realmId).toString();
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListRealmRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListRealmsRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListRealmsRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListRealmsRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+
+/**
+ * Lists realms on the deltacloud server.
+ */
+public class ListRealmsRequest extends AbstractListObjectsRequest {
+
+ public ListRealmsRequest(URL baseUrl) {
+ super(baseUrl, "realms");
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/ListRealmsRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/PerformInstanceActionRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/PerformInstanceActionRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/PerformInstanceActionRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+import org.jboss.tools.deltacloud.core.client.utils.UrlBuilder;
+
+
+/**
+ * Performs an action on a instance on the deltacloud server
+ */
+public class PerformInstanceActionRequest extends AbstractDeltaCloudRequest {
+
+ public PerformInstanceActionRequest(URL url, HttpMethod httpMethod) {
+ super(url, httpMethod);
+ }
+
+ @Override
+ protected String doCreateUrl(UrlBuilder urlBuilder) {
+ return urlBuilder.toString();
+ }
+
+ @Override
+ protected UrlBuilder createUrlBuilder(URL baseURL) {
+ return new UrlBuilder(baseURL);
+ }
+
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/PerformInstanceActionRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/TypeRequest.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/TypeRequest.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/TypeRequest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.request;
+
+import java.net.URL;
+
+import org.jboss.tools.deltacloud.core.client.utils.UrlBuilder;
+
+
+/**
+ * A request for the type of deltacloud server.
+ */
+public class TypeRequest extends AbstractDeltaCloudRequest {
+
+ public TypeRequest(URL baseUrl) {
+ super(baseUrl, HttpMethod.GET);
+ }
+
+ @Override
+ protected String doCreateUrl(UrlBuilder urlBuilder) {
+ return urlBuilder.parameter("format", "xml").toString();
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/request/TypeRequest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/utils/UrlBuilder.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/utils/UrlBuilder.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/utils/UrlBuilder.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * 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.deltacloud.core.client.utils;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Collection;
+
+/**
+ * A builder for an url. Currently no state checking is done, the user is
+ * responsible to build something that makes sense.
+ */
+public class UrlBuilder {
+ private static final String HOST_PROTOCOL_DELIMITER = ":";
+ private static final String HTTP_PROTOCOL_PREFIX = "http://";
+ private static final char PARAMETER_URL_DELIMITER = '?';
+ private static final char PARAMETER_DELIMITER = '&';
+ private static final char PARAMETER_NAME_VALUE_DELIMITER = '=';
+ private static final char PATH_SEPARATOR = '/';
+
+ private StringBuilder urlStringBuilder = new StringBuilder();
+
+ private boolean parametersAdded = false;
+
+ public UrlBuilder() {
+ }
+
+ public UrlBuilder(URL baseUrl) {
+ urlStringBuilder.append(baseUrl.toString());
+ }
+
+ /**
+ * adds a host to .
+ *
+ * @param host
+ * the host
+ *
+ * @return the url builder
+ */
+ public UrlBuilder host(String host) {
+ urlStringBuilder.append(HTTP_PROTOCOL_PREFIX);
+ urlStringBuilder.append(host);
+ return this;
+ }
+
+ /**
+ * Adds a port.
+ *
+ * @param port
+ * the port
+ *
+ * @return the url builder
+ */
+ public UrlBuilder port(Object port) {
+ urlStringBuilder.append(HOST_PROTOCOL_DELIMITER);
+ urlStringBuilder.append(port);
+ return this;
+ }
+
+ /**
+ * adds a path to the url.
+ *
+ * @param path
+ * the path
+ *
+ * @return the url builder
+ */
+ public UrlBuilder path(String path) {
+ urlStringBuilder.append(PATH_SEPARATOR);
+ urlStringBuilder.append(path);
+ return this;
+ }
+
+ public UrlBuilder path(Collection<String> paths) {
+ for (String path : paths) {
+ path(path);
+ }
+ return this;
+ }
+
+ public UrlBuilder parameter(String name, String value) {
+ appendParameterDelimiter();
+ urlStringBuilder.append(name).append(PARAMETER_NAME_VALUE_DELIMITER).append(value);
+ return this;
+ }
+
+ private void appendParameterDelimiter() {
+ if (!parametersAdded) {
+ urlStringBuilder.append(PARAMETER_URL_DELIMITER);
+ parametersAdded = true;
+ } else {
+ urlStringBuilder.append(PARAMETER_DELIMITER);
+ }
+ }
+
+ public UrlBuilder parameters(String... parameters) {
+ for (String parameter : parameters) {
+ parameter(parameter);
+ }
+ return this;
+ }
+
+ public UrlBuilder parameter(String parameter) {
+ appendParameterDelimiter();
+ urlStringBuilder.append(parameter);
+ return this;
+ }
+
+ public URL toUrl() throws MalformedURLException {
+ return new URL(urlStringBuilder.toString());
+ }
+
+ public String toString() {
+ try {
+ return toUrl().toString();
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/utils/UrlBuilder.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/DeltaCloudMockIntegrationTest.java
===================================================================
---
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/DeltaCloudMockIntegrationTest.java 2010-11-10
14:39:29 UTC (rev 26413)
+++
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/DeltaCloudMockIntegrationTest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -50,7 +50,10 @@
public void testConnectionReportsFalseOnAuthFailure() throws MalformedURLException,
DeltaCloudClientException {
ServerFake serverFake = setupServerFake("HTTP/1.1 403 Forbidden\n\n\n");
try {
- DeltaCloud deltaCloud = new DeltaCloud("aName",
"http://localhost:" + ServerFake.DEFAULT_PORT, "badUser",
+ DeltaCloud deltaCloud = new DeltaCloud(
+ "aName",
+ "http://localhost:" + ServerFake.DEFAULT_PORT,
+ "badUser",
"badPassword");
assertFalse(deltaCloud.testConnection());
} finally {
Modified:
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/client/InstanceMockIntegrationTest.java
===================================================================
---
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/client/InstanceMockIntegrationTest.java 2010-11-10
14:39:29 UTC (rev 26413)
+++
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/client/InstanceMockIntegrationTest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -29,12 +29,12 @@
import org.jboss.tools.deltacloud.core.client.DeltaCloudClientException;
import org.jboss.tools.deltacloud.core.client.DeltaCloudClientImpl;
import org.jboss.tools.deltacloud.core.client.DeltaCloudNotFoundClientException;
-import org.jboss.tools.deltacloud.core.client.HttpMethod;
import org.jboss.tools.deltacloud.core.client.Image;
import org.jboss.tools.deltacloud.core.client.Instance;
import org.jboss.tools.deltacloud.core.client.Instance.State;
import org.jboss.tools.deltacloud.core.client.InstanceAction;
import org.jboss.tools.deltacloud.core.client.InternalDeltaCloudClient;
+import org.jboss.tools.deltacloud.core.client.request.DeltaCloudRequest.HttpMethod;
import org.jboss.tools.internal.deltacloud.test.context.MockIntegrationTestContext;
import org.junit.After;
import org.junit.Before;
@@ -160,9 +160,10 @@
@Test(expected = DeltaCloudClientException.class)
public void destroyThrowExceptionOnUnknowInstanceId() throws DeltaCloudClientException,
IllegalArgumentException,
- InstantiationException, IllegalAccessException, InvocationTargetException,
SecurityException, NoSuchMethodException {
- DeltaCloudClient client = testSetup.getClient();
- ((InternalDeltaCloudClient) testSetup.getClient()).performInstanceAction(
+ InstantiationException, IllegalAccessException, InvocationTargetException,
SecurityException,
+ NoSuchMethodException {
+ InternalDeltaCloudClient client = (InternalDeltaCloudClient) testSetup.getClient();
+ client.performInstanceAction(
createInstanceAction(
InstanceAction.DESTROY,
MockIntegrationTestContext.DELTACLOUD_URL,
@@ -172,14 +173,14 @@
private Instance createInstance() throws IllegalArgumentException,
InstantiationException, IllegalAccessException,
InvocationTargetException, SecurityException, NoSuchMethodException {
- Constructor<Instance> constructor = (Constructor<Instance>) Instance.class
- .getDeclaredConstructor(null);
+ Constructor<Instance> constructor = (Constructor<Instance>)
Instance.class.getDeclaredConstructor(null);
constructor.setAccessible(true);
return constructor.newInstance();
}
private InstanceAction createInstanceAction(String name, String url, HttpMethod method,
Instance instance)
- throws IllegalArgumentException, InstantiationException, IllegalAccessException,
InvocationTargetException, SecurityException, NoSuchMethodException {
+ throws IllegalArgumentException, InstantiationException, IllegalAccessException,
InvocationTargetException,
+ SecurityException, NoSuchMethodException {
Constructor<InstanceAction> constructor = (Constructor<InstanceAction>)
InstanceAction.class
.getDeclaredConstructor(String.class, String.class, HttpMethod.class,
Instance.class);
constructor.setAccessible(true);
@@ -192,6 +193,7 @@
return instanceAction;
}
+ @SuppressWarnings("unused")
private class InstanceActionProxy implements InvocationHandler {
@Override
Modified:
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/client/ServerTypeMockIntegrationTest.java
===================================================================
---
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/client/ServerTypeMockIntegrationTest.java 2010-11-10
14:39:29 UTC (rev 26413)
+++
trunk/deltacloud/tests/org.jboss.tools.deltacloud.test/src/org/jboss/tools/internal/deltacloud/test/core/client/ServerTypeMockIntegrationTest.java 2010-11-10
15:05:47 UTC (rev 26414)
@@ -16,13 +16,14 @@
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.Collections;
+import java.util.List;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpUriRequest;
+import org.jboss.tools.deltacloud.core.client.DeltaCloudClientException;
import org.jboss.tools.deltacloud.core.client.DeltaCloudClientImpl;
-import org.jboss.tools.deltacloud.core.client.DeltaCloudClientException;
import org.jboss.tools.deltacloud.core.client.DeltaCloudNotFoundClientException;
-import org.jboss.tools.deltacloud.core.client.HttpMethod;
+import org.jboss.tools.deltacloud.core.client.Image;
+import org.jboss.tools.deltacloud.core.client.request.DeltaCloudRequest;
import org.jboss.tools.internal.deltacloud.test.context.MockIntegrationTestContext;
import org.jboss.tools.internal.deltacloud.test.fakes.ServerFake;
import org.junit.After;
@@ -53,10 +54,10 @@
@Test
public void recognizesDeltaCloud() throws IOException {
- assertEquals(DeltaCloudClientImpl.DeltaCloudServerType.MOCK,testSetup.getClient().getServerType());
+ assertEquals(DeltaCloudClientImpl.DeltaCloudServerType.MOCK,
testSetup.getClient().getServerType());
}
- /**
+/**
*
* #getServerType reports {@link DeltaCloudClient.DeltaCloudType#UNKNOWN) if it queries
a fake server that responds with a unknown answer.
*
@@ -65,10 +66,12 @@
*/
@Test
public void reportsUnknownUrl() throws IOException {
- ServerFake serverFake = new ServerFake(new
URL(MockIntegrationTestContext.SERVERFAKE_URL).getPort(),
"<dummy></dummy>");
+ ServerFake serverFake = new ServerFake(new
URL(MockIntegrationTestContext.SERVERFAKE_URL).getPort(),
+ "<dummy></dummy>");
serverFake.start();
try {
- assertEquals(DeltaCloudClientImpl.DeltaCloudServerType.UNKNOWN, new
DeltaCloudClientImpl(MockIntegrationTestContext.SERVERFAKE_URL,
MockIntegrationTestContext.DELTACLOUD_USER,
+ assertEquals(DeltaCloudClientImpl.DeltaCloudServerType.UNKNOWN, new
DeltaCloudClientImpl(
+ MockIntegrationTestContext.SERVERFAKE_URL,
MockIntegrationTestContext.DELTACLOUD_USER,
MockIntegrationTestContext.DELTACLOUD_PASSWORD).getServerType());
} finally {
serverFake.stop();
@@ -77,7 +80,8 @@
@Test(expected = DeltaCloudClientException.class)
public void listImages_cannotListIfNotAuthenticated() throws MalformedURLException,
DeltaCloudClientException {
- DeltaCloudClientImpl client = new
DeltaCloudClientImpl(MockIntegrationTestContext.DELTACLOUD_URL, "badUser",
"badPassword");
+ DeltaCloudClientImpl client = new
DeltaCloudClientImpl(MockIntegrationTestContext.DELTACLOUD_URL, "badUser",
+ "badPassword");
client.listImages();
}
@@ -86,8 +90,20 @@
try {
DeltaCloudClientImpl errorClient = new
DeltaCloudClientImpl(MockIntegrationTestContext.DELTACLOUD_URL) {
@Override
- protected HttpUriRequest getRequest(HttpMethod httpMethod, String requestUrl) {
- return new HttpGet(MockIntegrationTestContext.DELTACLOUD_URL + "/DUMMY");
+ public List<Image> listImages() throws DeltaCloudClientException {
+ sendRequest(new DeltaCloudRequest() {
+
+ @Override
+ public String getUrl() {
+ return MockIntegrationTestContext.DELTACLOUD_URL + "/DUMMY";
+ }
+
+ @Override
+ public HttpMethod getHttpMethod() {
+ return HttpMethod.GET;
+ } }
+ );
+ return Collections.emptyList();
}
};
errorClient.listImages();