Author: adietish
Date: 2011-09-07 06:51:53 -0400 (Wed, 07 Sep 2011)
New Revision: 34568
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/AbstractOpenshiftJsonResponseUnmarshaller.java
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ApplicationResponseUnmarshaller.java
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ListCartridgesResponseUnmarshaller.java
Removed:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/AbstractOpenshiftJsonResponseFactory.java
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ApplicationResponseFactory.java
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/IOpenshiftJsonConstants.java
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/Openshift.java
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/request/OpenshiftJsonRequestFactory.java
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/OpenshiftResponse.java
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/META-INF/MANIFEST.MF
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/src/org/jboss/ide/eclipse/as/openshift/internal/test/core/OpenshiftIntegrationTest.java
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/src/org/jboss/ide/eclipse/as/openshift/internal/test/core/OpenshiftTest.java
Log:
[JBIDE-9510] implemented unmarshalling of cartridge list (not working with the real
service yet since they send invalid json. My impl assumes they corrected the invalid
json)
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/IOpenshiftJsonConstants.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/IOpenshiftJsonConstants.java 2011-09-07
05:02:30 UTC (rev 34567)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/IOpenshiftJsonConstants.java 2011-09-07
10:51:53 UTC (rev 34568)
@@ -27,5 +27,6 @@
public static final String PROPERTY_APP_NAME = "app_name";
public static final String PROPERTY_ACTION = "action";
public static final String PROPERTY_CARTRIDGE = "cartridge";
+ public static final String PROPERTY_CARTS = "carts";
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/Openshift.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/Openshift.java 2011-09-07
05:02:30 UTC (rev 34567)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/core/Openshift.java 2011-09-07
10:51:53 UTC (rev 34568)
@@ -27,7 +27,7 @@
import org.jboss.ide.eclipse.as.openshift.internal.core.request.ListCartridgesRequest;
import
org.jboss.ide.eclipse.as.openshift.internal.core.request.OpenshiftJsonRequestFactory;
import org.jboss.ide.eclipse.as.openshift.internal.core.request.UserInfoRequest;
-import
org.jboss.ide.eclipse.as.openshift.internal.core.response.ApplicationResponseFactory;
+import
org.jboss.ide.eclipse.as.openshift.internal.core.response.ApplicationResponseUnmarshaller;
import org.jboss.ide.eclipse.as.openshift.internal.core.response.OpenshiftResponse;
/**
@@ -91,7 +91,7 @@
new ApplicationRequestJsonMarshaller().marshall(applicationRequest);
String request = new OpenshiftJsonRequestFactory(password,
listCartridgesRequestString).create();
String response =
createHttpClient(applicationRequest.getUrl(BASE_URL)).post(request);
- OpenshiftResponse<Application> openshiftResponse = new
ApplicationResponseFactory(response, name, cartridge).create();
+ OpenshiftResponse<Application> openshiftResponse = new
ApplicationResponseUnmarshaller(response, name, cartridge).unmarshall();
return openshiftResponse.getData();
} catch (MalformedURLException e) {
throw new OpenshiftException(
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/request/OpenshiftJsonRequestFactory.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/request/OpenshiftJsonRequestFactory.java 2011-09-07
05:02:30 UTC (rev 34567)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/request/OpenshiftJsonRequestFactory.java 2011-09-07
10:51:53 UTC (rev 34568)
@@ -7,7 +7,7 @@
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
+ ******************************************************************************/
package org.jboss.ide.eclipse.as.openshift.internal.core.request;
import java.io.UnsupportedEncodingException;
@@ -16,6 +16,9 @@
import org.jboss.ide.eclipse.as.openshift.core.OpenshiftException;
/**
+ * A factory that creates the json string that the openshift rest service
+ * would consume.
+ *
* @author André Dietisheim
*/
public class OpenshiftJsonRequestFactory {
Deleted:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/AbstractOpenshiftJsonResponseFactory.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/AbstractOpenshiftJsonResponseFactory.java 2011-09-07
05:02:30 UTC (rev 34567)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/AbstractOpenshiftJsonResponseFactory.java 2011-09-07
10:51:53 UTC (rev 34568)
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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.ide.eclipse.as.openshift.internal.core.response;
-
-import org.jboss.dmr.ModelNode;
-import org.jboss.ide.eclipse.as.openshift.core.IOpenshiftJsonConstants;
-import org.jboss.ide.eclipse.as.openshift.core.IOpenshiftObject;
-import org.jboss.ide.eclipse.as.openshift.core.OpenshiftException;
-
-/**
- * @author André Dietisheim
- */
-public abstract class AbstractOpenshiftJsonResponseFactory<OPENSHIFTOBJECT extends
IOpenshiftObject> {
-
- private String response;
-
- public AbstractOpenshiftJsonResponseFactory(String response) {
- this.response = response;
- }
-
- public OpenshiftResponse<OPENSHIFTOBJECT> create() throws OpenshiftException {
- ModelNode node = ModelNode.fromJSONString(response);
- boolean debug = node.get(IOpenshiftJsonConstants.PROPERTY_DEBUG).asBoolean();
- String messages = node.get(IOpenshiftJsonConstants.PROPERTY_MESSAGES).asString();
- String result = node.get(IOpenshiftJsonConstants.PROPERTY_RESULT).asString();
- int exitCode = node.get(IOpenshiftJsonConstants.PROPERTY_EXIT_CODE).asInt();
- OPENSHIFTOBJECT openshiftObject =
createOpenshiftObject(node.get(IOpenshiftJsonConstants.PROPERTY_DATA));
- return new OpenshiftResponse<OPENSHIFTOBJECT>(debug, messages, result,
openshiftObject, exitCode);
- }
-
- protected abstract OPENSHIFTOBJECT createOpenshiftObject(ModelNode node);
-
- protected String getResponse() {
- return response;
- }
-
-}
Copied:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/AbstractOpenshiftJsonResponseUnmarshaller.java
(from rev 34544,
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/AbstractOpenshiftJsonResponseFactory.java)
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/AbstractOpenshiftJsonResponseUnmarshaller.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/AbstractOpenshiftJsonResponseUnmarshaller.java 2011-09-07
10:51:53 UTC (rev 34568)
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.ide.eclipse.as.openshift.internal.core.response;
+
+import org.eclipse.osgi.util.NLS;
+import org.jboss.dmr.ModelNode;
+import org.jboss.ide.eclipse.as.openshift.core.IOpenshiftJsonConstants;
+import org.jboss.ide.eclipse.as.openshift.core.OpenshiftException;
+
+/**
+ * @author André Dietisheim
+ */
+public abstract class AbstractOpenshiftJsonResponseUnmarshaller<OPENSHIFTOBJECT> {
+
+ private String response;
+
+ public AbstractOpenshiftJsonResponseUnmarshaller(String response) {
+ this.response = response;
+ }
+
+ public OpenshiftResponse<OPENSHIFTOBJECT> unmarshall() throws OpenshiftException
{
+ try {
+ ModelNode node = ModelNode.fromJSONString(response);
+ boolean debug = node.get(IOpenshiftJsonConstants.PROPERTY_DEBUG).asBoolean();
+ String messages = node.get(IOpenshiftJsonConstants.PROPERTY_MESSAGES).asString();
+ String result = node.get(IOpenshiftJsonConstants.PROPERTY_RESULT).asString();
+ int exitCode = node.get(IOpenshiftJsonConstants.PROPERTY_EXIT_CODE).asInt();
+ OPENSHIFTOBJECT openshiftObject =
createOpenshiftObject(node.get(IOpenshiftJsonConstants.PROPERTY_DATA));
+ return new OpenshiftResponse<OPENSHIFTOBJECT>(debug, messages, result,
openshiftObject, exitCode);
+ } catch (IllegalArgumentException e) {
+ throw new OpenshiftException(NLS.bind("Could not parse response
\"{0}\"", response), e);
+ } catch (Exception e) {
+ throw new OpenshiftException(NLS.bind("Could not unmarshall response
\"{0}\"", response), e);
+ }
+ }
+
+ protected abstract OPENSHIFTOBJECT createOpenshiftObject(ModelNode dataNode);
+
+ protected String getResponse() {
+ return response;
+ }
+
+}
Property changes on:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/AbstractOpenshiftJsonResponseUnmarshaller.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Deleted:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ApplicationResponseFactory.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ApplicationResponseFactory.java 2011-09-07
05:02:30 UTC (rev 34567)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ApplicationResponseFactory.java 2011-09-07
10:51:53 UTC (rev 34568)
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 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.ide.eclipse.as.openshift.internal.core.response;
-
-import org.jboss.dmr.ModelNode;
-import org.jboss.ide.eclipse.as.openshift.core.Application;
-import org.jboss.ide.eclipse.as.openshift.internal.core.Cartridge;
-
-/**
- * @author André Dietisheim
- */
-public class ApplicationResponseFactory extends
AbstractOpenshiftJsonResponseFactory<Application> {
-
- private String applicationName;
- private Cartridge cartridge;
-
- public ApplicationResponseFactory(String response, String applicationName, Cartridge
cartridge) {
- super(response);
- this.applicationName = applicationName;
- this.cartridge = cartridge;
- }
-
- @Override
- protected Application createOpenshiftObject(ModelNode node) {
- return new Application(applicationName, cartridge);
- }
-}
Copied:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ApplicationResponseUnmarshaller.java
(from rev 34544,
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ApplicationResponseFactory.java)
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ApplicationResponseUnmarshaller.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ApplicationResponseUnmarshaller.java 2011-09-07
10:51:53 UTC (rev 34568)
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.ide.eclipse.as.openshift.internal.core.response;
+
+import org.jboss.dmr.ModelNode;
+import org.jboss.ide.eclipse.as.openshift.core.Application;
+import org.jboss.ide.eclipse.as.openshift.internal.core.Cartridge;
+
+/**
+ * @author André Dietisheim
+ */
+public class ApplicationResponseUnmarshaller extends
AbstractOpenshiftJsonResponseUnmarshaller<Application> {
+
+ private String applicationName;
+ private Cartridge cartridge;
+
+ public ApplicationResponseUnmarshaller(String response, String applicationName,
Cartridge cartridge) {
+ super(response);
+ this.applicationName = applicationName;
+ this.cartridge = cartridge;
+ }
+
+ @Override
+ protected Application createOpenshiftObject(ModelNode node) {
+ return new Application(applicationName, cartridge);
+ }
+}
Property changes on:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ApplicationResponseUnmarshaller.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ListCartridgesResponseUnmarshaller.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ListCartridgesResponseUnmarshaller.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ListCartridgesResponseUnmarshaller.java 2011-09-07
10:51:53 UTC (rev 34568)
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.ide.eclipse.as.openshift.internal.core.response;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.dmr.ModelNode;
+import org.jboss.ide.eclipse.as.openshift.core.IOpenshiftJsonConstants;
+import org.jboss.ide.eclipse.as.openshift.internal.core.Cartridge;
+
+/**
+ * @author André Dietisheim
+ */
+public class ListCartridgesResponseUnmarshaller extends
AbstractOpenshiftJsonResponseUnmarshaller<List<Cartridge>> {
+
+ public ListCartridgesResponseUnmarshaller(String response) {
+ super(response);
+ }
+
+ @Override
+ protected List<Cartridge> createOpenshiftObject(ModelNode dataNode) {
+ List<Cartridge> cartridges = new ArrayList<Cartridge>();
+ ModelNode cartridgesNode = dataNode.get(IOpenshiftJsonConstants.PROPERTY_CARTS);
+ for (ModelNode cartridgeNode : cartridgesNode.asList()) {
+ cartridges.add(createCartridge(cartridgeNode));
+ }
+ return cartridges;
+ }
+
+ private Cartridge createCartridge(ModelNode cartridgeNode) {
+ String name = cartridgeNode.asString();
+ return new Cartridge(name);
+ }
+}
Property changes on:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/ListCartridgesResponseUnmarshaller.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/OpenshiftResponse.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/OpenshiftResponse.java 2011-09-07
05:02:30 UTC (rev 34567)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.core/src/org/jboss/ide/eclipse/as/openshift/internal/core/response/OpenshiftResponse.java 2011-09-07
10:51:53 UTC (rev 34568)
@@ -10,12 +10,11 @@
******************************************************************************/
package org.jboss.ide.eclipse.as.openshift.internal.core.response;
-import org.jboss.ide.eclipse.as.openshift.core.IOpenshiftObject;
/**
* @author André Dietisheim
*/
-public class OpenshiftResponse<OPENSHIFTOBJECT extends IOpenshiftObject> {
+public class OpenshiftResponse<OPENSHIFTOBJECT> {
private boolean debug;
private String messages;
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/META-INF/MANIFEST.MF
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/META-INF/MANIFEST.MF 2011-09-07
05:02:30 UTC (rev 34567)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/META-INF/MANIFEST.MF 2011-09-07
10:51:53 UTC (rev 34568)
@@ -7,6 +7,6 @@
Bundle-Vendor: JBoss by Red Hat
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
org.junit;bundle-version="[4.8.0,5.0.0)",
- org.jboss.ide.eclipse.as.openshift.core;bundle-version="1.0.0"
+ org.jboss.ide.eclipse.as.openshift.core;bundle-version="[1.0.0,2.0.0)"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/src/org/jboss/ide/eclipse/as/openshift/internal/test/core/OpenshiftIntegrationTest.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/src/org/jboss/ide/eclipse/as/openshift/internal/test/core/OpenshiftIntegrationTest.java 2011-09-07
05:02:30 UTC (rev 34567)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/src/org/jboss/ide/eclipse/as/openshift/internal/test/core/OpenshiftIntegrationTest.java 2011-09-07
10:51:53 UTC (rev 34568)
@@ -2,6 +2,7 @@
import org.jboss.ide.eclipse.as.openshift.core.Openshift;
import org.jboss.ide.eclipse.as.openshift.core.OpenshiftException;
+import org.jboss.ide.eclipse.as.openshift.internal.core.Cartridge;
import org.junit.Before;
import org.junit.Test;
@@ -27,5 +28,9 @@
openshift.getCartridges();
}
+ @Test
+ public void canCreateApplication() throws Exception {
+ openshift.createApplication("test-application", new
Cartridge("jbossas-7.0"));
+ }
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/src/org/jboss/ide/eclipse/as/openshift/internal/test/core/OpenshiftTest.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/src/org/jboss/ide/eclipse/as/openshift/internal/test/core/OpenshiftTest.java 2011-09-07
05:02:30 UTC (rev 34567)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.openshift.test/src/org/jboss/ide/eclipse/as/openshift/internal/test/core/OpenshiftTest.java 2011-09-07
10:51:53 UTC (rev 34568)
@@ -1,9 +1,13 @@
package org.jboss.ide.eclipse.as.openshift.internal.test.core;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
import java.net.URLEncoder;
+import java.text.MessageFormat;
+import java.util.List;
+import org.jboss.ide.eclipse.as.openshift.core.OpenshiftException;
import
org.jboss.ide.eclipse.as.openshift.core.internal.marshalling.ApplicationRequestJsonMarshaller;
import
org.jboss.ide.eclipse.as.openshift.core.internal.marshalling.ListCartridgesRequestJsonMarshaller;
import
org.jboss.ide.eclipse.as.openshift.core.internal.marshalling.UserInfoRequestJsonMarshaller;
@@ -13,6 +17,8 @@
import org.jboss.ide.eclipse.as.openshift.internal.core.request.ListCartridgesRequest;
import
org.jboss.ide.eclipse.as.openshift.internal.core.request.OpenshiftJsonRequestFactory;
import org.jboss.ide.eclipse.as.openshift.internal.core.request.UserInfoRequest;
+import
org.jboss.ide.eclipse.as.openshift.internal.core.response.ListCartridgesResponseUnmarshaller;
+import org.jboss.ide.eclipse.as.openshift.internal.core.response.OpenshiftResponse;
import org.junit.Test;
public class OpenshiftTest {
@@ -70,4 +76,51 @@
assertEquals(expectedRequestString, effectiveRequest);
}
+
+ @Test
+ public void canUnmarshallCartridgeListResponse() throws OpenshiftException {
+ /*
+ * WARNING: the current (9-7-2011) response from the openshift rest
+ * service is invalid. It quotes the nested json object in the data
+ * property: '"data" : "{'. My current unmarshalling code does
not
+ * handle this bad json.
+ */
+ String cartridgeListResponse =
+ "{"
+ + "\"messages\":\"\","
+ + "\"debug\":\"\","
+ + "\"data\":"
+ +
"{\"carts\":[\"perl-5.10\",\"jbossas-7.0\",\"wsgi-3.2\",\"rack-1.1\",\"php-5.3\"]},"
+ + "\"api\":\"1.1.1\","
+ + "\"api_c\":[\"placeholder\"],"
+ + "\"result\":null,"
+ + "\"broker\":\"1.1.1\","
+ +
"\"broker_c\":[\"namespace\",\"rhlogin\",\"ssh\",\"app_uuid\",\"debug\",\"alter\",\"cartridge\",\"cart_type\",\"action\",\"app_name\",\"api\"],"
+ + "\"exit_code\":0}";
+
+ OpenshiftResponse<List<Cartridge>> response = new
ListCartridgesResponseUnmarshaller(cartridgeListResponse)
+ .unmarshall();
+ assertEquals("", response.getMessages());
+ assertEquals(false, response.isDebug());
+
+ List<Cartridge> cartridges = response.getData();
+ assertEquals(5, cartridges.size());
+ assertThatContainsCartridge("perl-5.10", cartridges);
+ assertEquals(null, response.getResult());
+ assertEquals(0, response.getExitCode());
+
+ }
+
+ private void assertThatContainsCartridge(String cartridgeName, List<Cartridge>
cartridges) {
+ boolean found = false;
+ for (Cartridge cartridge : cartridges) {
+ if (cartridgeName.equals(cartridge.getName())) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ fail(MessageFormat.format("Could not find cartridge with name
\"{0}\"", cartridgeName));
+ }
+ }
}