Skip to content

Commit 3a83e5a

Browse files
author
rathnapandi
committed
- API get filtering based on org name
1 parent 656437c commit 3a83e5a

File tree

7 files changed

+103
-26
lines changed

7 files changed

+103
-26
lines changed

modules/apim-adapter/src/main/java/com/axway/apim/adapter/APIManagerAdapter.java

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
import com.axway.apim.adapter.client.apps.APIMgrAppsAdapter;
55
import com.axway.apim.adapter.custom.properties.APIManagerCustomPropertiesAdapter;
66
import com.axway.apim.adapter.user.APIManagerUserAdapter;
7-
import com.axway.apim.api.model.CaCert;
8-
import com.axway.apim.api.model.Config;
9-
import com.axway.apim.api.model.Image;
10-
import com.axway.apim.api.model.User;
7+
import com.axway.apim.api.model.*;
118
import com.axway.apim.api.model.apps.ClientApplication;
129
import com.axway.apim.lib.APIMCLICacheManager;
1310
import com.axway.apim.lib.CoreParameters;
@@ -232,19 +229,42 @@ public void loginToAPIManager() throws AppException {
232229
}
233230
User user = getCurrentUser();
234231
String role = getHigherRole(user);
235-
if (role.equals(ADMIN)) {
236-
hasAdminAccount = true;
237-
// Also register this client as an Admin-Client
238-
} else if (role.equals(OADMIN)) {
239-
usingOrgAdmin = true;
240-
}
232+
assignRoles(role);
241233
} catch (IOException | URISyntaxException e) {
242234
throw new AppException("Can't login to API-Manager", ErrorCode.API_MANAGER_COMMUNICATION, e);
243235
} catch (InterruptedException e) {
244236
Thread.currentThread().interrupt();
245237
}
246238
}
247239

240+
public void assignRoles(String role) {
241+
if (role.equals(ADMIN)) {
242+
hasAdminAccount = true;
243+
// Also register this client as an Admin-Client
244+
} else if (role.equals(OADMIN)) {
245+
usingOrgAdmin = true;
246+
}
247+
}
248+
249+
public void switchOrgAndRole(User user, String targetOrgName) {
250+
Map<String, String> organizationsIdToName = user.getOrgs2Name();
251+
if (organizationsIdToName == null)
252+
return;
253+
254+
for (Map.Entry<String,String> entry : organizationsIdToName.entrySet()) {
255+
String orgName = entry.getValue();
256+
if (orgName.equals(targetOrgName)) {
257+
String role = user.getOrgs2Role().get(entry.getKey());
258+
// Reset roles
259+
hasAdminAccount = false;
260+
usingOrgAdmin = false;
261+
// Assign roles
262+
assignRoles(role);
263+
}
264+
}
265+
266+
}
267+
248268
public String getHigherRole(User user) {
249269
String role = user.getRole();
250270
Map<String, String> organizations2Role = user.getOrgs2Role();

modules/apim-adapter/src/main/java/com/axway/apim/adapter/apis/APIFilter.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public enum FILTER_OP {
6767
private List<String> customProperties;
6868
private boolean deprecated;
6969
private boolean retired;
70+
private String organizationId; // To support multi org
7071

7172
private METHOD_TRANSLATION translateMethodMode = METHOD_TRANSLATION.NONE;
7273

@@ -923,4 +924,14 @@ private static boolean isPolicyUsed(API api, String policyName) {
923924
}
924925
return false;
925926
}
927+
928+
public String getOrganizationId() {
929+
return organizationId;
930+
}
931+
932+
public void setOrganizationId(String organizationId) {
933+
this.organizationId = organizationId;
934+
if (organizationId == null) return;
935+
filters.add(new BasicNameValuePair("organizationId", organizationId));
936+
}
926937
}

modules/apim-adapter/src/main/java/com/axway/apim/adapter/apis/APIManagerAPIAdapter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ public String getVersion(APIFilter apiFilter) {
225225
}
226226

227227
private List<API> filterAPIs(APIFilter filter) throws IOException {
228+
LOG.debug("Filtering APIs based on filter path: {}", filter);
228229
List<API> apis = mapper.readValue(this.apiManagerResponse.get(filter), new TypeReference<>() {
229230
});
230231
apis.removeIf(filter::filter);

modules/apim-adapter/src/main/java/com/axway/apim/adapter/apis/OrgFilter.java

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,10 @@ public class OrgFilter implements CustomPropertiesFilter {
2626
String development;
2727
boolean includeImage;
2828
boolean includeAPIAccess;
29-
30-
private List<String> customProperties;
29+
private String organizationId; // To support multi org
30+
31+
32+
private List<String> customProperties;
3133

3234
private final List<NameValuePair> filters = new ArrayList<>();
3335

@@ -103,19 +105,19 @@ public String getApiId() {
103105
public boolean isEnabled() {
104106
return enabled;
105107
}
106-
108+
107109
public void setDevelopment(String development) {
108110
this.development = development;
109111
}
110-
112+
111113
public String getDevelopment() {
112114
return development;
113115
}
114-
116+
115117
public boolean isIncludeImage() {
116118
return includeImage;
117119
}
118-
120+
119121
public boolean isIncludeAPIAccess() {
120122
return includeAPIAccess;
121123
}
@@ -135,7 +137,7 @@ public boolean equals(Object obj) {
135137
if(!(obj instanceof OrgFilter)) return false;
136138
OrgFilter other = (OrgFilter)obj;
137139
return (
138-
StringUtils.equals(other.getId(), this.getId()) &&
140+
StringUtils.equals(other.getId(), this.getId()) &&
139141
StringUtils.equals(other.getName(), this.getName()) &&
140142
other.isEnabled() == this.isEnabled() &&
141143
StringUtils.equals(other.getApiId(), this.getApiId())
@@ -154,7 +156,7 @@ public int hashCode() {
154156
public String toString() {
155157
return "OrgFilter [name=" + name + ", id=" + id + "]";
156158
}
157-
159+
158160
public boolean filter(Organization org) {
159161
return this.development != null && Boolean.parseBoolean(this.development) != org.isDevelopment();
160162
}
@@ -173,10 +175,10 @@ public static class Builder {
173175
String name;
174176
String phone;
175177
String development;
176-
178+
177179
boolean includeImage;
178180
boolean includeAPIAccess;
179-
181+
180182
private List<String> customProperties;
181183

182184
public Builder() {
@@ -218,26 +220,35 @@ public Builder isEnabled(boolean enabled) {
218220
this.enabled = enabled;
219221
return this;
220222
}
221-
223+
222224
public Builder hasDevelopment(String development) {
223225
this.development = development;
224226
return this;
225227
}
226-
228+
227229
public Builder includeImage(boolean includeImage) {
228230
this.includeImage = includeImage;
229231
return this;
230232
}
231-
233+
232234
public Builder includeAPIAccess(boolean includeAPIAccess) {
233235
this.includeAPIAccess = includeAPIAccess;
234236
return this;
235237
}
236-
238+
237239
public Builder includeCustomProperties(List<String> customProperties) {
238240
this.customProperties = customProperties;
239241
return this;
240-
}
242+
}
241243
}
242244

243-
}
245+
public String getOrganizationId() {
246+
return organizationId;
247+
}
248+
249+
public void setOrganizationId(String organizationId) {
250+
this.organizationId = organizationId;
251+
if (organizationId == null) return;
252+
filters.add(new BasicNameValuePair("organizationId", organizationId));
253+
}
254+
}

modules/apim-adapter/src/main/java/com/axway/apim/adapter/client/apps/ClientAppFilter.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ public class ClientAppFilter implements CustomPropertiesFilter {
6060
boolean includeOauthResources;
6161

6262
private List<String> customProperties;
63+
private String organizationId; // To support multi org
64+
6365

6466
List<NameValuePair> filters = new ArrayList<>();
6567

@@ -493,4 +495,14 @@ public Builder hasApiName(String apiName) {
493495
return this;
494496
}
495497
}
498+
499+
public String getOrganizationId() {
500+
return organizationId;
501+
}
502+
503+
public void setOrganizationId(String organizationId) {
504+
this.organizationId = organizationId;
505+
if (organizationId == null) return;
506+
filters.add(new BasicNameValuePair("organizationId", organizationId));
507+
}
496508
}

modules/apim-adapter/src/main/java/com/axway/apim/adapter/user/UserFilter.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,12 @@ public class UserFilter implements CustomPropertiesFilter {
2828
String type;
2929

3030
String organizationName;
31+
private String organizationId; // To support multi org
32+
3133

3234
boolean includeImage;
3335

36+
3437
private List<String> customProperties;
3538

3639
private final List<NameValuePair> filters = new ArrayList<>();
@@ -299,4 +302,15 @@ public Builder includeCustomProperties(List<String> customProperties) {
299302
return this;
300303
}
301304
}
305+
306+
public String getOrganizationId() {
307+
return organizationId;
308+
}
309+
310+
public void setOrganizationId(String organizationId) {
311+
this.organizationId = organizationId;
312+
if (organizationId == null) return;
313+
filters.add(new BasicNameValuePair("organizationId", organizationId));
314+
}
315+
302316
}

modules/apis/src/main/java/com/axway/apim/APIExportApp.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.axway.apim.api.export.lib.cli.*;
1010
import com.axway.apim.api.export.lib.params.*;
1111
import com.axway.apim.api.model.Organization;
12+
import com.axway.apim.api.model.User;
1213
import com.axway.apim.api.model.apps.ClientApplication;
1314
import com.axway.apim.cli.APIMCLIServiceProvider;
1415
import com.axway.apim.cli.CLIServiceMethod;
@@ -170,6 +171,13 @@ private static int execute(APIExportParams params, APIListImpl resultHandlerImpl
170171
apimanagerAdapter = APIManagerAdapter.getInstance();
171172
APIResultHandler resultHandler = APIResultHandler.create(resultHandlerImpl, params);
172173
APIFilter filter = resultHandler.getFilter();
174+
LOG.debug("Organization : {}", params.getOrganization());
175+
if(params.getOrganization() != null) {
176+
Organization organization = apimanagerAdapter.getOrgAdapter().getOrgForName(params.getOrganization());
177+
User user = APIManagerAdapter.getCurrentUser();
178+
APIManagerAdapter.getInstance().switchOrgAndRole(user, params.getOrganization());
179+
filter.setOrganizationId(organization.getId());
180+
}
173181
Result result = resultHandler.getResult();
174182
List<API> apis = apimanagerAdapter.getApiAdapter().getAPIs(filter, true);
175183

0 commit comments

Comments
 (0)