Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[OSJC-110] implemented ICartridge#isObsolete #154

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<!-- Artifact Information -->
<groupId>com.openshift</groupId>
<artifactId>openshift-java-client</artifactId>
<version>2.6.0.Final</version>
<version>2.6.1.Final</version>
<packaging>jar</packaging>
<name>OpenShift Java Client</name>
<url>http://openshift.redhat.com</url>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ public CartridgeType getType() {
*
* @see APIResource#getEmbeddableCartridges()
*/
public EmbeddableCartridge(final String name, String displayName, String description) {
super(name, displayName, description);
public EmbeddableCartridge(final String name, String displayName, String description, boolean obsolete) {
super(name, displayName, description, obsolete);
}

@Override
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/com/openshift/client/cartridge/ICartridge.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,11 @@ public interface ICartridge {

public CartridgeType getType();

/**
* Returns <code>true</code> if this cartridge is obsolete, <code>false</code> otherwise.
*
* @return true if this cartridge is obsolete
*/
boolean isObsolete();

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

import java.net.URL;

import com.openshift.internal.client.APIResource;
import com.openshift.internal.client.ApplicationResource;
import com.openshift.internal.client.CartridgeType;
import com.openshift.internal.client.cartridge.BaseCartridge;

Expand All @@ -36,11 +38,21 @@ public StandaloneCartridge(String name, URL url) {
super(name, url);
}

public StandaloneCartridge(String name, String displayName, String description) {
super(name, null, displayName, description);
/**
* Constructor used when available cartridges are loaded from OpenShift
*
* @see APIResource#getEmbeddableCartridges()
*/
public StandaloneCartridge(String name, String displayName, String description, boolean obsolete) {
super(name, null, displayName, description, obsolete);
}

public StandaloneCartridge(String name, URL url, String displayName, String description) {
/**
* Constructor used when cartridges are reported within application
*
* @see ApplicationResource#updateCartridges
*/
public StandaloneCartridge(String name, URL url, String displayName, String description, boolean obsolete) {
super(name, url, displayName, description);
}

Expand Down
8 changes: 4 additions & 4 deletions src/main/java/com/openshift/internal/client/APIResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -212,20 +212,20 @@ private void loadCartridges() throws OpenShiftException {
this.standaloneCartridges = new ArrayList<IStandaloneCartridge>();
this.embeddableCartridges = new ArrayList<IEmbeddableCartridge>();
for (CartridgeResourceDTO cartridgeDTO : cartridgeDTOsByName.values()) {
addCartridgeCartridge(cartridgeDTO, standaloneCartridges, embeddableCartridges);
addCartridge(cartridgeDTO, standaloneCartridges, embeddableCartridges);
}
}

private void addCartridgeCartridge(CartridgeResourceDTO dto, List<IStandaloneCartridge> standaloneCartridges,
private void addCartridge(CartridgeResourceDTO dto, List<IStandaloneCartridge> standaloneCartridges,
List<IEmbeddableCartridge> embeddableCartridges) {
switch (dto.getType()) {
case STANDALONE:
standaloneCartridges.add(
new StandaloneCartridge(dto.getName(), dto.getDisplayName(), dto.getDescription()));
new StandaloneCartridge(dto.getName(), dto.getDisplayName(), dto.getDescription(), dto.getObsolete()));
break;
case EMBEDDED:
embeddableCartridges.add(
new EmbeddableCartridge(dto.getName(), dto.getDisplayName(), dto.getDescription()));
new EmbeddableCartridge(dto.getName(), dto.getDisplayName(), dto.getDescription(), dto.getObsolete()));
break;
case UNDEFINED:
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -465,7 +465,8 @@ private void createStandaloneCartrdige(CartridgeResourceDTO cartridgeDTO) {
cartridgeDTO.getName(),
cartridgeDTO.getUrl(),
cartridgeDTO.getDisplayName(),
cartridgeDTO.getDescription());
cartridgeDTO.getDescription(),
cartridgeDTO.getObsolete());
}

private void addOrUpdateEmbeddedCartridge(String name, CartridgeResourceDTO cartridgeDTO) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public class EmbeddedCartridgeResource extends AbstractOpenShiftResource impleme
private String description;
private final CartridgeType type;
private URL url;
private boolean obsolete;
private final ApplicationResource application;
private CartridgeResourceProperties properties;

Expand All @@ -44,6 +45,7 @@ protected EmbeddedCartridgeResource(final CartridgeResourceDTO dto, final Applic
this.description = dto.getDescription();
this.type = CartridgeType.EMBEDDED;
this.url = dto.getUrl();
this.obsolete = dto.getObsolete();
this.properties = dto.getProperties();
this.application = application;
}
Expand Down Expand Up @@ -78,6 +80,11 @@ public boolean isDownloadable() {
return url != null;
}

@Override
public boolean isObsolete() {
return obsolete;
}

@Override
public IApplication getApplication() {
return application;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public class BaseCartridge implements ICartridge {
private String displayName;
private String description;
private URL url;
private boolean obsolete;

public BaseCartridge(final String name) {
this(name, null, null, null);
Expand All @@ -45,15 +46,25 @@ protected BaseCartridge(final String name, URL url) {
this(name, url, null, null);
}

protected BaseCartridge(final String name, String displayName, String description) {
this(name, null, displayName, description);
/**
* Constructor used when available cartridges are loaded from OpenShift
*
* @see APIResource#getEmbeddableCartridges()
*/
protected BaseCartridge(final String name, String displayName, String description, boolean obsolete) {
this(name, null, displayName, description, obsolete);
}

protected BaseCartridge(final String name, URL url, String displayName, String description) {
this(name, url, displayName, description, false);
}

protected BaseCartridge(final String name, URL url, String displayName, String description, boolean obsolete) {
this.url = url;
this.name = name;
this.displayName = getDisplayName(displayName, url);
this.description = description;
this.obsolete = obsolete;
}

protected String getDisplayName(final String displayName, URL url) {
Expand Down Expand Up @@ -95,6 +106,11 @@ public CartridgeType getType() {
return CartridgeType.UNDEFINED;
}

@Override
public boolean isObsolete() {
return obsolete;
}

@Override
public int hashCode() {
final int prime = 31;
Expand Down Expand Up @@ -143,6 +159,7 @@ public String toString() {
+ ", url=" + url
+ ", displayName = " + displayName
+ ", description=" + description
+ ", obsolete=" + obsolete
+ " ]";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,26 +28,28 @@ public class CartridgeResourceDTO extends BaseResourceDTO {
private String description;
private final CartridgeType type;
private URL url;
private boolean obsolete;
private CartridgeResourceProperties properties;

protected CartridgeResourceDTO(final String name, final CartridgeType type, final CartridgeResourceProperties properties) {
this(name, null, null, type, null, properties, null, null);
protected CartridgeResourceDTO(final String name, final CartridgeType type, boolean obsolete, final CartridgeResourceProperties properties) {
this(name, null, null, type, null, obsolete, properties, null, null);
}

protected CartridgeResourceDTO(final String name, final String displayName, final String description,
final String type, URL url, CartridgeResourceProperties properties, final Map<String, Link> links, final Messages messages) {
this(name, displayName, description, CartridgeType.safeValueOf(type), url, properties, links, messages);
final String type, URL url, boolean obsolete, CartridgeResourceProperties properties, final Map<String, Link> links, final Messages messages) {
this(name, displayName, description, CartridgeType.safeValueOf(type), url, obsolete, properties, links, messages);
}

CartridgeResourceDTO(final String name, final String displayName, final String description,
final CartridgeType type, URL url, CartridgeResourceProperties properties, final Map<String, Link> links,
final CartridgeType type, URL url, boolean obsolete, CartridgeResourceProperties properties, final Map<String, Link> links,
final Messages messages) {
super(links, messages);
this.name = name;
this.displayName = displayName;
this.description = description;
this.type = type;
this.url = url;
this.obsolete = obsolete;
this.properties = properties;
}

Expand All @@ -71,6 +73,10 @@ public URL getUrl() {
return url;
}

public boolean getObsolete() {
return obsolete;
}

public CartridgeResourceProperties getProperties() {
return properties;
}
Expand All @@ -83,6 +89,7 @@ public String toString() {
+ ", displayName=" + displayName
+ ", type=" + type
+ ", url=" + url
+ ", obsolete=" + obsolete
+ "]";
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import static com.openshift.internal.client.utils.IOpenShiftJsonConstants.PROPERTY_MAX_GEARS;
import static com.openshift.internal.client.utils.IOpenShiftJsonConstants.PROPERTY_METHOD;
import static com.openshift.internal.client.utils.IOpenShiftJsonConstants.PROPERTY_NAME;
import static com.openshift.internal.client.utils.IOpenShiftJsonConstants.PROPERTY_OBSOLETE;
import static com.openshift.internal.client.utils.IOpenShiftJsonConstants.PROPERTY_OPTIONAL_PARAMS;
import static com.openshift.internal.client.utils.IOpenShiftJsonConstants.PROPERTY_PROPERTIES;
import static com.openshift.internal.client.utils.IOpenShiftJsonConstants.PROPERTY_REL;
Expand Down Expand Up @@ -405,9 +406,10 @@ private CartridgeResourceDTO createCartridge(ModelNode cartridgeNode, Messages m
final String description = getAsString(cartridgeNode, PROPERTY_DESCRIPTION);
final String type = getAsString(cartridgeNode, PROPERTY_TYPE);
final URL url = createUrl(getAsString(cartridgeNode, PROPERTY_URL), name);
final boolean obsolete = getAsBoolean(cartridgeNode, PROPERTY_OBSOLETE);
final CartridgeResourceProperties properties = createProperties(cartridgeNode.get(PROPERTY_PROPERTIES));
final Map<String, Link> links = createLinks(cartridgeNode.get(PROPERTY_LINKS));
return new CartridgeResourceDTO(name, displayName, description, type, url, properties, links, messages);
return new CartridgeResourceDTO(name, displayName, description, type, url, obsolete, properties, links, messages);
}

private URL createUrl(String url, String name) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ public class IOpenShiftJsonConstants {
public static final String PROPERTY_METHOD = "method";
public static final String PROPERTY_MAX_GEARS = "max_gears";
public static final String PROPERTY_NAME = "name";
public static final String PROPERTY_OBSOLETE = "obsolete";
public static final String PROPERTY_OPTIONAL_PARAMS = "optional_params";
public static final String PROPERTY_PROPERTIES = "properties";
public static final String PROPERTY_PROPERTY = "property";
Expand Down
20 changes: 19 additions & 1 deletion src/test/java/com/openshift/client/utils/CartridgeTestUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,25 @@ public static IEmbeddableCartridge foreman063() throws MalformedURLException {
return new EmbeddableCartridge("andygoldstein-foreman-0.63.0", new URL(FOREMAN_URL));
}

public static IEmbeddableCartridge createObsoleteEmbeddableCartridge(boolean obsolete) {
return new EmbeddableCartridge(
obsolete == true ? "obsolete-0.1" : "non-obsolete-0.1"
, obsolete == true ? "Obsolete 0.1" : "Non-Obsolete 0.1"
, obsolete == true ? "Obsolete Cartridge 0.1" : "Non-Obsolete Cartridge 0.1"
, obsolete) {
};
}

public static IStandaloneCartridge createObsoleteStandaloneCartridge(boolean obsolete) {
return new StandaloneCartridge(
obsolete == true ? "obsolete-0.1" : "non-obsolete-0.1"
, obsolete == true ? "Obsolete 0.1" : "Non-Obsolete 0.1"
, obsolete == true ? "Obsolete Cartridge 0.1" : "Non-Obsolete Cartridge 0.1"
, obsolete) {

};
}

public static List<ICartridge> createCartridges(String... names) {
List<ICartridge> cartridges = new ArrayList<ICartridge>();
for (String name : names) {
Expand All @@ -143,5 +162,4 @@ public static List<IEmbeddedCartridge> createEmbeddedCartridgeMocks(String... na
}
return mocks;
}

}
11 changes: 11 additions & 0 deletions src/test/java/com/openshift/internal/client/BaseCartridgeTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,17 @@ public void shouldBeDownloadableCartridges() throws Throwable {
assertThat(CartridgeTestUtils.foreman063().isDownloadable()).isTrue();
}

@Test
public void shouldBeObsoleteCartridges() throws Throwable {
// pre-conditions
// operation
// verifications
assertThat(CartridgeTestUtils.createObsoleteStandaloneCartridge(false).isObsolete()).isFalse();
assertThat(CartridgeTestUtils.createObsoleteStandaloneCartridge(true).isObsolete()).isTrue();
assertThat(CartridgeTestUtils.createObsoleteEmbeddableCartridge(false).isObsolete()).isFalse();
assertThat(CartridgeTestUtils.createObsoleteEmbeddableCartridge(true).isObsolete()).isTrue();
}

private class CartridgeFake extends BaseCartridge {

CartridgeFake(String name, URL url, String displayName) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,8 @@ public void shouldSelectNodeJsByDescriptionRegex() {
new StandaloneCartridge("nodejs-0.6", null,
"Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, "
+ "scalable network applications. Node.js is perfect for data-intensive real-time "
+ "applications that run across distributed devices.")
+ "applications that run across distributed devices."
, false)
);
StringPropertyQuery query = new StringPropertyQuery(".+platform built on Chrome's JavaScript runtime.+") {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,11 @@
import com.openshift.client.IHttpClient;
import com.openshift.client.IOpenShiftConnection;
import com.openshift.client.cartridge.EmbeddableCartridge;
import com.openshift.client.cartridge.ICartridge;
import com.openshift.client.cartridge.IEmbeddableCartridge;
import com.openshift.client.cartridge.StandaloneCartridge;
import com.openshift.client.cartridge.query.CartridgeNameQuery;
import com.openshift.client.cartridge.query.LatestVersionQuery;
import com.openshift.client.utils.CartridgeAssert;
import com.openshift.client.utils.CartridgeTestUtils;
import com.openshift.client.utils.Samples;
Expand Down Expand Up @@ -99,4 +102,17 @@ public void shouldHaveNameDisplaynameDescription() throws Throwable {
.hasDescription("MongoDB is a scalable, high-performance, open source NoSQL database.");
}

@Test
public void shouldHaveObsoleteCartridges() throws MalformedURLException {
// pre-coniditions
// operation
ICartridge metrics = new CartridgeNameQuery("metrics").get(connection.getCartridges());
ICartridge zend = new CartridgeNameQuery("zend-5.6").get(connection.getCartridges());
ICartridge php = new LatestVersionQuery("php").get(connection.getCartridges());

// verification
assertThat(metrics.isObsolete()).isTrue();
assertThat(zend.isObsolete()).isTrue();
assertThat(php.isObsolete()).isFalse();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ public void shouldRemoveRemovedCartridge() throws Throwable {

private IEmbeddedCartridge createEmbeddedCartridgeFake(String name) {
ApplicationResource applicationResourceMock = Mockito.mock(ApplicationResource.class);
CartridgeResourceDTO cartridgeDTO = new CartridgeResourceDTO(name, null, null) {
CartridgeResourceDTO cartridgeDTO = new CartridgeResourceDTO(name, null, false, null) {
};
return new EmbeddedCartridgeResource(cartridgeDTO, applicationResourceMock);
}
Expand Down
2 changes: 2 additions & 0 deletions src/test/resources/samples/get-cartridges.json
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@
"license":"Commercial",
"license_url":"http://static.zend.com/topics/Zend-License-EULA-2010-09-2.pdf",
"name":"zend-5.6",
"obsolete": true,
"scales_from":1,
"scales_to":1,
"scales_with":"haproxy-1.4",
Expand Down Expand Up @@ -479,6 +480,7 @@
"license":"GPLv2",
"license_url":"",
"name":"metrics-0.1",
"obsolete": true,
"scales_from":1,
"scales_to":1,
"scales_with":"haproxy-1.4",
Expand Down