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

x-okta-multi-operation bug #561

Merged
merged 45 commits into from
Mar 25, 2021
Merged
Changes from 43 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
92bfbc6
1. definitions.Application.x-openapi-v3-discriminator.mapping.SAML_1_1
sergiishamrai-okta Feb 25, 2021
aa8b77a
2. Not finished yet
sergiishamrai-okta Feb 25, 2021
3cbcf58
removed #2
sergiishamrai-okta Feb 26, 2021
c96d8f5
2. Missing code discriminator: https://github.com/okta/openapi/blob/d…
sergiishamrai-okta Feb 26, 2021
ea4c7c0
remove code duplication
sergiishamrai-okta Mar 1, 2021
955c419
1. Remove unused SamlApplicationV1
sergiishamrai-okta Mar 2, 2021
f9fbc0b
Whitespaces for generated code updated
sergiishamrai-okta Mar 5, 2021
0bdb070
4. supportedMDMFrameworks and platforms
sergiishamrai-okta Mar 9, 2021
ed1b10e
copyright is back
sergiishamrai-okta Mar 9, 2021
a334466
fix for enums inside list/array
sergiishamrai-okta Mar 9, 2021
995012e
clean code
sergiishamrai-okta Mar 9, 2021
84f6487
revert changes
sergiishamrai-okta Mar 9, 2021
bb165a9
Merge branch 'master' into okta-349906-open-api
sergiishamrai-okta Mar 9, 2021
9f8e8fc
clean code
sergiishamrai-okta Mar 9, 2021
6eb9ac8
new method + do not break the build in case of binary incompatibility
sergiishamrai-okta Mar 9, 2021
43bc492
do not break the build in case of binary incompatibility
sergiishamrai-okta Mar 9, 2021
e262015
LinkedObject object fixes
sergiishamrai-okta Mar 9, 2021
5e65cc0
LinkedObject object ITs
sergiishamrai-okta Mar 9, 2021
1b22cea
buggy implementation updateAuthorizationServerPolicy operation
sergiishamrai-okta Mar 9, 2021
8ccca1c
sync last updates + UserType object
sergiishamrai-okta Mar 10, 2021
bc17bfc
UTs updated
sergiishamrai-okta Mar 10, 2021
3d92248
UserFactor delete method
sergiishamrai-okta Mar 10, 2021
564eba3
Deletable interface issue
sergiishamrai-okta Mar 15, 2021
1532c41
Deletable interface issue
sergiishamrai-okta Mar 15, 2021
ae181a7
AuthorizationServerPolicyRule::deletePolicyRule renamed
sergiishamrai-okta Mar 15, 2021
e4eebd8
Merge branch 'master' into okta-349906-open-api
sergiishamrai-okta Mar 15, 2021
ac730e1
delete LinkedObject properly
sergiishamrai-okta Mar 15, 2021
f9419e8
CleanUp LinkedObjects
sergiishamrai-okta Mar 15, 2021
3723dbf
remove cleanUpLinkedObjects
sergiishamrai-okta Mar 15, 2021
3b08f8f
CreateUserRequest updated
sergiishamrai-okta Mar 16, 2021
2596dd7
Merge branch 'master' into okta-349906-open-api
sergiishamrai-okta Mar 16, 2021
67772c8
v2.3.0
sergiishamrai-okta Mar 16, 2021
ef9b375
Rollback unnecessary changes
sergiishamrai-okta Mar 16, 2021
c482df8
Disable build breaking for now
sergiishamrai-okta Mar 16, 2021
6a91121
Working on Migration guide
sergiishamrai-okta Mar 16, 2021
fe75882
Imports updated
sergiishamrai-okta Mar 17, 2021
abc19b3
Migration guide updated
sergiishamrai-okta Mar 17, 2021
d19a245
Migration guide updated
sergiishamrai-okta Mar 18, 2021
85e5c8a
v4.0.0-SNAPSHOT + Migration guide updated
sergiishamrai-okta Mar 18, 2021
311af05
ITs
sergiishamrai-okta Mar 19, 2021
5e15f4a
x-okta-multi-operation bug
sergiishamrai-okta Mar 19, 2021
0d02f62
x-okta-multi-operation bug
sergiishamrai-okta Mar 22, 2021
39b87a7
Merge branch 'master' into okta-375802-x-okta-multi-operation-bug
sergiishamrai-okta Mar 24, 2021
b8a12eb
x-okta-multi-operation fixed and Migration guide updated
sergiishamrai-okta Mar 24, 2021
893bbb5
Migration.md updated
sergiishamrai-okta Mar 25, 2021
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
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,12 @@
import io.swagger.models.Response;
import io.swagger.models.Swagger;
import io.swagger.models.parameters.BodyParameter;
import io.swagger.models.parameters.Parameter;
import io.swagger.models.properties.ArrayProperty;
import io.swagger.models.properties.Property;
import io.swagger.models.properties.RefProperty;
import io.swagger.parser.SwaggerException;
import io.swagger.util.Json;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
Expand Down Expand Up @@ -338,13 +340,39 @@ private void handleOktaLinkedOperations(Swagger swagger) {
swagger.getPaths().forEach((pathName, path) -> {
Optional<Map.Entry<HttpMethod, Operation>> operationEntry =
path.getOperationMap().entrySet().stream().filter(
e -> e.getValue().getOperationId() != null &&
e.getValue().getOperationId().equals(operationId)).findFirst();
oper -> {
//Looking for operationId in paths:path:operationId
if (oper.getValue().getOperationId() != null
&& oper.getValue().getOperationId().equals(operationId)) {
return true;
}
//Looking for operationId in paths:path:method:x-okta-multi-operation:operationId
Object multiOperation = oper.getValue().getVendorExtensions().get("x-okta-multi-operation");
if (multiOperation instanceof List) {
Optional<JsonNode> jsonNodeOptional = ((List)multiOperation).stream().filter(x -> {
if(x instanceof JsonNode) {
JsonNode operationIdFromMultiOperation = ((JsonNode)x).get("operationId");
sergiishamrai-okta marked this conversation as resolved.
Show resolved Hide resolved
if(operationIdFromMultiOperation != null && operationIdFromMultiOperation.textValue().equals(operationId)) {
return true;
}
}
return false;
}).findFirst();
if(jsonNodeOptional.isPresent()) {
return true;
}
}
return false;
}
).findFirst();

if (operationEntry.isPresent()) {

Operation operation = operationEntry.get().getValue();

//IF THIS IS x-okta-multi-operation
applyOktaMultiOperation(operation, operationId);

CodegenOperation cgOperation = fromOperation(
pathName,
operationEntry.get().getKey().name().toLowerCase(),
Expand Down Expand Up @@ -465,6 +493,46 @@ else if ("read".equals(alias) || "create".equals(alias)) {
});
}

//TODO Review THIS
private void applyOktaMultiOperation(Operation operation, String operationId) {

Object multiOperation = operation.getVendorExtensions().get("x-okta-multi-operation");
if(multiOperation == null) {
return;
}

if (multiOperation instanceof List) {
Optional<JsonNode> multiOperationNodeOptional = ((List)multiOperation).stream().filter(x -> {
if(x instanceof JsonNode) {
JsonNode operationIdFromMultiOperation = ((JsonNode)x).get("operationId");
sergiishamrai-okta marked this conversation as resolved.
Show resolved Hide resolved
if(operationIdFromMultiOperation != null && operationIdFromMultiOperation.textValue().equals(operationId)) {
return true;
}
}
return false;
}).findFirst();

if(multiOperationNodeOptional.isPresent()) {
JsonNode multiOperationNode = multiOperationNodeOptional.get();
Operation multiOperationObject = Json.mapper().convertValue(multiOperationNode, Operation.class);
operation.setOperationId(multiOperationObject.getOperationId());
operation.setDescription(multiOperationObject.getDescription());
//operation.getParameters().addAll(multiOperationObject.getParameters());
multiOperationObject.getParameters().forEach(x -> {
if(x instanceof BodyParameter) {
//Doing nothing Take a look here https://github.com/swagger-api/swagger-parser/pull/381/files
} else {
operation.getParameters().add(x);
}
});
}
}

System.out.println(operationId);

System.out.println(operation);
sergiishamrai-okta marked this conversation as resolved.
Show resolved Hide resolved
}

private Map<String, String> createArgMap(ObjectNode n) {

Map<String, String> argMap = new LinkedHashMap<>();
Expand Down