diff --git a/.gradle/6.8/executionHistory/executionHistory.bin b/.gradle/6.8/executionHistory/executionHistory.bin index 478d11bc368cef795bfdeee0b3bccb2791045bad..ffab960dc1f554d2837a9906cd3de687d5d022ad 100644 Binary files a/.gradle/6.8/executionHistory/executionHistory.bin and b/.gradle/6.8/executionHistory/executionHistory.bin differ diff --git a/.gradle/6.8/executionHistory/executionHistory.lock b/.gradle/6.8/executionHistory/executionHistory.lock index 0eebdf229250095aa579d02d9327c3e630b3f9fe..c0602a52accc5782ea61c5d64529ca8301ab2c00 100644 Binary files a/.gradle/6.8/executionHistory/executionHistory.lock and b/.gradle/6.8/executionHistory/executionHistory.lock differ diff --git a/.gradle/6.8/fileHashes/fileHashes.bin b/.gradle/6.8/fileHashes/fileHashes.bin index 5c3781c89e9b05dc34782e028bd899ac5a2885de..2b24e898e3dffcdc620416fb863461b44bb11339 100644 Binary files a/.gradle/6.8/fileHashes/fileHashes.bin and b/.gradle/6.8/fileHashes/fileHashes.bin differ diff --git a/.gradle/6.8/fileHashes/fileHashes.lock b/.gradle/6.8/fileHashes/fileHashes.lock index c3e0d252b4c3fd4d14fded1733a7145bcc340e1d..f7069599a742f78b42e0afd0e5d7412fb1f15cbc 100644 Binary files a/.gradle/6.8/fileHashes/fileHashes.lock and b/.gradle/6.8/fileHashes/fileHashes.lock differ diff --git a/.gradle/6.8/fileHashes/resourceHashesCache.bin b/.gradle/6.8/fileHashes/resourceHashesCache.bin index 3a279e6aed55fca0ac25801ff0f19a04fe5ba51e..ad8cc79532afd419634d4332784c1b440103b024 100644 Binary files a/.gradle/6.8/fileHashes/resourceHashesCache.bin and b/.gradle/6.8/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/6.8/javaCompile/classAnalysis.bin b/.gradle/6.8/javaCompile/classAnalysis.bin index e495b8a1d937fa84e95d5db00addf671da35a0f2..9dadb4773c8bad3f1937fd82af4c06f892b88a84 100644 Binary files a/.gradle/6.8/javaCompile/classAnalysis.bin and b/.gradle/6.8/javaCompile/classAnalysis.bin differ diff --git a/.gradle/6.8/javaCompile/jarAnalysis.bin b/.gradle/6.8/javaCompile/jarAnalysis.bin index e8a1869fef3971648bd72d9f19273cca4bdaff63..6eb85caa5e133a1cfd73295bfdfbda678b798952 100644 Binary files a/.gradle/6.8/javaCompile/jarAnalysis.bin and b/.gradle/6.8/javaCompile/jarAnalysis.bin differ diff --git a/.gradle/6.8/javaCompile/javaCompile.lock b/.gradle/6.8/javaCompile/javaCompile.lock index 6bd9df2669e58764f6799e800cfaf873fea10abb..c73fbee5fde729b4cbc8e25e5fdecf19ef72723c 100644 Binary files a/.gradle/6.8/javaCompile/javaCompile.lock and b/.gradle/6.8/javaCompile/javaCompile.lock differ diff --git a/.gradle/6.8/javaCompile/taskHistory.bin b/.gradle/6.8/javaCompile/taskHistory.bin index 25976929d39ef8ff603d655b147940a2f7f36e91..ec6a3ba5c645e73fb30bb4472d5e1064fd436005 100644 Binary files a/.gradle/6.8/javaCompile/taskHistory.bin and b/.gradle/6.8/javaCompile/taskHistory.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index d104d6527137be9578c2fc5101fd49b45274d8af..4b009fbd78769ba1eb5c2cc8d77dbd72aad7f96e 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/OpenAPIMain.class b/build/classes/java/main/de/tudresden/inf/st/openapi/OpenAPIMain.class index b0c4303d8642ede6332692e6859d50f0a97d8376..abae77c242d23ef8694fa9577f49f8353d247ba2 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/OpenAPIMain.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/OpenAPIMain.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ASTNode.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ASTNode.class index 47a471075b887f0e4ed581d488505ea079b7c43c..bbafc00bead5f748f5d05c59a62b9a77187a0ab8 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ASTNode.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ASTNode.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Delete.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Delete.class index 946a75819f5c31b2d60e931d051c567a5a8a5b7a..355c6e77d3593438ec23a7bbe977a50ea709dfeb 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Delete.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Delete.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class index 8b0319c47ef4c9eff0ee8eefd5e612cd92504b32..44705924060ce907bf00de024c29530b15025d67 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Get.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Head.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Head.class index 68fc64e7f95988140ab4cb1bd8566590133d3d63..59b0b3a31b91e6cb92baaca2fa592ee046662124 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Head.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Head.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class index cb4d21cda85277f3de32466ba20e3864fc3dc683..6a6bd1034e9760e821e8f5b3ddae0809d65df9b5 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationOb.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationOb.class index cb9fad66d58723b48f07b10c199ba768e2709dec..c4e68e17cc1c8b5c83dedd72fe59f5e8eade17ba 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationOb.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationOb.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationObject.class index 960c9e9a8df64bc50d00b061b12b284a38d5c51b..62442c106146b74228612030479cf8dabce6c304 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationObject.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationObject.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Options.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Options.class index abc57dc2765cdc169b420c27b750b55651c3c1d6..b475b99ce754c49b4fcc8b4eef0f6d2b9328a469 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Options.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Options.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Patch.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Patch.class index 461d0d8e6ea55995122bcfbeaad3e7c136dfd684..f680f1ebd2ad03a4c330e1cf1f4768952676a282 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Patch.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Patch.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/PathsObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/PathsObject.class index 6ba1cc486b08744da8e45d4b7298180a3d38ab39..6fe7326c466402b960d4f3232dbd090dce48f0c0 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/PathsObject.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/PathsObject.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class index 6e3f6a9c3f1e6df718ce7555ca15e7eb1c3c4969..d33e7eb467fc48f8c041aba27310294d0f6c3826 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Post.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Put.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Put.class index 890a9ece0697a97dd75126ceabb5d629e0c1811c..ba73674a9d8eb25f101a2e25cfb758d6a511b28b 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Put.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Put.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaObject.class index 6b895842997a5244a403e943cca4204c684c5524..a1a90d0072063c7d0ec701bd72f1ee6f003558df 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaObject.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaObject.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaTuple.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaTuple.class index 630614ff492f35406af5c248a4d7700b60596275..25b030c211f37975fdee89f5bb769317b94a8a13 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaTuple.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SchemaTuple.class differ diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Trace.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Trace.class index 3587580120f04a5e40733cb0129a34eca1b14079..df82d8488e72e2cef1dac07efc3c6655f95a8233 100644 Binary files a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Trace.class and b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/Trace.class differ diff --git a/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html b/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html index a81f6e97a63513fd8ed20b6b6f1c5457e4c5b83b..709702c12c53e2942ab8dd7e59a9c3e297bf07ad 100644 --- a/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html +++ b/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html @@ -41,7 +41,7 @@ </td> <td> <div class="infoBox" id="duration"> -<div class="counter">0.671s</div> +<div class="counter">0.633s</div> <p>duration</p> </div> </td> @@ -82,7 +82,7 @@ </thead> <tr> <td class="success">test()</td> -<td class="success">0.671s</td> +<td class="success">0.633s</td> <td class="success">passed</td> </tr> </table> @@ -116,7 +116,7 @@ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/> </label> </div>Generated by -<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 1:37:31</p> +<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 8:15:11</p> </div> </div> </body> diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html index cdf9555c256f0a7e8826d269d33d5842a4041fe3..3f9de5cc7bfd94f859e1c72963dadb0f151a47fd 100644 --- a/build/reports/tests/test/index.html +++ b/build/reports/tests/test/index.html @@ -38,7 +38,7 @@ </td> <td> <div class="infoBox" id="duration"> -<div class="counter">0.671s</div> +<div class="counter">0.633s</div> <p>duration</p> </div> </td> @@ -85,7 +85,7 @@ <td>1</td> <td>0</td> <td>0</td> -<td>0.671s</td> +<td>0.633s</td> <td class="success">100%</td> </tr> </tbody> @@ -112,7 +112,7 @@ <td>1</td> <td>0</td> <td>0</td> -<td>0.671s</td> +<td>0.633s</td> <td class="success">100%</td> </tr> </tbody> @@ -126,7 +126,7 @@ <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/> </label> </div>Generated by -<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 1:37:31</p> +<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 8:15:11</p> </div> </div> </body> diff --git a/build/reports/tests/test/packages/openapi.html b/build/reports/tests/test/packages/openapi.html index a0da8617714589aaa412831122cb78c4817893a4..b4f04ceb5f0da60de3dcab160badd3856607b069 100644 --- a/build/reports/tests/test/packages/openapi.html +++ b/build/reports/tests/test/packages/openapi.html @@ -40,7 +40,7 @@ </td> <td> <div class="infoBox" id="duration"> -<div class="counter">0.671s</div> +<div class="counter">0.633s</div> <p>duration</p> </div> </td> @@ -83,7 +83,7 @@ <td>1</td> <td>0</td> <td>0</td> -<td>0.671s</td> +<td>0.633s</td> <td class="success">100%</td> </tr> </table> @@ -96,7 +96,7 @@ <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/> </label> </div>Generated by -<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 1:37:31</p> +<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 10. 9. 오전 8:15:11</p> </div> </div> </body> diff --git a/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml b/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml index 7ba802a589ef0ee93f21c19d0a782d19d9511507..95c28d39c62d627bd2f73c62fc9b4c9b5fb24395 100644 --- a/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml +++ b/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> -<testsuite name="openapi.OpenAPIMain_test" tests="1" skipped="0" failures="0" errors="0" timestamp="2021-10-08T16:37:30" hostname="DESKTOP-7SEB5SB" time="0.671"> +<testsuite name="openapi.OpenAPIMain_test" tests="1" skipped="0" failures="0" errors="0" timestamp="2021-10-08T23:15:10" hostname="DESKTOP-7SEB5SB" time="0.633"> <properties/> - <testcase name="test()" classname="openapi.OpenAPIMain_test" time="0.671"/> + <testcase name="test()" classname="openapi.OpenAPIMain_test" time="0.633"/> <system-out><![CDATA[5 Loading expression DSL file '1password.com-events-1.0.0.json'. Loading expression DSL file '6-dot-authentiqio.appspot.com-6.json'. diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin index 882f4c48728c3da374daba0cb812f8e0bbfa948c..6530dd67ad20d1d227125da75a2bd76f3a62c9df 100644 Binary files a/build/test-results/test/binary/results.bin and b/build/test-results/test/binary/results.bin differ diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/ASTNode.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/ASTNode.java index 549b93a58092fd7144526260d870c0c023b11ca4..6337e90ea0c765c8009b7954ec1b6a29e7c743ca 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/ASTNode.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/ASTNode.java @@ -486,18 +486,36 @@ public class ASTNode<T extends ASTNode> implements Cloneable { } /** * @aspect <NoAspect> - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:14 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15 */ /** @apilevel internal */ - protected void collect_contributors_OpenAPIObject_schemas(OpenAPIObject _root, java.util.Map<ASTNode, java.util.Set<ASTNode>> _map) { + protected void collect_contributors_OpenAPIObject_schemaTuples(OpenAPIObject _root, java.util.Map<ASTNode, java.util.Set<ASTNode>> _map) { for (int i = 0; i < getNumChild(); i++) { - getChild(i).collect_contributors_OpenAPIObject_schemas(_root, _map); + getChild(i).collect_contributors_OpenAPIObject_schemaTuples(_root, _map); } } /** @apilevel internal */ - protected void contributeTo_OpenAPIObject_schemas(java.util.Set<SchemaObject> collection) { + protected void contributeTo_OpenAPIObject_schemaTuples(java.util.Set<SchemaTuple> collection) { } + /** + * @attribute inh + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH) + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18") + public OpenAPIObject root() { + if (root_visited) { + throw new RuntimeException("Circular definition of attribute ASTNode.root()."); + } + root_visited = true; + OpenAPIObject root_value = getParent().Define_root(this, null); + root_visited = false; + return root_value; + } +/** @apilevel internal */ +protected boolean root_visited = false; /** @apilevel internal */ public ASTNode rewriteTo() { return this; @@ -507,23 +525,63 @@ public class ASTNode<T extends ASTNode> implements Cloneable { return false; } /** @apilevel internal */ - public Set<String> Define_generateUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) { + public OpenAPIObject Define_root(ASTNode _callerNode, ASTNode _childNode) { + ASTNode self = this; + ASTNode parent = getParent(); + while (parent != null && !parent.canDefine_root(self, _callerNode)) { + _callerNode = self; + self = parent; + parent = self.getParent(); + } + return parent.Define_root(self, _callerNode); + } + + /** + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:19 + * @apilevel internal + * @return {@code true} if this node has an equation for the inherited attribute root + */ + protected boolean canDefine_root(ASTNode _callerNode, ASTNode _childNode) { + return false; + } + /** @apilevel internal */ + public Set<String> Define_inferUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) { + ASTNode self = this; + ASTNode parent = getParent(); + while (parent != null && !parent.canDefine_inferUrl(self, _callerNode, urls)) { + _callerNode = self; + self = parent; + parent = self.getParent(); + } + return parent.Define_inferUrl(self, _callerNode, urls); + } + + /** + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:22 + * @apilevel internal + * @return {@code true} if this node has an equation for the inherited attribute inferUrl + */ + protected boolean canDefine_inferUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) { + return false; + } + /** @apilevel internal */ + public Map<ResponseObject, String> Define_generateUrl(ASTNode _callerNode, ASTNode _childNode, Map<ResponseObject, String> responses) { ASTNode self = this; ASTNode parent = getParent(); - while (parent != null && !parent.canDefine_generateUrl(self, _callerNode, urls)) { + while (parent != null && !parent.canDefine_generateUrl(self, _callerNode, responses)) { _callerNode = self; self = parent; parent = self.getParent(); } - return parent.Define_generateUrl(self, _callerNode, urls); + return parent.Define_generateUrl(self, _callerNode, responses); } /** - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:85 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:83 * @apilevel internal * @return {@code true} if this node has an equation for the inherited attribute generateUrl */ - protected boolean canDefine_generateUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) { + protected boolean canDefine_generateUrl(ASTNode _callerNode, ASTNode _childNode, Map<ResponseObject, String> responses) { return false; } public ASTNode rewrittenNode() { throw new Error("rewrittenNode is undefined for ASTNode"); } diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Delete.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Delete.java index d79dba97aa4dc7fd4732645d4a74f363d6902226..c59221f39359a1ecb9b27aedab5e2f91249d3e14 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Delete.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Delete.java @@ -177,28 +177,54 @@ public class Delete extends OperationOb implements Cloneable { return tokenOperationObject_OperationObject; } /** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_OperationObject_visited; +protected java.util.Set inferRandomUrl_String_OperationObject_visited; /** * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95 + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95") - public String generateRandomUrl(String pathRef, OperationObject operationObject) { + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34") + public String inferRandomUrl(String pathRef, OperationObject operationObject) { java.util.List _parameters = new java.util.ArrayList(2); _parameters.add(pathRef); _parameters.add(operationObject); - if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject)."); + if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); + if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject)."); + } + inferRandomUrl_String_OperationObject_visited.add(_parameters); + try { + return ""; + } + finally { + inferRandomUrl_String_OperationObject_visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96") + public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) { + java.util.List _parameters = new java.util.ArrayList(3); + _parameters.add(pathRef); + _parameters.add(operationObject); + _parameters.add(responses); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_)."); } - generateRandomUrl_String_OperationObject_visited.add(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters); try { return ""; } finally { - generateRandomUrl_String_OperationObject_visited.remove(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters); } } /** @apilevel internal */ diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java index f696d4754504c8a74da68ebe37395da1962d624e..2ae57182ecf8f22cf7873b675425b6c5e2eba8c4 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Get.java @@ -177,24 +177,52 @@ public class Get extends OperationOb implements Cloneable { return tokenOperationObject_OperationObject; } /** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_OperationObject_visited; +protected java.util.Set inferRandomUrl_String_OperationObject_visited; /** * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95 + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95") - public String generateRandomUrl(String pathRef, OperationObject operationObject) { + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34") + public String inferRandomUrl(String pathRef, OperationObject operationObject) { java.util.List _parameters = new java.util.ArrayList(2); _parameters.add(pathRef); _parameters.add(operationObject); - if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject)."); + if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); + if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject)."); } - generateRandomUrl_String_OperationObject_visited.add(_parameters); + inferRandomUrl_String_OperationObject_visited.add(_parameters); try { + + return ""; + } + finally { + inferRandomUrl_String_OperationObject_visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96") + public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) { + java.util.List _parameters = new java.util.ArrayList(3); + _parameters.add(pathRef); + _parameters.add(operationObject); + _parameters.add(responses); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_)."); + } + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters); + try { + try { Random rand = new Random(); for( ParameterOb o : operationObject.getParameterObs() ){ @@ -234,23 +262,39 @@ protected java.util.Set generateRandomUrl_String_OperationObject_visited; } } } - pathRef = pathRef.replaceFirst("&", "?") + "GET"; + pathRef = pathRef.replaceFirst("&", "?") ; + System.out.println("Generated path : " + pathRef); - /* - URL url = new URL(pathRef); - HttpURLConnection con = (HttpURLConnection) url.openConnection(); + URL url = new URL(pathRef); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); - con.setRequestMethod("GET"); // HTTP GET - con.setDoOutput(true); // GET + con.setRequestMethod("GET"); // optional default is GET - int responseCode = con.getResponseCode(); + int responseCode = con.getResponseCode(); + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); - // print result - System.out.println("HTTP status code (GET) : " + responseCode);*/ + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + + // print result + System.out.println("HTTP status code (GET) : " + responseCode); + for( ResponseTuple t : operationObject.getResponseTuples() ){ + if( t.getKey().equals("200") && responseCode == 200 ) { + System.out.println("Response successfully saved!"); + responses.put(t.getResponseOb().responseObject(), response.toString()); + } + } return pathRef; + }catch (Exception e) { + return ""; + } } finally { - generateRandomUrl_String_OperationObject_visited.remove(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters); } } /** @apilevel internal */ diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Head.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Head.java index 5ece025707cc2873f0701a7fc193d549c965d61d..1aa2326979af9d5d2fe885667d09e7075355bbc2 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Head.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Head.java @@ -177,28 +177,54 @@ public class Head extends OperationOb implements Cloneable { return tokenOperationObject_OperationObject; } /** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_OperationObject_visited; +protected java.util.Set inferRandomUrl_String_OperationObject_visited; /** * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95 + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95") - public String generateRandomUrl(String pathRef, OperationObject operationObject) { + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34") + public String inferRandomUrl(String pathRef, OperationObject operationObject) { java.util.List _parameters = new java.util.ArrayList(2); _parameters.add(pathRef); _parameters.add(operationObject); - if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject)."); + if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); + if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject)."); + } + inferRandomUrl_String_OperationObject_visited.add(_parameters); + try { + return ""; + } + finally { + inferRandomUrl_String_OperationObject_visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96") + public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) { + java.util.List _parameters = new java.util.ArrayList(3); + _parameters.add(pathRef); + _parameters.add(operationObject); + _parameters.add(responses); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_)."); } - generateRandomUrl_String_OperationObject_visited.add(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters); try { return ""; } finally { - generateRandomUrl_String_OperationObject_visited.remove(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters); } } /** @apilevel internal */ diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java index 3e039530308b4e766dcf40b305cbb7fee56c76f0..0ea8197f3a44cb799d6ff8353e92df281b20e732 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java @@ -119,19 +119,21 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable { } /** * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:20 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:12 */ - public String generateRequests() throws Exception { + public Map<ResponseObject, String> generateRequests() throws Exception { Set<String> urls = new HashSet<>(); + Map<ResponseObject, String> responses = new HashMap<>(); for( PathsObject p : this.getPathsObjects() ) - p.generateUrl(urls); + p.generateUrl(responses); + System.out.println(responses.size()); /* for( String path : urls ){ if( path.endsWith("GET") ){ System.out.println(this.getServerObject(0).getUrl() + path.substring(0, path.length()-3)); - /* */ + URL url = new URL(this.getServerObject(0).getUrl() + path.substring(0, path.length()-3)); HttpURLConnection con = (HttpURLConnection) url.openConnection(); @@ -139,8 +141,8 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable { con.setDoOutput(true); // GET int responseCode = con.getResponseCode(); - System.out.println("HTTP status code (GET) : " + responseCode); - if( responseCode < 300 ){ + //System.out.println("HTTP status code (GET) : " + responseCode); + if( responseCode < 300 && responseCode >= 200 ){ BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); @@ -150,12 +152,13 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable { } in.close(); - System.out.println("HTTP body : " + response.toString()); - }/* */ + //System.out.println("HTTP body : " + response.toString()); + responses.add(response.toString()); + } } else if( path.endsWith("POST") ) { - System.out.println(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4)); + //System.out.println(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4)); + - /* */ URL url = new URL(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4)); HttpURLConnection con = (HttpURLConnection) url.openConnection(); @@ -163,9 +166,9 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable { con.setDoOutput(true); // POST int responseCode = con.getResponseCode(); - System.out.println("HTTP status code (POST) : " + responseCode); + //System.out.println("HTTP status code (POST) : " + responseCode); - if( responseCode < 300 ){ + if( responseCode < 300 && responseCode >= 200 ){ BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); @@ -176,13 +179,16 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable { in.close(); - System.out.println("HTTP body : " + response.toString()); - }/* */ + //System.out.println("HTTP body : " + response.toString()); + responses.add(response.toString()); } - } - return ""; + }*/ + + //for( String s : responses ) + // System.out.println("Response : " + s.toString()); + return responses; } /** * @declaredat ASTNode:1 @@ -252,10 +258,10 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable { */ public void flushCollectionCache() { super.flushCollectionCache(); - OpenAPIObject_schemas_visited = false; - OpenAPIObject_schemas_computed = null; - OpenAPIObject_schemas_value = null; - contributorMap_OpenAPIObject_schemas = null; + OpenAPIObject_schemaTuples_visited = false; + OpenAPIObject_schemaTuples_computed = null; + OpenAPIObject_schemaTuples_value = null; + contributorMap_OpenAPIObject_schemaTuples = null; } /** @apilevel internal * @declaredat ASTNode:61 @@ -1083,47 +1089,99 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable { } /** * @aspect <NoAspect> - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:14 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15 */ /** @apilevel internal */ -protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIObject_schemas = null; +protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIObject_schemaTuples = null; /** @apilevel internal */ - protected void survey_OpenAPIObject_schemas() { - if (contributorMap_OpenAPIObject_schemas == null) { - contributorMap_OpenAPIObject_schemas = new java.util.IdentityHashMap<ASTNode, java.util.Set<ASTNode>>(); - collect_contributors_OpenAPIObject_schemas(this, contributorMap_OpenAPIObject_schemas); + protected void survey_OpenAPIObject_schemaTuples() { + if (contributorMap_OpenAPIObject_schemaTuples == null) { + contributorMap_OpenAPIObject_schemaTuples = new java.util.IdentityHashMap<ASTNode, java.util.Set<ASTNode>>(); + collect_contributors_OpenAPIObject_schemaTuples(this, contributorMap_OpenAPIObject_schemaTuples); } } /** - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:84 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18 + * @apilevel internal + */ + public OpenAPIObject Define_root(ASTNode _callerNode, ASTNode _childNode) { + int childIndex = this.getIndexOfChild(_callerNode); + return this; + } + /** + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:18 * @apilevel internal + * @return {@code true} if this node has an equation for the inherited attribute root */ - public Set<String> Define_generateUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) { + protected boolean canDefine_root(ASTNode _callerNode, ASTNode _childNode) { + return true; + } + /** + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21 + * @apilevel internal + */ + public Set<String> Define_inferUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) { if (_callerNode == getPathsObjectListNoTransform()) { - // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:85 + // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:22 int i = _callerNode.getIndexOfChild(_childNode); { PathItemObject p = ((PathsObject) _childNode).getPathItemOb().pathItemObject(); + String path = ((OpenAPIObject) getParent()).getServerObject(0).getUrl(); + if( p.hasGet() ) - urls.add(p.getGet().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getGet().getOperationObject())); + urls.add(p.getGet().inferRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getGet().getOperationObject())); else if( p.hasPost() ) - urls.add(p.getPost().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getPost().getOperationObject())); + urls.add(p.getPost().inferRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getPost().getOperationObject())); return urls; + } + } + else { + return getParent().Define_inferUrl(this, _callerNode, urls); + } + } + /** + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21 + * @apilevel internal + * @return {@code true} if this node has an equation for the inherited attribute inferUrl + */ + protected boolean canDefine_inferUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) { + return true; + } + /** + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:82 + * @apilevel internal + */ + public Map<ResponseObject, String> Define_generateUrl(ASTNode _callerNode, ASTNode _childNode, Map<ResponseObject, String> responses) { + if (_callerNode == getPathsObjectListNoTransform()) { + // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:83 + int i = _callerNode.getIndexOfChild(_childNode); + { + PathItemObject p = ((PathsObject) _childNode).getPathItemOb().pathItemObject(); + String path = getServerObject(0).getUrl(); + + if( p.hasGet() ) + p.getGet().generateRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getGet().getOperationObject(), responses); + //urls.add(p.getGet().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getGet().getOperationObject())); + else if( p.hasPost() ) + p.getPost().generateRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getPost().getOperationObject(), responses); + //urls.add(p.getPost().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getPost().getOperationObject())); + + return responses; } } else { - return getParent().Define_generateUrl(this, _callerNode, urls); + return getParent().Define_generateUrl(this, _callerNode, responses); } } /** - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:84 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:82 * @apilevel internal * @return {@code true} if this node has an equation for the inherited attribute generateUrl */ - protected boolean canDefine_generateUrl(ASTNode _callerNode, ASTNode _childNode, Set<String> urls) { + protected boolean canDefine_generateUrl(ASTNode _callerNode, ASTNode _childNode, Map<ResponseObject, String> responses) { return true; } /** @apilevel internal */ @@ -1135,54 +1193,54 @@ protected java.util.Map<ASTNode, java.util.Set<ASTNode>> contributorMap_OpenAPIO return false; } /** @apilevel internal */ -protected boolean OpenAPIObject_schemas_visited = false; +protected boolean OpenAPIObject_schemaTuples_visited = false; /** * @attribute coll * @aspect InfSchema - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:14 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.COLL) - @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:14") - public java.util.Set<SchemaObject> schemas() { + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15") + public java.util.Set<SchemaTuple> schemaTuples() { ASTState state = state(); - if (OpenAPIObject_schemas_computed == ASTState.NON_CYCLE || OpenAPIObject_schemas_computed == state().cycle()) { - return OpenAPIObject_schemas_value; + if (OpenAPIObject_schemaTuples_computed == ASTState.NON_CYCLE || OpenAPIObject_schemaTuples_computed == state().cycle()) { + return OpenAPIObject_schemaTuples_value; } - if (OpenAPIObject_schemas_visited) { - throw new RuntimeException("Circular definition of attribute OpenAPIObject.schemas()."); + if (OpenAPIObject_schemaTuples_visited) { + throw new RuntimeException("Circular definition of attribute OpenAPIObject.schemaTuples()."); } - OpenAPIObject_schemas_visited = true; - OpenAPIObject_schemas_value = schemas_compute(); + OpenAPIObject_schemaTuples_visited = true; + OpenAPIObject_schemaTuples_value = schemaTuples_compute(); if (state().inCircle()) { - OpenAPIObject_schemas_computed = state().cycle(); + OpenAPIObject_schemaTuples_computed = state().cycle(); } else { - OpenAPIObject_schemas_computed = ASTState.NON_CYCLE; + OpenAPIObject_schemaTuples_computed = ASTState.NON_CYCLE; } - OpenAPIObject_schemas_visited = false; - return OpenAPIObject_schemas_value; + OpenAPIObject_schemaTuples_visited = false; + return OpenAPIObject_schemaTuples_value; } /** @apilevel internal */ - private java.util.Set<SchemaObject> schemas_compute() { + private java.util.Set<SchemaTuple> schemaTuples_compute() { ASTNode node = this; while (node != null && !(node instanceof OpenAPIObject)) { node = node.getParent(); } OpenAPIObject root = (OpenAPIObject) node; - root.survey_OpenAPIObject_schemas(); - java.util.Set<SchemaObject> _computedValue = new java.util.HashSet<>(); - if (root.contributorMap_OpenAPIObject_schemas.containsKey(this)) { - for (ASTNode contributor : root.contributorMap_OpenAPIObject_schemas.get(this)) { - contributor.contributeTo_OpenAPIObject_schemas(_computedValue); + root.survey_OpenAPIObject_schemaTuples(); + java.util.Set<SchemaTuple> _computedValue = new java.util.HashSet<>(); + if (root.contributorMap_OpenAPIObject_schemaTuples.containsKey(this)) { + for (ASTNode contributor : root.contributorMap_OpenAPIObject_schemaTuples.get(this)) { + contributor.contributeTo_OpenAPIObject_schemaTuples(_computedValue); } } return _computedValue; } /** @apilevel internal */ - protected ASTState.Cycle OpenAPIObject_schemas_computed = null; + protected ASTState.Cycle OpenAPIObject_schemaTuples_computed = null; /** @apilevel internal */ - protected java.util.Set<SchemaObject> OpenAPIObject_schemas_value; + protected java.util.Set<SchemaTuple> OpenAPIObject_schemaTuples_value; } diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationOb.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationOb.java index a6166bb499cd120862abc0de0c2bf5f129f51092..23953274f5ccbadac5b67344aa4affd4cc1bc719 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationOb.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationOb.java @@ -98,14 +98,22 @@ public abstract class OperationOb extends ASTNode<ASTNode> implements Cloneable * @declaredat ASTNode:58 */ public abstract OperationOb treeCopy(); + /** + * @attribute syn + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34") + public abstract String inferRandomUrl(String pathRef, OperationObject operationObject); /** * @attribute syn * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95") - public abstract String generateRandomUrl(String pathRef, OperationObject operationObject); + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96") + public abstract String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses); /** @apilevel internal */ public ASTNode rewriteTo() { return super.rewriteTo(); diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java index c810e93d8671577df5d5748810eb6dc81b3f8952..8104e7f30936d994aeb234e9f236c1487ffcb8c8 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java @@ -136,7 +136,7 @@ public class OperationObject extends OperationOb implements Cloneable { } /** * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:229 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:376 */ public String generateRandomString(Random rand, JastAddList<EnumObj> objs) { if( objs.getNumChild() != 0 ) @@ -150,7 +150,7 @@ public class OperationObject extends OperationOb implements Cloneable { } /** * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:240 + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:387 */ public String generateRandomInt(Random rand, int minimum, int maximum){ if( minimum > -1 && maximum > 0 ) @@ -1289,28 +1289,81 @@ public class OperationObject extends OperationOb implements Cloneable { return getExtensionListNoTransform(); } /** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_OperationObject_visited; +protected java.util.Set inferRandomUrl_String_OperationObject_visited; /** * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95 + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34") + public String inferRandomUrl(String pathRef, OperationObject operationObject) { + java.util.List _parameters = new java.util.ArrayList(2); + _parameters.add(pathRef); + _parameters.add(operationObject); + if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); + if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject)."); + } + inferRandomUrl_String_OperationObject_visited.add(_parameters); + try { + return ""; + } + finally { + inferRandomUrl_String_OperationObject_visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set getDict_Set_SchemaTuple__Map_ResponseObject__String__visited; + /** + * @attribute syn + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:65 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95") - public String generateRandomUrl(String pathRef, OperationObject operationObject) { + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:65") + public Map<String, List<String>> getDict(Set<SchemaTuple> tuples, Map<ResponseObject, String> responses) { java.util.List _parameters = new java.util.ArrayList(2); + _parameters.add(tuples); + _parameters.add(responses); + if (getDict_Set_SchemaTuple__Map_ResponseObject__String__visited == null) getDict_Set_SchemaTuple__Map_ResponseObject__String__visited = new java.util.HashSet(4); + if (getDict_Set_SchemaTuple__Map_ResponseObject__String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationObject.getDict(Set_SchemaTuple_,Map_ResponseObject__String_)."); + } + getDict_Set_SchemaTuple__Map_ResponseObject__String__visited.add(_parameters); + try { + Map<String, List<String>> map = new HashMap<>(); + + return map; + } + finally { + getDict_Set_SchemaTuple__Map_ResponseObject__String__visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96") + public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) { + java.util.List _parameters = new java.util.ArrayList(3); _parameters.add(pathRef); _parameters.add(operationObject); - if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject)."); + _parameters.add(responses); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_)."); } - generateRandomUrl_String_OperationObject_visited.add(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters); try { return ""; } finally { - generateRandomUrl_String_OperationObject_visited.remove(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters); } } /** @apilevel internal */ diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Options.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Options.java index 7cd649723094719fbbdd215ee2a1372b7df7e479..07a19195e9c30a83def03eee34caeb2740291c42 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Options.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Options.java @@ -177,28 +177,54 @@ public class Options extends OperationOb implements Cloneable { return tokenOperationObject_OperationObject; } /** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_OperationObject_visited; +protected java.util.Set inferRandomUrl_String_OperationObject_visited; /** * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95 + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95") - public String generateRandomUrl(String pathRef, OperationObject operationObject) { + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34") + public String inferRandomUrl(String pathRef, OperationObject operationObject) { java.util.List _parameters = new java.util.ArrayList(2); _parameters.add(pathRef); _parameters.add(operationObject); - if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject)."); + if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); + if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject)."); + } + inferRandomUrl_String_OperationObject_visited.add(_parameters); + try { + return ""; + } + finally { + inferRandomUrl_String_OperationObject_visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96") + public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) { + java.util.List _parameters = new java.util.ArrayList(3); + _parameters.add(pathRef); + _parameters.add(operationObject); + _parameters.add(responses); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_)."); } - generateRandomUrl_String_OperationObject_visited.add(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters); try { return ""; } finally { - generateRandomUrl_String_OperationObject_visited.remove(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters); } } /** @apilevel internal */ diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Patch.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Patch.java index 33502f9ac7b65d4f40305349137fa70603822d25..5272217392c1caf8753f25be18c1f2805d5be001 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Patch.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Patch.java @@ -177,28 +177,54 @@ public class Patch extends OperationOb implements Cloneable { return tokenOperationObject_OperationObject; } /** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_OperationObject_visited; +protected java.util.Set inferRandomUrl_String_OperationObject_visited; /** * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95 + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95") - public String generateRandomUrl(String pathRef, OperationObject operationObject) { + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34") + public String inferRandomUrl(String pathRef, OperationObject operationObject) { java.util.List _parameters = new java.util.ArrayList(2); _parameters.add(pathRef); _parameters.add(operationObject); - if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject)."); + if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); + if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject)."); + } + inferRandomUrl_String_OperationObject_visited.add(_parameters); + try { + return ""; + } + finally { + inferRandomUrl_String_OperationObject_visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96") + public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) { + java.util.List _parameters = new java.util.ArrayList(3); + _parameters.add(pathRef); + _parameters.add(operationObject); + _parameters.add(responses); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_)."); } - generateRandomUrl_String_OperationObject_visited.add(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters); try { return ""; } finally { - generateRandomUrl_String_OperationObject_visited.remove(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters); } } /** @apilevel internal */ diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java index a95c6550a2de4030d2c0e0dea40b35f6dc909b46..6b24d4f0b56d5aed9798dd8d21a7904f87e3156e 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java @@ -206,24 +206,44 @@ public class PathsObject extends ASTNode<ASTNode> implements Cloneable { } /** * @attribute inh - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:84 + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:84") - public Set<String> generateUrl(Set<String> urls) { + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:21") + public Set<String> inferUrl(Set<String> urls) { Object _parameters = urls; - if (generateUrl_Set_String__visited == null) generateUrl_Set_String__visited = new java.util.HashSet(4); - if (generateUrl_Set_String__visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute PathsObject.generateUrl(Set_String_)."); + if (inferUrl_Set_String__visited == null) inferUrl_Set_String__visited = new java.util.HashSet(4); + if (inferUrl_Set_String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute PathsObject.inferUrl(Set_String_)."); + } + inferUrl_Set_String__visited.add(_parameters); + Set<String> inferUrl_Set_String__value = getParent().Define_inferUrl(this, null, urls); + inferUrl_Set_String__visited.remove(_parameters); + return inferUrl_Set_String__value; + } +/** @apilevel internal */ +protected java.util.Set inferUrl_Set_String__visited; + /** + * @attribute inh + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:82 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:82") + public Map<ResponseObject, String> generateUrl(Map<ResponseObject, String> responses) { + Object _parameters = responses; + if (generateUrl_Map_ResponseObject__String__visited == null) generateUrl_Map_ResponseObject__String__visited = new java.util.HashSet(4); + if (generateUrl_Map_ResponseObject__String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute PathsObject.generateUrl(Map_ResponseObject__String_)."); } - generateUrl_Set_String__visited.add(_parameters); - Set<String> generateUrl_Set_String__value = getParent().Define_generateUrl(this, null, urls); - generateUrl_Set_String__visited.remove(_parameters); - return generateUrl_Set_String__value; + generateUrl_Map_ResponseObject__String__visited.add(_parameters); + Map<ResponseObject, String> generateUrl_Map_ResponseObject__String__value = getParent().Define_generateUrl(this, null, responses); + generateUrl_Map_ResponseObject__String__visited.remove(_parameters); + return generateUrl_Map_ResponseObject__String__value; } /** @apilevel internal */ -protected java.util.Set generateUrl_Set_String__visited; +protected java.util.Set generateUrl_Map_ResponseObject__String__visited; /** @apilevel internal */ public ASTNode rewriteTo() { return super.rewriteTo(); diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java index 41789618e795127d2822a2f0e0e77d97c5122f3e..4e56710065a02ad3cf3df460848e489f5b1caecb 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Post.java @@ -177,26 +177,54 @@ public class Post extends OperationOb implements Cloneable { return tokenOperationObject_OperationObject; } /** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_OperationObject_visited; +protected java.util.Set inferRandomUrl_String_OperationObject_visited; /** * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95 + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95") - public String generateRandomUrl(String pathRef, OperationObject operationObject) { + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34") + public String inferRandomUrl(String pathRef, OperationObject operationObject) { java.util.List _parameters = new java.util.ArrayList(2); _parameters.add(pathRef); _parameters.add(operationObject); - if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject)."); + if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); + if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject)."); } - generateRandomUrl_String_OperationObject_visited.add(_parameters); + inferRandomUrl_String_OperationObject_visited.add(_parameters); + try { + + return ""; + } + finally { + inferRandomUrl_String_OperationObject_visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96") + public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) { + java.util.List _parameters = new java.util.ArrayList(3); + _parameters.add(pathRef); + _parameters.add(operationObject); + _parameters.add(responses); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_)."); + } + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters); try { Random rand = new Random(); + try{ for( ParameterOb o : operationObject.getParameterObs() ){ ParameterObject p = o.parameterObject(); SchemaObject s = p.getSchemaOb().schemaObject(); @@ -234,23 +262,42 @@ protected java.util.Set generateRandomUrl_String_OperationObject_visited; } } } - pathRef = pathRef.replaceFirst("&", "?") + "POST"; + pathRef = pathRef.replaceFirst("&", "?"); + System.out.println("Generated path : " + pathRef); - /* - URL url = new URL(pathRef); - HttpURLConnection con = (HttpURLConnection) url.openConnection(); + URL url = new URL(pathRef); + HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); - con.setRequestMethod("POST"); // HTTP POST - con.setDoOutput(true); // POST + con.setRequestMethod("POST"); // HTTP POST + con.setDoOutput(true); // POST - int responseCode = con.getResponseCode(); + int responseCode = con.getResponseCode(); + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); - // print result - System.out.println("HTTP status code (POST) : " + responseCode);*/ - return pathRef; + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + + // print result + System.out.println("HTTP status code (POST) : " + responseCode); + for( ResponseTuple t : operationObject.getResponseTuples() ){ + if( t.getKey().equals("200") && responseCode == 200 ) { + System.out.println("Response successfully saved!"); + responses.put(t.getResponseOb().responseObject(), response.toString()); + } else if ( t.getKey().equals("default") && responseCode == 200 ){ + System.out.println("Response successfully saved!"); + responses.put(t.getResponseOb().responseObject(), response.toString()); + } + } + return pathRef;} catch (Exception e) { + return ""; + } } finally { - generateRandomUrl_String_OperationObject_visited.remove(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters); } } /** @apilevel internal */ diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Put.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Put.java index 133e67b48da78927a831c5e820713c0e34a8d04b..3f15eda0eeee8250639fc2a103fc788d7e94a4c4 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Put.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Put.java @@ -177,28 +177,54 @@ public class Put extends OperationOb implements Cloneable { return tokenOperationObject_OperationObject; } /** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_OperationObject_visited; +protected java.util.Set inferRandomUrl_String_OperationObject_visited; /** * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95 + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95") - public String generateRandomUrl(String pathRef, OperationObject operationObject) { + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34") + public String inferRandomUrl(String pathRef, OperationObject operationObject) { java.util.List _parameters = new java.util.ArrayList(2); _parameters.add(pathRef); _parameters.add(operationObject); - if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject)."); + if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); + if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject)."); + } + inferRandomUrl_String_OperationObject_visited.add(_parameters); + try { + return ""; + } + finally { + inferRandomUrl_String_OperationObject_visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96") + public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) { + java.util.List _parameters = new java.util.ArrayList(3); + _parameters.add(pathRef); + _parameters.add(operationObject); + _parameters.add(responses); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_)."); } - generateRandomUrl_String_OperationObject_visited.add(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters); try { return ""; } finally { - generateRandomUrl_String_OperationObject_visited.remove(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters); } } /** @apilevel internal */ diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java index 3e10c0f0c75a910d536057a391d3cda2a1e601cd..b33a59dc0d299ee29ae9d7ce77b27474d0de6029 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java @@ -1938,22 +1938,4 @@ protected boolean schemaObject_visited = false; public boolean canRewrite() { return false; } - /** @apilevel internal */ - protected void collect_contributors_OpenAPIObject_schemas(OpenAPIObject _root, java.util.Map<ASTNode, java.util.Set<ASTNode>> _map) { - // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:15 - { - java.util.Set<ASTNode> contributors = _map.get(_root); - if (contributors == null) { - contributors = new java.util.LinkedHashSet<ASTNode>(); - _map.put((ASTNode) _root, contributors); - } - contributors.add(this); - } - super.collect_contributors_OpenAPIObject_schemas(_root, _map); - } - /** @apilevel internal */ - protected void contributeTo_OpenAPIObject_schemas(java.util.Set<SchemaObject> collection) { - super.contributeTo_OpenAPIObject_schemas(collection); - collection.add(this); - } } diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaTuple.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaTuple.java index c93b736d0719d1c69e4ceca012d7c9b92fb7e2ee..3f676540ecaff3eb8c820a700769c623388b43d7 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaTuple.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaTuple.java @@ -212,4 +212,22 @@ public class SchemaTuple extends ASTNode<ASTNode> implements Cloneable { public boolean canRewrite() { return false; } + /** @apilevel internal */ + protected void collect_contributors_OpenAPIObject_schemaTuples(OpenAPIObject _root, java.util.Map<ASTNode, java.util.Set<ASTNode>> _map) { + // @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:16 + { + java.util.Set<ASTNode> contributors = _map.get(_root); + if (contributors == null) { + contributors = new java.util.LinkedHashSet<ASTNode>(); + _map.put((ASTNode) _root, contributors); + } + contributors.add(this); + } + super.collect_contributors_OpenAPIObject_schemaTuples(_root, _map); + } + /** @apilevel internal */ + protected void contributeTo_OpenAPIObject_schemaTuples(java.util.Set<SchemaTuple> collection) { + super.contributeTo_OpenAPIObject_schemaTuples(collection); + collection.add(this); + } } diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/Trace.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/Trace.java index e2df33b4b81485a78f98c0e7c167f3ee7375a13a..3d747775b2322550e4bee8896043bc6a878308f7 100644 --- a/src/gen/java/de/tudresden/inf/st/openapi/ast/Trace.java +++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/Trace.java @@ -177,28 +177,54 @@ public class Trace extends OperationOb implements Cloneable { return tokenOperationObject_OperationObject; } /** @apilevel internal */ -protected java.util.Set generateRandomUrl_String_OperationObject_visited; +protected java.util.Set inferRandomUrl_String_OperationObject_visited; /** * @attribute syn - * @aspect RandomRequestGenerator - * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95 + * @aspect InfSchema + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34 */ @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) - @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:95") - public String generateRandomUrl(String pathRef, OperationObject operationObject) { + @ASTNodeAnnotation.Source(aspect="InfSchema", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\InfSchema.jrag:34") + public String inferRandomUrl(String pathRef, OperationObject operationObject) { java.util.List _parameters = new java.util.ArrayList(2); _parameters.add(pathRef); _parameters.add(operationObject); - if (generateRandomUrl_String_OperationObject_visited == null) generateRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); - if (generateRandomUrl_String_OperationObject_visited.contains(_parameters)) { - throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject)."); + if (inferRandomUrl_String_OperationObject_visited == null) inferRandomUrl_String_OperationObject_visited = new java.util.HashSet(4); + if (inferRandomUrl_String_OperationObject_visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.inferRandomUrl(String,OperationObject)."); + } + inferRandomUrl_String_OperationObject_visited.add(_parameters); + try { + return ""; + } + finally { + inferRandomUrl_String_OperationObject_visited.remove(_parameters); + } + } +/** @apilevel internal */ +protected java.util.Set generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited; + /** + * @attribute syn + * @aspect RandomRequestGenerator + * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96 + */ + @ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN) + @ASTNodeAnnotation.Source(aspect="RandomRequestGenerator", declaredAt="E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\RandomRequestGenerator.jrag:96") + public String generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) { + java.util.List _parameters = new java.util.ArrayList(3); + _parameters.add(pathRef); + _parameters.add(operationObject); + _parameters.add(responses); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited == null) generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited = new java.util.HashSet(4); + if (generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.contains(_parameters)) { + throw new RuntimeException("Circular definition of attribute OperationOb.generateRandomUrl(String,OperationObject,Map_ResponseObject__String_)."); } - generateRandomUrl_String_OperationObject_visited.add(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.add(_parameters); try { return ""; } finally { - generateRandomUrl_String_OperationObject_visited.remove(_parameters); + generateRandomUrl_String_OperationObject_Map_ResponseObject__String__visited.remove(_parameters); } } /** @apilevel internal */ diff --git a/src/main/jastadd/InfSchema.jrag b/src/main/jastadd/InfSchema.jrag index 6ead1e42ab1642ee1c4e072dbf906beb2ac462bf..0685d401d38e98815c19eefe85811fc023778182 100644 --- a/src/main/jastadd/InfSchema.jrag +++ b/src/main/jastadd/InfSchema.jrag @@ -11,9 +11,60 @@ aspect InfSchema { when schemaObject() to OpenAPIObject.collectSchemaObs(); */ - coll java.util.Set<SchemaObject> OpenAPIObject.schemas() [new java.util.HashSet<>()] root OpenAPIObject; - SchemaObject contributes this to OpenAPIObject.schemas(); - inh OpenAPIObject ASTNode.root(); - eq OpenAPIObject.getChild().root() = this; + coll java.util.Set<SchemaTuple> OpenAPIObject.schemaTuples() [new java.util.HashSet<>()] root OpenAPIObject; + SchemaTuple contributes this to OpenAPIObject.schemaTuples(); + + inh OpenAPIObject ASTNode.root(); + eq OpenAPIObject.getChild().root() = this; + + inh Set<String> PathsObject.inferUrl(Set<String> urls); + eq OpenAPIObject.getPathsObject(int i).inferUrl(Set<String> urls) { + PathItemObject p = ((PathsObject) _childNode).getPathItemOb().pathItemObject(); + String path = ((OpenAPIObject) getParent()).getServerObject(0).getUrl(); + + if( p.hasGet() ) + urls.add(p.getGet().inferRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getGet().getOperationObject())); + else if( p.hasPost() ) + urls.add(p.getPost().inferRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getPost().getOperationObject())); + + return urls; + } + + syn String OperationOb.inferRandomUrl(String pathRef, OperationObject operationObject); + eq Get.inferRandomUrl(String pathRef, OperationObject operationObject) { + + return ""; + } + eq Post.inferRandomUrl(String pathRef, OperationObject operationObject) { + + return ""; + } + eq Put.inferRandomUrl(String pathRef, OperationObject operationObject){ + return ""; + } + eq Delete.inferRandomUrl(String pathRef, OperationObject operationObject){ + return ""; + } + eq Options.inferRandomUrl(String pathRef, OperationObject operationObject){ + return ""; + } + eq Head.inferRandomUrl(String pathRef, OperationObject operationObject){ + return ""; + } + eq Patch.inferRandomUrl(String pathRef, OperationObject operationObject){ + return ""; + } + eq Trace.inferRandomUrl(String pathRef, OperationObject operationObject){ + return ""; + } + eq OperationObject.inferRandomUrl(String pathRef, OperationObject operationObject){ + return ""; + } + + syn Map<String, List<String>> OperationObject.getDict (Set<SchemaTuple> tuples, Map<ResponseObject, String> responses){ + Map<String, List<String>> map = new HashMap<>(); + + return map; + } } \ No newline at end of file diff --git a/src/main/jastadd/RandomRequestGenerator.jrag b/src/main/jastadd/RandomRequestGenerator.jrag index a6c5eaae630c11bcc87ecc448a8e0cbdd3ec9755..bc6200771bf811ba753ff5d23c08cb3f49d81d83 100644 --- a/src/main/jastadd/RandomRequestGenerator.jrag +++ b/src/main/jastadd/RandomRequestGenerator.jrag @@ -9,25 +9,20 @@ import java.util.stream.IntStream; aspect RandomRequestGenerator { - /* - syn String PathObject.getRequestURI(Ramdom r); - coll Set OpenAPI.requestURIs(Random r); - uncache PathObject.getRequestURI(); - syn Set OpenAPI.requestURIs(); - - */ - - public String OpenAPIObject.generateRequests() throws Exception { + public Map<ResponseObject, String> OpenAPIObject.generateRequests() throws Exception { Set<String> urls = new HashSet<>(); + Map<ResponseObject, String> responses = new HashMap<>(); for( PathsObject p : this.getPathsObjects() ) - p.generateUrl(urls); + p.generateUrl(responses); + System.out.println(responses.size()); + /* for( String path : urls ){ if( path.endsWith("GET") ){ System.out.println(this.getServerObject(0).getUrl() + path.substring(0, path.length()-3)); - /* */ + URL url = new URL(this.getServerObject(0).getUrl() + path.substring(0, path.length()-3)); HttpURLConnection con = (HttpURLConnection) url.openConnection(); @@ -35,8 +30,8 @@ aspect RandomRequestGenerator { con.setDoOutput(true); // GET int responseCode = con.getResponseCode(); - System.out.println("HTTP status code (GET) : " + responseCode); - if( responseCode < 300 ){ + //System.out.println("HTTP status code (GET) : " + responseCode); + if( responseCode < 300 && responseCode >= 200 ){ BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); @@ -46,12 +41,13 @@ aspect RandomRequestGenerator { } in.close(); - System.out.println("HTTP body : " + response.toString()); - }/* */ + //System.out.println("HTTP body : " + response.toString()); + responses.add(response.toString()); + } } else if( path.endsWith("POST") ) { - System.out.println(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4)); + //System.out.println(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4)); + - /* */ URL url = new URL(this.getServerObject(0).getUrl() + path.substring(0, path.length()-4)); HttpURLConnection con = (HttpURLConnection) url.openConnection(); @@ -59,9 +55,9 @@ aspect RandomRequestGenerator { con.setDoOutput(true); // POST int responseCode = con.getResponseCode(); - System.out.println("HTTP status code (POST) : " + responseCode); + //System.out.println("HTTP status code (POST) : " + responseCode); - if( responseCode < 300 ){ + if( responseCode < 300 && responseCode >= 200 ){ BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); @@ -72,28 +68,144 @@ aspect RandomRequestGenerator { in.close(); - System.out.println("HTTP body : " + response.toString()); - }/* */ + //System.out.println("HTTP body : " + response.toString()); + responses.add(response.toString()); } - } - return ""; + }*/ + + //for( String s : responses ) + // System.out.println("Response : " + s.toString()); + return responses; } - inh Set<String> PathsObject.generateUrl(Set<String> urls); - eq OpenAPIObject.getPathsObject(int i).generateUrl(Set<String> urls) { + inh Map<ResponseObject, String> PathsObject.generateUrl(Map<ResponseObject, String> responses); + eq OpenAPIObject.getPathsObject(int i).generateUrl(Map<ResponseObject, String> responses) { PathItemObject p = ((PathsObject) _childNode).getPathItemOb().pathItemObject(); + String path = getServerObject(0).getUrl(); + if( p.hasGet() ) - urls.add(p.getGet().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getGet().getOperationObject())); + p.getGet().generateRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getGet().getOperationObject(), responses); + //urls.add(p.getGet().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getGet().getOperationObject())); else if( p.hasPost() ) - urls.add(p.getPost().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getPost().getOperationObject())); + p.getPost().generateRandomUrl(path + ((PathsObject) _childNode).getRef(), p.getPost().getOperationObject(), responses); + //urls.add(p.getPost().generateRandomUrl(((PathsObject) _childNode).getRef(), p.getPost().getOperationObject())); + + return responses; + } + syn String OperationOb.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses); +/* + eq Get.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) { + Random rand = new Random(); + + for( ParameterOb o : operationObject.getParameterObs() ){ + ParameterObject p = o.parameterObject(); + SchemaObject s = p.getSchemaOb().schemaObject(); + if( p.getIn().equals("path") ){ + String pathPart = pathRef.substring(pathRef.indexOf("{") ,pathRef.indexOf("}") + 1); + + if( s.getType().equals("string") ) + pathRef = pathRef.replace(pathPart, operationObject.generateRandomString(rand, s.getEnumObjs())); + else if( s.getType().equals("integer") ) + pathRef = pathRef.replace(pathPart, operationObject.generateRandomInt( rand, + -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, + 10 // s.getMaximum() != null ? s.getMaximum().intValue() : -1 + )); + } + else if( p.getIn().equals("query") ){ + + if( s.getType().equals("string") ) + pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomString(rand, s.getEnumObjs()); + else if( s.getType().equals("integer") ) + pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomInt( rand, + -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, + 10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1 + else if( s.getType().equals("array") ){ + if( s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("string") ){ + for( EnumObj e : s.getItemsSchema().getSchemaOb().schemaObject().getEnumObjs() ) + pathRef=rand.nextDouble()< 0.5?pathRef+"&"+p.getName()+"="+e.getEnumOb():pathRef; + } + else if( s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("integer") ){ + for( int i = 0 ; i < 5 ; i++ ) + pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomInt( rand, + -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, + 10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1 + } + + } + } + } + pathRef = pathRef.replaceFirst("&", "?") ; + System.out.println(pathRef); + URL url = new URL(pathRef); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + + con.setRequestMethod("GET"); // HTTP GET + con.setDoOutput(true); // GET + + int responseCode = con.getResponseCode(); + + // print result + System.out.println("HTTP status code (GET) : " + responseCode); + } +public void Post.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) throws Exception{ + Random rand = new Random(); + + System.out.println(1); + for( ParameterOb o : operationObject.getParameterObs() ){ + ParameterObject p = o.parameterObject(); + SchemaObject s = p.getSchemaOb().schemaObject(); + if( p.getIn().equals("path") ){ + String pathPart = pathRef.substring(pathRef.indexOf("{") ,pathRef.indexOf("}") + 1); + + if( s.getType().equals("string") ) + pathRef = pathRef.replace(pathPart, operationObject.generateRandomString(rand, s.getEnumObjs())); + else if( s.getType().equals("integer") ) + pathRef = pathRef.replace(pathPart, operationObject.generateRandomInt( rand, + -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, + 10 // s.getMaximum() != null ? s.getMaximum().intValue() : -1 + )); + } + else if( p.getIn().equals("query") ){ + + if( s.getType().equals("string") ) + pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomString(rand, s.getEnumObjs()); + else if( s.getType().equals("integer") ) + pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomInt( rand, + -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, + 10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1 + else if( s.getType().equals("array") ){ + if( s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("string") ){ + for( EnumObj e : s.getItemsSchema().getSchemaOb().schemaObject().getEnumObjs() ) + pathRef=rand.nextDouble()< 0.5?pathRef+"&"+p.getName()+"="+e.getEnumOb():pathRef; + } + else if( s.getItemsSchema().getSchemaOb().schemaObject().getType().equals("integer") ){ + for( int i = 0 ; i < 5 ; i++ ) + pathRef = pathRef + "&" + p.getName() + "=" + operationObject.generateRandomInt( rand, + -1, // s.getMinimum() != null ? s.getMinimum().intValue() : -1, + 10); // s.getMaximum() != null ? s.getMaximum().intValue() : -1 + } + + } + } + } + pathRef = pathRef.replaceFirst("&", "?") ; + URL url = new URL(pathRef); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + + con.setRequestMethod("POST"); // HTTP POST + con.setDoOutput(true); // POST - return urls; + int responseCode = con.getResponseCode(); + + // print result + System.out.println("HTTP status code (POST) : " + responseCode); } - syn String OperationOb.generateRandomUrl(String pathRef, OperationObject operationObject); - eq Get.generateRandomUrl(String pathRef, OperationObject operationObject) { + */ + eq Get.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses) { + try { Random rand = new Random(); for( ParameterOb o : operationObject.getParameterObs() ){ @@ -133,24 +245,41 @@ aspect RandomRequestGenerator { } } } - pathRef = pathRef.replaceFirst("&", "?") + "GET"; + pathRef = pathRef.replaceFirst("&", "?") ; + System.out.println("Generated path : " + pathRef); + + URL url = new URL(pathRef); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); - /* - URL url = new URL(pathRef); - HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("GET"); // optional default is GET - con.setRequestMethod("GET"); // HTTP GET - con.setDoOutput(true); // GET + int responseCode = con.getResponseCode(); + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); - int responseCode = con.getResponseCode(); + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); - // print result - System.out.println("HTTP status code (GET) : " + responseCode);*/ + // print result + System.out.println("HTTP status code (GET) : " + responseCode); + for( ResponseTuple t : operationObject.getResponseTuples() ){ + if( t.getKey().equals("200") && responseCode == 200 ) { + System.out.println("Response successfully saved!"); + responses.put(t.getResponseOb().responseObject(), response.toString()); + } + } return pathRef; + }catch (Exception e) { + return ""; + } } - eq Post.generateRandomUrl(String pathRef, OperationObject operationObject){ + eq Post.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){ Random rand = new Random(); + try{ for( ParameterOb o : operationObject.getParameterObs() ){ ParameterObject p = o.parameterObject(); SchemaObject s = p.getSchemaOb().schemaObject(); @@ -188,41 +317,60 @@ aspect RandomRequestGenerator { } } } - pathRef = pathRef.replaceFirst("&", "?") + "POST"; + pathRef = pathRef.replaceFirst("&", "?"); + System.out.println("Generated path : " + pathRef); -/* - URL url = new URL(pathRef); - HttpURLConnection con = (HttpURLConnection) url.openConnection(); + URL url = new URL(pathRef); + HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); - con.setRequestMethod("POST"); // HTTP POST - con.setDoOutput(true); // POST + con.setRequestMethod("POST"); // HTTP POST + con.setDoOutput(true); // POST - int responseCode = con.getResponseCode(); + int responseCode = con.getResponseCode(); + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); - // print result - System.out.println("HTTP status code (POST) : " + responseCode);*/ - return pathRef; + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + + // print result + System.out.println("HTTP status code (POST) : " + responseCode); + for( ResponseTuple t : operationObject.getResponseTuples() ){ + if( t.getKey().equals("200") && responseCode == 200 ) { + System.out.println("Response successfully saved!"); + responses.put(t.getResponseOb().responseObject(), response.toString()); + } else if ( t.getKey().equals("default") && responseCode == 200 ){ + System.out.println("Response successfully saved!"); + responses.put(t.getResponseOb().responseObject(), response.toString()); + } + } + return pathRef;} catch (Exception e) { + return ""; + } } - eq Put.generateRandomUrl(String pathRef, OperationObject operationObject){ + eq Put.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){ return ""; } - eq Delete.generateRandomUrl(String pathRef, OperationObject operationObject){ + eq Delete.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){ return ""; } - eq Options.generateRandomUrl(String pathRef, OperationObject operationObject){ + eq Options.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){ return ""; } - eq Head.generateRandomUrl(String pathRef, OperationObject operationObject){ + eq Head.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){ return ""; } - eq Patch.generateRandomUrl(String pathRef, OperationObject operationObject){ + eq Patch.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){ return ""; } - eq Trace.generateRandomUrl(String pathRef, OperationObject operationObject){ + eq Trace.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){ return ""; } - eq OperationObject.generateRandomUrl(String pathRef, OperationObject operationObject){ + eq OperationObject.generateRandomUrl(String pathRef, OperationObject operationObject, Map<ResponseObject, String> responses){ return ""; } diff --git a/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java b/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java index 1a91ba268d95cf1897305f4f56d72babe1ff1b62..ecddff6a4e90c9ab774de8a1298e994cdb597c1c 100644 --- a/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java +++ b/src/main/java/de/tudresden/inf/st/openapi/OpenAPIMain.java @@ -44,6 +44,7 @@ public class OpenAPIMain { filenames.add(file.getName()); System.out.println(filenames.size()); + /* for( String file : filenames ){ String writerName = genDir + file; @@ -56,6 +57,7 @@ public class OpenAPIMain { openApi.generateRequests(); } + */ String fileName = "petstore-v2.yaml"; //FileWriter writer = new FileWriter("./gen-api-ex/callback-example_generated.json"); @@ -71,25 +73,17 @@ public class OpenAPIMain { throw new FileNotFoundException("Could not load JSON file " + fileName); } - /* OpenApi3 api = new OpenApi3Parser().parse(expUrl, new ArrayList<>(), true); System.out.println("Loading expression DSL file '" + fileName + "'."); openApi = OpenAPIObject.parseOpenAPI(api); openApi.generateRequests(); - api3 = OpenAPIObject.composeOpenAPI(openApi); - - results = OpenApi3Validator.instance().validate(api); - - openApi.generateRequests();*/ - - //writer.write(api3.toNode().toPrettyString()); //writer.close(); - Map<String, String> s = new HashMap<>(); + Map<String, List<String>> s = new HashMap<>(); if (args.length > 0) { fileName = args[0];