Skip to content

Commit 2371f6a

Browse files
author
Daman Arora
committed
use dependency injection and coffee resource in api commands
1 parent ce58ff0 commit 2371f6a

4 files changed

Lines changed: 116 additions & 53 deletions

File tree

plugins/hackerbook/feature/src/main/java/org/apache/cloudstack/api/command/CreateCoffeeCmd.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@
2323
import org.apache.cloudstack.api.ApiConstants;
2424
import org.apache.cloudstack.api.BaseAsyncCreateCmd;
2525
import org.apache.cloudstack.api.Parameter;
26+
import org.apache.cloudstack.api.Coffee;
27+
import org.apache.cloudstack.api.CoffeeManager;
2628
import org.apache.cloudstack.api.response.CoffeeResponse;
2729
import org.apache.cloudstack.acl.RoleType;
2830

31+
import javax.inject.Inject;
2932
import java.util.Map;
3033

3134
@APICommand(
@@ -39,6 +42,9 @@
3942
)
4043
public class CreateCoffeeCmd extends BaseAsyncCreateCmd {
4144

45+
@Inject
46+
private CoffeeManager coffeeManager;
47+
4248
@Parameter(name = ApiConstants.NAME,
4349
type = CommandType.STRING,
4450
required = true,
@@ -63,25 +69,26 @@ public class CreateCoffeeCmd extends BaseAsyncCreateCmd {
6369
description = "details for the coffee order")
6470
private Map<String, String> details;
6571

66-
private Long coffeeId;
72+
private Coffee coffee;
6773

6874
@Override
6975
public void create() {
70-
// Just set a fake ID for now
71-
coffeeId = 3L;
72-
setEntityId(coffeeId);
73-
setEntityUuid("fake-uuid-" + coffeeId);
76+
coffee = coffeeManager.createCoffee(this);
77+
78+
if (coffee != null) {
79+
setEntityId(coffee.getId());
80+
setEntityUuid(coffee.getUuid());
81+
}
7482
}
7583

7684
@Override
7785
public void execute() {
78-
// Hardcoded response for now
7986
CoffeeResponse response = new CoffeeResponse();
80-
response.setId(String.valueOf(coffeeId));
81-
response.setName(name);
82-
response.setOffering(offering);
83-
response.setSize(size);
84-
response.setState("Created");
87+
response.setId(coffee.getUuid());
88+
response.setName(coffee.getName());
89+
response.setOffering(coffee.getOffering().name());
90+
response.setSize(coffee.getSize().name());
91+
response.setState(coffee.getState().name());
8592
response.setObjectName("coffee");
8693
response.setResponseName(getCommandName());
8794

plugins/hackerbook/feature/src/main/java/org/apache/cloudstack/api/command/ListCoffeeCmd.java

Lines changed: 69 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,55 +20,95 @@
2020
package org.apache.cloudstack.api.command;
2121

2222
import org.apache.cloudstack.api.APICommand;
23+
import org.apache.cloudstack.api.ApiConstants;
2324
import org.apache.cloudstack.api.BaseListCmd;
25+
import org.apache.cloudstack.api.Parameter;
26+
import org.apache.cloudstack.api.Coffee;
27+
import org.apache.cloudstack.api.CoffeeManager;
2428
import org.apache.cloudstack.api.response.CoffeeResponse;
2529
import org.apache.cloudstack.api.response.ListResponse;
30+
import org.apache.cloudstack.acl.RoleType;
31+
import org.jetbrains.annotations.NotNull;
2632

33+
import javax.inject.Inject;
2734
import java.util.ArrayList;
2835
import java.util.List;
2936

3037
@APICommand(
3138
name = "listCoffees",
32-
description = "Lists all coffees",
39+
description = "Lists all coffees with optional filters",
3340
responseObject = CoffeeResponse.class,
3441
since = "4.23.0.0",
3542
requestHasSensitiveInfo = false,
36-
responseHasSensitiveInfo = false
43+
responseHasSensitiveInfo = false,
44+
authorized = {RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User}
3745
)
3846
public class ListCoffeeCmd extends BaseListCmd {
3947

48+
@Inject
49+
private CoffeeManager coffeeManager;
50+
51+
@Parameter(name = ApiConstants.ID,
52+
type = CommandType.STRING,
53+
required = false,
54+
description = "the ID of the coffee order")
55+
private String id;
56+
57+
@Parameter(name = "offering",
58+
type = CommandType.STRING,
59+
required = false,
60+
description = "type of coffee (Espresso, Cappuccino, Mocha, Latte)")
61+
private String offering;
62+
63+
@Parameter(name = "size",
64+
type = CommandType.STRING,
65+
required = false,
66+
description = "size of coffee (SMALL, MEDIUM, LARGE)")
67+
private String size;
68+
4069
@Override
4170
public void execute() {
42-
List<CoffeeResponse> coffeeList = new ArrayList<>();
43-
44-
CoffeeResponse espresso = new CoffeeResponse();
45-
espresso.setId("1");
46-
espresso.setName("Morning Espresso");
47-
espresso.setOffering("Espresso");
48-
espresso.setSize("SMALL");
49-
espresso.setState("Brewed");
50-
espresso.setObjectName("coffee");
51-
52-
CoffeeResponse latte = new CoffeeResponse();
53-
latte.setId("2");
54-
latte.setName("Cloud Latte");
55-
latte.setOffering("Latte");
56-
latte.setSize("LARGE");
57-
latte.setState("Created");
58-
latte.setObjectName("coffee");
59-
60-
coffeeList.add(espresso);
61-
coffeeList.add(latte);
62-
63-
ListResponse<CoffeeResponse> response = new ListResponse<>();
64-
response.setResponses(coffeeList, coffeeList.size());
65-
response.setResponseName(getCommandName());
66-
response.setObjectName("coffee");
67-
setResponseObject(response);
71+
List<Coffee> coffees = coffeeManager.listCoffees(this);
72+
73+
List<CoffeeResponse> responseList = getCoffeeResponses(coffees);
74+
75+
ListResponse<CoffeeResponse> listResponse = new ListResponse<>();
76+
listResponse.setResponses(responseList, responseList.size());
77+
listResponse.setResponseName(getCommandName());
78+
listResponse.setObjectName("coffee");
79+
setResponseObject(listResponse);
80+
}
81+
82+
@NotNull
83+
private static List<CoffeeResponse> getCoffeeResponses(List<Coffee> coffees) {
84+
List<CoffeeResponse> responseList = new ArrayList<>();
85+
for (Coffee coffee : coffees) {
86+
CoffeeResponse response = new CoffeeResponse();
87+
response.setId(coffee.getUuid());
88+
response.setName(coffee.getName());
89+
response.setOffering(coffee.getOffering().name());
90+
response.setSize(coffee.getSize().name());
91+
response.setState(coffee.getState().name());
92+
response.setObjectName("coffee");
93+
responseList.add(response);
94+
}
95+
return responseList;
6896
}
6997

7098
@Override
7199
public long getEntityOwnerId() {
72100
return com.cloud.user.Account.ACCOUNT_ID_SYSTEM;
73101
}
74-
}
102+
103+
public String getId() {
104+
return id;
105+
}
106+
107+
public String getOffering() {
108+
return offering;
109+
}
110+
111+
public String getSize() {
112+
return size;
113+
}
114+
}

plugins/hackerbook/feature/src/main/java/org/apache/cloudstack/api/command/RemoveCoffeeCmd.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@
2323
import org.apache.cloudstack.api.ApiConstants;
2424
import org.apache.cloudstack.api.BaseAsyncCmd;
2525
import org.apache.cloudstack.api.Parameter;
26+
import org.apache.cloudstack.api.CoffeeManager;
2627
import org.apache.cloudstack.api.response.SuccessResponse;
2728
import org.apache.cloudstack.acl.RoleType;
2829

30+
import javax.inject.Inject;
2931
import java.util.List;
3032

3133
@APICommand(
@@ -39,6 +41,9 @@
3941
)
4042
public class RemoveCoffeeCmd extends BaseAsyncCmd {
4143

44+
@Inject
45+
private CoffeeManager coffeeManager;
46+
4247
@Parameter(name = ApiConstants.ID,
4348
type = CommandType.STRING,
4449
required = false,
@@ -54,18 +59,22 @@ public class RemoveCoffeeCmd extends BaseAsyncCmd {
5459

5560
@Override
5661
public void execute() {
57-
// Hardcoded success response for now
62+
boolean result = coffeeManager.removeCoffee(this);
63+
5864
SuccessResponse response = new SuccessResponse();
5965

60-
if (id != null) {
61-
response.setSuccess(true);
62-
response.setDisplayText("Successfully removed coffee order: " + id);
63-
} else if (ids != null && !ids.isEmpty()) {
66+
if (result) {
6467
response.setSuccess(true);
65-
response.setDisplayText("Successfully removed " + ids.size() + " coffee orders");
68+
if (id != null) {
69+
response.setDisplayText("Successfully removed coffee order: " + id);
70+
} else if (ids != null && !ids.isEmpty()) {
71+
response.setDisplayText("Successfully removed " + ids.size() + " coffee orders");
72+
} else {
73+
response.setDisplayText("Coffee removal completed");
74+
}
6675
} else {
6776
response.setSuccess(false);
68-
response.setDisplayText("No coffee ID provided");
77+
response.setDisplayText("Failed to remove coffee order");
6978
}
7079

7180
response.setResponseName(getCommandName());

plugins/hackerbook/feature/src/main/java/org/apache/cloudstack/api/command/UpdateCoffeeCmd.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@
2323
import org.apache.cloudstack.api.ApiConstants;
2424
import org.apache.cloudstack.api.BaseAsyncCmd;
2525
import org.apache.cloudstack.api.Parameter;
26+
import org.apache.cloudstack.api.Coffee;
27+
import org.apache.cloudstack.api.CoffeeManager;
2628
import org.apache.cloudstack.api.response.CoffeeResponse;
2729
import org.apache.cloudstack.acl.RoleType;
2830

31+
import javax.inject.Inject;
2932
import java.util.Map;
3033

3134
@APICommand(
@@ -39,6 +42,9 @@
3942
)
4043
public class UpdateCoffeeCmd extends BaseAsyncCmd {
4144

45+
@Inject
46+
private CoffeeManager coffeeManager;
47+
4248
@Parameter(name = ApiConstants.ID,
4349
type = CommandType.STRING,
4450
required = true,
@@ -59,13 +65,14 @@ public class UpdateCoffeeCmd extends BaseAsyncCmd {
5965

6066
@Override
6167
public void execute() {
62-
// Hardcoded response for now
68+
Coffee coffee = coffeeManager.updateCoffee(this);
69+
6370
CoffeeResponse response = new CoffeeResponse();
64-
response.setId(id);
65-
response.setName("Updated Coffee Order");
66-
response.setOffering("Espresso");
67-
response.setSize(size != null ? size : "MEDIUM");
68-
response.setState("Created");
71+
response.setId(coffee.getUuid());
72+
response.setName(coffee.getName());
73+
response.setOffering(coffee.getOffering().name());
74+
response.setSize(coffee.getSize().name());
75+
response.setState(coffee.getState().name());
6976
response.setObjectName("coffee");
7077
response.setResponseName(getCommandName());
7178

0 commit comments

Comments
 (0)